My remaining question is if it will be possible to define styling rules for
attributes of joined tables, in my example "b.THEME_ATTRIBUTE"
If that would be possible it would not be necessary to build a new
FeatureCollection like I did. This has some performance consequences.
Can anybody tell if my example has memory consequences? Is the build
FeatureCollection "features" automatically freed by the GeoTools renderer?
Thanks.
Ron
On Monday, 23 December 2013, 17:41, Ron Lindhoudt <rlindho...@yahoo.com> wrote:
I got it working now.
The trick was to extract/evaluate the feature using the join alias as attribute.
It is encrypted in the documentation probably but for experienced geotools
users/developers but without an example it is difficult for simple developers
like me.
This is a working example:
query = new Query("GEO_TABLE");
query.setAlias("a");
Join join = new Join("ADMIN_TABLE",
m_filterFactory.equals(m_filterFactory.property("a.\"ID\""),
m_filterFactory.property("b.\"GEO_ID\"")));
join.setAlias("b");
List<PropertyName> properties = new ArrayList<PropertyName>();
properties.add(m_filterFactory.property("THEME_ATTRIBUTE"));
join.setProperties(properties);
query.getJoins().add(join);
query.setPropertyNames(new
String[] {"GEOMETRIE"});
FeatureSource featureSource = m_datastore.getAbsoluteFeatureSource("GEO_TABLE");
SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
typeBuilder.setName("TEST");
typeBuilder.add("GEOMETRIE", Geometry.class, crs);
SimpleFeatureType simpleFeatureType = typeBuilder.buildFeatureType();
final SimpleFeatureBuilder featureBuilder = new
SimpleFeatureBuilder(simpleFeatureType);
final ListFeatureCollection features = new
ListFeatureCollection(simpleFeatureType);
FeatureCollection featureCollection = featureSource.getFeatures(query);
final Expression geometriepath = m_filterFactory.property("GEOMETRIE");
final Expression joinedfeaturepath = m_filterFactory.property("b");
final Expression attributepath = m_filterFactory.property("THEME_ATTRIBUTE");
featureCollection.accepts( new FeatureVisitor(){
public void visit(Feature
feature)
{
Geometry geom = (Geometry) ((SimpleFeature) feature).getDefaultGeometry();
featureBuilder.add(geom);
Feature joinedfeature = joinedfeaturepath.evaluate(feature, Feature.class);
// First extract the joined feature
String attribute = attributepath.evaluate(joinedfeaturepath, String.class);
// Take the attribute of the joined feature
featureBuilder.add(attribute);
features.add(featureBuilder.buildFeature(feature.getIdentifier().getID()));
}
}, null);
layer = new FeatureLayer(features, styleGeometry); // styleGeometry contains
rules for THEME_ATTRIBUTE
On Monday, December 23, 2013 4:10 PM, Andrea Aime
<andrea.a...@geo-solutions.it> wrote:
On Mon, Dec 23, 2013 at 2:28 PM, Ron Lindhoudt <rlindho...@yahoo.com> wrote:
Hi Andrea,
>
>
>I sent this mail to the geotools user list but I did not see it distributed
>yet.
It has been distributed, see these public archives:
http://osgeo-org.1560.x6.nabble.com/geotools-gt2-users-f4317834.html
It's just that the person that did develop join support is unlikely to answer
because he's in
vacation, and normally does not answer anyways, unless, I guess, you have a
support contract
with Boundless.
I don't know the answer off the top of my head, I'd need to do some research
myself,
but as far as I remember, jonining in GeoTools does not work like in databases,
giving
you a flat representation of the output, but returns tuples, sets of full
features,
with a main feature and some associated features, each one in its own
attribute, see
here:
http://docs.codehaus.org/display/GEOTOOLS/Join+Support
Cheers
Andrea
--
== GeoSolutions will be closed for seasonal holidays from 23/12/2013 to
06/01/2014 ==
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
http://www.geo-solutions.it/
http://twitter.com/geosolutions_it
-------------------------------------------------------
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT
organizations don't have a clear picture of how application performance
affects their revenue. With AppDynamics, you get 100% visibility into your
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
GeoTools-GT2-Users mailing list
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users