用 shapely 从 Coordinate-Tuple-List 创建点

Posted

技术标签:

【中文标题】用 shapely 从 Coordinate-Tuple-List 创建点【英文标题】:Creating Points from Coordinate-Tuple-List with shapely 【发布时间】:2016-08-14 07:50:53 【问题描述】:

我有一个坐标列表看起来像这样

myCoordinates
> [(2, -6), (21, 19)]

我想将它们转换为 shapely geometry 对象,以便我可以对它们进行一些计算:

from shapely.geometry import Point
for i in myCoordinates:
    c = [Point(i[0], i[1])]

print c
> [<shapely.geometry.point.Point object at 0x1044033d0>]

但是,这只给了我一个(!)几何对象。

但是当我做this

circles = [Point(random.random(), random.random()).buffer(random.random() * 0.1) for i in range(3)]

我得到三个几何对象。

print circles
> [<shapely.geometry.polygon.Polygon object at 0x1043f6890>, <shapely.geometry.polygon.Polygon object at 0x10442f8d0>, <shapely.geometry.polygon.Polygon object at 0x10442f910>]

我做错了什么?为什么它只将一个点转换为几何对象而不是我列表中的两个?

【问题讨论】:

您是否仅在 for 循环中将所有点分配给 cc = [Point(i[0], i[1])] @AKS 你这是什么意思?我以为我用我的“真实”坐标链接了示例中的随机数创建。我只漏掉了缓冲区... 我的意思是当你说只给我一个(!)几何对象。哪个变量指向那个对象? @AKS 我编辑了我的问题。包括来自ccirclesprint output 【参考方案1】:

您在循环的每次迭代中都覆盖了您的变量。您需要将c 设为一个列表,然后附加到它:

from shapely.geometry import Point
c = []
for i in myCoordinates:
    c.append([Point(i[0], i[1])])

print c

或者您可以使用列表理解在一行中完成所有操作:

c = [Point(coord[0], coord[1]) for coord in myCoordinates]

【讨论】:

你的列表理解循环了 coord 但使用 i ;)【参考方案2】:

以下会给你三分:

c = [Point(i[0], i[1]) for i in myCoords]

它遵循与circles 相同的列表理解:

circles = [Point(random.random(), random.random()).buffer(random.random() * 0.1) for i in range(3)]

您之前所做的是将点分配给变量c,因此在 for 循环结束时,列表中只有一个点:

for i in myCoordinates:
    c = [Point(i[0], i[1])] # here c is overwritten in each iteration

【讨论】:

以上是关于用 shapely 从 Coordinate-Tuple-List 创建点的主要内容,如果未能解决你的问题,请参考以下文章

shapes 不规则边界

从qplot开始

shape--用代码修改shape的颜色属性

Open Cascade:如何从AIS_Shape导出TopoDS_Shape?

从图像中裁剪 System.Windows.Shapes 矩形

从 Shapely 中的多边形中提取点/坐标