有很多解决方法。一种简单有效的方法包括:
将x和y坐标计算为属性表中的字段。
将这些坐标连接成一个标识符。
在此标识符上汇总表,请求数字字段的总和以及x和y的第一个实例。
使用(x,y)作为坐标来创建汇总表的点事件主题。
编辑
在评论中,@ myClone写道
这些点并不完全重叠(意味着xy坐标很接近但彼此不相等),但是我只需要汇总落在彼此100英尺内的点。
通常,没有唯一的解决方案。 例如,考虑一条直线上的三个点,每个点与相邻点的距离为75英尺:
* * *
a b c
尽管距离(a,c)> 100,您是否将所有三个都聚类?如果不是,您选择哪种解决方案:(a,b),(c)或(a),(b,c)?
在这种情况下,给出不同答案的两种方法是:
(i)将 所有点缓冲 50 = 100/2英尺,请求合并缓冲。在空间上将缓冲区连接回这些点:这使每个点都具有包含它的合并缓冲区的属性。这达到了我原始解决方案中步骤(2)的目的。完全像以前一样从那里继续。在示例中,这会将a,b和c聚在一起。
(ii) 创建一个100 x 100英尺的网格,并通过其网格单元识别点。这不需要实际绘制网格甚至存储其特征,因为(x,y)所在的单元格由有序对(Floor((x-x0)/ 100),Floor((y-y0 )/ 100)),其中(x0,y0)是您喜欢的任何网格原点。合并这些坐标以标识该单元格,再次到达我原始解决方案中的步骤(2)。像以前一样进行。
显然,方法(ii)不能完全聚合100英尺内的所有点对,因为它能够聚合最多100 * Sqrt(2)= 141英尺的对。您可以通过将网格大小减小到100 / Sqrt(2)= 71英尺来进行补偿,但是100英尺之内的一些线对将不会聚合。选择你的毒药。
请注意,方法(ii)中的解取决于网格原点和间距。使用100英尺的网格,将根据原点产生{(a,b),(c)}或{(a),(b,c)}。使用71英尺的网格,无论原点如何,这三个点都会分开。
还有其他一些方法,我将一起讨论:
(iii)使用统计聚类程序(例如k均值或层次聚类)来完成这项工作。在我们的姊妹网站stats @ SE上有大量实用信息。通常,统计软件接受(id,x,y)三元组作为输入,并输出(或说服输出)(id,cluster)三元组表。将此输出表重新连接到点属性表,再次使我们回到原始解决方案中的步骤(2),依此类推。
(iv)一些 地统计学软件,例如GSLib,包括各种“去聚类 ”例程,旨在为变异函数和Kriging准备数据。通常可以将其输出重新导入GIS软件并制成点层。
到目前为止,所描述的方法使您可以完全控制正在发生的事情,从而使您可以知识专业地进行工作(而不必对软件工具进行反向工程)。
最后,值得一提的是
(v)ArcGIS的最新副本提供了用于去簇的工具。我记得,目前尚不清楚它是如何工作的。您必须阅读基础代码以了解发生了什么。