维度的扩展9-交点矩阵实用工具
项目描述
作为我继续学习Shapely、GEOS、JTS和OGC简单特性规范的理论和方法的一部分,我编写了一个小型实用工具包,用于处理DE-9IM矩阵和模式: http://bitbucket.org/sgillies/de9im/. Shapely提供了标准的(这些可能是我最喜欢的OGC标准)谓词作为几何类方法
>>> from shapely.wkt import loads >>> p = loads('POLYGON ((1.0 0.0, 0.0 -1.0, -1.0 0.0, 0.0 1.0, 1.0 0.0))') >>> q = loads('POLYGON ((3.0 0.0, 2.0 -1.0, 1.0 0.0, 2.0 1.0, 3.0 0.0))') >>> p.disjoint(q) False >>> p.intersects(q) True >>> p.touches(q) True
但如果你只想测试是否只有一个点接触了特征,你可能会说这是一个“侧面拥抱”。你不必计算交集并检查其几何类型,可以使用de9im包来定义一个DE-9IM矩阵模式,并将其与两个特征的关联矩阵进行测试。以下模式中的 0 要求特征的边界交集是一个0维图形。换句话说:一个点
>>> from de9im import pattern >>> side_hug = pattern('FF*F0****') >>> im = p.relate(q) >>> print im FF2F01212 >>> side_hug.matches(im) True
也可以使用熟悉的模式
>>> from de9im.patterns import touches >>> repr(touches) "DE-9IM or-pattern: 'FT*******||F**T*****||F***T****'" >>> touches.matches(im) True