ArcGIS制图之Sub Points点抽稀

简介: 简介 Sub Points工具是 Esri 中国自主开发的一个插件,该工具优先考虑点在空间分布上的均匀合理性,并结合点数据中包含的 "优先级" 属性进行筛选。通过获取每个点在一定范围内拥有的相邻点的数目信息,得到地图中点密度的分布状况。

简介

Sub Points工具是 Esri 中国自主开发的一个插件,该工具优先考虑点在空间分布上的均匀合理性,并结合点数据中包含的 "优先级" 属性进行筛选。通过获取每个点在一定范围内拥有的相邻点的数目信息,得到地图中点密度的分布状况。抽稀时在若干相临近的点中首先比较优先级,保留优先级高的;优先级相同时比较 NAME 字段,保留 NAME 长度短的;两者都相同时随机选择。使用 Sub Points 进行点抽稀的数据,必须包含"优先级"和"name"两个字段。其中优先级用来设置数据的重要性,在抽稀过程中综合考虑数据的优先级别。

修改程序

原始版本是基于10.0开发的,在10.1及以上版本需要修改两处:

一是SubPointsFunctionFactory.cs文件中CreateGPFunctionNames方法的MinimumProduct属性修改为:

functionName.MinimumProduct = esriProductCode.esriProductCodeBasic;

二是SubPointsFunction.cs文件中IsLicensed()函数修改为:

IAoInitialize myAoInitialize = new AoInitializeClass();
ILicenseInformation myLic = (ILicenseInformation)myAoInitialize;
string myLic= myLic.GetLicenseProductName(myAoInitialize.InitializedProduct());
if (myLic == "Advanced") return true;
else return false;

如果这两处不修改将会出现许可报错的问题:

三是SubPointsFunction.cs字段名称的修改。在10.0的版本中字段名称是小写,从10.1起字段名称为大写(本来arcgis不区分大小写,但程序代码中的判断语句区分了大小写,没有使用大小写转换函数)。

int iInputFID = pPDTable.FindField("INPUT_FID");
int iNearFID = pPDTable.FindField("NEAR_FID");
int iDistance = pPDTable.FindField("DISTANCE");

除此之外,我还修改了界面的语言为中文。

使用方法

第一步,注册文件。将GPSubPoints.dll拷到arcgis安装目录下(如C:\Program Files (x86)\ArcGIS\Desktop10.1\bin),在dll上右键,选择打开方式为ESRIRegAsm.exe (浏览到C:\Program Files (x86)\Common Files\ArcGIS\bin\ESRIRegAsm.exe),一般情况下会注册成功,并弹出提示消息。(如果安装360等,请将它加入白名单)

第二步,添加工具。打开ArcMap,在我的工具箱(非系统工具箱)上添加工具箱,然后添加工具,选择sub points.

第三步,生成邻近表。使用点距离工具生成邻近表,输入和邻近要素都为需要进行抽稀的点数据,搜索半径为抽稀后任意两个点的最大距离。

第四步,新建字段。在需要抽稀的点数据属性表中新建名称"NAME"和"优先级"( short)的字段,并给"优先级"字段赋值。其中优先级用来设置数据的重要性,在抽稀过程中综合考虑数据的优先级别。如果没有相应的字段将会报错或警告。

第五步,执行抽稀工具。输入邻近表和要进行抽稀的要素,执行抽稀。

第六步,定义查询。结果并未生成新数据、也未删除原来的点,只是增加了标记字段status. 对于 status > -99 的值,表示要保留显示的要素; 对于 status = -99 的值,表示要删除或者不在地图上显示的要素。可通过定义查询操作来控制地图显示内容,如下图所示。也可以直接删除不显示的要素。

结果

抽稀效果如下:对于本来就稀疏的位置,并没有进行抽稀。对于原来密集的地区(小于最小邻近距离)抽稀效果比较良好。

源码和工具下载:http://www.400gb.com/file/125432726

目录
相关文章
|
6月前
|
编解码 定位技术 Python
Python中ArcPy实现ArcGIS自动批量制图与地图要素批量设置
Python中ArcPy实现ArcGIS自动批量制图与地图要素批量设置
180 1
|
定位技术 索引
ArcGIS制图技巧:边框的选择与制作
ArcGIS制图技巧:边框的选择与制作
319 0
【ArcGIS制图案例】城市关系强度图
【ArcGIS制图案例】城市关系强度图
126 0
|
定位技术
绝美的ArcGIS Pro的制图样式
大家好,我是南南 最近张云金老师,搞了一个制图比赛。不要报名费的那种!!! 我寻思吧,我对制图玩的也不多,但是我有不少ArcGIS Pro的制图样式存货。所以我就准备分享给大家啦
307 0
arcgis专题制图(疫情专题图)
arcgis专题制图(疫情专题图)
89 0
|
定位技术
ArcGIS数据生产与精细化制图之中国年降水量分布图的制作
原文:ArcGIS数据生产与精细化制图之中国年降水量分布图的制作 楼主按:在今年的Esri中国用户大会上,我听了几场关于ArcGIS用于制图方面的讲座,也在体验区与Esri中国的技术老师有一些交流。
3843 0
ArcGIS制图之Maplex自动点抽稀
制图工作中,大量密集点显示是最常遇到的问题。其特点是分布可能不均匀、数据点比较密集,容易造成空间上的重叠,影响制图美观。那么,如果美观而详细的显示制图呢? 主要原理 Maplex中对标注有很好的显示控制,一旦显示符号,则会出现符号存在、标注不存在,并且可能存在符号互相叠置的现象(如上图所示);使用牵引符号将符号作为标注的一部分来显示,调整阈值自动进行标注间避让,计算出地图上所有标注的最佳放置,可以实现当标注不存在时,符号也不存在,从而达到不改变数据的情况下,完美地自动点抽稀。
1096 0
ArcGIS制图之Subset工具点抽稀
制图工作中,大量密集点显示是最常遇到的问题。其特点是分布可能不均匀、数据点比较密集,容易造成空间上的重叠,影响制图美观。那么,如果美观而详细的显示制图呢? Subset Features(子集要素)工具是 ArcGIS 地统计分析模块的一个工具,该工具可将数据按照百分比进行抽稀,生成两个结果数据集,一个是抽稀后保留的数据,另一个是互补的那一部分数据。
1748 0
|
人工智能 数据可视化 API
ArcGIS API for Python
ArcGIS API for Python
68 0
|
JavaScript 前端开发 应用服务中间件
Arcgis api for javascript 详细部署
Arcgis api for javascript 详细部署