As part of my continuing education about the theory and methods underlying Shapely, GEOS, JTS, and the OGC’s Simple Features specs, I’ve written a small package of utilities for working with DE-9IM matrices and patterns: http://bitbucket.org/sgillies/de9im/. Shapely provides the standard (these are probably my favorite OGC standards) predicates as geometry class methods:
>>> 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
but what if you wanted to test whether the features touched at exactly one point only? A “side hug”, you might say. Instead of computing the intersection and checking its geometry type, you can use the de9im package to define a DE-9IM matrix pattern and test it against the relation matrix for the two features. The 0 in the pattern below requires that the intersection of the boundaries of the features be a 0-dimensional figure. In other words: a point:
>>> from de9im import pattern
>>> side_hug = pattern('FF*F0****')
>>> im = p.relate(q)
>>> print im
FF2F01212
>>> side_hug.matches(im)
True
One may also use familiarly named patterns:
>>> from de9im.patterns import touches >>> repr(touches) "DE-9IM or-pattern: 'FT*******||F**T*****||F***T****'" >>> touches.matches(im) True
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file de9im-0.1.tar.gz.
File metadata
- Download URL: de9im-0.1.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5468625078a488a95ca0f0338c97368a82a9d08db3d8b2409949342329bb31b1
|
|
| MD5 |
0b00313663d656cc421f8952664559ab
|
|
| BLAKE2b-256 |
8631f6169b1c477b037f18146299f77f01572a3ec99aeb661f66be530a9c5239
|