示例#1
0
 internal static void AddLayerDetails(GISLayerInfo info, JSONObject obj)
 {
     for (int idx = 0; idx < obj.Count; idx++)
     {
         switch (obj[idx])
         {
             case "id":
                 break;
             case "name":
                 break;
             case "type":
                 info._type = obj.getString("type");
                 break;
             case "geometryType":
                 break;
             case "copyrightText":
             case "parentLayer":
                 //{"id" : <parentLayerId>, "name" : "<parentLayerName>"}
                 break;
             case "subLayers":
             //[    {"id" : <subLayerId1>, "name" : "<subLayerName1>"},    {"id" : <subLayerId2>, "name" : "<subLayerName2>"}],
             case "minScale":
                 break;
             case "maxScale":
                 break;
             case "extent":
                 info._baseExtent = EsriEnvelope.Create(obj.getJSONObject("extent"));
                 break;
             case "displayField":
                 break;
             case "fields":
                 EsriField.ProcessFields(info._Fields, obj.getJSONArray("fields"));
                 info.IsQueryable = true;
                 break;
         }
     }
 }
示例#2
0
        internal static GISFeature Create(JSONObject obj, GISLayerInfo layer, bool hasFields)
        {
            string layerid = layer._id;
            GISFeature feature = new GISFeature();
            //{"layerId":1,"layerName":"Block Groups","value":"310899741.002","displayFieldName":"NAME","attributes":{"Shape":"Polygon","ID":"310899741002","State Abbreviation":"NE","2010 Total Population":"776","1990-2000 Population Change":"-0.5","2000-2010 Population: Annual Growth Rate":"-1.25","2010-2015 Population: Annual Growth Rate":"-1.19","Land Area in Square Miles":"811.3085"}}
            for (int i = 0; i < obj.Count; i++)
            {
                try
                {
                    switch (obj[i])
                    {
                        case "layerId":
                            layerid = obj[obj[i]].ToString();
                            break;
                        case "attributes":
                            if (string.Compare(layerid, layer._id) == 0)
                            {
                                AddAttributeValues((JSONObject)obj[obj[i]], feature, layer.Fields, hasFields);
                            }
                            else
                            {
                                AddAttributeValues((JSONObject)obj[obj[i]], feature);
                            }
                            break;
                        //case "bbox":
                        //    feature.Envelope = BingEnvelope.Parse((JSONArray)obj[obj[i]]);
                        //    break;
                        default:
                            feature.Fields.Add(new GISField(obj[i], obj[obj[i]].ToString()));
                            break;
                    }
                }
                catch { }
            }

            return feature;
        }
示例#3
0
        public static void GetRequestXml(GISLayerInfo info, XmlWriter xtw)
        {
            xtw.WriteStartElement("LAYERDEF");
            xtw.WriteAttributeString("", "name", "", info.Name);
            xtw.WriteAttributeString("", "id", "", info.Id);
            xtw.WriteAttributeString("", "visible", "", info.IsVisible.ToString());

            xtw.WriteEndElement(); // LAYER
        }
示例#4
0
 public virtual IGISLegend GetLegend(GISLayerInfo selectedLayer)
 {
     return new GISLegend() {  };
 }
示例#5
0
 public virtual bool Identify(int xpoint, int ypoint, double latitude, double longitude, GISEnvelope envelope, GISLayerInfo featureLayer)
 {
     throw new NotImplementedException("base class");
 }
示例#6
0
 public virtual void ExecuteSearch(string searchTerm, SEARCH_TYPE searchType, GISEnvelope searchArea, GISLayerInfo featureLayer)
 {
     throw new NotSupportedException(string.Format("Server type {0} does not expose a search interface.", this._Server.Type));
 }
