X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.geo%2Fsrc%2Forg%2Fargeo%2Fapp%2Fgeo%2Fhttp%2FWfsHttpHandler.java;fp=org.argeo.app.geo%2Fsrc%2Forg%2Fargeo%2Fapp%2Fgeo%2Fhttp%2FWfsHttpHandler.java;h=c12a77b9da24cc0226629d270188b5ee816d0194;hb=12b80cad8670765da2cc8316c2c5d537cfbcbcd2;hp=59cb97a2d4eb02331f423b3b7ef302501c6f64d7;hpb=e0b05d6328f810c4009a636e52e20e6ece5c6c0a;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java b/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java index 59cb97a..c12a77b 100644 --- a/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java +++ b/org.argeo.app.geo/src/org/argeo/app/geo/http/WfsHttpHandler.java @@ -216,11 +216,14 @@ public class WfsHttpHandler implements HttpHandler { if (bbox != null) { search.getWhere().any((or) -> { + // box overlap, see https://stackoverflow.com/questions/20925818/algorithm-to-check-if-two-boxes-overlap + // isOverlapping = (x1min < x2max AND x2min < x1max AND y1min < y2max AND y2min < y1max) + // x1 = entity, x2 = bbox or.all((and) -> { - and.gte(EntityName.minLat, bbox.getMinX()); - and.gte(EntityName.minLon, bbox.getMinY()); - and.lte(EntityName.maxLat, bbox.getMaxX()); - and.lte(EntityName.maxLon, bbox.getMaxY()); + and.lte(EntityName.minLat, bbox.getMaxX()); + and.gte(EntityName.maxLat, bbox.getMinX()); + and.lte(EntityName.minLon, bbox.getMaxY()); + and.gte(EntityName.maxLon, bbox.getMinY()); }); or.all((and) -> { and.gte(WGS84PosName.lat, bbox.getMinX());