コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="layerInfo"></param>
        public static void UpdateUserLayerMetadata(UserDbLayerInfo layerInfo)
        {
            if (string.IsNullOrEmpty(layerInfo.m_Name) || layerInfo.m_Id == Guid.Empty)
            {
                throw new ArgumentException(Resources.gis_UserDbLayersManager_UpdateUserLayerMetadataException);
            }

            using (var conn = new SqlConnection(ConnectionString))
            {
                conn.Open();

                var style = (layerInfo.m_Style == null) ? (Object)DBNull.Value : StyleSerializer.SerializeAsDocument(layerInfo.m_Style).InnerXml;
                var theme = (layerInfo.m_Theme == null) ? (Object)DBNull.Value : ThemeSerializer.SerializeAsDocument(layerInfo.m_Theme).InnerXml;

                using (var updCommand = new SqlCommand("spGisUpdateUserLayerMetadata", conn))
                {
                    updCommand.CommandType = CommandType.StoredProcedure;

                    updCommand.Parameters.AddWithValue("@LAYERID", layerInfo.m_Id);
                    updCommand.Parameters.AddWithValue("@Name", layerInfo.m_Name);
                    updCommand.Parameters.AddWithValue("@STYLE", style);
                    updCommand.Parameters.AddWithValue("@THEME", theme);
                    updCommand.Parameters.AddWithValue("@DESC", string.IsNullOrEmpty(layerInfo.m_Description) ? DBNull.Value : (object)layerInfo.m_Description);

                    updCommand.ExecuteNonQuery();
                }

                conn.Close();
            }
        }
コード例 #2
0
        /// <summary>
        /// Insert new user layer metadata
        /// </summary>
        /// <param name="newLayerInfo">LayerInfo. REQUERED: Id, name, UserID, LayerType</param>
        /// <param name="conn"> </param>
        /// <param name="trans">Transaction</param>
        public static void InsertUserLayerMetadata(UserDbLayerInfo newLayerInfo, SqlConnection conn, SqlTransaction trans = null)
        {
            if (string.IsNullOrEmpty(newLayerInfo.m_Name))
            {
                throw new ArgumentException(Resources.gis_UserDbLayersManager_InsertUserLayerMetadataException);
            }



            var style = (newLayerInfo.m_Style == null)?string.Empty:StyleSerializer.SerializeAsDocument(newLayerInfo.m_Style).InnerXml;
            var theme = (newLayerInfo.m_Theme == null) ? string.Empty : ThemeSerializer.SerializeAsDocument(newLayerInfo.m_Theme).InnerXml;

            //TODO[enikulin]: make with SqlHelper
            using (var addCommand = new SqlCommand("spGisInsertUserLayerMetadata", conn, trans))
            {
                addCommand.CommandType = CommandType.StoredProcedure;

                addCommand.Parameters.AddWithValue("@ID", newLayerInfo.m_Id);
                addCommand.Parameters.AddWithValue("@Name", newLayerInfo.m_Name);
                addCommand.Parameters.AddWithValue("@UserID", newLayerInfo.m_UserId);
                addCommand.Parameters.AddWithValue("@LayerType", (int)newLayerInfo.m_LayerType);
                addCommand.Parameters.AddWithValue("@STYLE", style);
                addCommand.Parameters.AddWithValue("@THEME", theme);
                addCommand.Parameters.AddWithValue("@DESC", string.IsNullOrEmpty(newLayerInfo.m_Description) ? DBNull.Value : (object)newLayerInfo.m_Description);
                addCommand.Parameters.AddWithValue("@PIVOTALLAYER", newLayerInfo.m_PivotalLayer);

                addCommand.ExecuteNonQuery();
            }
        }
