【问题标题】:how to plot a node on osmnx with known latitude and longtitude如何在已知纬度和经度的osmnx上绘制节点
【发布时间】:2019-12-08 06:10:41
【问题描述】:

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

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

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

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

【问题讨论】:

  • 如果标签networkx与您的问题相关,请添加。
  • 试试这个ox.plot_graph_route(G, [22258])

标签: networkx geopandas osmnx


【解决方案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))])在地图上绘制节点

【讨论】:

    【解决方案2】:

    据我所知,x-y 是投影坐标,而 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
    

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 2012-04-19
      • 2018-11-27
      • 1970-01-01
      相关资源
      最近更新 更多