Plot_footprints кадра данных geopandas приводит к ошибке ValueErrorPython

Программы на Python
Ответить
Гость
 Plot_footprints кадра данных geopandas приводит к ошибке ValueError

Сообщение Гость »


У меня возникли проблемы с отображением данных из модуля Python osmnx с использованием matplotlib. Основная проблема, по-видимому, заключается в размере ограничивающей рамки. Когда я указываю небольшой ящик (например, район), я получаю сообщение об ошибке. Большие ограничивающие рамки работают нормально. Вот мой код:

импортировать osmnx как ox импортировать matplotlib.pyplot как plt импортировать геопанды как gpd импортировать панд как pd импортировать ОС defplot_features_bbox(title="", include_water=True, include_roads=True, include_railways=True, include_buildings=True): # Ограничительная рамка координат север = 50,954088 юг = 50,942151 запад = 6,913769 восток = 6,927888 #dpi т/д = 400 # Инициализируем пустой GeoDataFrame функции = gpd.GeoDataFrame() # Получите водоемы, если потребуется если включить_воду: # Используйте общую ограничивающую рамку вода = ox.geometries_from_bbox(север, юг, восток, запад, tags={'natural': 'water'}) функции = pd.concat([функции, вода]) # Получите дороги, если потребуется если include_roads: # Используйте общую ограничивающую рамку G = ox.graph_from_bbox(север, юг, восток, запад, network_type='диск', упрощение=True, truncate_by_edge=True) roads_gdf = ox.graph_to_gdfs(G, nodes=False) функции = pd.concat([features,roads_gdf]) # Получите железные дороги, если потребуется если include_railways: # Используйте общую ограничивающую рамку железные дороги = ox.graph_from_bbox(север, юг, восток, запад, network_type='all', упрощение=True, сохраняйте_all=True, truncate_by_edge=True, clean_periphery=False, custom_filter='["железная дорога"~"железная дорога"]') Railways_gdf = ox.graph_to_gdfs (железные дороги, узлы = False) функции = pd.concat([функции, железные дороги_gdf]) # Установите цвета и толщину линий для воды, дорог, железных дорог и зданий. Water_color = '#5882FA' road_color = '#688A08' Railway_color = '#848484' Building_color = '#FE9A2E' road_linewidth = 4,8 Railway_linewidth = 2,0 # Постройте выбранные объекты на указанном расстоянии вокруг центральной точки fig, ax = ox.plot_footprints(features, bbox=(север, юг, восток, запад), figsize=(80, 30), dpi=dpi, ax=None, color=water_color, bgcolor="#FBFBEF", Alpha=None, save=False, show=False, close=False) если include_roads: ox.plot_graph(G, ax=ax, node_size=0, bbox = (север, юг, восток, запад), Edge_color=road_color, Edge_linewidth=road_linewidth, bgcolor="#FBFBEF", show=False, close=False) если include_railways: ox.plot_graph(railways, ax=ax, bbox = (север, юг, восток, запад), Edge_color=railway_color, Edge_linewidth=railway_linewidth, node_size=0) # Получите контуры зданий и установите их цвет так же, как и другие объекты. если include_buildings: Buildings_gdf = ox.geometrys_from_bbox(север, юг, восток, запад, tags={'building': True}) Buildings_gdf.plot(ax=ax, facecolor=building_color, альфа=0.7, ширина линии=0) # Добавляем белый фон с текстом ax.text(0.5, 0.1, title, fontsize=10, ha='center', va='center', Transform=ax.transAxes, Fontname='Courier New', bbox=dict(facecolor='white',edgecolor='black', boxstyle='round,pad=0.6'), color='black') # Добавьте белую рамку (прямоугольник) вокруг карты ax.add_patch(plt.Rectangle((запад, юг), восток - запад, север - юг, fill=False, color='white', linewidth=50)) fig.tight_layout(pad=0) # Определить путь к выходному файлу выходной_путь = r'C:\Users\..' os.madeirs(output_path,exist_ok=True) имя_выходного_файла = os.path.join(output_path, "ehrenfeld.png") # Сохраняем график как изображение fig.savefig(output_filename, dpi=dpi, format="png", bbox_inches='tight', facecolor=fig.get_facecolor(), Transparent=False) # Die sichtbare Region auf die Bounding Box beschränken ax.set_xlim(запад, восток) ax.set_ylim(юг, север) # Закрываем сюжет plt.close(рис.) вернуть имя выходного_файла output_filename =plot_features_bbox(title="Hier kann\n dein Text\n stehen.", include_water=True, include_roads=True, include_railways=True, include_buildings=True) print(f"Добавлена ​​информация о дате '{output_filename}'.") Вот ошибка:

