ArcGIS制图之Sub Points点抽稀
简介
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
ArcGIS制图之Sub Points点抽稀的更多相关文章
- ArcGIS制图之Subset工具点抽稀
制图工作中,大量密集点显示是最常遇到的问题.其特点是分布可能不均匀.数据点比较密集,容易造成空间上的重叠,影响制图美观.那么,如果美观而详细的显示制图呢? Subset Features(子集要素)工 ...
- ArcGIS制图之Maplex自动点抽稀
制图工作中,大量密集点显示是最常遇到的问题.其特点是分布可能不均匀.数据点比较密集,容易造成空间上的重叠,影响制图美观.那么,如果美观而详细的显示制图呢? 主要原理 Maplex中对标注有很好的显示控 ...
- (转)ArcGIS制图技巧
ArcGIS制图技巧(转载自新浪博客) 1 引言 1.1 制图的目的 随着GIS在各行各业的深入应用,各信息化部门和生产单位都逐渐建立起自己的GIS的应用,同时积累了大量的地理数据.随着应用深 ...
- ArcGIS制图——多图层道路压盖处理
[1] 启动ArcMap,载入各道路要素类.生成名为All-Roads的图层组,如他所看到的,符号级别绘制将对图层组内图层符号起作用: 图层组设置符号等级 [2] 在内容列表中,右 ...
- ArcGIS制图技巧系列(3)—让地图更有立体感
ArcGIS制图技巧系列(3)-让地图更有立体感 by 李远祥 在前面的章节中,我们已经介绍过各种的地图效果,如发光效果,山体阴影效果,植被填充效果等,所有的这些效果不外乎是各种技术的叠加和技巧的使用 ...
- ArcGIS制图表达Representation-符号制作
ArcGIS制图表达Representation-符号制作 by 李远祥 在ArcGIS的符号里面,存在着两种符号体系,一种是传统的标准符号体系,一种是制图表达符号体系.标准符号几乎被绝大部分ArcG ...
- ArcGIS制图表达Representation实战篇4-自由式制图表达
ArcGIS制图表达Representation实战篇4-自由式制图表达 by 李远祥 上一章节关于制图表达的控制点中已经介绍过制图表达的编辑功能,利用制图表达的编辑功能,可以实现一些规则以外的效果. ...
- ArcGIS制图表达Representation实战篇3-控制点
ArcGIS制图表达Representation实战篇3-控制点 by 李远祥 这一章讲述的是一个非常专业的名词,叫控制点.此控制点非测绘行业术语的控制点,而是制图表达里面的控制点,所以不能混为一谈. ...
- ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转 by 李远祥 上一章节主要是从实战中使用规则和几何效果,如何分解制图规则.本章主要还是通过一些特殊要求如河流线宽渐变和符号 ...
随机推荐
- 图文安装Windows Template Library - WTL Version 9.0
从http://wtl.sourceforge.net/下载 WTL 9.0,或者点此链接下载:WTL90_4140_Final.zip,然后解压到你的VC目录下面, 我的地址是:C:\Program ...
- 二十、【.Net开源】EFW框架核心类库之WebService服务
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.1:http://pan.baidu.com/s/1qWJjo3U EFW框架实例源代码下载:http://pan.baid ...
- Android事件传递机制
http://blog.csdn.net/awangyunke/article/details/22047987 1)public boolean dispatchTouchEvent(MotionE ...
- 【原】Linux Raid 实验
本文参照以下两个链接,将实验重做了一遍,目的就是加深印象及提升实操能力 参照链接:http://www.opsers.org/base/learning-linux-the-day-that-the- ...
- SmartJS 系列规划分享和背景介绍
发布了smartjs后,有朋友问:“没看懂究竟是干嘛的”.唉,打击了,每次我都想高唱其实你不懂我的心. 今天把相关的东西都整理了一遍,给大家介绍一下.里面绝大多数都已经实现过,有些则是有新的思路重做或 ...
- IDL中histogram的应用
前面一段时间在使用Histogram时一直是不能更好的理解其中的奥秘,通过阅读帮助以及查看相应的文档,终于理解了其中的玄机,很多时候是因为在学习的时候英文不知道翻译成什么样的内容比较合理,这样就给后面 ...
- 爬虫技术 -- 基础学习(四)HtmlParser基本认识
利用爬虫技术获取网页源代码后,针对网页抽取出它的特定文本内容,利用正则表达式和抽取工具,能够更好地抽取这些内容. 下面介绍一种抽取工具 -- HtmlParser HtmlParser是一个用来解析H ...
- set -x与set +x指令
转载自:http://www.2cto.com/os/201304/205118.html 参考: http://blog.csdn.net/t0nsha/article/details/860688 ...
- C++ 多态的实现原理与内存模型
多态在C++中是一个重要的概念,通过虚函数机制实现了在程序运行时根据调用对象来判断具体调用哪一个函数. 具体来说就是:父类类别的指针(或者引用)指向其子类的实例,然后通过父类的指针(或者引用)调用实际 ...
- 有关C#标签Attribute的熟悉
Attribute 简单用法: 最近用到了,所以静下心来找些资料看了一下,终于把这东西搞清楚了. 一.什么是Attribute 先看下面的三段代码: 1.自定义Attribute类:VersionAt ...