维度扩展的9-交集矩阵实用工具
de9im的Python项目详细描述
作为我继续教育的一部分 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维图形。换句话说:A点:
>>> 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