1

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

我可以使用 G.node[22258] 找到一个节点的详细信息,比如

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

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

4

2 回答 2

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))])在地图上绘制节点

于 2019-07-31T02:54:32.143 回答
0

据我所知,xy 是投影坐标,而 lat-long 是以十进制度表示的地理坐标。投影坐标取决于投影本身,它因地而异。我相信,这里需要的是将 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
于 2019-08-09T05:36:41.843 回答