Skip to main content

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

Release files for de9im 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for de9im 0.1
File Size Uploaded
de9im-0.1.tar.gz 3.3 kB Details

Release files / de9im-0.1.tar.gz

Download URL de9im-0.1.tar.gz
Size 3.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5468625078a488a95ca0f0338c97368a82a9d08db3d8b2409949342329bb31b1
BLAKE2b-256 checksum
How to use checksums
8631f6169b1c477b037f18146299f77f01572a3ec99aeb661f66be530a9c5239
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page