python-如何检查形状文件多边形是否包含经度和纬度点的numpy meshgrid
作者:互联网
我已经建立了lat和lon点的numpy meshgrid,其形状为1750 X 1750及其对应的数据(降雨)形状相同.我需要找到从形状文件读取的多边形内数据点的平均值.
如果我的逻辑是正确的,我必须找出落在多边形内的经纬度的索引,然后使用该索引过滤数据,然后进行平均.
我已经使用Inpolygon函数在Matlab中成功实现了它,但是我想用Python重写代码.我使用过matplotlib Path.contains_points函数,但是在numpy ND数组上不起作用.
有人可以建议一种合适的方法吗?
非常感谢您的帮助.
解决方法:
要检查多边形是否包含一些点,您可以简单地使用matplotlib,更精确地讲,在matplotlib.path中实现的Path.contains_points是解决方案.它确实接受ND数组,您只需要事先将它们展平,
import numpy as np
from matplotlib.path import Path
X, Y = np.meshgrid(x, y) # X, Y are 2D ndarrays
XY = np.dstack((X, Y))
XY_flat = XY.reshape((-1, 2))
mpath = Path( vertices ) # the vertices of the polygon
mask_flat = mpath.contains_points(XY_flat)
mask = mask_flat.reshape(X.shape)
或者,您可以看一下GeoPandas模块,该模块具有用于处理地理空间数据的更通用的实现.
标签:shapefile,matplotlib,python,numpy 来源: https://codeday.me/bug/20191028/1951336.html