博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArcEngine中加载和读取Style文件或.serverstyle文件
阅读量:2376 次
发布时间:2019-05-10

本文共 1934 字,大约阅读时间需要 6 分钟。

参考网上的文章,并做了一些补充。原文链接:

首先使用接口装载.style文件,注意.style文件需要用到ESRI.ArcGIS.Framework.StyleGalleryClass类,而非ServerStyleGalleryClass类,这个类是用来读取.serverstyle文件的。也就是说,对于加载不同的文件,建立的对象不同。

说明:.style是desktop支持的格式,.serverstyle是engine支持的格式。加载.style文件,需要新建ESRI.ArcGIS.Framework.StyleGalleryClass对象,加载.serverstyle文件,需要新建ServerStyleGalleryClass对象

 

[c-sharp] 
  1.  //获取现有的Styles,初始状态下,styleGalleryStorage中是没有东西的,但styleGalley里边是有东西的(ESRI默认那些样式)  
  2. IStyleGallery    styleGalley = new ESRI.ArcGIS.Framework.StyleGalleryClass();  
  3. IStyleGalleryStorage  styleGalleryStorage = styleGalley as IStyleGalleryStorage;  
  4. int styleCount = styleGalleryStorage.FileCount;  
  5. //判断所选择的文件是否已经装载,若尚未加载,则加载之  
  6. bool styleExit = false;  
  7. for (int i = 0; i < styleCount; i++)  
  8. {  
  9.       if (styleGalleryStorage.get_File(i) == this.pathBox.Text)  
  10.             styleExit = true;  
  11. }  
  12. if (styleExit == false)  
  13.             styleGalleryStorage.AddFile(Path);  

 

加载Sytle文件中某个指定的Symbol(以Marker为例):

[c-sharp] 
  1. //加载Style文件中某个指定的Symbol  
  2. IStyleGalleryItem styleGalleryItem;  
  3. IEnumStyleGalleryItem enumStyleGalleryItem = null;  
  4. //加载某个Marker Symbol  
  5. string markerSymbolName = "TestMarker1";  
  6. //这里三个参数,第一个是ClassName,也就是StyleManager中右边树状菜单中的第二级节点名(如Reference Systems,Labels,Marker Symbols等),可以参考下面的图  
  7. //第二个参数是StyleSet名,若是自定义的Style文件的话,一般就是文件路径,也可以参考StyleManager中右边树状菜单的第一级节点名(如D:/test.style),可以参考下面的图  
  8. //第三个参数是Category名,使用""的话会将该Class和StyleSet下的所有内容都列出来,若指定某个Category,则仅列出该类别下的内容  
  9. enumStyleGalleryItem = styleGalley.get_Items("Marker Symbols", styleset, "");  
  10. enumStyleGalleryItem.Reset();  
  11. styleGalleryItem = enumStyleGalleryItem.Next();  
  12. while (styleGalleryItem != null)  
  13. {  
  14.     if (styleGalleryItem.Name == markerSymbolName)  
  15.     {  
  16.         IMarkerSymbol symbol = (IMarkerSymbol)styleGalleryItem.Item;  
  17.         break;  
  18.     }  
  19.     styleGalleryItem = enumStyleGalleryItem.Next();  
  20. }  
  21. System.Runtime.InteropServices.Marshal.ReleaseComObject(enumStyleGalleryItem);  

 

附图:StyleManager,看其中左边树状菜单,第一级节点(ESRI.style),即为StyleSet,对应get_Items函数的第二个参数,第二级节点(例如Reference System等)即为ClassName,对应第一个参数,右侧的列表中,可以看到每一个元素的Category,对应第三个参数

 

转载地址:http://lpaxb.baihongyu.com/

你可能感兴趣的文章
大数据时代企业须把握三个变化
查看>>
华为发布敏捷交换机备战大数据
查看>>
大数据挖掘变革 美赛达软硬云引领车联网商业蓝海
查看>>
大数据市场火爆 互联网思维激发运营商潜能
查看>>
赵先德:不提倡每个人都分析大数据
查看>>
大数据潮起 三领域争抢蛋糕
查看>>
百度助力中小企搜赢大数据
查看>>
大数据风云再起 二线龙头接棒大涨
查看>>
大数据核心就是要预测未来趋势
查看>>
风投掘金可穿戴设备:大数据才是背后真金
查看>>
搞互联网金融的,少点大数据忽悠吧!
查看>>
检测食品质量,看大数据分析
查看>>
地产大数据
查看>>
用大数据卖房
查看>>
2014 酒业营销升级在即 大数据营销
查看>>
停车费上涨需要公开“大数据”
查看>>
民营银行试点四大模式各有侧重 大数据独领风骚
查看>>
深交所跨入大数据监管
查看>>
房地产业探索新模式 大数据买房利好九股
查看>>
大数据和互联网思维或能有效缓解交通拥堵
查看>>