I want to create a GeoJSON string, which contains one point and a polygon.
I wrote the following code:
import org.springframework.security.core.userdetails.User;import org.geotools.feature.simple.SimpleFeatureBuilder;import org.geotools.geojson.feature.FeatureJSON;import org.geotools.geometry.jts.GeometryBuilder;import org.opengis.feature.simple.SimpleFeature;import com.vividsolutions.jts.geom.Point;import com.vividsolutions.jts.geom.Polygon;import org.geotools.data.DataUtilities;import org.geotools.feature.SchemaException;import java.io.StringWriter;import java.io.IOException;public class GeoJSONGenerator { public String sampleData(final User user) { if (Nobody.INSTANCE == user) { return ""; } final GeometryBuilder builder = new GeometryBuilder(); final StringWriter writer = new StringWriter(); final FeatureJSON fjson = new FeatureJSON(); this.addPoint(132.159633, 43.350116, builder, writer, fjson); this.addPolygon(new double[] { 132.1731106,43.3538876, 132.1731138,43.3540462, 132.1726967,43.3540515, 132.1726966,43.3539377, 132.1725295,43.3539376, 132.1725288,43.3535944, 132.1726788,43.3535941, 132.1726784,43.3534755, 132.1731022,43.3534748, 132.1731056,43.3536441, 132.1728388,43.3536456, 132.1727573,43.3536961, 132.1727582,43.3538341, 132.1728448,43.3538898, 132.1731106,43.3538876, }, builder, writer, fjson); final String json = writer.toString(); return json; } protected void addPoint(final double lon, final double lat, final GeometryBuilder builder, final StringWriter writer, final FeatureJSON fjson) { final Point point = builder.point(lon, lat); try { final SimpleFeatureBuilder fbuilder = new SimpleFeatureBuilder( DataUtilities.createType("Test", "Location
oint") ); fbuilder.add(point); final SimpleFeature feature = fbuilder.buildFeature(null); fjson.writeFeature(feature, writer); } catch (final IOException exception) { exception.printStackTrace(); } catch (final SchemaException exception) { exception.printStackTrace(); } } protected void addPolygon(final double[] coords, final GeometryBuilder builder, final StringWriter writer, final FeatureJSON fjson) { final Polygon polygon = builder.polygon(coords); try { final SimpleFeatureBuilder fbuilder = new SimpleFeatureBuilder( DataUtilities.createType("EDGE", "edge
olygon") ); fbuilder.add(polygon); final SimpleFeature feature = fbuilder.buildFeature(null); fjson.writeFeature(feature, writer); } catch (final IOException exception) { exception.printStackTrace(); } catch (final SchemaException exception) { exception.printStackTrace(); } }}It produces invalid GeoJSON (see below).
How do I need to correct my code to produce valid JSON?
Invalid JSON:
{ "type":"Feature", "geometry":{ "type":"Point", "coordinates":[ 132.1596, 43.3501 ] }, "properties":{ }, "id":"fid--c09c3bc_14e4e979998_-7ffe"}{ "type":"Feature", "geometry":{ "type":"Polygon", "coordinates":[ [ [ 132.1731, 43.3539 ], [ 132.1731, 43.354 ], [ 132.1727, 43.3541 ], [ 132.1727, 43.3539 ], [ 132.1725, 43.3539 ], [ 132.1725, 43.3536 ], [ 132.1727, 43.3536 ], [ 132.1727, 43.3535 ], [ 132.1731, 43.3535 ], [ 132.1731, 43.3536 ], [ 132.1728, 43.3536 ], [ 132.1728, 43.3537 ], [ 132.1728, 43.3538 ], [ 132.1728, 43.3539 ], [ 132.1731, 43.3539 ] ] ] }, "properties":{ }, "id":"fid--c09c3bc_14e4e979998_-7ffd"}
أكثر...
I wrote the following code:
import org.springframework.security.core.userdetails.User;import org.geotools.feature.simple.SimpleFeatureBuilder;import org.geotools.geojson.feature.FeatureJSON;import org.geotools.geometry.jts.GeometryBuilder;import org.opengis.feature.simple.SimpleFeature;import com.vividsolutions.jts.geom.Point;import com.vividsolutions.jts.geom.Polygon;import org.geotools.data.DataUtilities;import org.geotools.feature.SchemaException;import java.io.StringWriter;import java.io.IOException;public class GeoJSONGenerator { public String sampleData(final User user) { if (Nobody.INSTANCE == user) { return ""; } final GeometryBuilder builder = new GeometryBuilder(); final StringWriter writer = new StringWriter(); final FeatureJSON fjson = new FeatureJSON(); this.addPoint(132.159633, 43.350116, builder, writer, fjson); this.addPolygon(new double[] { 132.1731106,43.3538876, 132.1731138,43.3540462, 132.1726967,43.3540515, 132.1726966,43.3539377, 132.1725295,43.3539376, 132.1725288,43.3535944, 132.1726788,43.3535941, 132.1726784,43.3534755, 132.1731022,43.3534748, 132.1731056,43.3536441, 132.1728388,43.3536456, 132.1727573,43.3536961, 132.1727582,43.3538341, 132.1728448,43.3538898, 132.1731106,43.3538876, }, builder, writer, fjson); final String json = writer.toString(); return json; } protected void addPoint(final double lon, final double lat, final GeometryBuilder builder, final StringWriter writer, final FeatureJSON fjson) { final Point point = builder.point(lon, lat); try { final SimpleFeatureBuilder fbuilder = new SimpleFeatureBuilder( DataUtilities.createType("Test", "Location
How do I need to correct my code to produce valid JSON?
Invalid JSON:
{ "type":"Feature", "geometry":{ "type":"Point", "coordinates":[ 132.1596, 43.3501 ] }, "properties":{ }, "id":"fid--c09c3bc_14e4e979998_-7ffe"}{ "type":"Feature", "geometry":{ "type":"Polygon", "coordinates":[ [ [ 132.1731, 43.3539 ], [ 132.1731, 43.354 ], [ 132.1727, 43.3541 ], [ 132.1727, 43.3539 ], [ 132.1725, 43.3539 ], [ 132.1725, 43.3536 ], [ 132.1727, 43.3536 ], [ 132.1727, 43.3535 ], [ 132.1731, 43.3535 ], [ 132.1731, 43.3536 ], [ 132.1728, 43.3536 ], [ 132.1728, 43.3537 ], [ 132.1728, 43.3538 ], [ 132.1728, 43.3539 ], [ 132.1731, 43.3539 ] ] ] }, "properties":{ }, "id":"fid--c09c3bc_14e4e979998_-7ffd"}
أكثر...