我会认为这是如此简单,几乎在任何映射文档中都是示例1。但这似乎不...我想使用Cartopy在地图上绘制选民的边界。我可以以MapInfo或ShapeFile形式下载选民的GIS数据。一年前,当我尝试这样做时,我能找到的唯一方法是提取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
下面是我从shapefile中提取特定单个边界的工作。
另一个问题是,当我尝试在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()
但是发生的是内核只是“意外地”死亡。
如果有人可以指出解决方案的方向,我将非常高兴!另外:我不喜欢卡托普;如果有更好的包装,我会用它。
谢谢!