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
相关文章:
libev源码解析——定时器监视器和组织形式
我们先看下定时器监视器的数据结构。(转载请指明出于breaksoftware的csdn博客) /* invoked after a specific time, repeatable (based on monotonic clock) */ /* revent EV_TIMEOUT */ typedef struct ev_timer {EV_WATCHER_TIME (ev_timer)ev_tstamp…
谁说AI无用?疫情下,AI已经代替人类做了很多...
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)经历过无比漫长的十多天,疫情至今还没有任何退散的迹象,形势越来越严峻。百度实时大数据报告显示,截至2020年2月4日9时,新型冠状病毒累计报告确诊病例20471例…

关于CSS样式浏览器兼容问题的一些注意事项
CSS技巧1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行 2. margin加倍的问题 设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决…

Ember.js 入门指南——查询记录
2019独角兽企业重金招聘Python工程师标准>>> store提供了统一的获取数据的接口。包括创建新记录、修改记录、删除记录等,更多有关Store API请看这个网址的介绍:http://devdocs.io/ember/data/classes/ds.store。 为了演示这些方法的使用我们结…

C# 视频监控系列(9):服务器端——数据捕获(抓图 + 录像)
前言 录像功能是监控系统中最重要的功能之一,除了本文的功能实现外,还需要你自己考虑合适的存储策略:存储大小、时间段、存储盘符等。 注意 本系列文章限于学习交流,注重过程,由于涉及公司,所以不提供源代码…
疫情当下,你是在家里躺着刷抖音?还是在做这些?
2020年本来可以是很开心的一年没想到一开头就给了我们一个重重的一击疫情的出现让我们非常的恐慌新型病毒肺炎让我们无处可躲原来热闹的新年因为疫情让我们逼不得已只能待在家里走亲访友更是不可能的就连原来约好的相亲也泡汤了因为封城、封村、封小区、封路了而这些也只是为了…
代码打补丁的利器——diff和patch
一般来说,如果我们在研发过程中需要对代码进行修改,是不需要通过打补丁的方式的,因为我们可以直接改动文件即可。但是如果针对一款要上线的产品,我们总不能在研发的电脑上编译通过后直接发布到线上的。(转载请指明出于…

React Namespaced Components
2019独角兽企业重金招聘Python工程师标准>>> var MyForm React.createClass({...}); var MyForm.Row React.createClass({...}); var MyForm.Label React.createClass({...}); var MyForm.Input React.createClass({...}); This feature is available in v0.11 …
Linux下HOOK动态链接库中API的方法
2012年,我写了一篇介绍Windows系统下Ring3层API的hook方案——《一种注册表沙箱的思路、实现——Hook Nt函数》,其在底层使用了微软的Detours库。5年后,我又遇到这么一个问题,但是系统变成了Linux。我最开始的想法是找一个Linux下…

NAT的配置与相关概念的理解
试验背景:随着接入因特网的计算机数量不断猛增,IPv4版本地址资源也就愈加显得捉襟见肘。好多企业申请的IP地址都是经过子网不断划分得到的。A类,B类地址基本已用完,而一般的用户根本就申请不到整段的公网C类地址。如果,…
AAAI 2020论文解读:商汤科技发布新视频语义分割和光流联合学习算法
来源 | Every Frame Counts: Joint Learning of Video Segmentation and Optical Flow编辑 | Carol出品 | AI科技大本营(ID:rgznai100) 商汤科技研究团队发表论文《Every Frame Counts: Joint Learning of VideoSegmentation and Optical Flo…

互联网+和创业潮,互联网+前提条件是什么?互联网+做什么?
在大众创业,万众创新的大浪下,凭着对新技术的敏感和青春激情,创业新军不断涌现.... 互联网创业浪潮, 如雨后春笋......,互联网渗透每个人的心中。创业不是赶时髦,而是一条非常孤独,艰难的路。实施“互联网+…

C++拾趣——C++11的语法糖auto
C是一种强类型的语言,比如变量a,如果声明它是整型,则之后只能将它作为整型来用。这和其他弱类型的语言有很大的区别,比如python中,我们可以让a在第一行是个整型,第三行是一个字符串。(转载请指明…
“数学不行,啥都干不好!”骨灰级程序员:这比努力重要1000倍
之前有很多程序员读者向我们抱怨:1)做算法优化时,只能现搬书里的算法,遇到不一样的问题,就不会了。2)面试一旦涉及到算法和数据结构,如果数学不行,面试基本就凉凉了。3)一…

跳槽 你准备好了吗
“人往高处走”,这固然没有错。但是,说来轻巧的一句话,它却包含了为什么“走”、什么是“高”、怎么“走”、什么时候“走”,以及“走”了以后怎么办等一系列问题。跳槽是一门学问,也是一种策略。“人往高处走”&#…

