X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.app.geo%2Fsrc%2Forg%2Fargeo%2Fapp%2Fgeo%2Facr%2FGeoEntityUtils.java;h=f10d89e60ee38486af58cf64e4f9b0125c59b4a6;hp=6019ee9ae46ab4b20c4d1a55035f49033a56f2cd;hb=b384a9cbe93b83b3aa94fe46cf2ff0a929f0332c;hpb=3283994ed0bb41099776e8f6ec9b3fbcbc767a84 diff --git a/org.argeo.app.geo/src/org/argeo/app/geo/acr/GeoEntityUtils.java b/org.argeo.app.geo/src/org/argeo/app/geo/acr/GeoEntityUtils.java index 6019ee9..f10d89e 100644 --- a/org.argeo.app.geo/src/org/argeo/app/geo/acr/GeoEntityUtils.java +++ b/org.argeo.app.geo/src/org/argeo/app/geo/acr/GeoEntityUtils.java @@ -55,7 +55,7 @@ public class GeoEntityUtils { } catch (IOException e) { throw new UncheckedIOException("Cannot add geometry " + name + " to " + c, e); } - updateBoundingBox(c); + // updateBoundingBox(c); } public static T getGeometry(Content c, QNamed name, Class clss) { @@ -81,9 +81,10 @@ public class GeoEntityUtils { if (c.hasContentClass(EntityType.geopoint)) { Double lat = c.get(WGS84PosName.lat, Double.class).orElseThrow(); Double lon = c.get(WGS84PosName.lon, Double.class).orElseThrow(); - Double alt = c.get(WGS84PosName.alt, Double.class).orElse(null); - return JTS.GEOMETRY_FACTORY_WGS84 - .createPoint(alt != null ? new Coordinate(lat, lon, alt) : new Coordinate(lat, lon)); + return JTS.GEOMETRY_FACTORY_WGS84.createPoint(new Coordinate(lat, lon)); +// Double alt = c.get(WGS84PosName.alt, Double.class).orElse(null); +// return JTS.GEOMETRY_FACTORY_WGS84 +// .createPoint(alt != null ? new Coordinate(lat, lon, alt) : new Coordinate(lat, lon)); } return null; } @@ -118,6 +119,19 @@ public class GeoEntityUtils { entity.put(EntityName.maxLon, bbox.getMaxY()); } + public static void updateBoundingBox(Content entity, QName prop) { + Geometry geom = getGeometry(entity, prop, Geometry.class); + if (geom == null) + return; + entity.addContentClasses(EntityType.geobounded.qName()); + + Envelope bbox = geom.getEnvelopeInternal(); + entity.put(EntityName.minLat, bbox.getMinX()); + entity.put(EntityName.minLon, bbox.getMinY()); + entity.put(EntityName.maxLat, bbox.getMaxX()); + entity.put(EntityName.maxLon, bbox.getMaxY()); + } + /** singleton */ private GeoEntityUtils() { }