ArcEngine中加载和读取Style文件或.serverstyle文件
2013-09-16 18:00
806 查看
参考网上的文章,并做了一些补充。原文链接:/article/9135080.html
首先使用接口装载.style文件,注意.style文件需要用到ESRI.ArcGIS.Framework.StyleGalleryClass类,而非ServerStyleGalleryClass类,这个类是用来读取.serverstyle文件的。也就是说,对于加载不同的文件,建立的对象不同。
说明:.style是desktop支持的格式,.serverstyle是engine支持的格式。加载.style文件,需要新建ESRI.ArcGIS.Framework.StyleGalleryClass对象,加载.serverstyle文件,需要新建ServerStyleGalleryClass对象
[c-sharp] view
plaincopy
//获取现有的Styles,初始状态下,styleGalleryStorage中是没有东西的,但styleGalley里边是有东西的(ESRI默认那些样式)
IStyleGallery styleGalley = new ESRI.ArcGIS.Framework.StyleGalleryClass();
IStyleGalleryStorage styleGalleryStorage = styleGalley as IStyleGalleryStorage;
int styleCount = styleGalleryStorage.FileCount;
//判断所选择的文件是否已经装载,若尚未加载,则加载之
bool styleExit = false;
for (int i = 0; i < styleCount; i++)
{
if (styleGalleryStorage.get_File(i) == this.pathBox.Text)
styleExit = true;
}
if (styleExit == false)
styleGalleryStorage.AddFile(Path);
加载Sytle文件中某个指定的Symbol(以Marker为例):
[c-sharp] view
plaincopy
//加载Style文件中某个指定的Symbol
IStyleGalleryItem styleGalleryItem;
IEnumStyleGalleryItem enumStyleGalleryItem = null;
//加载某个Marker Symbol
string markerSymbolName = "TestMarker1";
//这里三个参数,第一个是ClassName,也就是StyleManager中右边树状菜单中的第二级节点名(如Reference Systems,Labels,Marker Symbols等),可以参考下面的图
//第二个参数是StyleSet名,若是自定义的Style文件的话,一般就是文件路径,也可以参考StyleManager中右边树状菜单的第一级节点名(如D:/test.style),可以参考下面的图
//第三个参数是Category名,使用""的话会将该Class和StyleSet下的所有内容都列出来,若指定某个Category,则仅列出该类别下的内容
enumStyleGalleryItem = styleGalley.get_Items("Marker Symbols", styleset, "");
enumStyleGalleryItem.Reset();
styleGalleryItem = enumStyleGalleryItem.Next();
while (styleGalleryItem != null)
{
if (styleGalleryItem.Name == markerSymbolName)
{
IMarkerSymbol symbol = (IMarkerSymbol)styleGalleryItem.Item;
break;
}
styleGalleryItem = enumStyleGalleryItem.Next();
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(enumStyleGalleryItem);
附图:StyleManager,看其中左边树状菜单,第一级节点(ESRI.style),即为StyleSet,对应get_Items函数的第二个参数,第二级节点(例如Reference System等)即为ClassName,对应第一个参数,右侧的列表中,可以看到每一个元素的Category,对应第三个参数
首先使用接口装载.style文件,注意.style文件需要用到ESRI.ArcGIS.Framework.StyleGalleryClass类,而非ServerStyleGalleryClass类,这个类是用来读取.serverstyle文件的。也就是说,对于加载不同的文件,建立的对象不同。
说明:.style是desktop支持的格式,.serverstyle是engine支持的格式。加载.style文件,需要新建ESRI.ArcGIS.Framework.StyleGalleryClass对象,加载.serverstyle文件,需要新建ServerStyleGalleryClass对象
[c-sharp] view
plaincopy
//获取现有的Styles,初始状态下,styleGalleryStorage中是没有东西的,但styleGalley里边是有东西的(ESRI默认那些样式)
IStyleGallery styleGalley = new ESRI.ArcGIS.Framework.StyleGalleryClass();
IStyleGalleryStorage styleGalleryStorage = styleGalley as IStyleGalleryStorage;
int styleCount = styleGalleryStorage.FileCount;
//判断所选择的文件是否已经装载,若尚未加载,则加载之
bool styleExit = false;
for (int i = 0; i < styleCount; i++)
{
if (styleGalleryStorage.get_File(i) == this.pathBox.Text)
styleExit = true;
}
if (styleExit == false)
styleGalleryStorage.AddFile(Path);
加载Sytle文件中某个指定的Symbol(以Marker为例):
[c-sharp] view
plaincopy
//加载Style文件中某个指定的Symbol
IStyleGalleryItem styleGalleryItem;
IEnumStyleGalleryItem enumStyleGalleryItem = null;
//加载某个Marker Symbol
string markerSymbolName = "TestMarker1";
//这里三个参数,第一个是ClassName,也就是StyleManager中右边树状菜单中的第二级节点名(如Reference Systems,Labels,Marker Symbols等),可以参考下面的图
//第二个参数是StyleSet名,若是自定义的Style文件的话,一般就是文件路径,也可以参考StyleManager中右边树状菜单的第一级节点名(如D:/test.style),可以参考下面的图
//第三个参数是Category名,使用""的话会将该Class和StyleSet下的所有内容都列出来,若指定某个Category,则仅列出该类别下的内容
enumStyleGalleryItem = styleGalley.get_Items("Marker Symbols", styleset, "");
enumStyleGalleryItem.Reset();
styleGalleryItem = enumStyleGalleryItem.Next();
while (styleGalleryItem != null)
{
if (styleGalleryItem.Name == markerSymbolName)
{
IMarkerSymbol symbol = (IMarkerSymbol)styleGalleryItem.Item;
break;
}
styleGalleryItem = enumStyleGalleryItem.Next();
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(enumStyleGalleryItem);
附图:StyleManager,看其中左边树状菜单,第一级节点(ESRI.style),即为StyleSet,对应get_Items函数的第二个参数,第二级节点(例如Reference System等)即为ClassName,对应第一个参数,右侧的列表中,可以看到每一个元素的Category,对应第三个参数
相关文章推荐
- ArcEngine中加载和读取Style文件
- 对ArcEngine中运用到的样式ServerStyle文件进行编辑AddFile和RemoveFile方法出错
- 程序中读取ServerStyle文件
- Spring源码分析:Bean加载流程概览及配置文件读取
- Visual Studio 2008不能创建数据库连接出现:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral,PublicKeyToke
- 在client程序中,从指定文件读取数据并发送给server程序
- 从资源文件里加载文件或读取资源(C#)
- metro style app读取安装包里文件的异常E_ACCESSDENIED
- 加载和读取xml文件
- Java读取Properties文件 Java加载配置Properties文件
- iOS开发:通过UIWebView加载读取本地文件(word文档)
- 【加载读取Properties】关于Properties文件的读取
- Silverlight项目加载问题 无法读取项目文件“***.csproj”
- 未能加载文件或程序集“Com.JJHua.SQLServerDAL”或它的某一个依赖项。系统找不到指定的文件
- 从资源文件里加载文件或读取资源(C#)
- Qt setStyleSheet 添加背景色/背景图片(取消背景色,读取本地文件作为背景色)
- Silverlight读取文件加载到内存(StreamReader中文乱码问题)
- Silverligth项目加载问题 无法读取项目文件“SL1201.csproj”。请确认 声明中的路径正确,且磁盘上存在该文件。
- 【原创】不重启was server重新加载应用class文件
- 不开webServer让chrome能读取本地json等文件