示例#1
0
        private void OpenContourFile(string fname, ICanvas canvas)
        {
            IContourLayer lyr = ContourLayer.FromXml(fname, true);

            if (lyr != null)
            {
                canvas.LayerContainer.Layers.Add(lyr);
                canvas.Refresh(Core.DrawEngine.enumRefreshType.All);
            }
        }
示例#2
0
        public void ToXmlFile(IContourLayer contourLayer, string fname)
        {
            XElement rootElement = ToXml(contourLayer);

            if (rootElement == null)
            {
                return;
            }
            XDocument doc = new XDocument(rootElement);

            doc.Save(fname);
        }
示例#3
0
        private void ReadComplexProperty(XElement pElement, IContourLayer lyr)
        {
            string       proName = pElement.Name.LocalName;
            PropertyInfo pInfo   = lyr.GetType().GetProperty(proName);

            object[]            atts           = pInfo.GetCustomAttributes(typeof(XmlPersistAttribute), false);
            XmlPersistAttribute xmlPersisitAtt = atts[0] as XmlPersistAttribute;
            IPropertyConverter  convter        = Activator.CreateInstance(xmlPersisitAtt.PropertyConverter) as IPropertyConverter;
            object value = convter.FromXml(pElement);

            lyr.GetType().InvokeMember(proName, BindingFlags.SetProperty, null, lyr, new object[] { value });
        }
示例#4
0
        private static void TryLoadContourValues(string fname, IContourLayer layer)
        {
            string fnameContour = fname + ".contour";

            if (!File.Exists(fnameContour))
            {
                return;
            }
            IContourPersisit persist = new ContourPersist();

            GeoDo.RSS.RasterTools.ContourPersist.enumCoordType coordType;
            string spatialRef;

            ContourLine.ContourEnvelope evp;
            ContourLine[] cntLines = persist.Read(fnameContour, out coordType, out evp, out spatialRef);
            layer.Apply(cntLines, true);
        }
示例#5
0
        public static IContourLayer FromXml(string fname, bool isWithData)
        {
            IContourLayer lyr = (new Object2Xml()).FromXml(fname) as IContourLayer;

            if (lyr == null)
            {
                return(lyr);
            }
            if (isWithData)
            {
                TryLoadContourValues(fname, lyr);
            }
            if (lyr is ContourLayer)
            {
                (lyr as ContourLayer).FileName = fname;
            }
            return(lyr);
        }
示例#6
0
 private void button35_Click(object sender, EventArgs e)
 {
     using (OpenFileDialog dlg = new OpenFileDialog())
     {
         dlg.Filter = "等值线(*.xml)|*.xml";
         if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             IContourLayer lyr = ContourLayer.FromXml(dlg.FileName, true);
             if (lyr != null)
             {
                 _canvas.LayerContainer.Layers.Add(lyr);
                 _canvas.Refresh(enumRefreshType.All);
             }
             //
             //Object2Xml obj2xml = new Object2Xml();
             //obj2xml.ToXmlFile(lyr, "f:\\xxx.xml");
         }
     }
 }
示例#7
0
 private void button26_Click(object sender, EventArgs e)
 {
     using (OpenFileDialog dlg = new OpenFileDialog())
     {
         dlg.Filter = "等值线(*.xml)|*.xml";
         if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             IContourLayer lyr = ContourLayer.FromXml(dlg.FileName, true);
             if (lyr != null)
             {
                 IDataFrame df = _host.ActiveDataFrame;
                 if (df == null)
                 {
                     return;
                 }
                 ICanvas canvas = (df.Provider as IDataFrameDataProvider).Canvas;
                 canvas.LayerContainer.Layers.Add(lyr);
                 canvas.Refresh(enumRefreshType.All);
             }
         }
     }
 }
示例#8
0
        private bool ReadValueTypeProperty(XElement pElement, IContourLayer lyr)
        {
            string proName = pElement.Name.LocalName;
            string type    = PropertyConverter.AttToString(pElement, "type");
            object value   = null;

            if (type == typeof(bool).ToString())
            {
                value = PropertyConverter.AttToBool(pElement, "value");
            }
            else if (type == typeof(int).ToString())
            {
                value = PropertyConverter.AttToInt(pElement, "value");
            }
            else if (type == typeof(string).ToString())
            {
                value = PropertyConverter.AttToString(pElement, "value");
            }
            else if (type == typeof(float).ToString())
            {
                value = PropertyConverter.AttToFloat(pElement, "value");
            }
            else if (type == typeof(byte).ToString())
            {
                value = PropertyConverter.AttToByte(pElement, "value");
            }
            else if (type == typeof(double).ToString())
            {
                value = PropertyConverter.AttToDouble(pElement, "value");
            }
            else
            {
                return(false);
            }
            lyr.GetType().InvokeMember(proName, BindingFlags.SetProperty, null, lyr, new object[] { value });
            return(true);
        }
示例#9
0
        public XElement ToXml(IContourLayer contourLayer)
        {
            if (contourLayer == null)
            {
                return(null);
            }
            PropertyInfo[] proInfos = contourLayer.GetType().GetProperties();
            if (proInfos == null || proInfos.Length == 0)
            {
                return(null);
            }
            XElement rootElement = new XElement("ContourLayer");

            rootElement.SetAttributeValue("layername", contourLayer.Name ?? string.Empty);
            foreach (PropertyInfo pInfo in proInfos)
            {
                XElement pEle = ToXml(contourLayer, pInfo);
                if (pEle != null)
                {
                    rootElement.Add(pEle);
                }
            }
            return(rootElement);
        }