编程语言
首页 > 编程语言> > 在Python 3.6中计算polygon和shapefile之间的重叠

在Python 3.6中计算polygon和shapefile之间的重叠

作者:互联网

我想计算shapefile和多边形之间的重叠百分比.我正在使用Cartopy和Matplotlib并创建了这里显示的地图:

enter image description here

显示了欧洲的一部分(使用下载的here形状文件)和任意矩形.假设我想计算矩形覆盖的比利时百分比.我该怎么做?下面显示了到目前为止的代码.

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.io.shapereader as shapereader
from shapely.geometry import Polygon
from descartes import PolygonPatch

#create figure
fig1 = plt.figure(figsize=(10,10))  
PLT = plt.axes(projection=ccrs.PlateCarree())
PLT.set_extent([-10,10,45,55])
PLT.gridlines()

#import and display shapefile
fname = r'C:\Users\Me\ne_50m_admin_0_countries.shp'
adm1_shapes = list(shapereader.Reader(fname).geometries())
PLT.add_geometries(adm1_shapes, ccrs.PlateCarree(),
              edgecolor='black', facecolor='gray', alpha=0.5)

#create arbitrary polygon
x3 = 4
x4 = 5
y3 = 50
y4 = 52

poly = Polygon([(x3,y3),(x3,y4),(x4,y4),(x4,y3)])
PLT.add_patch(PolygonPatch(poly,  fc='#cc00cc', ec='#555555', alpha=0.5, 
zorder=5))

解决方法:

那么,你需要某种方式来获得整个地图的区域,以及国家本身的区域.多边形的面积可能是最简单的部分.

我建议从更基本的东西开始,也许只是一个网格和两个简单​​的形状,这可以帮助你设想如何在更复杂的水平上完成它.

标签:python,cartopy
来源: https://codeday.me/bug/20190527/1162159.html