在AE开发过程,总是要将某些对象暂时存储起来,像element,layer,map,symbol 等等. ArcEngine提供了序列化对象的方法来保存这些信息, 所有能序列化的对象都支持IPersistStream 接口(详查帮组文档) .此外IXMLStream 也是比较重要的接口.具体请查看帮助文档.
本文参考了wall 大牛的技术文档,并受到启发.
相关地址:http://www.cnblogs.com/wall/archive/2009/02/26/1398447.html
/// <summary>
/// 序列化(将对象序列化成xml文件)
/// </summary>
/// <param name="xmlfile">序列化文件路径</param>
/// <param name="obj">序列化对象</param>
/// <returns></returns>
public static bool xmlSerializer(string xmlfile,object obj)
{
try
{
//判断是否支持IPersistStream接口,只有支持该接口的对象才能进行序列化
if (obj is ESRI.ArcGIS.esriSystem.IPersistStream)
{
ESRI.ArcGIS.esriSystem.IPersistStream pStream = obj as ESRI.ArcGIS.esriSystem.IPersistStream;
ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass();
pStream.Save(xmlStream as ESRI.ArcGIS.esriSystem.IStream, 0);
xmlStream.SaveToFile(xmlfile);
return true;
}
return false;
}
catch (System.Exception e)
{
return false;
}
}
/// <summary>
/// 反序列化(将xml反序列化成指定的对象)
/// </summary>
/// <param name="xmlPathFile">序列化文件</param>
/// <param name="obj">序列化对象</param>
/// <returns></returns>
public static bool XmlDeSerializer(string xmlPathFile,ref object obj)
{
try
{
//判断文件是否存在
if (System.IO.File.Exists(xmlPathFile) && System.IO.Path.GetExtension(xmlPathFile) == ".xml")
{
ESRI.ArcGIS.esriSystem.IPersistStream pStream = obj as ESRI.ArcGIS.esriSystem.IPersistStream;
ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass();
xmlStream.LoadFromFile(xmlPathFile);
pStream.Load(xmlStream as ESRI.ArcGIS.esriSystem.IStream);
return true;
}
return false;
}
catch(Exception ex)
{
return false;
}
}
分享到:
相关推荐
C#+Arcengine
C#+ArcEngine:加载打开Shp矢量和栅格数据
在ArcEngine连接ArcSDE数据库时,怎样对连接参数进行设置
利用C#+ArcEngine实现面周边点抽稀
c#+arcengine专题地图,c#+arcengine专题地图c#+arcengine专题地图
c#+arcengine 空间查询属性查询c#+arcengine 空间查询属性查询
C#+ArcEngine 打开mxd地图文档(窗体+代码)
放大,缩小,图形显示C#+ARCENGINE.rar
C#+ArcEngine:打开显示las点云数据(VS2010窗体+代码)
C#+ArcEngine:txt坐标数据转Shp矢量点
C#+ArcEngine:加载打开CAD数据(窗体+代码。ArcGIS10.1)
C#+ArcEngine 拓扑检查demo2是我最近一段时间的作品。思路比较成熟,代码简约,代码注释也比较多。希望能够帮助你们
C#+Ae10.0实现要素编辑之移动要素,包括点、线、面等要素的移动编辑。网上找到的资料都是很要金币的,这个只要1个,你们评论下就回去了,呵呵
C#+ArcEngine:shp矢量点转栅格(VS2010窗体+代码)。
C# + ArcEngine实现的属性表读取、排序等操作。
这个实例可以帮助地图输出时做更好的输出界面
C#+ArcEngine:加载打开Tin数据(窗体+代码,ArcGIS10.1)
基于C#+ArcEngine的JLKScene三维分析软件设计方案。可以实现三维编辑等功能。http://www.linjon.cn
本部分源码是采用C#+ArcEngine进行的基本功能二次开发,主要是复习基本的ArcEngine基本知识,很方便在校学生学习使用。