Skip to main content

A Python library for enforcing polygon ring winding order in GeoJSON

Project description

geojson-rewind

Run tests codecov PyPI Version License Python Compatibility

A Python library for enforcing polygon ring winding order in GeoJSON

The GeoJSON spec mandates the right hand rule:

A linear ring MUST follow the right-hand rule with respect to the area it bounds, i.e., exterior rings are counterclockwise, and holes are clockwise.

This helps you generate compliant Polygon and MultiPolygon geometries.

Installation

pip install geojson-rewind

Usage

As a Library

Enforce RFC 7946 ring winding order (input/output is a GeoJSON string):

>>> from geojson_rewind import rewind

>>> input = """{
...      "geometry": {   "coordinates": [   [   [100, 0],
...                                             [100, 1],
...                                             [101, 1],
...                                             [101, 0],
...                                             [100, 0]]],
...                      "type": "Polygon"},
...      "properties": {"foo": "bar"},
...      "type": "Feature"}"""

>>> output = rewind(input)

>>> output
'{"geometry": {"coordinates": [[[100, 0], [101, 0], [101, 1], [100, 1], [100, 0]]], "type": "Polygon"}, "properties": {"foo": "bar"}, "type": "Feature"}'

>>> type(output)
<class 'str'>

Enforce RFC 7946 ring winding order (input/output is a python dict):

>>> from geojson_rewind import rewind

>>> input = {
...     'geometry': {   'coordinates': [   [   [100, 0],
...                                            [100, 1],
...                                            [101, 1],
...                                            [101, 0],
...                                            [100, 0]]],
...                     'type': 'Polygon'},
...     'properties': {'foo': 'bar'},
...     'type': 'Feature'}

>>> output = rewind(input)

>>> output
{'geometry': {'coordinates': [[[100, 0], [101, 0], [101, 1], [100, 1], [100, 0]]], 'type': 'Polygon'}, 'properties': {'foo': 'bar'}, 'type': 'Feature'}

>>> type(output)
<class 'dict'>

On the Console

# Enforce ring winding order on a GeoJSON file
$ rewind in.geojson > out.geojson

# fetch GeoJSON from the web and enforce ring winding order
$ curl "https://myserver.com/in.geojson" | rewind

Acknowledgements

geojson-rewind is a python port of Mapbox's javascript geojson-rewind package. Credit to Tom MacWright and contributors.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geojson-rewind-1.0.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

geojson_rewind-1.0.0-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file geojson-rewind-1.0.0.tar.gz.

File metadata

  • Download URL: geojson-rewind-1.0.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.5 Linux/5.4.0-58-generic

File hashes

Hashes for geojson-rewind-1.0.0.tar.gz
Algorithm Hash digest
SHA256 9753b2e90475f07407dd6893779ae72c639c316420cf45eb15f752d052ac9dcf
MD5 5ff5dde9180f4b9189db7213ff1efe1b
BLAKE2b-256 f5e856ac21c733f5b558a7fb0cca394511d87bbc4303d0cd35b0dd8f6011caa0

See more details on using hashes here.

File details

Details for the file geojson_rewind-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: geojson_rewind-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.8.5 Linux/5.4.0-58-generic

File hashes

Hashes for geojson_rewind-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e94a8b13ad33bb8920b94655e49bc7293ef88384a25959a32dc15845f589697
MD5 8c05db5c3db4726a2c325457f3f2c15b
BLAKE2b-256 63e5d4cfa044c5168f3af15041dd33666cb6be1674c255b5f6b88e61979221d8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page