唯一值符号化的流程以及过程(转)

 

一、获取ServerStyle库中的符号

      Style符号库在ArcGIS Engine开发中对应的是ServerStyle符号库,可以通过专门的转换程序把ArcGIS Desktop Style符号库转换为ArcGIS Engine所能够使用的ServerStyle符号库。 用于获取ServerStyle符号库中的符号主要涉及到以下:

接口名称 功能描述
IStyleGallery 用于管理Style Gallery
IStyleGalleryStorage 管理Style Gallery中的符号库文件
IStyleGalleryClass 控制符号库中Style Gallery Class
IEnumStyleGalleryItem 枚举一组Style Gallery items
IStyleGalleryItem 定义Style Galle ry itme

获取ESRI符号库中名称为Rose的符号的流程:

       1.首先构建一个ServerStyleGallery对象
       2.其次使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件
       3.遍历ServerGallery中的Class,如果是FillSymbol使用IStyleGallery的GetItems方法返回一个可枚举的包含一系列StyleGalleryItem的EnumStyleGalleryItem对象。
       4.遍历EnumServerStyleGalleryItme枚举对象中的StylegalleryItme如果名称是Rose即可获取ESRI符号库中名称为Rose的StylegalleryItme,然后通过IStyleGalleryItem的Item属性即可转换为ISymbol。
  1. ///<summary>
  2. ///获取符号库中符号
  3. ///</summary>
  4. ///<param name="sServerStylePath">符号库全路径名称</param>
  5. ///<param name="sGalleryClassName">GalleryClass名称</param>
  6. ///<param name="symbolName">符号名称</param>
  7. ///<returns>符号</returns>
  8.  
  9. private ISymbol GetSymbol(string sServerStylePath, string sGalleryClassName, string symbolName)
  10. {
  11. try
  12. {
  13. //ServerStyleGallery对象
  14. IStyleGallery pStyleGaller = new ServerStyleGalleryClass();
  15. IStyleGalleryStorage pStyleGalleryStorage = pStyleGaller as IStyleGalleryStorage;
  16. IEnumStyleGalleryItem pEnumSyleGalleryItem=null;
  17. IStyleGalleryItem pStyleGallerItem = null;
  18. IStyleGalleryClass pStyleGalleryClass = null;
  19. //使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件
  20. pStyleGalleryStorage.AddFile(sServerStylePath);
  21.  
  22. //遍历ServerGallery中的Class
  23.  
  24. for (int i = ; i < pStyleGaller.ClassCount; i++)
  25. {
  26. pStyleGalleryClass = pStyleGaller.get_Class(i);
  27. if (pStyleGalleryClass.Name != sGalleryClassName)
  28. continue;
  29. //获取EnumStyleGalleryItem对象
  30. pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath, "");
  31. pEnumSyleGalleryItem.Reset();
  32. //遍历pEnumSyleGalleryItem
  33. pStyleGallerItem = pEnumSyleGalleryItem.Next();
  34. while (pStyleGallerItem != null)
  35. {
  36. if (pStyleGallerItem.Name == symbolName)
  37. {
  38. //获取符号
  39. ISymbol pSymbol = pStyleGallerItem.Item as ISymbol;
  40. System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);
  41. System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);
  42. return pSymbol;
  43. }
  44. pStyleGallerItem = pEnumSyleGalleryItem.Next();
  45. }
  46. }
  47. System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem);
  48. System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass);
  49. return null;
  50. }
  51. catch (Exception Err)
  52. {
  53. MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  54. return null;
  55. }
  56. }

二、进行唯一值符号化

1.准备点数据,添加属性字段“类别”;

2.并为要素“类别”属性值分别设置为“Hospital2”,“School 1”,“Airport”三种属性值。

3.实现唯一值符号化功能

  1. ///<summary>
  2. ///设置要素图层唯一值符号化
  3. ///</summary>
  4. ///<param name="pFeatureLayer"></param>
  5. private void UniqueValueRenderFlyr(IFeatureLayer pFeatureLayer)
  6. {
  7. try
  8. {
  9. //创建UniqueValueRendererClass对象
  10. IUniqueValueRenderer pUVRender = new UniqueValueRendererClass();
  11. List<string> pFieldValues= new List<string>();
  12. pFieldValues.Add("Hospital 2");
  13. pFieldValues.Add("School 1");
  14. pFieldValues.Add("Airport");
  15. for(int i=;i<pFieldValues.Count;i++)
  16. {
  17. ISymbol pSymbol= new SimpleMarkerSymbolClass();
  18. pSymbol =GetSymbol(@"C:Program FilesArcGISStylesESRI.ServerStyle","Marker Symbols",pFieldValues(i));
  19. //添加唯一值符号化字段值和相对应的符号
  20. pUVRender.AddValue(pFieldValues,pFieldValues,pSymbol);
  21. }
  22.  
  23. //设置唯一值符号化的字段个数和字段名
  24. pUVRender.FieldCount = ;
  25. pUVRender.set_Field(, "类别");
  26. IGeoFeatureLayer pGFeatureLyr = pFeatureLayer as IGeoFeatureLayer;
  27. //设置IGeofeatureLayer的Renderer属性
  28. pGFeatureLyr.Renderer = pUVRender as IFeatureRenderer;
  29. }
  30. catch (Exception Err)
  31. {
  32. MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  33. }
  34. }
  35. private void button1_Click(object sender, EventArgs e)
  36. {
  37. IFeatureLayer pFeatureLayer = this.axMapControl1.get_Layer() as IFeatureLayer;
  38. UniqueValueRenderFlyr(pFeatureLayer);
  39. this.axMapControl1.Refresh();
  40. }

