как построить узел на 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».


person Xudong    schedule 30.07.2019    source источник
comment
Если тег networkx имеет отношение к вашему вопросу, добавьте его.   -  person swatchai    schedule 31.07.2019
comment
Попробуйте это ox.plot_graph_route(G, [22258]).   -  person swatchai    schedule 30.08.2019


Ответы (2)


Вы можете использовать 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))]), чтобы нанести узел на карту

person rako    schedule 31.07.2019

Насколько мне известно, 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
person Debjit Bhowmick    schedule 09.08.2019