I want to export a SimpleFeatureCollection (Read from a MySQL DB) to a KML file, here is my code used to read the infos into the console:
private void featureCollectionToKML(SimpleFeatureCollection features)
throws Exception {
Encoder encoder = new Encoder(new KMLConfiguration());
encoder.setIndenting(true);
encoder.encode(features, KML.kml, System.out);
}
When I run the program there are first some WARNINGS when I get the Features and then the program crashes with this error log:
PM org.geotools.referencing.factory.PropertyAuthorityFactory
WARNING: Axis elements found in a wkt definition, the force longitude first axis order hint might not be respected: PROJCS["Google Projection",GEOGCS["WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],UNIT["degree", 0.017453292519943295],AXIS["Geodetic longitude", EAST],AXIS["Geodetic latitude", NORTH],AUTHORITY["EPSG","4326"]],PROJECTION["Popular Visualisation Pseudo Mercator", AUTHORITY["EPSG","1024"]],PARAMETER["semi_minor", 6378137.0],PARAMETER["latitude_of_origin", 0.0],PARAMETER["central_meridian", 0.0],PARAMETER["scale_factor", 1.0],PARAMETER["false_easting", 0.0],PARAMETER["false_northing", 0.0],UNIT["m", 1.0]]
ott 23, 2013 4:06:49 PM org.geotools.feature.simple.SimpleFeatureTypeBuilder add
WARNING: Creating LookAt with null CoordinateReferenceSystem - did you mean to setCRS?
ott 23, 2013 4:06:49 PM org.geotools.feature.simple.SimpleFeatureTypeBuilder add
WARNING: Creating Region with null CoordinateReferenceSystem - did you mean to setCRS? java.lang.RuntimeException: Failed to get property: id at org.geotools.xml.impl.GetPropertyExecutor.visit(GetPropertyExecutor.java:105) at org.geotools.xml.impl.BindingWalker$BindingExecutionChain.execute(BindingWalker.java:220) at org.geotools.xml.impl.BindingWalker.walk(BindingWalker.java:186) at org.geotools.xml.impl.BindingVisitorDispatch.walk(BindingVisitorDispatch.java:47) at org.geotools.xml.impl.BindingVisitorDispatch.walk(BindingVisitorDispatch.java:32) at org.geotools.xml.Encoder.encode(Encoder.java:902) at org.geotools.xml.Encoder.encode(Encoder.java:603) at shapefileManager.ShapefileManager.featureCollectionToKML(ShapefileManager.java:173) at shapefileManager.ShapefileManager.convertArchiToFeatuesKML(ShapefileManager.java:114) at Main.Test.main(Test.java:19) Caused by: java.lang.UnsupportedOperationException at org.geotools.data.store.ContentFeatureCollection.getID(ContentFeatureCollection.java:492) at org.geotools.kml.bindings.FeatureTypeBinding.getProperty(FeatureTypeBinding.java:284) at org.geotools.xml.impl.GetPropertyExecutor.visit(GetPropertyExecutor.java:103) ... 9 more
I can't understand which is the problem...
Here is how I get the SimpleFeaturesCollection from MySQL DB
public void convertArcsToFeatuesKML(String[] ids) {
try {
FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
Set<FeatureId> fids = new HashSet<FeatureId>();
for (int i = 0; i < ids.length; i++) {
fids.add(ff.featureId(ids[i]));
}
Filter filter = ff.id(fids);
SimpleFeatureCollection features = featureSource
.getFeatures(filter);
this.featureCollectionToKML(features);
} catch (Exception e) { e.printStackTrace(); }
}
FeatureSource is the MySQL DB.
PS I've checked, with the getId() method, and all features have an unique ID.