#python #geopandas
#python #геопанды
Вопрос:
Я пытаюсь добавить реальную карту позади моего графика, чтобы показать расположение моих точек данных.
Но я не знаю, как добавить настоящую карту…
Я пробовал несколько способов, например, поместить другой png за сюжет.
Но это просто неправильно.
Вот что у меня получилось.
import geopandas as gpd
import tilemapbase
BBox = (df.Longitude.min(), df.Longitude.max(), df.Latitude.min(), df.Latitude.max())
print(BBox)
(3.3990449, 7.042425700000001, 50.8134557, 53.4066264)
tilemapbase.start_logging()
tilemapbase.init(create=True)
extent = tilemapbase.extent_from_frame(NL_shape, buffer = 25)
fig, ax = plt.subplots(figsize=(10,10))
plotter = tilemapbase.Plotter(extent, tilemapbase.tiles.build_OSM(), width=1000)
plotter.plot(ax)
ax.set_xlim(BBox[0]-0.2, BBox[1] 0.2)
ax.set_ylim(BBox[2]-0.5, BBox[3] 0.5)
NL_shape.plot(ax=ax, alpha=0.3, edgecolor="black", facecolor="white")
stores_shape.plot(ax=ax, alpha = 0.2, color="red", marker='o');
Я следовал инструкциям отсюда: https://rosenfelder.ai/create-maps-with-python /
Я использовал геопанды, чтобы прочитать границу страны (json), а затем нанести свои данные на график.
Но я не могу использовать tilemapbase для загрузки realmap.
Результат получается примерно такой:
Кто-нибудь знает, как исправить эту проблему? Спасибо.
Ожидаемый образ выглядит следующим образом. Базовая карта должна быть похожа на OpenStreetMap.
После того, как я использовал КОНТЕКСТНО, у меня возникла ошибка.
Это выглядело так:
Комментарии:
1. Можете ли вы показать ожидаемое изображение?
2. Хорошо, я добавил ее.
Ответ №1:
Используйте contextily
библиотеку, созданную для геопанд. — https://contextily.readthedocs.io/en/latest /
import contextily as cx
fig, ax = plt.subplots(figsize=(10,10))
NL_shape.plot(ax=ax, alpha=0.3, edgecolor="black", facecolor="white")
stores_shape.plot(ax=ax, alpha = 0.2, color="red", marker='o');
cx.add_basemap(ax, crs=NL_shape.crs, source=cx.providers.OpenStreetMap.Mapnik)
Комментарии:
1. Я верю, что это работает! Но у меня есть проблема в моей среде разработки. Я не могу загрузить пакет contextily…
2. Среда решения: сбой при первоначальном замороженном решении. Повторная попытка с гибким решением. Ошибка PackagesNotFoundError: следующие пакеты недоступны из текущих каналов: — контекстно
3. Среда решения: / Предупреждение: 2 возможных разрешения пакетов (только для отображения разных пакетов): — anaconda/osx-64 ::openssl-1.1.1h-haf1e3a3_0 — defaults/osx-64 ::openssl-1.1.1h-haf1e3a3done
4.
conda config --env --add channels conda-forge
иconda install contextily -c conda-forge
может помочь.5. ОК. Теперь я нашел способ преодолеть проблему и установить контекст. Но есть ошибка: AttributeError: объект ‘AxesImage’ не имеет свойства ‘source’