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); } }
public void ToXmlFile(IContourLayer contourLayer, string fname) { XElement rootElement = ToXml(contourLayer); if (rootElement == null) { return; } XDocument doc = new XDocument(rootElement); doc.Save(fname); }
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 }); }
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); }
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); }
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"); } } }
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); } } } }
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); }
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); }