コード例 #3
0
        public static List <UserDbLayerInfo> GetLayersMetadates(UserDbLayerType userDbLayerType = UserDbLayerType.None)
        {
            var infos = new List <UserDbLayerInfo>();
            var query = string.Format("SELECT * FROM gisUserLayer WHERE intDeleted=0");

            if (userDbLayerType != UserDbLayerType.None)
            {
                query += string.Format(" AND intType={0}", (int)userDbLayerType);
            }
            using (var conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                var dt = SqlExecHelper.SqlExecTable(new SqlConnection(ConnectionString), query);
                foreach (DataRow row in dt.Rows)
                {
                    var style = new VectorStyle();
                    if (row["xmlStyle"] != DBNull.Value &&
                        !string.IsNullOrEmpty(row["xmlStyle"] as string))
                    {
                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml((string)row["xmlStyle"]);
                        style = StyleSerializer.DeserializeFromDocument(doc) as VectorStyle;
                    }

                    ITheme theme = null;
                    if (row["xmlTheme"] != DBNull.Value &&
                        !string.IsNullOrEmpty(row["xmlTheme"] as string))
                    {
                        XmlDocument doc = new XmlDocument();
                        doc.LoadXml((string)row["xmlTheme"]);
                        theme = ThemeSerializer.DeserializeFromDocument(doc);
                    }

                    infos.Add(new UserDbLayerInfo
                    {
                        m_Id               = (Guid)row["guidLayer"],
                        m_Name             = (String)row["strName"],
                        m_UserId           = (long)row["idfUser"],
                        m_CreationDate     = (DateTime)row["CreationDate"],
                        m_LastModifiedDate = (DateTime)row["LastModifiedDate"],
                        m_Description      = row["strDescription"] as string,
                        m_LayerType        = (UserDbLayerType)row["intType"],
                        m_PivotalLayer     = (PivotLayerType)row["intPivotalLayer"],
                        m_Style            = style,
                        m_Theme            = theme
                    });
                }
                return(infos);
            }
        }
コード例 #4
0
        public static UserDbLayerInfo GetLayerMetadata(Guid layerId)
        {
            var query = string.Format("SELECT * FROM gisUserLayer WHERE guidLayer='{0}'", layerId);

            using (var conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                var dataReader = SqlExecHelper.SqlExecReader(conn, query);
                if (!dataReader.HasRows)
                {
                    throw new ApplicationException(Resources.gis_UserDbLayersManager_GetLayerMetadataException + layerId);
                }
                dataReader.Read();


                var style = new VectorStyle();
                if (dataReader["xmlStyle"] != DBNull.Value && !string.IsNullOrEmpty(dataReader["xmlStyle"] as string))
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml((string)dataReader["xmlStyle"]);
                    style = StyleSerializer.DeserializeFromDocument(doc) as VectorStyle;
                }

                ITheme theme = null;
                if (dataReader["xmlTheme"] != DBNull.Value && !string.IsNullOrEmpty(dataReader["xmlTheme"] as string))
                {
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml((string)dataReader["xmlTheme"]);
                    theme = ThemeSerializer.DeserializeFromDocument(doc);
                }

                return(new UserDbLayerInfo
                {
                    m_Id = (Guid)dataReader["guidLayer"],
                    m_Name = (String)dataReader["strName"],
                    m_UserId = (long)dataReader["idfUser"],
                    m_CreationDate = (DateTime)dataReader["CreationDate"],
                    m_LastModifiedDate = (DateTime)dataReader["LastModifiedDate"],
                    m_Description = dataReader["strDescription"] as string,
                    m_LayerType = (UserDbLayerType)dataReader["intType"],
                    m_PivotalLayer = (PivotLayerType)dataReader["intPivotalLayer"],
                    m_Style = style,
                    m_Theme = theme
                });
            }
        }
コード例 #5
0
        /// <summary>
        /// Saves the style to the DOM.
        /// </summary>
        /// <param name="style">The style.</param>
        /// <returns></returns>
        /// <remarks>Documented by Dev03, 2007-10-30</remarks>
        private bool SaveStyleToDOM(ICardStyle style)
        {
            bool          success       = false;
            StringBuilder stringBuilder = new StringBuilder();
            TextWriter    stringWriter  = new StringWriter(stringBuilder);

            try
            {
                StyleSerializer.Serialize(stringWriter, style);
                XmlElement xeStyle = m_chapter[m_XPath_Style];
                if (xeStyle != null)
                {
                    m_chapter.RemoveChild(xeStyle);
                }
                XmlDocument xdStyle = new XmlDocument();
                xdStyle.LoadXml(stringBuilder.ToString());
                m_chapter.AppendChild(m_dictionary.ImportNode(xdStyle.DocumentElement, true));
                success = true;
            }
            catch { }
            return(success);
        }
