如何在已知纬度和经度的osmnx上绘制节点

时间:2019-07-30 19:15:02

标签: networkx geopandas osmnx

有人知道['x'],['y']和['lon']和['lat']之间的关系吗?如果我知道一个节点的['lon']和['lat'],该如何在街道地图上绘制该节点?

我可以使用G.node [22258]查找节点的详细信息,例如

{
'x':319101.513
'y': 4427916
'osmid':
'ref':
'lon':'-81.11861'
'lat':'39.982066'
}

但是我想在地图上绘制一个节点。我知道此节点的纬度和经度,但似乎我需要知道'x'和'y'。

2 个答案:

答案 0 :(得分:1)

您可以使用ox.get_nearest_node从经纬度获取节点。

  • 使用ox.get_nearest_node(G, (39.982066, -81.11861))获取最近的节点

  • 使用ox.plot_graph_route(G, [ox.get_nearest_node(G, (39.982066, -81.11861))])在地图上绘制节点

答案 1 :(得分:0)

据我所知,x-y是投影坐标,而lat-long是以十进制度表示的地理坐标。投影坐标取决于投影本身,投影本身随位置而变化。我认为,这里需要的是将纬度转换成所需的投影坐标系。 这是执行此转换的一段代码(从WGS 84到Spherical Mercator)。

尽管这些不能显示您的x和y,但我敢肯定,这是一种获得所需结果所需的计算方法。您可以尝试其他与美国有关的预测。例如,我转换为澳大利亚的epsg 3112。当我这样做时,我可以直接应用欧几里得几何来获得以米为单位的距离。

链接:https://spatialreference.org/ref/epsg/wgs-84/https://epsg.io/3857

from pyproj import Proj, transform

inProj = Proj(init='epsg:4326')
outProj = Proj(init='epsg:3857')
x1,y1 = -81.11861,39.982066
x2,y2 = transform(inProj,outProj,x1,y1)
print (x2,y2)

输出:

-9030082.35905815 4863336.501637128