Управление проекциями при построении графиков в Geopandas - PullRequest
0 голосов
/ 30 января 2019

Я использую геопанду, чтобы нарисовать карту Италии.

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize = (20,30))

region_map.plot(ax=ax, color='white', edgecolor='black')
plt.xlim([6,19])
plt.ylim([36,47.7])
plt.tight_layout()
plt.show()

И вот результаты, после правильного определения region_map как части "геометрии" GeoSeries.

map of italy

Однако я не могу изменить соотношение сторон фигуры, даже варьируя figsize в plt.subplots.Я что-то упускаю из виду, или это может быть проблемой геопанды?

Спасибо

1 Ответ

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

Ваш исходный набор данных (region_map) явно "закодирован" в географической системе координат (единицы: лат и лоны).В вашем случае можно предположить, что это WGS84 (EPSG: 4326 ).Если вы хотите, чтобы ваш график выглядел более, как, например, в Картах Google, вам придется перепроектировать его координаты в одну из многих проецируемых систем координат (единицы: метры).Вы можете использовать всемирно приемлемый WEB MERCATOR (EPSG: 3857 ).

Геопанды делают это как можно проще.Вам нужно только знать основы того, как мы работаем с координатными проекциями в информатике и изучать наиболее популярные CRS с помощью их кода EPSG.

import matplotlib.pyplot as plt

#If your source does not have a crs assigned to it, do it like this:
region_map.crs = {"init": "epsg:4326"}

#Now that Geopandas what is the "encoding" of your coordinates, you can perform any coordinate reprojection
region_map = region_map.to_crs(epsg=3857)

fig, ax = plt.subplots(figsize = (20,30))
region_map.plot(ax=ax, color='white', edgecolor='black')

#Keep in mind that these limits are not longer referring to the source data!
# plt.xlim([6,19])
# plt.ylim([36,47.7])
plt.tight_layout()
plt.show()

Я настоятельно рекомендую прочитать официальные документы GeoPandas относительноуправление прогнозами.

...