1

我一直在制作小地图来定位自己使用匀称。

例如:

from shapely.geometry import MultiLineString 
from pprint import pprint
import pylab

coords = [((1,1),(1,13)),((3,1),(3,13)),((5,1),(5,13)),((7,1),(7,13)),((9,1),(9,13)), ((11,1),(11,13)),((13,1),(13,13)),((1,1),(13,1)),((1,3),(13,3)), ((1,5),(13,5)),((1,7),(13,7)),((1,9),(13,9)),((1,11),(13,11)),((1,13),(13,13)),((1,1),(13,13)),((3.5,1),(13,10.5)),((6.5,1),(13,7.5)),((9.5,1),(13,4.5)),((1,3.5),(10.5,13)),((1,6.5),(7.5,13)),((1,9.5),(4.5,13))]
lines_1 = MultiLineString(coords)
mow = lines_1.buffer(0.25)}

我发现我是一个糟糕的打字员,而且很难写出长长的坐标列表。

我注意到 numpy mgrid 并想知道是否有一种方法可以使用它来创建任意矩形 xy 网格,然后将 mgrid 转换为形状优美的 LineString 的列表。

网格通常设计为类似于棋盘的东西。然后将网格中的一些水平线缓冲成多边形,然后缓冲垂直线,然后将两个级联合并,我有我的棋盘。然后我采用不同的对角线,将它们与棋盘结合,并从线性环中提取生成的多边形。

随着地图尺寸越来越大,并且不是最好的打字员,我希望有一种方法可以使用 mgrid 来更好地完成我的一些打字工作。

IE。x, y = np.mgrid[:55, :35] # 矩形

这给出了预期的 x 和 y 值。我对如何将这些结果带回 Linestring(s) 的 Nx2 数组作为匀称的列表感到困惑。

提前感谢您的任何指导。克里斯

4

1 回答 1

1

您可以vstack结合转置:

>>> x, y = np.mgrid[:2, :3]
>>> np.vstack((x.ravel(),y.ravel())).T
array([[0, 0],
       [0, 1],
       [0, 2],
       [1, 0],
       [1, 1],
       [1, 2]])

如果您需要元组列表:

>>> [(x,y) for x,y in zip(x.ravel(),y.ravel())]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
于 2013-09-01T02:55:30.940 回答