Python 使用shapely从坐标元组列表创建点

Python 使用shapely从坐标元组列表创建点,python,geospatial,geo,shapely,Python,Geospatial,Geo,Shapely,我有一张坐标表,看起来像这样 myCoordinates > [(2, -6), (21, 19)] 我想将它们转换为形状几何体对象,以便我可以使用它们进行一些计算: from shapely.geometry import Point for i in myCoordinates: c = [Point(i[0], i[1])] print c > [<shapely.geometry.point.Point object at 0x1044033d0>]

我有一张坐标表,看起来像这样

myCoordinates
> [(2, -6), (21, 19)]
我想将它们转换为
形状几何体
对象,以便我可以使用它们进行一些计算:

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

print c
> [<shapely.geometry.point.Point object at 0x1044033d0>]
我得到三个几何体对象

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

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

在循环的每次迭代中都会覆盖变量。您需要将
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]

以下是三点:

c = [Point(i[0], i[1]) for i in myCoords]
它遵循与
圆圈
相同的列表理解:

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

是否仅在for循环中将所有点分配给
c
c=[点(i[0],i[1])]
@AKS这是什么意思?我想我用我的“真实”坐标替换了示例中创建的随机数。我只漏掉了缓冲区…我的意思是,当你说只给我一个(!)几何体对象。哪个变量指向那个对象?@AKS我编辑了我的问题。包括
c
打印输出
圆圈
您的列表理解循环在
coord
上,但使用
i
;)
for i in myCoordinates:
    c = [Point(i[0], i[1])] # here c is overwritten in each iteration