Получить координаты ДИСПЛЕЯ (пикселя) узла в сети X MultiDiGraph (производится OSMNX) - PullRequest
0 голосов
/ 25 января 2019

Я создаю graph_from_point, используя osmnx. Я хочу сохранить этот график в изображение PNG, но создал дополнительный файл, дающий мне координаты широты / долготы узлов вместе с их координатами PIXEL в сохраненном файле PNG.

Этот учебник: https://matplotlib.org/users/transforms_tutorial.html предполагает, что должен быть в состоянии «преобразовать ваши данные в вашу систему координат дисплея» (я знаю, что существует потенциальная проблема отображения и сохранения DPI), которая, как представляется, мне нужна , но если я попытаюсь использовать transData, я получу сообщение об ошибке ниже.

G = ox.graph_from_point(map_query, distance=map_distance, network_type=map_network_type, simplify=True)
list(G.nodes.data())
# {'y': 51.5025637, 'x': 0.1111431, 'osmid': 95944704}
print type(G.transData)
AttributeError: 'MultiDiGraph' object has no attribute 'transData' 

Это правильный подход, но я ссылаюсь не на тот объект? Или это не действительно? Я не уверен в связи между networkx и matplotlib. Моей конечной целью было бы иметь:

{'y': 51.5025637, 'x': 0.1111431, 'osmid': 95944704, 'pixel' : (23, 467)}

Пиксель является ссылкой на сохраненный файл, созданный:

ox.plot_graph(G, save=True, file_format='png', filename='example', fig_height=my_fig_height, dpi=my_dpi)

1 Ответ

0 голосов
/ 08 февраля 2019

Я не уверен в связи между networkx и matplotlib.

Не существует внутренней связи между OSMnx / NetworkX и matplotlib. Объекты NetworkX MultiDiGraph не имеют атрибутов оси matplotlib, таких как transData. Я бы предложил прочитать документацию OSMnx . OSMnx может построить график с помощью matplotlib и вернуть вам фигуру и ось. Затем вы можете манипулировать этой осью и работать с ней по своему усмотрению.

...