X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.geo%2Fsrc%2Forg%2Fargeo%2Fapp%2Fgeo%2FGpxUtils.java;h=2a946f48ac29998bc413187d421e5dde09a445f2;hb=ef62b6f2aa5d42ae45865eed142ab1e69f6ae43f;hp=5b07d1677fe72166ae9329327062812ddf35b37b;hpb=efda92d76cd7ccce3925763bf95f68d7927ac5c7;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.geo/src/org/argeo/app/geo/GpxUtils.java b/org.argeo.app.geo/src/org/argeo/app/geo/GpxUtils.java index 5b07d16..2a946f4 100644 --- a/org.argeo.app.geo/src/org/argeo/app/geo/GpxUtils.java +++ b/org.argeo.app.geo/src/org/argeo/app/geo/GpxUtils.java @@ -88,8 +88,12 @@ public class GpxUtils { // multiPoint.normalize(); return (T) multiPoint; } else if (Polygon.class.isAssignableFrom(clss)) { - // close the line string - coordinates.add(coordinates.get(0)); + Coordinate first = coordinates.get(0); + Coordinate last = coordinates.get(coordinates.size() - 1); + if (!(first.getX() == last.getX() && first.getY() == last.getY())) { + // close the line string + coordinates.add(first); + } Polygon polygon = geometryFactory.createPolygon(coordinates.toArray(new Coordinate[coordinates.size()])); return (T) polygon; } else if (SimpleFeature.class.isAssignableFrom(clss)) { @@ -114,7 +118,7 @@ public class GpxUtils { return area; } - /** Write ODK GepShape as a GPX file. */ + /** Write ODK GeoShape as a GPX file. */ public static void writeGeoShapeAsGpx(String geoShape, OutputStream out) throws IOException { Objects.requireNonNull(geoShape); Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);