在 Python 中使用 osmnx 到距离内边缘的最近点

Posted

技术标签:

【中文标题】在 Python 中使用 osmnx 到距离内边缘的最近点【英文标题】:Nearest points to an edge within a distances using osmnx in Python 【发布时间】:2020-01-28 17:10:58 【问题描述】:

我正在尝试使用 Python 中的 osmnx 库将一组点(纬度、经度)关联到一条边。

我想在距离 x 内找到距离边缘最近的点。

我有一条边,我想画一个圆,并用给定的半径计算圆中有多少点。我有每个点的经纬度坐标,但我不知道如何计算边缘的经纬度坐标。我还有由该边连接的节点的纬度、经度坐标。

感谢您的帮助。

【问题讨论】:

我使用由该边连接的节点的坐标计算了边的中点。 【参考方案1】:
    import pandas as pd
    from shapely.ops import transform
    from functools import partial
    import pyproj
    from shapely.geometry import Point

    mid_point = Point(lon,lat) # UNPROJECTED CO-ORDINATES OF MID-POINT OF AN EDGE
    node_point = Point(lon_node, lat_node)# UNPROJECTED CO-ORDINATES OF THE NODE
    x = 500 #DISTANCE IN METERS

    #TRANSFORM INTO PROJECTED CO-ORDINATES
    project = partial(pyproj.transform,pyproj.Proj(init='epsg:4326'),pyproj.Proj(init='epsg:3112'))
    mid_point_projected = transform(project, mid_point)
    node_point_projected = transform(project, node_point)

    #CREATE BUFFER CIRCLE WITH DISTANCE X METRES WITH CENTRE AT EDGE MID-POINT
    buffer_circle = mid_point_projected.buffer(x)

    #PERFORM POINT-IN-POLYGON ANALYSIS TO CHECK WHETHER THE NODE FALLS WITHIN THE BUFFER CIRCLE
    print(buffer_circle.contains(node_point_projected))

注意事项:

    EPSG 大地测量参数数据集是坐标参考系统和坐标变换的结构化数据集,可通过此在线注册表 (www.epsg-registry.org) 访问

    EPSG 4326 代表世界大地测量系统 (WGS84)(https://epsg.io/4326)(points 在地球表面以经纬度表示)

    我已将其转换为 EPSG 3112,代表 GDA94 / Geoscience Australia Lambert (https://epsg.io/3112)。您应该将其转换为您研究区域的相应 EPSG 代码。

【讨论】:

以上是关于在 Python 中使用 osmnx 到距离内边缘的最近点的主要内容,如果未能解决你的问题,请参考以下文章

使用 OSMNX Nearest_edges 的结果不正确

Osmnx 在组合图中找不到节点之间的路径?

“明显边缘”检测以获得距离

如何在openlayers中测量从圆心到边缘的距离

margin和padding

python 包介绍:osmnx