numpy mgrid用于线串坐标

时间:2013-09-01 00:47:38

标签: python numpy coordinates shapely

我一直在制作小地图,以使自己适应身材。

例如:

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更好地打字的方法。

即。 x,y = np.mgrid [:55,:35] #angular

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

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

1 个答案:

答案 0 :(得分: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)]