コード例 #6
0
        /// <summary>
        /// Reads the style from DOM.
        /// </summary>
        /// <remarks>Documented by Dev03, 2007-11-07</remarks>
        private void ReadStyleFromDOM()
        {
            long lTicks = DateTime.Now.Ticks;
            //System.Diagnostics.Trace.TraceInformation(@"Read chapter style (id={0}) - {1}", this.Id, DateTime.Now.Ticks - lTicks);
            //System.Diagnostics.Trace.Indent();
            XmlElement xeStyle = m_chapter[m_XPath_Style];

            if (xeStyle != null)
            {
                if (xeStyle.HasChildNodes)
                {
                    XmlReader xmlReader = new XmlNodeReader(xeStyle);
                    if (StyleSerializer.CanDeserialize(xmlReader))
                    {
                        m_Style = (XmlCardStyle)StyleSerializer.Deserialize(xmlReader);
                        (m_Style as XmlCardStyle).Parent = Parent;
                        //System.Diagnostics.Trace.TraceInformation(@"did it - {0}", DateTime.Now.Ticks - lTicks);
                    }
                }
            }
            //System.Diagnostics.Trace.TraceInformation(@"finished - {0}", DateTime.Now.Ticks - lTicks);
            //System.Diagnostics.Trace.Unindent();
        }
コード例 #7
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);
        }
コード例 #8
0
        /// <summary>
        /// Serialize LabelLayer
        /// </summary>
        /// <param name="labelLayer">LabelLayer to serialize</param>
        /// <param name="labelLayerElement">Root element to serialize</param>
        public static void Serialize(EidssLabelLayer labelLayer, XmlElement labelLayerElement)
        {
            XmlElement xmlElement;

            LayerSerializer.SerializeLayerFields(labelLayer, labelLayerElement);

            #region << Serialization >>

            //DataSource - это не правильно, так как соурс копируется два раза!
            // после изменения лееров переделать на связь по id!
            try
            { EidssProviderSerializer.Instance.SerializeAsNode(labelLayer.DataSource, labelLayerElement, "DataSource"); }
            catch (Exception ex)
            { throw new EidssLabelLayerSerializationException("DataSource can't be serialized: " + ex.Message, ex); }

            //LabelColumn
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("LabelColumn");
            xmlElement.InnerText = labelLayer.LabelColumn;
            labelLayerElement.AppendChild(xmlElement);

            //LabelFilter (Temporary version)
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("LabelFilter");
            xmlElement.InnerText = labelLayer.LabelFilter != null?labelLayer.LabelFilter.Method.DeclaringType.FullName.ToString() + "+" + labelLayer.LabelFilter.Method.Name.ToString() : null;

            labelLayerElement.AppendChild(xmlElement);

            //LabelStringDelegate
            //NotImplemented

            //MultipartGeometryBehaviour
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("MultipartGeometryBehaviour");
            xmlElement.InnerText = labelLayer.MultipartGeometryBehaviour.ToString("D");
            labelLayerElement.AppendChild(xmlElement);

            //Priority
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("Priority");
            xmlElement.InnerText = labelLayer.Priority.ToString();
            labelLayerElement.AppendChild(xmlElement);

            //RotationColumn
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("RotationColumn");
            xmlElement.InnerText = labelLayer.RotationColumn;
            labelLayerElement.AppendChild(xmlElement);

            //SmoothingMode
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("SmoothingMode");
            xmlElement.InnerText = labelLayer.SmoothingMode.ToString("D");
            labelLayerElement.AppendChild(xmlElement);

            //SRID
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("SRID");
            xmlElement.InnerText = labelLayer.SRID.ToString("F0");
            labelLayerElement.AppendChild(xmlElement);

            //Style
            try
            { StyleSerializer.SerializeAsNode(labelLayer.Style, labelLayerElement); }
            catch (Exception ex)
            { throw new LabelLayerSerializationException("Style can't be serialized: " + ex.Message, ex); }

            //TextRenderingHint
            xmlElement           = labelLayerElement.OwnerDocument.CreateElement("TextRenderingHint");
            xmlElement.InnerText = labelLayer.TextRenderingHint.ToString("D");
            labelLayerElement.AppendChild(xmlElement);

            //Theme
            //NotImplemented

            #endregion
        }
