我想从一个多多边形形状的物体中检测内部多边形。五大湖,黑海和里海应该是内部多边形,并且不被填充。
如何使用shapefile正确地执行此操作?
请查看以下脚本以进行调查。
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from shapely import geometry
import random
import pickle
! wget -nc https://thredds-su.ipsl.fr/thredds/fileServer/ipsl_thredds/brocksce/tmp/polys.pickle
with open('./polys.pickle', "rb") as poly_file:
polygons = pickle.load(poly_file)
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.Robinson(10))
transform = ccrs.Geodetic()
for polygon in polygons.geoms:
random_color = "#"+''.join([random.choice('0123456789ABCDEF') for i in range(6)])
x = polygon.exterior.coords.xy[0]
y = polygon.exterior.coords.xy[1]
ax.fill(x, y, transform=transform, color=random_color, lw=0.5, edgecolor="black")
ax.set_global()
ax.gridlines()
plt.show()
1条答案
按热度按时间l7wslrjt1#
这里是一个使用补丁的解决方案,因为你可以处理有洞的多边形。注意,外环将是逆时针方向,内环(洞)将是顺时针方向。
五大湖、黑海和里海现在都没有填满。
但注意南极画得不对。不明白为什么?
更明显的问题是不正确的填充与正射投影。见紫罗兰直填补非洲。任何帮助这一点也将是受欢迎的?
已经发布了一个关于这个问题:https://github.com/SciTools/cartopy/issues/2111