Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
            }
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
 private JSONObject BuildQuery(GISLayerInfo queryLayer, int maxFeaturesReturned, GISEnvelope queryEnvelope)
 {
     return new JSONObject();
 }
Exemplo n.º 7
0
        //        <?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;
        }
Exemplo n.º 8
0
 private string BuildRequest(EsriLayer imageLayer, GISEnvelope envelope)
 {
     return BuildRequest(ImageHeight, ImageWidth, envelope, new MapElement("LEGEND"), null, new Dictionary<string, EsriLayer>() { { imageLayer.Name, imageLayer } });
 }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
        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;
            }
        }
Exemplo n.º 11
0
        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;
            }
        }
Exemplo n.º 12
0
        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;
            }
        }
Exemplo n.º 13
0
        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;
            }
        }
Exemplo n.º 14
0
        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;
            }
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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();
        }
Exemplo n.º 17
0
        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();
        }
Exemplo n.º 18
0
        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;
        }
Exemplo n.º 19
0
 private string BuildRequest(GISEnvelope envelope)
 {
     return BuildRequest(ImageHeight, ImageWidth, envelope, new MapElement("LEGEND"), null, null);
 }
Exemplo n.º 20
0
        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);
            }
        }
Exemplo n.º 21
0
        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();
        }
Exemplo n.º 22
0
        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;
            }
        }
Exemplo n.º 23
0
        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);
        }
Exemplo n.º 24
0
        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 });
            }
        }