使用 Shapely 从点创建 LineString 的函数

Function to create LineString from Points using Shapely

我有一个积分列表:

points = [Point(2.2, 4.2), Point(7.2, -25.1), Point(9.26, -2.456)]

我正在尝试编写一个函数来检查此列表是否包含点对象和 return 然后是 LineString,到目前为止:

def createLineGeom(giveLine):
if type(giveLine) is shapely.geometry.point.Point:
    return LineString(giveLine)
else:
    return 'pointList must contain shapely point object(s)'

我只能 return 来自 createLineGeom(points) 的 else 消息。不确定我的问题是出在 type() 函数还是我的第一个 return 语句,我是一个编写函数的初学者。

谢谢!

J_H 回答后更新

vertices = [Point(2.2, 4.2), Point(7.2, -25.1), Point(9.26, -2.456)]
# function
def createLineGeom(giveLine):
    if isinstance(giveLine, Point):
       return LineString(giveLine)

仍然 return

没有价值
pls_work = createLineGeom(vertices)

使用print(type(giveLine))了解对象的类型。

您可能想使用 isinstance() 来决定它是否是一个点。更好的是,勇往直前,尝试使用论点。如果它不是合适的类型,您将获得一个有用的堆栈跟踪来解释问题。

感谢@J_H 用 isinstance() 为我指明了正确的方向。我不确定我的解决方案是否是最有效的选择,但它确实有效!

def createLineGeom(inList):
    if all(isinstance(x, Point) for x in inList) is True:
        return LineString(inList)
    else:
        return 'pointList must contain shapely point object(s)'

编辑: 修复了缩进