许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ArcGIS Engine开发教程之图层符号化(五):利用ESRI自带符号库进行唯一值符号化

ArcGIS Engine开发教程之图层符号化(五):利用ESRI自带符号库进行唯一值符号化

阅读数 15
点赞 0
article_banner

利用ESRI自带的符号库进行唯一值符号化一图层开发实例
        学会开发唯一值符号化要素图层功能


图172.步骤

1.准备点数据,添加属性字段“类别”;
2.并为要素“类别”属性值分别设置为“Hospital2”,“School 1”,“Airport”三种属性值。
3.实现唯一值符号化功能
4.运行程序实现效果
3.功能开发
实现唯一值符号化功能代码如下:
///<summary> ///获取符号库中符号 ///</summary> ///<param name="sServerStylePath">符号库全路径名称</param> ///<param name="sGalleryClassName">GalleryClass名称</param> ///<param name="symbolName">符号名称</param> ///<returns>符号</returns>privateISymbol GetSymbol(string sServerStylePath,string sGalleryClassName, string symbolName)
{
try {
//ServerStyleGallery对象 IStyleGallery pStyleGaller =new ServerStyleGalleryClass(); IStyleGalleryStorage pStyleGalleryStorage = pStyleGalleras IStyleGalleryStorage; IEnumStyleGalleryItem pEnumSyleGalleryItem=null; IStyleGalleryItem pStyleGallerItem =null; IStyleGalleryClass pStyleGalleryClass =null; //使用IStyleGalleryStorage接口的AddFile方法加载ServerStyle文件 pStyleGalleryStorage.AddFile(sServerStylePath); //遍历ServerGallery中的Class for(int i = 0; i < pStyleGaller.ClassCount; i++) { pStyleGalleryClass = pStyleGaller.get_Class(i); if(pStyleGalleryClass.Name != sGalleryClassName) continue; //获取EnumStyleGalleryItem对象 pEnumSyleGalleryItem = pStyleGaller.get_Items(sGalleryClassName, sServerStylePath,""); pEnumSyleGalleryItem.Reset(); //遍历pEnumSyleGalleryItem pStyleGallerItem = pEnumSyleGalleryItem.Next(); while(pStyleGallerItem !=null) {
if(pStyleGallerItem.Name == symbolName) { //获取符号 ISymbol pSymbol = pStyleGallerItem.Item asISymbol; System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem); System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass); return pSymbol; }
pStyleGallerItem = pEnumSyleGalleryItem.Next(); } } System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumSyleGalleryItem); System.Runtime.InteropServices.Marshal.ReleaseComObject(pStyleGalleryClass); return null;
}
catch (Exception Err) {
MessageBox.Show(Err.Message, "提示",MessageBoxButtons.OK,MessageBoxIcon.Information); returnnull;
}

}

///<summary>

///设置要素图层唯一值符号化

///</summary>

///<param name="pFeatureLayer"></param>

privatevoid UniqueValueRenderFlyr(IFeatureLayer pFeatureLayer)

{

   try

   {

       //创建UniqueValueRendererClass对象

IUniqueValueRenderer pUVRender =new UniqueValueRendererClass();

List<string> pFieldValues=new List<string>();

pFieldValues.Add("Hospital 2");
pFieldValues.Add("School 1");
pFieldValues.Add("Airport");

for(int i=0;i<pFieldValues.Count;i++)
{

ISymbol pSymbol=new SimpleMarkerSymbolClass();
pSymbol =GetSymbol(@"C:\Program Files\ArcGIS\Styles\ESRI.ServerStyle","MarkerSymbols",pFieldValues【i】);

//添加唯一值符号化字段值和相对应的符号
pUVRender.AddValue(pFieldValues,pFieldValues,pSymbol);

}

//设置唯一值符号化的字段个数和字段名
pUVRender.FieldCount = 1;

pUVRender.set_Field(0,"类别");

IGeoFeatureLayer pGFeatureLyr = pFeatureLayeras IGeoFeatureLayer;

//设置IGeofeatureLayer的Renderer属性
pGFeatureLyr.Renderer = pUVRender asIFeatureRenderer;
   }

   catch (Exception Err)
    {

MessageBox.Show(Err.Message,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
}
privatevoid button1_Click(object sender,EventArgs e)
{

   IFeatureLayer pFeatureLayer =this.axMapControl1.get_Layer(0)as IFeatureLayer;

   UniqueValueRenderFlyr(pFeatureLayer);

   this.axMapControl1.Refresh();

}


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空