numpy meshgrid到Shapely多边形

Bry*_*ceH 2 python numpy shapely

我正在尝试创建一个numpy meshgrid并将其转换为Shapely多边形。我可能可以使用蛮力方法解决此问题,但是感觉必须要有一个很好的技巧才能完成,但是我还没有提出。

这使我获得了点网格(假设在Jupyter中运行)-

import numpy as np
from matplotlib import pyplot

fig = pyplot.figure(figsize=(10, 10))
ax = fig.add_subplot(111, aspect='equal')

x,y = np.mgrid[-5:-1:8j, 1:5:8j]
ax.plot(x,y, 'o', color='#000000')
pyplot.show()
Run Code Online (Sandbox Code Playgroud)

现在需要将所有这些点水平和垂直连接起来以形成Shapely多边形。我的第一个尝试是生成Shapely MultiLineString来绘制垂直和水平线,然后对其执行多边形化操作。这导致仅创建了主要的外部多边形-这是由于MultiLineString仅在外部多边形上包含了顶点。

我知道使用栅格和GDAL可能更合理,但我的情况要求最终结果为Shapely多边形。

跟踪解决方案的任何帮助将不胜感激!

小智 5

在构造MultiLineString之前,基本上必须定义每行。

import numpy as np
from shapely.geometry import MultiLineString
from shapely.ops import polygonize

x = np.linspace(-5, -1, 8)
y = np.linspace(1, 5, 8)

hlines = [((x1, yi), (x2, yi)) for x1, x2 in zip(x[:-1], x[1:]) for yi in y]
vlines = [((xi, y1), (xi, y2)) for y1, y2 in zip(y[:-1], y[1:]) for xi in x]

grids = list(polygonize(MultiLineString(hlines + vlines)))
Run Code Online (Sandbox Code Playgroud)