-------------------------------------------- ------------------------------- ValueError Traceback (самый последний вызов — последний) Ячейка In[24], строка 96 91 плт.закрыть(рис.) 93 вернуть имя выходного_файла ---> 96 output_filename =plot_features_bbox(title="Hier kann\n dein Text\n stehen.", include_water=True, include_roads=True, include_railways=True, include_buildings=True) 97 print(f"Выбрано сообщение об открытии даты '{output_filename}'.") Ячейка In[24], строка 55, вplot_features_bbox(title, include_water, include_roads, include_railways, include_buildings) 52 Railway_linewidth = 2,0 54 # Постройте выбранные объекты на указанном расстоянии вокруг центральной точки. ---> 55 рис, ax = ox.plot_footprints(features, bbox=(север, юг, восток, запад), figsize=(80, 30), 56 dpi=dpi, ax=None, color=water_color, bgcolor="#FBFBEF", Alpha=None, save=False, show=False, close=False) 58, если include_roads: 59 ox.plot_graph(G, ax=ax, node_size=0, bbox = (север, юг, восток, запад), Edge_color=road_color, Edge_linewidth=road_linewidth, 60 bgcolor="#FBFBEF", show=False, close=False) Файл ~\anaconda\envs\osmnx\lib\site-packages\osmnx\plot.py:623, вplot_footprints(gdf, ax, figsize,color,edge_color,edge_linewidth,alpha,bgcolor,bbox, save, show, close, путь к файлу, dpi) 621 # сохранить только полигоны и мультиполигоны, затем построить 622 gdf = gdf[gdf["геометрия"].type.isin({"Многоугольник", "МультиМногоугольник"})] --> 623 топор = gdf.plot( 624 ax=ax, facecolor=color,edgecolor=edge_color, linewidth=edge_linewidth, альфа=альфа 625 ) 627 # определить размеры фигуры 628, если bbox равен None: Файл ~\anaconda\envs\osmnx\lib\site-packages\geopandas\plotting.py:969 в GeoplotAccessor.__call__(self, *args, **kwargs) 967 kind = kwargs.pop("вид", "география") 968, если вид == "гео": --> 969 returnplot_dataframe(data, *args, **kwargs) 970, если добро в себе._pandas_kinds: 971 # Доступ к графикам панд 972 return PlotAccessor(данные)(вид=вид, **kwargs) Файл ~\anaconda\envs\osmnx\lib\site-packages\geopandas\plotting.py:681, вplot_dataframe(df, столбец, cmap, цвет, ax, cax, категориальный, легенда, схема, k, vmin, vmax, размер маркера, размер фигуры, Legend_kwds, категории, классификация_kwds, Missing_kwds, аспект, **style_kwds) 679 границ = df.total_bounds 680 y_coord = np.mean([границы[1], границы[3]]) --> 681 ax.set_aspect(1 / np.cos(y_coord * np.pi / 180)) 682 # формула перенесена из пакета R sp 683# https://github.com/edzer/sp/blob/master/R/mapasp.R 684 еще: 685 ax.set_aspect("равно") Файл ~\anaconda\envs\osmnx\lib\site-packages\matplotlib\axes\_base.py:1669, в _AxesBase.set_aspect(self, аспект, регулируемый, привязка, общий доступ) 1667 аспект = float(аспект) # при необходимости поднимите ValueError 1668, если аспект 1669 поднять ValueError("аспект должен быть конечным и положительным") 1671, если поделиться: 1672 оси = {брат для имени в self._axis_names 1673 для брата в self._shared_axes[name].get_siblings(self)} ValueError: аспект должен быть конечным и положительным. Я хотел бы создать файл изображения в формате PNG с данными. Помимо дорог, показаны также здания, водные и железнодорожные пути.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»