${REST_UGCImageLayer_Title}
Inheritance: UGCLayer
Ejemplo n.º 1
0
        /// <summary>${REST_ServerLayer_method_FromJson_D}</summary>
        /// <returns>${REST_ServerLayer_method_FromJson_return}</returns>
        /// <param name="json">${REST_ServerLayer_method_FromJson_param_jsonObject}</param>
        internal static ServerLayer FromJson(JsonObject json)
        {
            var serverLayer = new ServerLayer();
            if (json["bounds"].ValueType != JsonValueType.Null)
            {
                serverLayer.Bounds = JsonHelper.ToRectangle2D(json["bounds"].GetObjectEx());
            }
            else
            {
                //null
            }
            serverLayer.Caption = json["caption"].GetStringEx();
            serverLayer.Description = json["description"].GetStringEx();
            serverLayer.Name = json["name"].GetStringEx();
            serverLayer.IsQueryable = json["queryable"].GetBooleanEx();
            serverLayer.IsVisible = json["visible"].GetBooleanEx();
            serverLayer.IsCompleteLineSymbolDisplayed = json["completeLineSymbolDisplayed"].GetBooleanEx();
            serverLayer.MaxScale = json["maxScale"].GetNumberEx();
            serverLayer.MinScale = json["minScale"].GetNumberEx();
            serverLayer.MinVisibleGeometrySize = json["minVisibleGeometrySize"].GetNumberEx();
            serverLayer.OpaqueRate = (int)json["opaqueRate"].GetNumberEx();
            serverLayer.IsSymbolScalable = json["symbolScalable"].GetBooleanEx();
            serverLayer.SymbolScale = json["symbolScale"].GetNumberEx();
            serverLayer.DatasetInfo = DatasetInfo.FromJson(json["datasetInfo"].GetObjectEx());
            serverLayer.DisplayFilter = json["displayFilter"].GetStringEx();

            if (json["joinItems"].ValueType != JsonValueType.Null)
            {
                List<JoinItem> joinItems = new List<JoinItem>();
                foreach (JsonValue item in json["joinItems"].GetArray())
                {
                    joinItems.Add(JoinItem.FromJson(item.GetObjectEx()));
                }
                serverLayer.JoinItems = joinItems;
            }
            serverLayer.RepresentationField = json["representationField"].GetStringEx();

            if (json["ugcLayerType"].GetStringEx() == SuperMapLayerType.GRID.ToString())
            {
                UGCGridLayer ugcGridLayer = new UGCGridLayer();

                List<Color> colors = new List<Color>();
                foreach (JsonValue colorItem in json["colors"].GetArray())
                {
                    colors.Add(ServerColor.FromJson(colorItem.GetObjectEx()).ToColor());
                }
                ugcGridLayer.Colors = colors;

                if (json["dashStyle"].ValueType != JsonValueType.Null)
                {
                    ugcGridLayer.DashStyle = ServerStyle.FromJson(json["dashStyle"].GetObjectEx());
                }
                if (json["gridType"].ValueType != JsonValueType.Null)
                {
                    ugcGridLayer.GridType = (GridType)Enum.Parse(typeof(GridType), json["gridType"].GetStringEx(), true);
                }
                else
                {
                }

                ugcGridLayer.HorizontalSpacing = json["horizontalSpacing"].GetNumberEx();
                ugcGridLayer.SizeFixed = json["sizeFixed"].GetBooleanEx();

                if (json["solidStyle"].ValueType != JsonValueType.Null)
                {
                    ugcGridLayer.SolidStyle = ServerStyle.FromJson(json["solidStyle"].GetObjectEx());
                }

                if (json["specialColor"].ValueType != JsonValueType.Null)
                {
                    ugcGridLayer.SpecialColor = ServerColor.FromJson(json["specialColor"].GetObjectEx()).ToColor();
                }
                ugcGridLayer.SpecialValue = json["specialValue"].GetNumberEx();
                ugcGridLayer.VerticalSpacing = json["verticalSpacing"].GetNumberEx();
                serverLayer.UGCLayer = ugcGridLayer;
            }

            else if (json["ugcLayerType"].GetStringEx() == SuperMapLayerType.IMAGE.ToString())
            {
                UGCImageLayer ugcImageLayer = new UGCImageLayer();
                ugcImageLayer.Brightness = (int)json["brightness"].GetNumberEx();
                if (json["colorSpaceType"].ValueType != JsonValueType.Null)
                {
                    ugcImageLayer.ColorSpaceType = (ColorSpaceType)Enum.Parse(typeof(ColorSpaceType), json["colorSpaceType"].GetStringEx(), true);
                }
                else
                {
                }
                ugcImageLayer.Contrast = (int)json["contrast"].GetNumberEx();

                List<int> bandIndexes = new List<int>();
                if (json["displayBandIndexes"].ValueType != JsonValueType.Null && (json["displayBandIndexes"].GetArray()).Count > 0)
                {
                    foreach (JsonObject item in json["displayBandIndexes"].GetArray())
                    {
                        bandIndexes.Add((int)item.GetNumber());
                    }

                    ugcImageLayer.DisplayBandIndexes = bandIndexes;
                }

                ugcImageLayer.Transparent = json["transparent"].GetBooleanEx();
                ugcImageLayer.TransparentColor = ServerColor.FromJson(json["transparentColor"].GetObjectEx()).ToColor();
                serverLayer.UGCLayer = ugcImageLayer;
            }

            else if (json["ugcLayerType"].GetStringEx() == SuperMapLayerType.THEME.ToString())
            {
                UGCThemeLayer ugcThemeLayer = new UGCThemeLayer();
                if (json["theme"].ValueType != JsonValueType.Null)
                {

                    if (json["theme"].GetObjectEx()["type"].GetStringEx() == "UNIQUE")
                    {
                        ugcThemeLayer.Theme = ThemeUnique.FromJson(json["theme"].GetObjectEx());
                    }

                    else if (json["theme"].GetObjectEx()["type"].GetStringEx() == "RANGE")
                    {
                        ugcThemeLayer.Theme = ThemeRange.FromJson(json["theme"].GetObjectEx());
                    }

                    else if (json["theme"].GetObjectEx()["type"].GetStringEx() == "LABEL")
                    {
                        ugcThemeLayer.Theme = ThemeLabel.FromJson(json["theme"].GetObjectEx());
                    }

                    else if (json["theme"].GetObjectEx()["type"].GetStringEx() == "GRAPH")
                    {
                        ugcThemeLayer.Theme = ThemeGraph.FromJson(json["theme"].GetObjectEx());
                    }

                    else if (json["theme"].GetObjectEx()["type"].GetStringEx() == "DOTDENSITY")
                    {
                        ugcThemeLayer.Theme = ThemeDotDensity.FromJson(json["theme"].GetObjectEx());
                    }

                    else if (json["theme"].GetObjectEx()["type"].GetStringEx() == "GRADUATEDSYMBOL")
                    {
                        ugcThemeLayer.Theme = ThemeGraduatedSymbol.FromJson(json["theme"].GetObjectEx());
                    }
                    else
                    {
                        //以后有需求再添加,现在就写到这里,共六个专题图。
                    }
                }
                if (json["theme"].GetObjectEx()["type"].ValueType != JsonValueType.Null)
                {
                    ugcThemeLayer.ThemeType = (ThemeType)Enum.Parse(typeof(ThemeType), json["theme"].GetObjectEx()["type"].GetStringEx(), true);
                }
                serverLayer.UGCLayer = ugcThemeLayer;
                //ugcThemeLayer.Theme
            }

            else if (json["ugcLayerType"].GetStringEx() == SuperMapLayerType.VECTOR.ToString() && json.ContainsKey("style"))
            {
                serverLayer.UGCLayer = UGCVectorLayer.FromJson(json["style"].GetObjectEx());
            }
            else
            {
                serverLayer.UGCLayer = new UGCLayer();
            }
            if (json["ugcLayerType"].ValueType != JsonValueType.Null)
            {
                serverLayer.UGCLayerType = (SuperMapLayerType)Enum.Parse(typeof(SuperMapLayerType), json["ugcLayerType"].GetStringEx(), true);
            }
            else
            {
                //不做处理
            }

            //这里不判断WMS和WFS图层。
            //else if (json["ugcLayerType"] == SuperMapLayerType.WMS.ToString())
            //{

            //}
            //根据图层类型增加相应属性。
            return serverLayer;
        }