From 5aa24f61988c82766c61e57381316599490cc2e1 Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Thu, 29 Oct 2020 17:08:29 +0100 Subject: [PATCH] fixing wsf query --- .../client/LayerManager.java | 26 +++++++++++- .../client/gis/OpenLayerOSM.java | 4 ++ .../server/gis/FeatureParser.java | 8 ++-- .../server/gis/GisMakers.java | 42 ++++++++++--------- 4 files changed, 55 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java index 3c5796a..9141618 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/LayerManager.java @@ -21,6 +21,8 @@ import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; +import ol.Coordinate; + /** * The Class LayerManager. @@ -63,12 +65,34 @@ public class LayerManager { isLayerVisible(layerItem); } + BoundsMap mapBBOX = new BoundsMap(); - mapBBOX.setCrs(olMap.getProjectionCode()); + //THIS IS SHOULD BE CORRET, THE BOUND AND CRS ARE READ FROM MAP + /*mapBBOX.setCrs(olMap.getProjectionCode()); mapBBOX.setLowerLeftX(olMap.getExtent().getLowerLeftX()); mapBBOX.setLowerLeftY(olMap.getExtent().getLowerLeftY()); mapBBOX.setUpperRightX(olMap.getExtent().getUpperRightX()); mapBBOX.setUpperRightY(olMap.getExtent().getUpperRightY()); + */ + + //THE FOLLOWING SHOULD BE NOT NEEDED BUT THE GETFEATURE WITH EPSG_3857 SEEMS NOT WORK IN OUR GEOSERVER + double minX = olMap.getExtent().getLowerLeftX(); + double minY = olMap.getExtent().getLowerLeftY(); + Coordinate centerCoordinate = new Coordinate(minX, minY); + centerCoordinate = olMap.transform(centerCoordinate, GeoportalDataViewerConstants.EPSG_3857, GeoportalDataViewerConstants.EPSG_4326); + mapBBOX.setLowerLeftX(centerCoordinate.getX()); + mapBBOX.setLowerLeftY(centerCoordinate.getY()); + + double maxX = olMap.getExtent().getUpperRightX(); + double maxY = olMap.getExtent().getUpperRightY(); + centerCoordinate = new Coordinate(maxX,maxY); + centerCoordinate = olMap.transform(centerCoordinate, GeoportalDataViewerConstants.EPSG_3857, GeoportalDataViewerConstants.EPSG_4326); + mapBBOX.setUpperRightX(centerCoordinate.getX()); + mapBBOX.setUpperRightY(centerCoordinate.getY()); + + mapBBOX.setCrs(GeoportalDataViewerConstants.EPSG_4326); + + GWT.log("Bounds is: "+mapBBOX); GeoportalDataViewerServiceAsync.Util.getInstance().getDataResult(layerItems, olMap.getProjectionCode(), mapBBOX, GeoportalDataViewerConstants.MAX_WFS_FEATURES, olMap.getCurrentZoomLevel(), new AsyncCallback>() { diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java index 7e80634..857daaa 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/client/gis/OpenLayerOSM.java @@ -421,6 +421,10 @@ public class OpenLayerOSM { return this.map.getView().calculateExtent(map.getSize()); } + public Coordinate transform (Coordinate centerCoordinate, String source, String target){ + return Projection.transform(centerCoordinate, source, target); + } + } diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java index 4eded49..b81f88b 100644 --- a/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java +++ b/src/main/java/org/gcube/portlets/user/geoportaldataviewer/server/gis/FeatureParser.java @@ -77,7 +77,7 @@ public class FeatureParser { @SuppressWarnings("unchecked") private static List getWFSFeatureProperties(LayerItem layerItem, String mapSrsName, BoundsMap mapBBOX, int maxWFSFeature) { - LOG.info("getTableFromJson -> Creating WfsTable to layerItem: "+layerItem.getName()); + LOG.info("getWFSFeatureProperties for layerItem: "+layerItem.getName() +" in the "+mapBBOX); InputStream is = null; List listFeaturesRow = new ArrayList(); try { @@ -93,7 +93,7 @@ public class FeatureParser { url = url.replace(notEncodedCQLFilter, toEncodeCQLFilter); } - LOG.info("getTableFromJson -> WFS URL: "+url); + LOG.info("Built WFS URL: "+url); is = new URL(url).openStream(); String jsonTxt = IOUtils.toString(is); @@ -109,6 +109,7 @@ public class FeatureParser { LOG.info("No features detected in the response, returning empty list"); return listFeaturesRow; } + LOG.info("Features are: "+features.length()); for (int i=0; i