コード例 #9
0
        /// <summary>
        /// Serialize VectorLayer
        /// </summary>
        /// <param name="vectorLayer">VectorLayer to serialize</param>
        /// <param name="vectorLayerElement">Root element to serialize</param>
        public static void Serialize(EidssUserDbLayer vectorLayer, XmlElement vectorLayerElement)
        {
            XmlElement xmlElement;

            LayerSerializer.SerializeLayerFields(vectorLayer, vectorLayerElement);

            #region << Serialization >>

            //TODO[enikulin]: need refactoring. only one property (LayerDBguid) and type of layer is changed from VectorLayer

            //LayerDbGuid
            xmlElement           = vectorLayerElement.OwnerDocument.CreateElement("LayerDbGuid");
            xmlElement.InnerText = vectorLayer.LayerDbGuid.ToString();
            vectorLayerElement.AppendChild(xmlElement);

            //LabelLayerGuid
            xmlElement           = vectorLayerElement.OwnerDocument.CreateElement("LabelLayerGuid");
            xmlElement.InnerText = vectorLayer.LabelLayerGuid.ToString();
            vectorLayerElement.AppendChild(xmlElement);

            //ClippingEnabled
            xmlElement           = vectorLayerElement.OwnerDocument.CreateElement("ClippingEnabled");
            xmlElement.InnerText = vectorLayer.ClippingEnabled.ToString();
            vectorLayerElement.AppendChild(xmlElement);

            //SmoothingMode
            xmlElement           = vectorLayerElement.OwnerDocument.CreateElement("SmoothingMode");
            xmlElement.InnerText = vectorLayer.SmoothingMode.ToString("D");
            vectorLayerElement.AppendChild(xmlElement);

            //SRID
            xmlElement           = vectorLayerElement.OwnerDocument.CreateElement("SRID");
            xmlElement.InnerText = vectorLayer.SRID.ToString("F0");
            vectorLayerElement.AppendChild(xmlElement);


            //Style
            try
            { StyleSerializer.SerializeAsNode(vectorLayer.Style, vectorLayerElement); }
            catch (Exception ex)
            { throw new VectorLayerSerializationException("Style can't be serialized: " + ex.Message, ex); }

            //Theme
            try
            { ThemeSerializer.SerializeAsNode(vectorLayer.Theme, vectorLayerElement); }
            catch (Exception ex)
            { throw new VectorLayerSerializationException("Theme can't be serialized: " + ex.Message, ex); }



            //Marker size
            xmlElement           = vectorLayerElement.OwnerDocument.CreateElement("MarkerSize");
            xmlElement.InnerText = vectorLayer.MarkerSize.ToString();
            vectorLayerElement.AppendChild(xmlElement);

            //Marker color
            try
            {
                ColorSerializer.SerializeAsNode(vectorLayer.MarkerColor, vectorLayerElement, "MarkerColor");
            }
            catch (Exception ex)
            {
                throw new VectorLayerSerializationException("'MarkerColor' can't be serialized: " + ex.Message, ex);
            }

            //Polygon Fill Style
            xmlElement           = vectorLayerElement.OwnerDocument.CreateElement("PolygonFillStyle");
            xmlElement.InnerText = vectorLayer.PolygonFillStyle;
            vectorLayerElement.AppendChild(xmlElement);

            //Polygon Fill Color
            try
            {
                ColorSerializer.SerializeAsNode(vectorLayer.PolygonFillColor, vectorLayerElement, "PolygonFillColor");
            }
            catch (Exception ex)
            {
                throw new VectorLayerSerializationException("'PolygonFillColor' can't be serialized: " + ex.Message, ex);
            }

            #endregion
        }
