简介

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点抽稀的更多相关文章

  1. ArcGIS制图之Subset工具点抽稀

    制图工作中,大量密集点显示是最常遇到的问题.其特点是分布可能不均匀.数据点比较密集,容易造成空间上的重叠,影响制图美观.那么,如果美观而详细的显示制图呢? Subset Features(子集要素)工 ...

  2. ArcGIS制图之Maplex自动点抽稀

    制图工作中,大量密集点显示是最常遇到的问题.其特点是分布可能不均匀.数据点比较密集,容易造成空间上的重叠,影响制图美观.那么,如果美观而详细的显示制图呢? 主要原理 Maplex中对标注有很好的显示控 ...

  3. (转)ArcGIS制图技巧

    ArcGIS制图技巧(转载自新浪博客)   1  引言 1.1  制图的目的 随着GIS在各行各业的深入应用,各信息化部门和生产单位都逐渐建立起自己的GIS的应用,同时积累了大量的地理数据.随着应用深 ...

  4. ArcGIS制图——多图层道路压盖处理

    [1]      启动ArcMap,载入各道路要素类.生成名为All-Roads的图层组,如他所看到的,符号级别绘制将对图层组内图层符号起作用: 图层组设置符号等级 [2]      在内容列表中,右 ...

  5. ArcGIS制图技巧系列(3)—让地图更有立体感

    ArcGIS制图技巧系列(3)-让地图更有立体感 by 李远祥 在前面的章节中,我们已经介绍过各种的地图效果,如发光效果,山体阴影效果,植被填充效果等,所有的这些效果不外乎是各种技术的叠加和技巧的使用 ...

  6. ArcGIS制图表达Representation-符号制作

    ArcGIS制图表达Representation-符号制作 by 李远祥 在ArcGIS的符号里面,存在着两种符号体系,一种是传统的标准符号体系,一种是制图表达符号体系.标准符号几乎被绝大部分ArcG ...

  7. ArcGIS制图表达Representation实战篇4-自由式制图表达

    ArcGIS制图表达Representation实战篇4-自由式制图表达 by 李远祥 上一章节关于制图表达的控制点中已经介绍过制图表达的编辑功能,利用制图表达的编辑功能,可以实现一些规则以外的效果. ...

  8. ArcGIS制图表达Representation实战篇3-控制点

    ArcGIS制图表达Representation实战篇3-控制点 by 李远祥 这一章讲述的是一个非常专业的名词,叫控制点.此控制点非测绘行业术语的控制点,而是制图表达里面的控制点,所以不能混为一谈. ...

  9. ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转

    ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转 by 李远祥 上一章节主要是从实战中使用规则和几何效果,如何分解制图规则.本章主要还是通过一些特殊要求如河流线宽渐变和符号 ...

随机推荐

  1. python watchdog

    监视文件变更 #!/usr/bin/python # -*- coding:UTF-8 -*- import time from watchdog.observers import Observer ...

  2. 三十、【C#.Net开发框架】WCFHosting服务主机的利用WCF服务通讯和实现思路

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  3. 未能找到类型或命名空间名称“Coco”(是否缺少 using 指令或程序集引用)

    未能找到类型或命名空间名称"Coco"(是否缺少 using 指令或程序集引用),如果你确实引用了,那说明你引用的和你的项目环境版本不一样,.NET framework的问题,修改 ...

  4. 解决错误: java.lang.NoClassDefFoundError: antlr/RecognitionException

    网络质量不好的情况下,访问maven.org网站下载jar包,很有可能下载的包不完整或损坏的(表面看不出来):所以,最好的办法就是-直接到maven网站下载,然后放到对应的.m2目录,然后eclips ...

  5. [转] C#反射设置属性值和获取属性值

    /// /// 获取类中的属性值 /// /// /// /// public string GetModelValue(string FieldName, object obj) { try { T ...

  6. MyBatis知多少(18)MyBatis系统

    小型.简单系统 小型应用程序通常只涉及单个数据库,只有一些相当简单的用户界面和领域模型.它的业务逻辑非常简单,甚至对一些简单的CRUD (Create, Read, Update, Delete:增删 ...

  7. 2014 网选 5007 Post Robot(暴力或者AC_自动机(有点小题大作了))

    //暴力,从每一行的开始处开始寻找要查询的字符 #include<iostream> #include<cstdio> #include<cstring> #inc ...

  8. UBUNTU上的GIT SERVER

    Git是一个开源的版本控制系统,由Linus Torvalds主导,用于支持Linux内核开发.每一个Git工作目录,都是一个完整的代码库,包含所有的提交历史.有能力跟踪所有的代码版本,而不会去依赖于 ...

  9. MSSQL自动备份数据库

    最近项目中,需要用到MSSQL自动定时备份功能,本来想利用C#自己写一个的,但是听说在MSSQL2008中已经集成了功能强大的自动备份功能,于是便提刀上阵,狠狠地琢磨了一番: 首先,打开MSSQL20 ...

  10. RPM安装命令总结--转载

    原地址:http://www.cnblogs.com/zqwang0929/p/3352237.html 在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的 ...