使用Shapely从Points创建LineString的函数

时间:2018-04-05 00:46:28

标签: python python-3.x shapely

我有一个点列表:

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

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

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

我只能从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)

仍然没有从

返回任何值
pls_work = createLineGeom(vertices)

2 个答案:

答案 0 :(得分:0)

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

在决定它是否为Point时,您可能希望使用isinstance()。更好的是,继续前进并尝试使用这个论点。如果它不是合适的类型,您将获得一个有用的堆栈跟踪来解释问题。

答案 1 :(得分:0)

感谢@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)'