Example #1
0
        protected override void Serialize(SharpMap.Layers.Layer layer, XmlElement lyrElement)
        {
            // << Check layer on null>>
            if (layer == null)
            {
                lyrElement.InnerText = MapSerializerConst.NullValue;
            }
            else
            {
                //Add attr TYPE
                XmlAttribute typeAttribute = lyrElement.OwnerDocument.CreateAttribute("Type");
                typeAttribute.Value = layer.GetType().ToString();
                lyrElement.Attributes.Append(typeAttribute);
                switch (layer.GetType().ToString())
                {
                case "eidss.gis.Layers.EidssSystemDbLayer":
                case "eidss.gis.Layers.EidssExtSystemDbLayer":
                    EidssDbLayerSerializer.Serialize((EidssDbLayer)layer, lyrElement);
                    break;

                case "eidss.gis.Layers.EidssUserDbLayer":
                case "eidss.gis.Layers.EidssUserBufZoneLayer":
                    EidssUserDbLayerSerializer.Serialize((EidssUserDbLayer)layer, lyrElement);
                    break;

                case "eidss.gis.Layers.EidssLabelLayer":
                case "eidss.gis.Layers.EidssSystemLabelLayer":
                case "eidss.gis.Layers.EidssExtSystemLabelLayer":
                    EidssLabelLayerSerializer.Serialize((EidssLabelLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.VectorLayer":
                    VectorLayerSerializer.Serialize((VectorLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.LabelLayer":
                    LabelLayerSerializer.Serialize((LabelLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.GdalRasterLayer":
                    GdalRasterLayerSerializer.Serialize((GdalRasterLayer)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.LayerGroup":
                    EidssLayerGroupSerializer.Instance.Serialize((LayerGroup)layer, lyrElement);
                    break;

                case "GIS_V4.Layers.TileLayer":
                    TileLayerSerializer.Serialize((TileLayer)layer, lyrElement);
                    break;

                default:
                    throw new NotImplementedException();
                }
            }
        }
Example #2
0
        protected override SharpMap.Layers.Layer Deserialize(XmlElement layerNode)
        {
            #region << Check value on NullValue >>
            if (layerNode.InnerText == MapSerializerConst.NullValue)
            {
                return(null);
            }
            #endregion

            XmlAttribute typeAttribute = layerNode.Attributes["Type"];
            if (typeAttribute == null)
            {
                throw new LayerDeserializationException("Element 'Layer' don't have attribute 'Type'!");
            }

            switch (typeAttribute.Value)
            {
            case "eidss.gis.Layers.EidssSystemDbLayer":
            case "eidss.gis.Layers.EidssExtSystemDbLayer":
                return(EidssDbLayerSerializer.Deserialize(layerNode));

            case "eidss.gis.Layers.EidssUserDbLayer":
            case "eidss.gis.Layers.EidssUserBufZoneLayer":
                return(EidssUserDbLayerSerializer.Deserialize(layerNode));

            case "eidss.gis.Layers.EidssLabelLayer":
            case "eidss.gis.Layers.EidssSystemLabelLayer":
            case "eidss.gis.Layers.EidssExtSystemLabelLayer":
                return(EidssLabelLayerSerializer.Deserialize(layerNode));

            case "GIS_V4.Layers.VectorLayer":
                return(VectorLayerSerializer.Deserialize(layerNode));

            case "GIS_V4.Layers.LabelLayer":
                return(LabelLayerSerializer.Deserialize(layerNode));

            case "GIS_V4.Layers.GdalRasterLayer":
                return(GdalRasterLayerSerializer.Deserialize(layerNode));

            case "GIS_V4.Layers.LayerGroup":
                return(EidssLayerGroupSerializer.Instance.Deserialize(layerNode));

            case "GIS_V4.Layers.TileLayer":
                return(TileLayerSerializer.Deserialize(layerNode));

            default:
                throw new NotImplementedException();
            }
        }
Example #3
0
        /// <summary>
        /// Deserialize LabelLayer
        /// </summary>
        /// <param name="labelLayerElement">Root element to deserialize</param>
        /// <returns>LabelLayer</returns>
        public static EidssLabelLayer Deserialize(XmlElement labelLayerElement)
        {
            EidssLabelLayer resultLabelLayer = null;

            LayerSerializer.LayerInfo lyrInfo;
            XmlNode tempNode;
            int     tempInt;

            #region <<Deserialize LayerFields >>

            try
            { lyrInfo = LayerSerializer.DeserializeLayerFields(labelLayerElement); }
            catch (Exception ex)
            { throw new EidssLabelLayerDeserializationException("LabelLayer can't be deserialized: " + ex.Message, ex); }

            //create layer
            switch (labelLayerElement.Attributes["Type"].Value)
            {
            case "eidss.gis.Layers.EidssLabelLayer":
                resultLabelLayer = new EidssLabelLayer(lyrInfo.LayerName, lyrInfo.Guid);
                break;

            case "eidss.gis.Layers.EidssSystemLabelLayer":
                resultLabelLayer = new EidssSystemLabelLayer(lyrInfo.LayerName, lyrInfo.Guid);
                break;

            case "eidss.gis.Layers.EidssExtSystemLabelLayer":
                resultLabelLayer = new EidssExtSystemLabelLayer(lyrInfo.LayerName, lyrInfo.Guid);
                break;
            }

            resultLabelLayer.ControledByUser = lyrInfo.ControledByUser;
            resultLabelLayer.Enabled         = lyrInfo.Enabled;
            resultLabelLayer.MaxVisible      = lyrInfo.MaxVisible;
            resultLabelLayer.MinVisible      = lyrInfo.MinVisible;
            //resultLabelLayer.SRID = lyrInfo.SRID; - тут бля косяк в провайдере! нет проверки!
            resultLabelLayer.VisibleInTOC = lyrInfo.VisibleInTOC;
            resultLabelLayer.Transparency = lyrInfo.Transparency;
            #endregion

            #region << Deserialize >>

            //DataSource - переделать
            try
            { resultLabelLayer.DataSource = EidssProviderSerializer.Instance.DeserializeFromNode(labelLayerElement, "DataSource"); }
            catch (Exception ex)
            { throw new EidssLabelLayerDeserializationException("DataSource can't be deserialized: " + ex.Message, ex); }

            //LabelColumn
            tempNode = labelLayerElement.SelectSingleNode("LabelColumn");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'LabelColumn'!");
            }
            resultLabelLayer.LabelColumn = tempNode.InnerText;

            //LabelFilter
            tempNode = labelLayerElement.SelectSingleNode("LabelFilter");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'LabelFilter'!");
            }
            resultLabelLayer.LabelFilter = LabelLayerSerializer.GetFilterLabelDelegate(tempNode.InnerText);

            //LabelStringDelegate
            //NotImplemented

            //MultipartGeometryBehaviour
            tempNode = labelLayerElement.SelectSingleNode("MultipartGeometryBehaviour");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'MultipartGeometryBehaviour'!");
            }
            if (!Int32.TryParse(tempNode.InnerText, out tempInt) || !Enum.IsDefined(typeof(SharpMap.Layers.LabelLayer.MultipartGeometryBehaviourEnum), tempInt))
            {
                throw new EidssLabelLayerDeserializationException("Can't parse node 'MultipartGeometryBehaviour'!");
            }
            resultLabelLayer.MultipartGeometryBehaviour = (SharpMap.Layers.LabelLayer.MultipartGeometryBehaviourEnum)tempInt;

            //Priority
            tempNode = labelLayerElement.SelectSingleNode("Priority");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'Priority'!");
            }
            if (!Int32.TryParse(tempNode.InnerText, out tempInt) || tempInt < 0)
            {
                throw new EidssLabelLayerDeserializationException("Can't parse node 'Priority'!");
            }
            resultLabelLayer.Priority = tempInt;

            //RotationColumn
            tempNode = labelLayerElement.SelectSingleNode("RotationColumn");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'RotationColumn'!");
            }
            resultLabelLayer.RotationColumn = tempNode.InnerText;

            //SmoothingMode
            tempNode = labelLayerElement.SelectSingleNode("SmoothingMode");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'SmoothingMode'!");
            }
            if (!Int32.TryParse(tempNode.InnerText, out tempInt) || !Enum.IsDefined(typeof(SmoothingMode), tempInt))
            {
                throw new EidssLabelLayerDeserializationException("Can't parse node 'SmoothingMode'!");
            }
            resultLabelLayer.SmoothingMode = (SmoothingMode)tempInt;


            //SRID
            tempNode = labelLayerElement.SelectSingleNode("SRID");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'SRID'!");
            }
            if (!Int32.TryParse(tempNode.InnerText, out tempInt))
            {
                throw new EidssLabelLayerDeserializationException("Can't parse node 'SRID'!");
            }
            resultLabelLayer.SRID = tempInt;

            //Style
            try
            { resultLabelLayer.Style = (LabelStyle)StyleSerializer.DeserializeFromNode(labelLayerElement, "Style"); }
            catch (Exception ex)
            { throw new EidssLabelLayerDeserializationException("Style can't be deserialized: " + ex.Message, ex); }


            //TextRenderingHint
            tempNode = labelLayerElement.SelectSingleNode("TextRenderingHint");
            if (tempNode == null)
            {
                throw new EidssLabelLayerDeserializationException("'LabelLayerElement' don't have element 'TextRenderingHint'!");
            }
            if (!Int32.TryParse(tempNode.InnerText, out tempInt) || !Enum.IsDefined(typeof(TextRenderingHint), tempInt))
            {
                throw new EidssLabelLayerDeserializationException("Can't parse node 'TextRenderingHint'!");
            }
            resultLabelLayer.TextRenderingHint = (TextRenderingHint)tempInt;

            //Theme
            //NotImplemented

            #endregion

            return(resultLabelLayer);
        }