コード例 #10
0
        /// <summary>
        /// Deserialize VectorLayer
        /// </summary>
        /// <param name="vectorLayerElement">Root element to deserialize</param>
        /// <returns>VectorLayer</returns>
        public static EidssUserDbLayer Deserialize(XmlElement vectorLayerElement)
        {
            EidssUserDbLayer resultVectorLayer = null;
            XmlNode          tempNode;

            LayerSerializer.LayerInfo lyrInfo;
            bool tempBool;
            int  tempInt;

            #region <<Deserialize LayerFields >>

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

            //LayerDbGuid
            tempNode = vectorLayerElement.SelectSingleNode("LayerDbGuid");
            if (tempNode == null)
            {
                throw new VectorLayerDeserializationException("VectorLayer can't be deserialized: 'LayerElement' don't have element 'LayerDbGuid'!");
            }
            var layerDbGuid = new Guid(tempNode.InnerText);


            //LabelLayer Guid
            tempNode = vectorLayerElement.SelectSingleNode("LabelLayerGuid");
            if (tempNode == null)
            {
                throw new VectorLayerDeserializationException("VectorLayer can't be deserialized: 'LayerElement' don't have element 'LabelLayerGuid'!");
            }
            var labelLayerGuid = new Guid(tempNode.InnerText);

            //create layer
            switch (vectorLayerElement.Attributes["Type"].Value)
            {
            case "eidss.gis.Layers.EidssUserDbLayer":
                resultVectorLayer = new EidssUserDbLayer(layerDbGuid, lyrInfo.LayerName, lyrInfo.Guid, labelLayerGuid);
                break;

            case "eidss.gis.Layers.EidssUserBufZoneLayer":
                resultVectorLayer = new EidssUserBufZoneLayer(layerDbGuid, lyrInfo.LayerName, lyrInfo.Guid, labelLayerGuid);
                break;
            }


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

            #region << Deserialize >>

            //ClippingEnabled
            tempNode = vectorLayerElement.SelectSingleNode("ClippingEnabled");
            if (tempNode == null)
            {
                throw new VectorLayerDeserializationException("'VectorLayerElement' don't have element 'ClippingEnabled'!");
            }
            if (!bool.TryParse(tempNode.InnerText, out tempBool))
            {
                throw new VectorLayerDeserializationException("Can't parse node 'ClippingEnabled'!");
            }
            resultVectorLayer.ClippingEnabled = tempBool;


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

            //SRID
            tempNode = vectorLayerElement.SelectSingleNode("SRID");
            if (tempNode == null)
            {
                throw new VectorLayerDeserializationException("'VectorLayerElement' don't have element 'SRID'!");
            }
            if (!Int32.TryParse(tempNode.InnerText, out tempInt))
            {
                throw new VectorLayerDeserializationException("Can't parse node 'SRID'!");
            }
            resultVectorLayer.SRID = tempInt;

            //Style
            try
            { resultVectorLayer.Style = (VectorStyle)StyleSerializer.DeserializeFromNode(vectorLayerElement); }
            catch (Exception ex)
            { throw new VectorLayerSerializationException("Style can't be deserialized: " + ex.Message, ex); }

            //Theme
            try
            { resultVectorLayer.Theme = ThemeSerializer.DeserializeFromNode(vectorLayerElement); }
            catch (Exception ex)
            { throw new VectorLayerSerializationException("Theme can't be deserialized: " + ex.Message, ex); }


            //Marker size
            tempNode = vectorLayerElement.SelectSingleNode("MarkerSize");
            if (tempNode == null)
            {
                throw new VectorLayerDeserializationException("'VectorLayerElement' don't have element 'MarkerSize'!");
            }
            if (!Int32.TryParse(tempNode.InnerText, out tempInt))
            {
                throw new VectorLayerDeserializationException("Can't parse node 'MarkerSize'!");
            }
            resultVectorLayer.MarkerSize = tempInt;

            //Marker color
            try
            {
                resultVectorLayer.MarkerColor = ColorSerializer.DeserializeFromNode(vectorLayerElement, "MarkerColor");
            }
            catch (Exception ex)
            {
                throw new VectorLayerSerializationException("MarkerColor can't be deserialized: " + ex.Message, ex);
            }

            //Polygon Fill Style
            tempNode = vectorLayerElement.SelectSingleNode("PolygonFillStyle");
            if (tempNode == null)
            {
                throw new VectorLayerDeserializationException("'VectorLayerElement' don't have element 'PolygonFillStyle'!");
            }
            resultVectorLayer.PolygonFillStyle = tempNode.InnerText;

            //Polygon Fill Color
            try
            {
                resultVectorLayer.PolygonFillColor = ColorSerializer.DeserializeFromNode(vectorLayerElement, "PolygonFillColor");
            }
            catch (Exception ex)
            {
                throw new VectorLayerSerializationException("PolygonFillColor can't be deserialized: " + ex.Message, ex);
            }

            #endregion

            return(resultVectorLayer);
        }