public FeatureInfoRequestParameters(GetFeatureInfoRequest request) { // use the layer of the QUERY_LAYERS parameter, not the LAYERS one this.layers = request.getQueryLayers(); this.filters = request.getGetMapRequest().getFilter(); this.sorts = request.getGetMapRequest().getSortByArrays(); this.styles = getStyles(request, layers); this.x = request.getXPixel(); this.y = request.getYPixel(); this.buffer = request.getGetMapRequest().getBuffer(); this.viewParams = request.getGetMapRequest().getViewParams(); this.getMapReq = request.getGetMapRequest(); this.requestedCRS = getMapReq.getCrs(); // optional, may be null this.maxFeatures = request.getFeatureCount(); // basic information about the request this.width = getMapReq.getWidth(); this.height = getMapReq.getHeight(); this.bbox = new ReferencedEnvelope(getMapReq.getBbox(), getMapReq.getCrs()); this.scaleDenominator = getScaleDenominator(request.getGetMapRequest()); this.elevations = request.getGetMapRequest().getElevation(); this.times = request.getGetMapRequest().getTime(); this.ff = CommonFactoryFinder.getFilterFactory2(GeoTools.getDefaultHints()); this.propertyNames = request.getPropertyNames(); }
public Object read(Object req, Map kvp, Map rawKvp) throws Exception { GetFeatureInfoRequest request = (GetFeatureInfoRequest) super.read(req, kvp, rawKvp); request.setRawKvp(rawKvp); request.setGetMapRequest(getMapPart); request.setQueryLayers(getMapLayers); } else { request.setQueryLayers( new GetFeatureInfoKvpParser("QUERY_LAYERS", wms) .parse((String) rawKvp.get("QUERY_LAYERS"))); if (request.getQueryLayers().isEmpty()) { throw new ServiceException( "Either no layer was queryable, or no layers were specified using QUERY_LAYERS", WMSErrorCode.LAYER_NOT_QUERYABLE.get(request.getVersion()), "QUERY_LAYERS"); if (propertyNames.size() == 1 && request.getQueryLayers().size() > 1) { while (propertyNames.size() < request.getQueryLayers().size()) { propertyNames.add(propertyNames.get(0)); if (propertyNames.size() != request.getQueryLayers().size()) { throw new ServiceException( "Mismatch between the property name set count " + propertyNames.size() + " and the query layers count " + request.getQueryLayers().size(),
@Test public void testWMSGetFeatureInfo() throws Exception { GetFeatureInfoRequest gfi = new GetFeatureInfoRequest(); GetMapRequest gm = new GetMapRequest(); gm.setHeight(330); gm.setWidth(780); Envelope env = new ReferencedEnvelope(-126.81851,-115.818992,44.852958,49.5066,null); CoordinateReferenceSystem crs = CRS.decode("EPSG:4326",true); CoordinateReferenceSystem logCrs = CRS.decode("EPSG:4326",false); gm.setBbox(env); gm.setCrs(crs); gfi.setGetMapRequest(gm); gfi.setXPixel(260); gfi.setYPixel(63); gfi.setVersion("1.1.1"); gfi.setQueryLayers(Arrays.asList(createMapLayer("foo", "acme"), createMapLayer("bar", "acme"))); callback.operationDispatched(new Request(), op("GetFeatureInfo", "WMS", "1.1.1", gfi)); assertEquals("acme:foo", data.getResources().get(0)); assertEquals("acme:bar", data.getResources().get(1)); BBoxAsserts.assertEqualsBbox(new ReferencedEnvelope(48.62,48.62,-123.15,-123.15,logCrs),data.getBbox(), 0.01); }
@Before public void setUp() throws URISyntaxException, IOException { outputFormat = new TextFeatureInfoOutputFormat(getWMS()); Request request = new Request(); parameters = new HashMap<String, Object>(); parameters.put("LAYER", "testLayer"); Map<String, String> env = new HashMap<String, String>(); env.put("TEST1", "VALUE1"); env.put("TEST2", "VALUE2"); parameters.put("ENV", env); request.setKvp(parameters); Dispatcher.REQUEST.set(request); final FeatureTypeInfo featureType = getFeatureTypeInfo(MockData.NULLS); fcType = WfsFactory.eINSTANCE.createFeatureCollectionType(); fcType.getFeature().add(featureType.getFeatureSource(null, null).getFeatures()); // fake layer list List<MapLayerInfo> queryLayers = new ArrayList<MapLayerInfo>(); LayerInfo layerInfo = new LayerInfoImpl(); layerInfo.setType(PublishedType.VECTOR); ResourceInfo resourceInfo = new FeatureTypeInfoImpl(null); NamespaceInfo nameSpace = new NamespaceInfoImpl(); nameSpace.setPrefix("topp"); nameSpace.setURI("http://www.topp.org"); resourceInfo.setNamespace(nameSpace); layerInfo.setResource(resourceInfo); MapLayerInfo mapLayerInfo = new MapLayerInfo(layerInfo); queryLayers.add(mapLayerInfo); getFeatureInfoRequest = new GetFeatureInfoRequest(); getFeatureInfoRequest.setQueryLayers(queryLayers); }
GetFeatureInfoRequest request = new GetFeatureInfoRequest(); GetMapRequest getMapRequest = new GetMapRequest(); List<MapLayerInfo> layers = new ArrayList<MapLayerInfo>(); request.setGetMapRequest(getMapRequest); request.setQueryLayers(layers);
private GetMapRequest getGetMap(Request request) { Operation op = request.getOperation(); Object parsedRequest = op.getParameters()[0]; GetMapRequest getMap; if (parsedRequest instanceof GetMapRequest) { getMap = (GetMapRequest) parsedRequest; } else if (parsedRequest instanceof GetFeatureInfoRequest) { getMap = ((GetFeatureInfoRequest) parsedRequest).getGetMapRequest(); } else { throw new IllegalArgumentException( "Could not get a GetMapRequest out of the parsed request, the parsed request object was:_" + parsedRequest); } return getMap; }
GetMapRequest map = info.getGetMapRequest(); info.getXPixel(), info.getYPixel(), new ReferencedEnvelope(map.getBbox(), map.getCrs()), map.getWidth(),
@Test public void testWMSGetFeatureInfo() throws Exception { GetFeatureInfoRequest gfi = new GetFeatureInfoRequest(); GetMapRequest gm = new GetMapRequest(); gm.setHeight(330); gm.setWidth(780); Envelope env = new ReferencedEnvelope(-126.81851, -115.818992, 44.852958, 49.5066, null); CoordinateReferenceSystem crs = CRS.decode("EPSG:4326", true); CoordinateReferenceSystem logCrs = CRS.decode("EPSG:4326", false); gm.setBbox(env); gm.setCrs(crs); gfi.setGetMapRequest(gm); gfi.setXPixel(260); gfi.setYPixel(63); gfi.setVersion("1.1.1"); gfi.setQueryLayers( Arrays.asList(createMapLayer("foo", "acme"), createMapLayer("bar", "acme"))); callback.operationDispatched(new Request(), op("GetFeatureInfo", "WMS", "1.1.1", gfi)); assertEquals("acme:foo", data.getResources().get(0)); assertEquals("acme:bar", data.getResources().get(1)); BBoxAsserts.assertEqualsBbox( new ReferencedEnvelope(48.62, 48.62, -123.15, -123.15, logCrs), data.getBbox(), 0.01); }
MapLayerInfo mapLayerInfo = new MapLayerInfo(layerInfo); queryLayers.add(mapLayerInfo); getFeatureInfoRequest = new GetFeatureInfoRequest(); getFeatureInfoRequest.setQueryLayers(queryLayers);
List<Style> getMapStyles = request.getGetMapRequest().getStyles(); List<Style> styles = new ArrayList<Style>(); List<MapLayerInfo> getMapLayers = request.getGetMapRequest().getLayers(); for (int i = 0; i < layers.size(); i++) { final String targetLayer = layers.get(i).getName();
/** Test hitArea does not overflow out of painted area. */ @Test public void testHitAreaSize() throws Exception { GetFeatureInfoRequest request = new GetFeatureInfoRequest(); GetMapRequest getMapRequest = new GetMapRequest(); List<MapLayerInfo> layers = new ArrayList<>(); layers.add(new MapLayerInfo(getCatalog().getLayerByName(MockData.BRIDGES.getLocalPart()))); getMapRequest.setLayers(layers); getMapRequest.setSRS("EPSG:4326"); getMapRequest.setBbox(new Envelope(0.0001955, 0.0002035, 0.000696, 0.000704)); getMapRequest.setWidth(100); getMapRequest.setHeight(100); getMapRequest.setFormat("image/png"); request.setGetMapRequest(getMapRequest); request.setQueryLayers(layers); // point is almost centered, but on the other side of the middle point request.setXPixel(45); request.setYPixel(45); FeatureInfoRequestParameters params = new FeatureInfoRequestParameters(request); VectorRenderingLayerIdentifier vrli = new VectorRenderingLayerIdentifier(getWMS(), null); assertEquals(0, vrli.identify(params, 10).size()); }
List<Callable<String>> tasks = new ArrayList<>(numRequests); for (int i = 0; i < numRequests; i++) { final GetFeatureInfoRequest request = new GetFeatureInfoRequest(); request.setQueryLayers(((i % 2) == 0) ? layers1 : layers2); final FeatureCollectionType type = (((i % 2) == 0) ? type1 : type2); tasks.add(
getMap = (GetMapRequest) ro; } else if (ro instanceof GetFeatureInfoRequest) { getMap = ((GetFeatureInfoRequest) ro).getGetMapRequest(); } else { throw new ServiceException("Unrecognized request object: " + ro);
GetFeatureInfoRequest gfi = new GetFeatureInfoRequest(); gm.setBbox(env); gm.setCrs(crs); gfi.setGetMapRequest(gm); gfi.setXPixel(259); gfi.setYPixel(241); gfi.setVersion("1.1.1"); gfi.setQueryLayers(Arrays.asList(createMapLayer("foo", "acme"), createMapLayer("bar", "acme"))); callback.operationDispatched(new Request(), op("GetFeatureInfo", "WMS", "1.1.1", gfi));
getMap = (GetMapRequest) ro; } else if (ro instanceof GetFeatureInfoRequest) { getMap = ((GetFeatureInfoRequest) ro).getGetMapRequest(); } else { throw new ServiceException("Unrecognized request object: " + ro);
GetFeatureInfoRequest gfi = new GetFeatureInfoRequest(); gm.setBbox(env); gm.setCrs(crs); gfi.setGetMapRequest(gm); gfi.setXPixel(259); gfi.setYPixel(241); gfi.setVersion("1.1.1"); gfi.setQueryLayers( Arrays.asList(createMapLayer("foo", "acme"), createMapLayer("bar", "acme"))); callback.operationDispatched(new Request(), op("GetFeatureInfo", "WMS", "1.1.1", gfi));
.getSchema() .getUserData() .put("targetCrs", request.getGetMapRequest().getCrs()); collection.getSchema().getUserData().put("targetVersion", "wms:getfeatureinfo");