编程语言
首页 > 编程语言> > python-如何检查形状文件多边形是否包含经度和纬度点的numpy meshgrid

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