Я бы подумал, что это будет так просто, что это будет почти пример 1 в любой картографической документации. Но, похоже, нет ... Я хочу нанести на карту границы электората на карту улиц, используя картографию. Я могу загрузить ГИС-данные электората в форме MapInfo или ShapeFile. Когда я пытался сделать это год назад, единственный способ найти это - извлечь координаты широты / долготы многоугольника MapInfo и построить их с помощью matplotlib.
Я пытаюсь быть немного элегантнее в этом году. С файлом MapInfo я могу изолировать свой электорат с помощью
import geopandas as gpd
v = gpd.read_file('VicMaps/vic-july-2018-mid-mif/E_VIC18.MIF')
cg = v.loc[7].geometry
Мои попытки извлечь отдельную границу из шейп-файла приведены ниже.
Другая проблема заключается в том, что, когда я пытаюсь запустить это в jupyter, попытка составить карту приводит к сбою ядра (python 3.4).
Где-то должны быть примеры этого, но пока я не нашел пример, который работает с моими данными. Это то, что я до сих пор собирал вместе из разных полезных ответов на вопросы других людей:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.io.shapereader import Reader
from cartopy.io.img_tiles import OSM
shp = Reader('VicMaps/E_AUGFN3_region.shp')
fig = plt.figure(figsize=(16,16))
tiler = OSM()
ax = plt.axes(projection=tiler.crs)
ax.set_extent([144.956158, 145.085398, -37.813662, -37.690999])
for r, g in zip(shp.records(), shp.geometries()):
if r.attributes['Elect_div'] == 'Cooper':
ax.add_geometries(g, ccrs.Geodetic())
plt.show()
Но что происходит, так это то, что ядро просто «неожиданно» умирает.
Если бы кто-нибудь мог указать мне в направлении решения, я был бы рад! Кроме того: я не предан картопи; если есть лучший пакет, я буду его использовать.
Спасибо!