如何处理Shapely中的舍入错误

如何处理Shapely中的舍入错误,第1张

如何处理Shapely中的舍入错误

从根本上讲,需要一个精确的模型,并且有各种计划在某个时候将其实现到GEOS中(不要屏住呼吸,因为已经讨论了好几年了)。

否则,这些选项可以是基于距离的测试(推荐),也可以是稍作调整的更昂贵的基于缓冲区的技术(请参阅机器epsilon):

from shapely.geometry import LineString, Pointline1 = LineString([(1, 1.2), (2, 2), (3, 2.3), (4, 1.2)])pt = Point(2.5, 1.2)pr = line1.interpolate(line1.project(pt))# Distance basedprint(line1.distance(pr) == 0.0)  # True# Buffer basedEPS = 1.2e-16print(line1.buffer(EPS).contains(pr))  # Trueprint(line1.buffer(EPS).intersects(LineString([pt, pr])))  # True

您还可以使用

or
运算符链接便宜和昂贵的测试,例如:

print(line1.contains(pr) or line1.buffer(EPS).contains(pr))

如果第一个返回,则仅运行第二个和更昂贵的测试

False



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5654884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存