原文章出处:http://www.cnblogs.com/zhangjun1130/archive/2012/04/17/2454035.html

AE唯一值符号化的流程以及过程的更多相关文章

  1. 转载:ArcEngine 唯一值查询

    转载 http://virgoooos.iteye.com/blog/512329 转载:http://blog.csdn.net/mydriverc/archive/2007/07/26/17092 ...

  2. 生成GUID唯一值的方法汇总(dotnet/javascript/sqlserver)

    一.在 .NET 中生成1.直接用.NET Framework 提供的 Guid() 函数,此种方法使用非常广泛.GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的任何两台计 ...

  3. mysql 获取全局唯一值

    在涉及数据库存储数据的时候,经常会遇到唯一值问题,有的是主键带来的限制,有的则是业务上的需要. 下面介绍几种唯一值的获取或者生产方法: 先建一个测试用的表tbl_user,有三个字段:Id.Name. ...

  4. 转:C#生成唯一值的方法汇总

    这篇文章主要介绍了C#生成唯一值的方法汇总,有需要的朋友可以参考一下 生成唯一值的方法很多,下面就不同环境下生成的唯一标识方法一一介绍,作为工作中的一次总结,有兴趣的可以自行测试: 一.在 .NET ...

  5. C#生成唯一值的方法汇总

    生成唯一值的方法很多,下面就不同环境下生成的唯一标识方法一一介绍,作为工作中的一次总结,有兴趣的可以自行测试: https://www.cnblogs.com/xinweichen/p/4287640 ...

  6. 获取字段唯一值工具- -ArcPy和Python案例学习笔记

    获取字段唯一值工具- -ArcPy和Python案例学习笔记   目的:获取某一字段的唯一值,可以作为工具使用,也可以作为函数调用 联系方式:谢老师,135-4855-4328,xiexiaokui# ...

  7. SQL表两列取一列唯一值的记录

    问下SQL表两列取一列唯一值的 A列         B列       C列 1001      AA      2012-01-02 1001      BB      2012-02-05 100 ...

  8. MATLAB 的unique函数——数组矩阵的唯一值

    MATLAB 的unique函数——求数组矩阵的唯一值 相关MathWork文档见此:unique数组中的唯一值 1.C = unique(A) 返回与 A 中相同的数据,但是不包含重复项.C 已按照 ...

  9. Oracle12c中性能优化新特性之新增APPROX_COUNT_DISTINCT 快速唯一值计数函数

    Oracle11g中,为了改善DBMS_STATS包收集统计信息时的唯一值计数功能,增加了 APPROX_COUNT_DISTINCT函数,但文档中未记载.Oracle12c文档中包括了该函数,因此, ...

随机推荐

  1. 攻城狮在路上(叁)Linux(十八)--- 文件系统的简单操作

    本篇仅作为补漏. 一.查看磁盘和目录的容量:df  du df:列出文件系统的整体磁盘使用量. du:评估文件系统的磁盘使用量(常用于评估目录所占容量) 二.连接文件:ln 1.hard link:硬 ...

  2. 攻城狮在路上(壹) Hibernate(四)--- 对象标识符(OID)生成机制

    Hibernate使用对象标识符(OID)来建立内存中对象和数据库表中记录的对应关系,对象的OID和数据库的主键对应.为了保证OID的唯一性和不可变性,应该让Hibernate来为OID赋值.Hibe ...

  3. flume-ng 集群搭脚本

    #!/bin/bash # author: xirong # date : -- ##### 搭建 flume 集群的脚本 # 注意: # . 需要 jdk7 环境,如果没有 Java 环境,请配置 ...

  4. 跟着鸟哥学Linux系列笔记1

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 装完linux之后,接下来一步就是进行相关命令的学习了 第五章:首次登录与在线求助man page 1. X ...

  5. servlet、genericservlet、httpservlet之间的区别

    转自:http://blog.csdn.net/rat9912345/article/details/5161789 当编写一个servlet时,必须直接或间接实现servlet接口,最可能实现的方法 ...

  6. 监听报错 TNS-00525: Insufficient privilege for operation 11gR2 + 连接报错ORA-12537: TNS:connection closed

    1.TNS-00525: Insufficient privilege for operation Started with pid= Listening on: (DESCRIPTION=(ADDR ...

  7. ORB特征点检测

    Oriented FAST and Rotated BRIEF www.cnblogs.com/ronny   这篇文章我们将介绍一种新的具有局部不变性的特征 -- ORB特征,从它的名字中可以看出它 ...

  8. apache服务器安装

    下载地址:http://www.apachehaus.com/cgi-bin/download.plx 全程按这篇来的,很顺利 http://www.cnblogs.com/yerenyuan/p/5 ...

  9. RMI的概念

    RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制.使用这种机制,某一台计算机上的对象可以调用另外一台计算机上的对象来 ...

  10. AChartEngine使用View显示图表

    学习过AChartEngine的人肯定都知道,使用ChartFactory创建一张图表可以使用Intent方法,之后调用StartActivity来启用这个Intent,但是这么左右一个坏处,就是当你 ...