我有两层带点的图层,分别称为A和B,每个图层都具有不同的属性。

对于AI中的每个点,都希望将B中最近的点的所有属性结合起来。 />理想情况下,这还将包括一个用于测量两点之间距离的字段。位置,然后选择从最近的点连接属性。

我在QGIS中找不到类似的功能。有指针吗?

#1 楼

使用“距离矩阵”可以计算最近的点。确保两个图层都在同一个CRS中!然后,您可以加载结果并将其用于连接表A和B。

在“距离矩阵”中选择:“线性距离矩阵”,并且“仅使用最近的k个目标点:1”



使用“添加矢量图层”加载CSV,并在图层A的图层属性中合并图层-连接选项卡。 >
结果:



评论


如果要使用距离矩阵在一层内的点之间具有距离,则应更改k = 2,因为存在以下已知问题:hub.qgis.org/issues/4761

– Celia
2012-02-21 17:31



@underdark似乎此解决方案不再起作用。我能够创建matrix.csv并将其加入我的第一层。在您的示例中,您添加了第二个联接,根据矩阵中的TargetID将第二层连接到第一层。但是对话框中没有显示连接的字段,因此我无法选择TargetID。当然我可以先将save_as作为图层,然后进行第二次连接...

– Bernd V.
13年5月22日在16:37

#2 楼

NNJoin插件应该可以完成这项工作。对于输入层的每个要素,它会在连接层中添加最接近要素的所有属性,并且还会添加一个距离属性以及与该要素的距离。

评论


完美运作。比接受的答案快。请注意,如果是2011年,则为可接受的答案。

– juminet
17年6月9日在11:54

至少,今天比公认的答案要好得多。快得多。

–CésarArgulGarcía
17年11月17日在18:27

#3 楼

在QGIS 3.8及更高版本中,Processing Toolbox中的“按最近的联接属性”本机工具可以轻松完成该工作!

#4 楼

如果您可以仅从“ B”层加入单个属性,请查看mmqgis插件中的“集线距离”工具。

如果需要其余的“ B”属性,则应该可以将其余的“ B”属性重新加入该层。

您可以如果需要,还可以选择生成从A到B的线。这有助于可视化关联要素之间的距离和方向。

#5 楼

使用refFunctions插件的另一种方法。

(1)示例数据集



(2)打开具有更多功能的图层的属性表(在此示例中为points_b层),因此不会丢失任何对。创建新字段。


另一层的ID字段:geomnearest('points_a', 'id_a')

检测到的对的距离字段:geomnearest('points_a', '$distance')




#6 楼

使用QGIS 1.7矢量>数据管理>按位置连接属性



评论


我也想到了这一点,但是当我进行测试时,它仅适用于精确匹配,例如点多边形。它找不到与另一个点最近的点。在v1.7中测试

– RyanKDalton
2011年6月22日21:48

我有零场比赛。这是行不通的。

–弗雷德
2011年6月22日21:55