我有一个点列表:
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)
答案 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)'