C++:常类型Const
常类型:使用类型修饰符const说明的类型,常类型的变量或对象成员的值在程序运行期间是不可改变的。 3.10.1 常引用 如果在说明引用时用const修饰,则被说明的引用为常引用。如果用常引用做形参,便不会产生对实参 的不希望的更改。常…

JQuery制作的toolTip,针对图片预览效果
昨天做了一个文字版的toolTip,后来想想现在大家都爱看图,文字未免有点单调了点,那我们就来个图片式的预览。代码比较简单,我就不多说了。 欢迎来到 买礼网 选购礼品! 畅游鄂西山水风光尽在 恩施旅游资讯网首先看看调用…
29篇计算机视觉领域论文,篇篇惊艳!内附链接!
作者 | 微软亚洲研究院本文经授权转载自微软研究院AI头条(ID:MSRAsia)1. Deep High-Resolution Representation Learning for Human Pose Estimation论文链接:https://arxiv.org/pdf/1902.09212.pdf该论文在提出了一个新的网络Hig…
绑定CPU逻辑核心的利器——taskset
在工作中,我们可能遇到这样的需求:如何评估程序在一核和多核下的工作效率差距?最简单的想法是找一台只有一个CPU逻辑核的机器和一台有多个逻辑核的机器。(转载请指明出于breaksoftware的csdn博客)但是这种方式有明显的…

IDE set arguments
2019独角兽企业重金招聘Python工程师标准>>> code::blocks -> Project -->set programs arguments qtcreater -> Projects --> Build&Run --> Run --> Arguments xcode -> super < -->build-->arguments 转载于:https://my.osch…
2020年AI如何走?Jeff Dean和其他四位“大神”已做预测!
作者 | Khari Johnson译者 | 王艳妮 责编 | 胡巍巍出品 | AI科技大本营(ID:rgznai100)人工智能已经不再是随时准备改变世界的状态,而是已经在改变世界。在迈入2020年这新的一年、以及新的20年代之际,笔者请到了AI方面最…
zookeeper快速入门——简介
在几十年前,一个独立的计算机上往往部署着一套完整的应用系统。当时因为网络稳定性及速度的限制,将相关联的服务部署在一台机器上,让它们使用系统机制通信——比如管道,文件等,往往是最稳定和最高效的。然而随着网络技…

为TextMate扩展全屏功能
今天看代码,感觉TextMate那个窗口太小了点,越看越不爽,就想把它弄成全屏的。于是搜索啊搜索啊搜索,终于让我找到一款很yd的小软件,叫megazoomer, 下载地址是:[url]http://ianhenderson.org/mega…

hdu1406
一道很水很水的题!!!!!!!!!!#include<iostream> using namespace std; int main(){int num1,num2,i,k,j,sum,n;while(cin>>n){ while(n--){cin&g…
zookeeper快速入门——部署
zookeeper有两种运行模式:独立模式和仲裁模式。独立模式就是只运行一个Zookeeper Server,这自然没法解决服务崩溃导致系统不可用的问题。仲裁模式就是以集群的方式运行Zookeeper Server,这样在Leader不可用时,集群内部会发起选举&…
2020,人工智能和深度学习未来的五大趋势
来源 | forbes编译 | Shawn编辑 | Carol出品 | AI科技大本营(ID:rgznai100)虽然近年来人工智能经常成为热门议题,但它还远未实现真正的成就。人工智能技术发展的主要障碍在于投资成本,投资成本影响短期内的回报。而当时…

电脑常见故障 1
死机恐怕是所有电脑故障里面最常见的一种了,但是死机的原因是多种多样的。 如果从硬件入手,先是看看机箱里的温度是否很高,要检查CPU的风扇是否正常运转,并要注意电脑的散热问题;其次可检查内存,检查完内存…

linux常用命令-date-clock-hwclock-type-whois--help-man-info-cal
date:时间管理电子表:晶体震荡器 石英震荡器Linux:rtc 硬件时间NTP:网络时间协义硬件时间(命令:clock)系统时间(命令:date)type COMMAND 判断命令是内部命令…
内存、性能问题分析的利器——valgraind
valgrind是一个知名的分析软件集。我们可以使用它进行内存、多线程及性能等各种问题的分析。它采用非侵入方式,所谓非侵入方式是指:我们不用在代码中插入分析工具的库。这对于开发者来说是友好的。因为如果要将工具编译到文件中,或者要调用其…
这是我见过最卡通的 Python 算法了,通俗易懂
普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本算法书,看着很轻松……又有…