【问题标题】:Calculate distance between two points in QGIS field calculator在QGIS字段计算器中计算两点之间的距离
【发布时间】:2020-08-20 06:31:53
【问题描述】:

我或多或少是 QGIS 的初学者,我使用的是 QGIS 3.10 版本。 我想计算多个点到某个参考点的距离(以米或公里为单位)。 QGIS字段计算器可以做到这一点吗?这些点是WGS84中的经纬度几何点。 属性表如下:

Point_ID Latitude  Longitude   Distance_m
1        46.27789  9.87763     
2        46.27366  9.87701
3        46.27565  9.88045
4        46.27600  9.87822

ID #1 的点应该是参考点。 #1 点到所有其他点之间的线性距离是我想要的结果。

我尝试了几个版本,例如:

distance(geom_to_wkt($geometry ), geom_to_wkt(POINT('POINT_ID'='1')))

distance(geom_to_wkt($geometry ), geom_to_wkt(geometry(get_feature_by_id('Point_ID', '1'))))

第一个几何图形包括属性表中列出的所有点,而第二个几何图形是计算距离的参考点。

但结果始终为“NULL”。

距离矩阵不是目标,因为我得到了任何点的任何距离。目标是距离矩阵的子矩阵...

【问题讨论】:

    标签: qgis


    【解决方案1】:

    你得到 null 因为它找不到参考点。您需要按图层名称而不是字段名称进行搜索。

    首先你应该投影你的点,否则你会得到度而不是米的结果。然后就可以计算距离了:

    distance(($geometry),geometry(get_feature_by_id('Layer Name', 1)))

    其中“图层名称”是“图层”面板(也称为目录)中图层的名称。

    在您的问题中,您使用的是经度和纬度的 WKT,这可以通过投影的 x 和 y 值(例如 UTM)来完成,如下所示:

    distance( geom_from_wkt( 'POINT(' || "x_utm" || ' ' || "y_utm" || ')'), geom_from_wkt( 'POINT(' || attribute(get_feature_by_id('Layer Name', 1),'x_utm') || ' '|| attribute(get_feature_by_id('Layer Name', 1),'y_utm') || ')' ) )

    如果需要,您可以进行如下转换:
    x(transform(( geom_from_wkt( 'POINT('||"lon"|| ' '|| "lat" || ')' ) ),'epsg:4326','epsg:code for your UTM zone'))

    y(transform(( geom_from_wkt( 'POINT('||"lon"|| ' '|| "lat" || ')' ) ),'epsg:4326','epsg:code for your UTM zone'))

    我还没有找到在字段计算器中获得大圆距离的方法。

    【讨论】:

    • 感谢您的详细解答。它非常适合我,正是我想要的。谢谢
    猜你喜欢
    • 2010-10-30
    • 2011-04-23
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    相关资源
    最近更新 更多