在 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 到距离内边缘的最近点的主要内容,如果未能解决你的问题,请参考以下文章