使用QGIS识别shapefile中x公里内没有其他点的点


11

这可能是一个幼稚的问题,但作为QGIS的新用户,我一直在努力。

我有一个非常大的shapefile(275,000个点,但是可以将其分成大约10个子区域,以便进行更快的处理)。

我想识别200米之内没有其他点的所有点,然后在文件的字段中用值“ unique”对每个点进行编码。

然后,对于属于本地集群的所有其他点,我想将其编码为“集群”。

实现这一目标后,我想为每个群集随机选择一个,以保留在数据集中,而丢弃其他群集。

目前,我无法完成第1步,因此欢迎您提供任何帮助。

Answers:


0

您还可以尝试使用QGIS中的NNJoin插件进行自我连接。

对于输入层的每个要素,它将找到最接近的要素(如果是自连接,则不包括自身),并在生成的数据集中包括距离和最接近的要素的所有属性。您的数据集将需要一些时间(我尝试使用具有约175000个要素的点数据集,这需要几分钟的时间...)。


9

您可以使用“向量”>“分析工具”>“距离矩阵”,以及一个联接来实现您的要求。

我将以qgis示例数据机场的层为例。这是一个很小的数据集,所以我不确定如何使用275000点shapefile。

1.使用图层作为目标和目标创建距离矩阵。

不要忘记勾选“仅使用最近的(k)个目标点”并将其设置为1。

在此处输入图片说明

2.打开带有添加定界文本层的CSV文件

选择“逗号”作为分隔符,并将几何定义设置为“无几何”

在此处输入图片说明

3.使用新创建的表在原始层中创建联接

在此处输入图片说明

4.使用字段计算器填充所需值的字段

由于有了连接,我们现在可以从机场属性表中访问距离表值,因此创建新字段并根据距离矩阵值填充“聚集”和“唯一”值非常容易。由于我的示例数据我使用了值1200000(1200 km),因此您应该将其调整为适合您的情况(200)。

在此处输入图片说明

最后,您的图层应具有一个名为point_type的新字段,该字段根据到最近点的最小距离而具有不同的值。

在此处输入图片说明


这看起来是一个优雅的解决方案。但是,我有一个并发症。我知道有些点具有相同的位置(这些结果来自原始数据捕获期间的名称同义词)。在一种情况下,我在同一点上确定了3个。我认为您的解决方案假设(明智地)假设所有点都是唯一的。有什么明显的方法可以筛选覆盖范围以首先消除相同位置的点?
Leigh Bettenay 2014年

@LeighBettenay如果此回答解决了您的原始问题,那么我认为您应该接受(绿色勾号),以奖励答题者的努力,并将您的其他要求作为新问题进行研究/提出。+1是一个很好的第一个问题!
PolyGeo

@PolyGeo对不起,我是该论坛的新手,不知道协议。很高兴为“绿色壁虱”提供一个很好的答案,但可惜不知道怎么做!
Leigh Bettenay 2014年

只需单击问题投票下方的灰色对勾(问题的左上角)。谢谢
Alexandre Neto 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.