Arcengine获取图层某个字段唯一值的方法

private ArrayList GetLayerUniqueFieldValueByDataStatistics(IFeatureLayer 

pFeatureLayer, string fieldName)
        {
            ArrayList arrValues = new ArrayList();
            IQueryFilter pQueryFilter = new QueryFilterClass();
            IFeatureCursor pFeatureCursor = null;

            pQueryFilter.SubFields = fieldName;
            pFeatureCursor = pFeatureLayer.FeatureClass.Search(pQueryFilter, true);

            IDataStatistics pDataStati = new DataStatisticsClass();
            pDataStati.Field = fieldName;
            pDataStati.Cursor = (ICursor)pFeatureCursor;

            IEnumerator pEnumerator = pDataStati.UniqueValues;
            pEnumerator.Reset();
            while (pEnumerator.MoveNext())
            {
                object pObj = pEnumerator.Current;
                arrValues.Add(pObj.ToString());
            }

            arrValues.Sort();
            return arrValues;
        }
ArcEngine实现点要素图层唯一符号化,您可以按照以下步骤进行操作: 1. 打开要素类并获取要素集合。使用IFeatureClass接口打开要素类,并使用IFeatureCursor接口获取要素集合。 ```csharp IFeatureClass featureClass = ...; // 打开要素类 IFeatureCursor featureCursor = featureClass.Search(null, false); // 获取要素集合 ``` 2. 创建唯一符号化渲染器。使用ISimpleRenderer接口创建一个新的SimpleRenderer对象,并使用IUniqueValueRenderer接口将其转换为唯一符号化渲染器。 ```csharp ISimpleRenderer simpleRenderer = new SimpleRenderer(); IUniqueValueRenderer uniqueValueRenderer = simpleRenderer as IUniqueValueRenderer; ``` 3. 设置字段和符号。指定用于唯一分类的字段,并为每个唯一设置符号。 ```csharp uniqueValueRenderer.FieldCount = 1; // 设置字段数量 uniqueValueRenderer.set_Field(0, "FieldName"); // 设置用于分类的字段名称 // 为每个唯一设置符号 ISymbol symbol = ...; // 设置符号 uniqueValueRenderer.AddValue("Value1", "", symbol); // 添加第一个唯一和对应的符号 uniqueValueRenderer.AddValue("Value2", "", symbol); // 添加第二个唯一和对应的符号 // ... // 可以重复上述步骤为更多唯一设置符号 ``` 4. 应用渲染器到图层获取要素图层对象,并将唯一符号化渲染器应用到图层的渲染器属性。 ```csharp IFeatureLayer featureLayer = ...; // 获取要素图层对象 featureLayer.Renderer = uniqueValueRenderer as IFeatureRenderer; // 应用渲染器到图层 ``` 5. 刷新地图并显示唯一符号化的结果。调用IMap接口的Refresh方法刷新地图,并使用IActiveView接口的Refresh和PartialRefresh方法来更新显示。 ```csharp IMap map = ...; // 获取地图对象 map.Refresh(); // 刷新地图 IActiveView activeView = map as IActiveView; activeView.Refresh(); // 刷新活动视图 activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); // 部分刷新,更新地理数据 ``` 请根据您的具体需求自行填充代码的缺失部分,例如打开要素类、设置字段和符号等。希望这些信息对您有所帮助!如有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值