示例#7
0
        public void ExecuteSearch(string searchTerm, SEARCH_TYPE searchType, GISEnvelope searchArea)
        {
            if (Controller.RequestProcessing)
                return;
            else Controller.RequestProcessing = true;

            if (FeatureLayer == null)
            {
                List<GISLayerInfo> layers = GetQueryLayers();

                if (layers.Count() > 0)
                {
                    _featureLayer = layers.First();
                }
            }

            Controller.ExecuteSearch(searchTerm, searchType, searchArea, FeatureLayer);
        }
示例#8
0
        public bool Identify(int xpoint, int ypoint, double latitude, double longitude, GISEnvelope envelope, GISLayerInfo featureLayer)
        {
            if (Controller.RequestProcessing)
                return false;
            else Controller.RequestProcessing = true;

            if (featureLayer == null)
            {
                if (FeatureLayer == null)
                {
                    List<GISLayerInfo> layers = GetQueryLayers();

                    if (layers.Count() > 0)
                    {
                        featureLayer = layers.First();
                    }
                }
                else featureLayer = FeatureLayer;
            }

            return Controller.Identify(xpoint, ypoint, latitude, longitude, envelope, featureLayer);
        }
示例#9
0
 public IGISLegend GetLegend(GISLayerInfo selectedLayer)
 {
     if (selectedLayer == null)
     {
     return ActiveService.ActiveLayers.Any() ? Controller.GetLegend(this.ActiveService.ActiveLayers.First()) : Controller.GetLegend(ActiveService.BaseLayers.First());
     }
     else return Controller.GetLegend(selectedLayer);
 }
示例#10
0
        //internal static Dictionary<string, GISService> GetServices(AtlasOf.Configuration.SERVERSERVERServices sERVERSERVERServices)
        //{
        //    Dictionary<string, GISService> services = new Dictionary<string, GISService>();
        //    foreach (AtlasOf.Configuration.SERVERSERVERServicesSERVICE service in sERVERSERVERServices.SERVICE)
        //    {
        //        if (!services.ContainsKey(service.NAME))
        //        {
        //            services.Add(service.NAME, GISService.Create(service));
        //        }
        //    }
        //    return services;
        //}
        //private static GISService Create(AtlasOf.Configuration.SERVERSERVERServicesSERVICE service)
        //{
        //    GISService newService = new GISService(service.NAME);
        //    newService._type = (ServiceType)System.Enum.Parse(typeof(ServiceType), service.TYPE, true);
        //    newService._isPublic = service.ACCESS == "PUBLIC";
        //    newService._description = service.DESC;
        //    return newService;
        //}
        //public static AtlasOf.Configuration.SERVERSERVERServicesSERVICE Persist(GISService service)
        //{
        //    AtlasOf.Configuration.SERVERSERVERServicesSERVICE newService = new AtlasOf.Configuration.SERVERSERVERServicesSERVICE();
        //    newService.NAME = service.Name;
        //    newService.TYPE = service.ServiceType.ToString();
        //    newService.ACCESS = service._isPublic ? "PUBLIC" : "HIDDEN";
        //    newService.DESC = service.Description;
        //    return newService;
        //}
        internal bool FindLayer(string layer, out GISLayerInfo returnLayer)
        {
            var lyr = from x in _baseLayers
                      where string.Compare(x._name, layer, StringComparison.CurrentCultureIgnoreCase) == 0
                          || string.Compare(x._id, layer, StringComparison.CurrentCultureIgnoreCase) == 0
                      select x;

            if (lyr.Count() > 0)
            {
                returnLayer = lyr.FirstOrDefault();
                return true;
            }
            else
            {
                var lyr2 = from x in _activeLayers
                           where string.Compare(x._name, layer, StringComparison.CurrentCultureIgnoreCase) == 0
                              || string.Compare(x._id, layer, StringComparison.CurrentCultureIgnoreCase) == 0
                           select x;

                if (lyr2.Count() > 0)
                {
                    returnLayer = lyr2.First();
                    return true;
                }
                else
                {
                    returnLayer = null;
                    return false;
                }
            }
        }