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

时间: 2024-08-02 00:25:46

ArcGIS制图之Sub Points点抽稀的相关文章

ArcGIS制图之Subset工具点抽稀

制图工作中,大量密集点显示是最常遇到的问题.其特点是分布可能不均匀.数据点比较密集,容易造成空间上的重叠,影响制图美观.那么,如果美观而详细的显示制图呢? Subset Features(子集要素)工具是 ArcGIS 地统计分析模块的一个工具,该工具可将数据按照百分比进行抽稀,生成两个结果数据集,一个是抽稀后保留的数据,另一个是互补的那一部分数据. 实现原理 其原理是将数据分成两个子集.子集 1 将有 L 个要素,子集 2 将有 N - L 个要素(N 表示原始数据集中的要素数量).要素的分割

ArcGIS制图之Maplex自动点抽稀

制图工作中,大量密集点显示是最常遇到的问题.其特点是分布可能不均匀.数据点比较密集,容易造成空间上的重叠,影响制图美观.那么,如果美观而详细的显示制图呢? 主要原理 Maplex中对标注有很好的显示控制,一旦显示符号,则会出现符号存在.标注不存在,并且可能存在符号互相叠置的现象(如上图所示):使用牵引符号将符号作为标注的一部分来显示,调整阈值自动进行标注间避让,计算出地图上所有标注的最佳放置,可以实现当标注不存在时,符号也不存在,从而达到不改变数据的情况下,完美地自动点抽稀. 下面的所有步骤是必

ArcGIS数据生产与精细化制图之中国年降水量分布图的制作

原文:ArcGIS数据生产与精细化制图之中国年降水量分布图的制作 楼主按:在今年的Esri中国用户大会上,我听了几场关于ArcGIS用于制图方面的讲座,也在体验区与Esri中国的技术老师有一些交流.一直觉得ArcGIS在空间数据管理和分析方面很强大,而在制图方面却表现得不怎么样.我看到在国内很多人制图用的是CorelDraw.AI(可能不仅仅是国内,国外的专业制图也是),诚然这些软件作为专门的图形软件,在很多方面有不可比拟的优势,但是对于地理信息制图来说,图形不能和地理信息相关联却是这些软件最大

arcgis engine10 0 c#-在c#+arcgisAE中制图的时候如何将图例分成两列呢?

问题描述 在c#+arcgisAE中制图的时候如何将图例分成两列呢? 在c#+arcgisAE中制图的时候如何将图例分成两列,目前能实现的只是成一列的显示,但是当图例比较多的时候就会很难看,所以想请教一下如何将图例分为两列来显示.

《JavaScript构建Web和ArcGIS Server应用实战》——2.5 使用地图服务图层

2.5 使用地图服务图层 一幅没有数据图层的地图就像一个画家的空白画板一样.添加到地图中的数据图层让其有意义并为分析奠定了基础.提供数据图层添加到地图中主要有两种类型的地图服务:动态地图服务图层和切片地图服务图层. 动态地图服务图层在运行时创建地图图片并引用地图服务,然后返回图片到应用程序中.这种类型的地图服务或许由一个或多个图层信息构成.图2-4所示为Demograhpics地图服务,它由九个不同的图层构成,分别从不同地理层次代表Demographic信息. 客户端应用程序显示将花费更多时间,

《精通ArcGIS Server 应用与开发》——第 1 章 ArcGIS 10简介1.1 ArcGIS 10体系结构1

第 1 章 ArcGIS 10简介 精通ArcGIS Server 应用与开发 美国的环境系统研究所(Environmental Systems Research Institute,Inc.,简称ESRI)创建于1969年,总部位于加州Redlands.公司最初是为企业创建与分析地理信息提供咨询工作.20世纪80年代,ESRI致力于发展和应用一套可运行于计算机环境.可用来创建地图的核心开发工具,这就是今天众所周知的地理信息系统(GIS)技术. 1981年,ESRI发布了第一套商业GIS软件--

ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介1.1 ArcGIS for Desktop ArcGIS for Desktop是ArcGIS产品线上的桌面端软件产品,为GIS专业人士提供的信息制作和使用的工具.利用ArcGIS for Desktop,你可以实现任何从简单到复杂的GIS任务,包括制图,地理分析,数据编辑,数据管理,可视化和空间处理等.它可以作为三个独立的软件产品购买,每个产

ArcObjects与ArcGIS Engine

1.ArcObjects 在ArcGIS系列产品中,ArcGIS Desktop.ArcGIS Engine和ArcGIS Server都是基于核心组件库ArcObjects搭建的. 所谓ArcObjects,现在一般都是指ArcGIS Desktop版本的组件开发集,即需要安装ArcGIS桌面版软件后才能安装这些组件开发集,它是所有版本中组件最全的版本. ArcObjects组件库有3000多个对象可供开发人员调用,为开发人员集成了大量的GIS功能,可以快速的帮助开发人员进行GIS项目的开发.

《面向ArcGIS的Python脚本编程》——导读

前言 在过去的十多年里,我在多所大学学习并讲授了一系列GIS课程.正是这样一段经历,促使我撰写了这本书.在所有的课程中,有一课是"小代码,大用处". 在DOS系统时代,熟悉DOS的人能使用命令行处理一些基本的任务.ArcGIS早期的桌面端软件(ArcInfo)除了使用ARC宏语言(AML)之外,在很大程度上也是通过命令行界面运行的.不过最近,大多数软件已经基本不需要使用命令行界面或编写代码,而是开始使用图形用户界面(GUI).这就导致了大部分学生在上第一节GIS课程的时候遇不到任何形式