public override string GetMapImage(GISService activeService, List<GISLayerInfo> mapLayers, GISEnvelope mapEnvelope, double zoomLevel, int width, int height) { List<OGCLayer> ogcmapLayers = new List<OGCLayer>(); if (!mapLayers.Any()) { List<OGCLayer> ogcLayers = new List<OGCLayer>(); var layerList = activeService.BaseLayers.ToList(); foreach (GISLayerInfo layer in layerList) { ogcLayers.Add(layer as OGCLayer); } ogcmapLayers = ogcLayers; } else { foreach (var l in mapLayers) { if (l is OGCLayer) { ogcmapLayers.Add(l as OGCLayer); } else { ogcmapLayers.Add(new OGCLayer(l.Name, l.Id)); } } } return GetUrl(OGC_OPERATION.GetMap, OGC_SERVICE_TYPE.WMS, activeService as OGCService, ogcmapLayers, new OGCEnvelope(mapEnvelope), width, height); }
public override string GetMapImage(GISService activeService, List<GISLayerInfo> mapLayers, GISEnvelope mapEnvelope, double zoomLevel, int height, int width) { //http://basemap.nationalmap.gov/ArcGIS/rest/services/USGSTopo/MapServer/export?bbox=-15809463.2958818%2C2409214.11633487%2C-7845336.4447948%2C7007665.73796985&bboxSR=&layers=&layerdefs=&size=250%2C250&imageSR=&format=png&transparent=false&dpi=&time=&layerTimeOptions=&f=image EsriEnvelope imageEnvelope = new EsriEnvelope(mapEnvelope); string activeServiceName = activeService.Id.IndexOf("__") > 0 ? activeService.Id.Substring(0, activeService.Id.IndexOf("__")) : activeService.Id; string requestUrl = activeService.ServiceType == ServiceType.MapServer ? String.Format(IMAGE_URL, Server.Host, activeServiceName, activeService.ServiceType, imageEnvelope.ToJSON(), height, width, Server.ServletPath, BuildLayers(mapLayers), "image") : String.Format(EXPORT_IMAGE_URL, Server.Host, activeServiceName, activeService.ServiceType, imageEnvelope.ToJSON(), height, width, Server.ServletPath, BuildLayers(mapLayers), "image"); return requestUrl; }
public override void ExecuteSearch(string searchTerm, SEARCH_TYPE searchType, GISEnvelope searchArea, GISLayerInfo featureLayer) { int maxFeaturesReturned = 20; string requestUrl = String.Format(QUERY_URL, Server.Host, Server.ServletPath, Server.ActiveService.Id, false, Server.Version); string requestXml = BuildQuery(featureLayer, maxFeaturesReturned, searchArea); EsriFeatureResponse response = new EsriFeatureResponse() { SearchTerm = searchTerm }; response._envelope = searchArea; response._layers = new List<GISLayerInfo>() { featureLayer }; response.HasError = false; response.LastRequest = requestXml; webClient.PostRequest(requestUrl, Server.UseForm ? ApplyFormEncoding(requestXml) : requestXml, ProcessSearchReturn, response); }
public override bool GetMap(GISService activeService, List<GISLayerInfo> mapLayers, GISEnvelope mapEnvelope, double zoomLevel, string requestXml) { string requestUrl = String.Format(SERVICE_URL, Server.Host, Server.ServletPath, activeService.Id, Server.UseForm, Server.Version); XmlReader responseString = null; EsriImageResponse response = new EsriImageResponse(); try { response.Envelope = mapEnvelope; response._layers.AddRange(mapLayers); response.LastRequest = requestXml; response._mapImageUrl = requestUrl; response.ZoomLevel = zoomLevel; // http://websig.hidrografico.pt/servlet/com.esri.esrimap.Esrimap?ServiceName=ICENCUK&ClientVersion=4.0&Form=True&Encode=False webClient.PostRequest(requestUrl, Server.UseForm ? ApplyFormEncoding(requestXml) : requestXml, ProcessImageReturn, response); return true; } catch (Exception ex) { return false; // new GISResponse() { _envelope = mapEnvelope, _layers = mapLayers, ErrorMessage = ex.Message, HasError = true, LastRequest = requestXml, LastResponse = Return }; //return GISResponse.ProcessErrorResponse("The last map request failed: " + ex.Message, Request, Return); } finally { //if (responseString != null) responseString.Close(); } }
public override bool GetMap(GISService activeService, GISEnvelope mapEnvelope, List<GISLayerInfo> mapLayers) { List<GISLayerInfo> totalLayers = GetTotalLayers(activeService); return GetMap(activeService, totalLayers, mapEnvelope, SetZoomLevel(mapEnvelope, activeService._baseExtent), BuildRequest(ImageHeight, ImageWidth, mapEnvelope, totalLayers)); }
private JSONObject BuildQuery(GISLayerInfo queryLayer, int maxFeaturesReturned, GISEnvelope queryEnvelope) { return new JSONObject(); }
// <?xml version="1.0" encoding="UTF-8"?> public override bool Identify(int xpoint, int ypoint, double centerY, double centerX, GISEnvelope envelope, GISLayerInfo featureLayer) { int maxFeaturesReturned = 20; string requestUrl = String.Format(QUERY_URL, Server.Host, Server.ServletPath, Server.ActiveService.Id, false, Server.Version); GISEnvelope mapEnvelope = BuildEnvelope(centerX, centerY, SelectEnvelope(Server.ActiveService), 99); string requestXml = BuildQuery(featureLayer, maxFeaturesReturned, mapEnvelope); EsriFeatureResponse response = new EsriFeatureResponse(); response._envelope = mapEnvelope; response._layers = new List<GISLayerInfo>() { featureLayer }; response.HasError = false; response.LastRequest = requestXml; webClient.PostRequest(requestUrl, Server.UseForm ? ApplyFormEncoding(requestXml) : requestXml, ProcessServiceReturn, response); return true; }
private string BuildRequest(EsriLayer imageLayer, GISEnvelope envelope) { return BuildRequest(ImageHeight, ImageWidth, envelope, new MapElement("LEGEND"), null, new Dictionary<string, EsriLayer>() { { imageLayer.Name, imageLayer } }); }
private string BuildQuery(GISLayerInfo queryLayer, int maxFeaturesReturned, GISEnvelope spatialQuery) { StringBuilder queryString = new StringBuilder(); StringWriter messageString = new StringWriter(queryString); XmlWriter queryWriter = XmlWriter.Create(messageString); queryWriter.WriteStartElement("ARCXML"); queryWriter.WriteAttributeString("", "VERSION", "", "1.1"); queryWriter.WriteStartElement("REQUEST"); queryWriter.WriteStartElement("GET_FEATURES"); queryWriter.WriteAttributeString("", "outputmode", "", "xml"); queryWriter.WriteAttributeString("", "geometry", "", "false"); queryWriter.WriteAttributeString("", "envelope", "", "true"); queryWriter.WriteAttributeString("", "beginrecord", "", "0"); queryWriter.WriteAttributeString("", "checkesc", "", "true"); queryWriter.WriteAttributeString("", "compact", "", "true"); queryWriter.WriteStartElement("LAYER"); queryWriter.WriteAttributeString("", "id", "", queryLayer.Id); queryWriter.WriteAttributeString("", "name", "", queryLayer.Name); queryWriter.WriteEndElement(); queryWriter.WriteStartElement("SPATIALQUERY"); queryWriter.WriteAttributeString("", "subfields", "", "#ALL#"); queryWriter.WriteStartElement("SPATIALFILTER"); queryWriter.WriteAttributeString("", "relation", "", "area_intersection"); EsriEnvelope.AsXml(queryWriter, spatialQuery); queryWriter.WriteEndElement(); // SPATIALFILTER queryWriter.WriteEndElement(); // SPATIALQUERY //queryWriter.WriteEndElement(); // PROPERTIES queryWriter.WriteEndElement(); // GET_FEATURES queryWriter.WriteEndElement(); // REQUEST queryWriter.WriteEndElement(); // ARCXML queryWriter.Flush(); return queryString.ToString(); }
public override bool GetMap(GISService activeService, GISEnvelope mapEnvelope, List<GISLayerInfo> mapLayers) { if (mapEnvelope == null) SelectEnvelope(activeService); OGCEnvelope ogcEnvelope = new OGCEnvelope(mapEnvelope); if (activeService.HasLayers || GetServiceDetails(activeService).Result) { if (mapLayers.Count == 0) { mapLayers.Add(activeService.BaseLayers[0]); } //string currentlayerId = mapLayers[0]._id; //string styleId = (mapLayers[0] as OGCLayer).Style; GISEnvelope maxEnvelope = activeService._baseExtent; if (mapLayers.Count > 0) maxEnvelope = mapLayers[0]._baseExtent; //for (int i = 1; i < mapLayers.Count; i++) //{ // currentlayerId = string.Format("{0},{1}", currentlayerId, mapLayers[i]._id); // if (mapLayers[i]._baseExtent != null) maxEnvelope = mapLayers[i]._baseExtent; //} //for (int i = 1; i < mapLayers.Count; i++) //{ // styleId = string.Format("{0},{1}", styleId, (mapLayers[i] as OGCLayer).Style); //} string mapUrl = GetUrl(OGC_OPERATION.GetMap, OGC_SERVICE_TYPE.WMS, activeService as OGCService, mapLayers.Cast<OGCLayer>(), ogcEnvelope, _imageWidth, _imageHeight); return GetMap(activeService, mapLayers, mapEnvelope, SetZoomLevel(mapEnvelope, maxEnvelope), mapUrl); } else { Server.RaiseErrorResponse(new GISResponse() { Envelope = mapEnvelope, ErrorMessage = "Service details could not be found for this service.", Layers = mapLayers, HasError = true }); return false; } }
public override bool GetMap(GISService activeService, GISEnvelope imageEnvelope) { OGCImageResponse response = new OGCImageResponse(); if (activeService.HasLayers || GetServiceDetails(activeService).Result) { if (activeService._activeLayers.Count == 0) { for (int i = 0; i < activeService._baseLayers.Count; i++) { if (activeService._baseLayers[i].IsVisible && activeService._baseLayers[i]._baseExtent != null) { activeService._activeLayers.Add(activeService._baseLayers[i]); } } } return GetMap(activeService, imageEnvelope, activeService._activeLayers.ToList()); } else { Server.RaiseErrorResponse(GISResponse.ProcessErrorResponse("Services could not be located for this server at this time.", "", "")); return false; } }
public override bool GetMap(GISService activeService, List<GISLayerInfo> mapLayers, GISEnvelope mapEnvelope, double zoomLevel, string requestString) { EsriImageResponse response = new EsriImageResponse(); try { response.Envelope = mapEnvelope; response._layers.AddRange(mapLayers); response.LastRequest = requestString; response._mapImageUrl = requestString; response.ZoomLevel = zoomLevel; webClient.GetRequest(requestString, ProcessImageReturn, response); return true; } catch (System.Exception ex) { Server.RaiseErrorResponse(new GISResponse() { LastResponse = ex.Message, ErrorMessage = ex.Message, HasError = true, LastRequest = requestString, _envelope = response.Envelope, _layers = mapLayers }); return false; } }
public override bool GetMap(GISService activeService, GISEnvelope imageEnvelope, List<GISLayerInfo> mapLayers) { string requestUrl = string.Empty; try { List<GISLayerInfo> totalLayers = GetTotalLayers(activeService); EsriEnvelope mapEnvelope = new EsriEnvelope(imageEnvelope); requestUrl = activeService.ServiceType == ServiceType.MapServer ? String.Format(IMAGE_URL, Server.Host, activeService.Name, activeService.ServiceType, mapEnvelope.ToJSON(), _imageWidth, _imageHeight, Server.ServletPath, BuildLayers(mapLayers), "json") : String.Format(EXPORT_IMAGE_URL, Server.Host, activeService.Name, activeService.ServiceType, mapEnvelope.ToJSON(), _imageWidth, _imageHeight, Server.ServletPath, BuildLayers(mapLayers), "json"); return GetMap(activeService, totalLayers, mapEnvelope, SetZoomLevel(mapEnvelope, activeService._baseExtent), requestUrl); } catch (System.Exception ex) { Server.RaiseErrorResponse(new GISResponse() { LastResponse = ex.Message, ErrorMessage = ex.Message, HasError = true, LastRequest = requestUrl, _envelope = imageEnvelope, _layers = mapLayers }); return false; } }
public override bool Identify(int xpoint, int ypoint, double latitude, double longitude, GISEnvelope envelope, GISLayerInfo featureLayer) { try { // http://{0}/ArcGIS/rest/services/{1}/{2}/identify?geometryType=esriGeometryPoint&geometry={{x:{3}, y:{4} }}&wkid={5}&layers=all:{6}&tolerance=10&mapExtent={7}&imageDisplay={8},{9},96&returnGeometry=true string layerid = featureLayer.Id; string requestUrl = string.Format(IDENTIFY_URL, _Server.Host, _Server.ActiveService.Id, _Server.ActiveService.ServiceType, longitude, latitude, envelope.CoordinateSystem, layerid, envelope.ToString(), _imageHeight, _imageWidth, Server.ServletPath); GISFeatureResponse response = new GISFeatureResponse(); response._envelope = BuildEnvelope(longitude, latitude, SelectEnvelope(Server.ActiveService), MaxZoom - 2); response._layers = new List<GISLayerInfo>() { featureLayer }; response.HasError = false; response.LastRequest = requestUrl; webClient.GetRequest(requestUrl, ProcessIdentifyResponse, response); return true; } catch (Exception ex) { Server.RaiseErrorResponse(new GISResponse() { _envelope = null, _layers = new List<GISLayerInfo>() { new EsriLayerInfo() { _name = "Search", _type = "Search" } }, ErrorMessage = ex.Message }); return false; } }
public override bool GetMap(GISService activeService, GISEnvelope imageEnvelope) { EsriEnvelope mapEnvelope = new EsriEnvelope(imageEnvelope); string activeServiceName = activeService.Id.IndexOf("__") > 0 ? activeService.Id.Substring(0, activeService.Id.IndexOf("__")) : activeService.Id; string requestUrl = activeService.ServiceType == ServiceType.MapServer ? String.Format(IMAGE_URL, Server.Host, activeServiceName, activeService.ServiceType, mapEnvelope.ToJSON(), _imageWidth, _imageHeight, Server.ServletPath, BuildLayers(activeService.ActiveLayers), "json") : String.Format(EXPORT_IMAGE_URL, Server.Host, activeServiceName, activeService.ServiceType, mapEnvelope.ToJSON(), _imageWidth, _imageHeight, Server.ServletPath, BuildLayers(activeService.ActiveLayers), "json"); return GetMap(activeService, activeService.ActiveLayers, mapEnvelope, SetZoomLevel(mapEnvelope, SelectEnvelope(activeService)), requestUrl); }
private string BuildRequest(int imageHeight, int imageWidth, GISEnvelope imageEnvelope, List<GISLayerInfo> layers) { StringBuilder requestString = new StringBuilder(); System.Xml.XmlWriter requestWriter = XmlWriter.Create(requestString); requestWriter.WriteStartElement("ARCXML"); requestWriter.WriteAttributeString("", "VERSION", "", "1.1"); requestWriter.WriteStartElement("REQUEST"); requestWriter.WriteStartElement("GET_IMAGE"); requestWriter.WriteAttributeString("", "auto_resize", "", "true"); requestWriter.WriteAttributeString("", "show", "", "layers"); requestWriter.WriteStartElement("PROPERTIES"); requestWriter.WriteStartElement("IMAGESIZE"); requestWriter.WriteAttributeString("", "width", "", imageWidth.ToString()); requestWriter.WriteAttributeString("", "height", "", imageHeight.ToString()); requestWriter.WriteEndElement(); // IMAGESIZE EsriEnvelope.AsXml(requestWriter, imageEnvelope); new MapElement("LEGEND").AsXml(requestWriter); //if (layers != null) AddLayers(requestWriter, layers); if (layers != null && layers.Count > 0) AddLayerInfo(requestWriter, layers); requestWriter.WriteEndElement(); // PROPERTIES requestWriter.WriteEndElement(); // GET_IMAGE requestWriter.WriteEndElement(); // REQUEST requestWriter.WriteEndElement(); // ARCXML requestWriter.Flush(); return requestString.ToString(); }
private string BuildGeocode(List<GISLayerInfo> queryLayers, int maxFeaturesReturned, GISEnvelope mapEnvelope) { //<ARCXML version="1.1"> // <REQUEST> // <GET_GEOCODE maxcandidates="25" minscore="60"> // <LAYER id="streets" /> // <ADDRESS> // <GCTAG id="STREET" value="380 New York St" /> // <GCTAG id="Zone" value="92373" /> // <GCTAG id="CrossStreet" value="" /> // </ADDRESS> // </GET_GEOCODE> // </REQUEST> //</ARCXML> StringBuilder queryString = new StringBuilder(); StringWriter messageString = new StringWriter(queryString); XmlWriter queryWriter = XmlWriter.Create(messageString); queryWriter.WriteStartElement("ARCXML"); queryWriter.WriteAttributeString("", "VERSION", "", "1.1"); queryWriter.WriteStartElement("REQUEST"); queryWriter.WriteStartElement("GET_GEOCODE"); queryWriter.WriteAttributeString("", "maxcandidates", "", "25"); foreach (GISLayerInfo queryLayer in queryLayers) { queryWriter.WriteStartElement("LAYER"); queryWriter.WriteAttributeString("", "id", "", queryLayer.Id); queryWriter.WriteAttributeString("", "name", "", queryLayer.Name); queryWriter.WriteEndElement(); } queryWriter.WriteEndElement(); // GET_GEOCODE queryWriter.WriteEndElement(); // REQUEST queryWriter.WriteEndElement(); // ARCXML queryWriter.Flush(); return queryString.ToString(); }
public override bool GetMap(GISService activeService, List<GISLayerInfo> mapLayers, GISEnvelope mapEnvelope, double zoomLevel, string requestString) { OGCImageResponse response = new OGCImageResponse(); try { response.Envelope = mapEnvelope; response.Layers = mapLayers; OGCEnvelope ogcEnvelope = new OGCEnvelope(mapEnvelope); //string currentlayerId = mapLayers[0]._id; //string styleId = (mapLayers[0] as OGCLayer).Style; //for (int i = 1; i < mapLayers.Count; i++) //{ // currentlayerId = string.Format("{0},{1}", currentlayerId, mapLayers[i]._id); //} //for (int i = 1; i < mapLayers.Count; i++) //{ // if (!string.IsNullOrEmpty((mapLayers[i] as OGCLayer).Style)) // { // styleId = string.Format("{0},{1}", styleId, (mapLayers[i] as OGCLayer).Style); // } //} response.LastRequest = requestString; response.LastResponse = "Complete"; response._mapImageUrl = requestString; response.ZoomLevel = zoomLevel; Server.RaiseMapResponse(response); return true; } catch (System.Exception ex) { Server.RaiseErrorResponse(new GISResponse() { LastResponse = ex.Message, ErrorMessage = ex.Message, HasError = true, LastRequest = requestString, _envelope = response.Envelope, _layers = mapLayers }); } return false; }
private string BuildRequest(GISEnvelope envelope) { return BuildRequest(ImageHeight, ImageWidth, envelope, new MapElement("LEGEND"), null, null); }
public override void ExecuteSearch(string searchTerm, SEARCH_TYPE searchType, GISEnvelope searchArea, GISLayerInfo featureLayer) { if (searchType == SEARCH_TYPE.Geocode) { // http://{0}/{1}?SERVICE={2}&VERSION={3}&REQUEST=GetFeatureInfo&LAYERS={4}&QUERY_LAYERS={4}&STYLES=&BBOX={5}&FEATURE_COUNT=10&HEIGHT={6}&WIDTH={7}&FORMAT=image%2Fpng&INFO_FORMAT=text%2Fxml&SRS={8}&X={9}&Y={10} OGCEnvelope envelope = new OGCEnvelope(searchArea); string requestUrl = string.Format(FEATURE_INFO_URL, Server.Host, Server.ServletPath, OGC_SERVICE_TYPE.WMS, Server.Version, (featureLayer as OGCLayer).Id, (envelope as OGCEnvelope).ToBBoxString(), _imageHeight, _imageWidth, searchArea.CoordinateSystem, _imageWidth / 2, _imageHeight / 2); GISFeatureResponse response = new GISFeatureResponse(); response._envelope = searchArea; response._layers = new List<GISLayerInfo>() { featureLayer }; response.HasError = false; response.LastRequest = requestUrl; webClient.GetRequest(requestUrl, ProcessQueryResponse, response); } else { List<GISLayerInfo> layers = new List<GISLayerInfo>(); GetQueryLayers(Server.ActiveService, ref layers); string queryLayers = string.Empty; foreach (GISLayerInfo layer in layers) { queryLayers += layer.Id; } string requestUrl = GetUrl(OGC_OPERATION.GetFeatureInfo, OGC_SERVICE_TYPE.WMS, Server.ActiveService as OGCService, queryLayers.Cast<OGCLayer>(), new OGCEnvelope(searchArea), _imageWidth, _imageHeight); //http://<hostname>/<deploy_name>/com.esri.wms.Esrimap?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&SRS=EPSG:4326&BBOX=-117,38,-90,49&WIDTH=600&HEIGHT=400&QUERY_LAYERS=States&X=200&Y=150& GISFeatureResponse response = new GISFeatureResponse() { SearchTerm = searchTerm }; response._envelope = new GISEnvelope(); response._layers = new List<GISLayerInfo>() { new OGCLayer("Search", "Search") }; response.HasError = false; response.LastRequest = requestUrl; webClient.GetRequest(requestUrl, ProcessSearchResponse, response); } }
private string BuildRequest(int imageHeight, int imageWidth, GISEnvelope requestEnvelope, MapElement legendElement, List<GISLayerInfo> layerInfo, Dictionary<string, EsriLayer> layers) { StringBuilder requestString = new StringBuilder(); XmlWriter requestWriter = XmlWriter.Create(requestString); requestWriter.WriteStartElement("ARCXML"); requestWriter.WriteAttributeString("", "VERSION", "", "1.1"); requestWriter.WriteStartElement("REQUEST"); requestWriter.WriteStartElement("GET_IMAGE"); requestWriter.WriteAttributeString("", "auto_resize", "", "true"); requestWriter.WriteAttributeString("", "show", "", "layers"); requestWriter.WriteStartElement("PROPERTIES"); requestWriter.WriteStartElement("IMAGESIZE"); requestWriter.WriteAttributeString("", "width", "", imageWidth.ToString()); requestWriter.WriteAttributeString("", "height", "", imageHeight.ToString()); requestWriter.WriteEndElement(); // IMAGESIZE EsriEnvelope.AsXml(requestWriter, requestEnvelope); // if (layerDefs != null) AddLayerlist(requestWriter, layerDefs); if (legendElement != null) { legendElement.AsXml(requestWriter); } if (layers != null) AddLayers(requestWriter, layers); if (layerInfo != null) AddLayerInfo(requestWriter, layerInfo); requestWriter.WriteEndElement(); // PROPERTIES requestWriter.WriteEndElement(); // GET_IMAGE requestWriter.WriteEndElement(); // REQUEST requestWriter.WriteEndElement(); // ARCXML requestWriter.Flush(); return requestString.ToString(); }
public override bool Identify(int xpoint, int ypoint, double latitude, double longitude, GISEnvelope envelope, GISLayerInfo featureLayer) { // http://maps.google.com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=true try { if (featureLayer == null) return false; envelope = new OGCEnvelope(envelope); //string layerString = featureLayer.Id; string requestUrl = GetUrl(OGC_OPERATION.GetFeatureInfo, OGC_SERVICE_TYPE.WMS, Server.ActiveService as OGCService, new List<OGCLayer>() { featureLayer as OGCLayer }, envelope as OGCEnvelope, _imageWidth, _imageHeight, xpoint, ypoint); GISFeatureResponse response = new GISFeatureResponse(); response._envelope = BuildEnvelope(longitude, latitude, envelope, Server.MaxZoom * .9); response._layers = new List<GISLayerInfo>() { featureLayer }; response.HasError = false; response.LastRequest = requestUrl; webClient.GetRequest(requestUrl, ProcessQueryResponse, response); return true; } catch (Exception ex) { return false; } }
public override string GetMapImage(GISService activeService, List<GISLayerInfo> mapLayers, GISEnvelope mapEnvelope, double zoomLevel, int height, int width) { // http://toposervices.cr.usgs.gov/wmsconnector/com.esri.wms.Esrimap/USGS_EDNA_geo?TRANSPARENT=true&LAYERS=NED_2003_SHADEDRELIEF&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&FORMAT=image%2Fpng&SRS=EPSG%3A4326&BBOX=-128.6875,31.425,-111.8125,42.675&WIDTH=768&HEIGHT=512 StringBuilder layerstring = new StringBuilder(); if (!mapLayers.Any()) { var layerList = activeService.BaseLayers.Take(Math.Min(activeService.BaseLayers.Count, 5)).ToList(); foreach (GISLayerInfo layer in layerList) { layerstring.AppendFormat("{0},", layer.Id); } } else { foreach (var l in mapLayers) { layerstring.AppendFormat("{0},", l.Id); } } return string.Format("http://{0}/wmsconnector/com.esri.wms.Esrimap/{1}?TRANSPARENT=true&LAYERS={2}&SERVICE=WMS&VERSION={3}&REQUEST=GetMap&STYLES=&FORMAT=image%2Fpng&SRS={4}&BBOX={5}&WIDTH={6}&HEIGHT={7}", Server.Host, activeService.Name, layerstring, Server.Version, mapEnvelope.CoordinateSystem, mapEnvelope.ToBBoxString(), width, height); }
public override void ExecuteSearch(string searchTerm, SEARCH_TYPE searchType, GISEnvelope searchArea, GISLayerInfo featureLayer) { string activeServiceName = Server.ActiveService.Name.IndexOf("__") > 0 ? Server.ActiveService.Name.Substring(0, Server.ActiveService.Name.IndexOf("__")) : Server.ActiveService.Name; EsriEnvelope queryEnvelope = new EsriEnvelope(searchArea); string requestUrl = string.Empty; if (searchType == SEARCH_TYPE.Geocode) { //http://planthardiness.ars.usda.gov/ArcGIS/rest/services/uspz/MapServer/identify?geometryType=esriGeometryPoint&geometry=-120%2C40&tolerance=10&mapExtent=-119%2C38%2C-121%2C41&imageDisplay=400%2C300%2C96 //http://services.arcgisonline.com/ArcGIS/rest/services/Specialty/Soil_Survey_Map/MapServer/identify?geometryType=esriGeometryPoint&geometry=19.23865%2C48.23152&sr=102100&layers=0&time=&layerTimeOptions=&layerdefs=&tolerance=100&mapExtent=19.23865%2C48.23152%2C19.23865%2C48.23152&imageDisplay=600%2C550%2C96&returnGeometry=true&maxAllowableOffset=&f=json requestUrl = String.Format(GEOCODE_URL, Server.Host, Server.ServletPath, activeServiceName, searchArea.CenterX, searchArea.CenterY); } else if (searchType == SEARCH_TYPE.Identify) { //http://planthardiness.ars.usda.gov/ArcGIS/rest/services/uspz/MapServer/identify?geometryType=esriGeometryPoint&geometry=-120%2C40&tolerance=10&mapExtent=-119%2C38%2C-121%2C41&imageDisplay=400%2C300%2C96 //http://services.arcgisonline.com/ArcGIS/rest/services/Specialty/Soil_Survey_Map/MapServer/identify?geometryType=esriGeometryPoint&geometry=19.23865%2C48.23152&sr=102100&layers=0&time=&layerTimeOptions=&layerdefs=&tolerance=100&mapExtent=19.23865%2C48.23152%2C19.23865%2C48.23152&imageDisplay=600%2C550%2C96&returnGeometry=true&maxAllowableOffset=&f=json requestUrl = String.Format(GEOCODE_URL, Server.Host, Server.ServletPath, activeServiceName, searchArea.CenterX, searchArea.CenterY); } else { requestUrl = String.Format(QUERY_URL, Server.Host, activeServiceName, Server.ActiveService.ServiceType, Server.ActiveService.BaseLayers[0].Id, queryEnvelope.ToJSON(), Server.ServletPath); } EsriFeatureResponse response = new EsriFeatureResponse(); response._envelope = searchArea; response._layers = new List<GISLayerInfo>() { featureLayer }; response.HasError = false; response.LastRequest = requestUrl; try { webClient.GetRequest(requestUrl, new EventHandler<WebEventArgs>(ProcessQueryReturn), response); //wc.DownloadStringAsync(new Uri(requestUrl), new AsyncState() { Response = response, CurrentState = Server.ActiveService }); } catch (Exception ex) { Server.RaiseSearchResponse(new GISResponse() { HasError = true, ErrorMessage = string.Format("{0}: {1}", ex.Message), LastRequest = requestUrl, LastResponse = string.Empty, _layers = new List<GISLayerInfo>() { Server.ActiveService.BaseLayers[0] }, _envelope = queryEnvelope }); } }