sal*_*sal 4 python geos shapely
我想知道是我想错了还是这是一个错误:
我有一个线串和一个多边形,我创建了线和多边形边界的交点
这些交点应该相交(至少接触)多边形的边界,对吗?
from shapely import geometry,wkt
line = geometry.LineString([(13.51039642756912, 52.598912814414675), (13.525173800277184, 52.60620240344557)])
poly = geometry.Polygon ([(13.52072838433517, 52.61735554606274), (13.52233276805985, 52.59511541819082), (13.51312087418833, 52.59394589806786),( 13.51526963068252, 52.60338701649216),( 13.51836560008325 ,52.6009395669487), (13.52072838433517, 52.61735554606274)])
ips = line.intersection(poly.boundary)
for i in ips:
print i.touches(poly.boundary) # should touch but it doesnt!!!!
>>>False
Run Code Online (Sandbox Code Playgroud)
这不是错误,但这是一个常见问题。
如果没有精度模型,所有浮点计算都受到机器 epsilon 的限制。相交点是从每个几何体插入的,并且很少精确(除非您有直角)。所有像“触摸”这样的DE-9IM谓词目前都需要精确点头(除非我们有一个精确模型,这可能有一天会发生更新:使用JTS 拓扑套件进行测试,DE-9IM 谓词不使用精确模型,因此GEOS 克隆不太可能有任何不同的工作)。
更稳健的策略是测试两者之间的距离,如果它们相交,该距离应该小于机器 epsilon。例如:
EPS = 1e-15
for i in ips:
print(i.distance(poly) < EPS)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |