неполная визуализация следов зданий — пакет osmnx (пример gboeing № 10)

#python #osmnx

#python #osmnx

Вопрос:

Я изучаю пакет OSMNX, следуя примерам, доступным в git Джеффа Боинга (введите описание ссылки здесь), и я многому учусь. Однако в примере 10 (следы здания) у меня возникла проблема (у меня нет выходных данных следов, как видно на изображении ниже).

введите описание изображения здесь

Коды генерируют уличные сети запрошенных городских пространств, но не генерируют контуры (как это должно быть, поскольку изображение ниже выделено оранжевым цветом).

введите описание изображения здесь

Ps. Я не меняю коды, доступные на github, просто даю «Kernel-restart amp; clearOutput» для их рефакторинга по мере их чтения.

Ps. Как и в этом случае, он не возвращает ошибку (возвращает виды улиц, но не следы перекрывающихся зданий) Я не смог найти решение, когда я дал Google.

 import osmnx as ox
from IPython.display import Image
%matplotlib inline
ox.config(log_console=True, use_cache=True)

import os
os.environ["PROJ_LIB"] = "C:/Users/My/Anaconda3/Library/share"

img_folder = 'images'
extension = 'png'
size = 240

gdf = ox.buildings_from_place(place='Piedmont, California, USA')
gdf_proj = ox.project_gdf(gdf)
fig, ax = ox.plot_buildings(gdf_proj, bgcolor='#333333', color='w', 
                        save=True, show=False, close=True, filename='piedmont_bldgs', dpi=40)
Image('{}/{}.{}'.format(img_folder, 'piedmont_bldgs', extension), height=size, width=size)
gdf_save = gdf.drop(labels='nodes', axis=1)
gdf_save.to_file('data/piedmont_bldgs')
areas = gdf_proj.area
areas.head()
sum(areas)
place = ox.gdf_from_place('Piedmont, California, USA')
place_proj = ox.project_gdf(place)
place_proj.area.iloc[0]
sum(areas) / place_proj.area.iloc[0]

point = (48.873446, 2.294255)
dist = 612
gdf = ox.buildings_from_point(point=point, distance=dist)
gdf_proj = ox.project_gdf(gdf)
bbox = ox.bbox_from_point(point=point, distance=dist, project_utm=True)
fig, ax = ox.plot_buildings(gdf_proj, bgcolor='#333333', color='w', figsize=(4,4), bbox=bbox,
                        save=True, show=False, close=True, filename='paris_bldgs', dpi=90)
Image('{}/{}.{}'.format(img_folder, 'paris_bldgs', extension), height=size, width=size)

# until that moment everything happened according to the tutorial

def make_plot(place, point, network_type='drive', bldg_color='orange', dpi=40,
          dist=805, default_width=4, street_widths=None):
gdf = ox.buildings_from_point(point=point, distance=dist)
gdf_proj = ox.project_gdf(gdf)
fig, ax = ox.plot_figure_ground(point=point, dist=dist, network_type=network_type, default_width=default_width,
                                street_widths=street_widths, save=False, show=False, close=True)
fig, ax = ox.plot_buildings(gdf_proj, fig=fig, ax=ax, color=bldg_color, set_bounds=False,
                            save=True, show=False, close=True, filename=place, dpi=dpi)

place = 'portland_buildings'
point = (45.517309, -122.682138)
make_plot(place, point)
Image('{}/{}.{}'.format(img_folder, place, extension), height=size, width=size)
# here is the problem
  

Я получаю в качестве выходных данных только сеть улиц, без расположения зданий (как показано на первом изображении выше).

Информация:

 Conda version: 4.6.8

version conda-build: 3.17.8

python version: 3.6.7.final.0

platform: win-64

user-agent: conda / 4.6.8 requests / 2.21.0 CPython / 3.6.7 Windows / 10 Windows / 10.0.17134

nx .__ version__ = '0.9'
  

Я был бы рад, если бы вы могли мне помочь.

Заранее большое вам спасибо.

Ответ №1:

Вы проектируете контуры, но не уличную сеть, поэтому они не совпадают на графике. Не проецируйте следы, и это должно работать нормально.

Пример на GitHub нуждается в обновлении, поскольку он восходит к более ранней версии OSMnx, которая автоматически проецировала схему уличной сети-ground diagram.

Ответ №2:

Он работает, когда вы не используете project_gdf в качестве первого параметра в функции plot_buildings. Кроме того, я использую модуль footprints вместо устаревшего когда-то.

 def make_plot(place, point, network_type='drive', bldg_color='orange', dpi=dpi,
          dist=805, default_width=4, street_widths=None):
gdf = ox.footprints.footprints_from_point(point=point, distance=dist)
fig, ax = ox.plot_figure_ground(point=point, dist=dist, network_type=network_type, default_width=default_width, street_widths=street_widths, save=False, show=False, close=True)
fig, ax = ox.footprints.plot_footprints(gdf, fig=fig, ax=ax, color=bldg_color, set_bounds=False, save=True, show=False, close=True, filename=place, dpi=dpi)
  

редактировать: просто откройте запрос на извлечение с этим улучшением: введите описание ссылки здесь