Python library and CLI tool to check density and densify (GeoJSON) geometries using the geodesic (ellipsoidal great-circle) calculation for accurate CRS transformations


Keywords
CRS, NSGI, coordinate, reference, system, densify, geodesic, geojson, great-circle
License
MIT
Install
pip install geodense==1.0.1a0

Documentation

geodense

Code Coverage Python 3.11+ License: MIT PyPI Version

Python library and CLI tool to check density and densify geometries using the geodesic (ellipsoidal great-circle) calculation for accurate CRS transformations.

Implementation based on Eenduidige transformatie van grenzen tussen ETRS89 en RD

Requires Python v3.11 or higher.

Depends on:

Usage CLI

Use either geodense or the short gden alias:

$ geodense --help

Usage: geodense [-h] [-v] {densify,check-density} ...

Check density of, and densify geometries using the geodesic (ellipsoidal great-circle) calculation for accurate CRS transformations

Commands:
  {densify,check-density}

Options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit

Created by https://www.nsgi.nl/

Usage Docs

See DOCS.md for usage docs; for now only containing flow-charts of the densify and check-densify subcommands.

Contributing

Issues (bugs/feature requests) can be reported in the issue tracker of this repository. Pull requests are more than welcome, but we encourage to start a discussion on the issue tracker first.

Development

Install/uninstall geodense for development, including dev dependencies (run from root of repository):

pip install -e ".[dev]"
pip uninstall geodense

Tests

Run tests:

python3 -m pytest tests/

Check test coverage:

python3 -m coverage run -p --source=src/geodense -m pytest -v tests && python3 -m coverage report --data-file $(ls -t  .coverage.* | head -1)

Create release

Creating a release requires the build and twine packages, which are part of this package's dev dependencies. To create a release follow these steps:

  1. To release a new version create a new git tag and push the new tag with:
git tag -a x.x.x -m "tagging x.x.x release"
git push --tags
  1. Create a new build with:
rm -rf dist/* # clean dist folder before build
python -m build
  1. Check wheel contains expected files:
unzip dist/geodense-0.0.1a3-py3-none-any.whl -d geodense-whl
tree geodense-whl
rm -rf geodense-whl
  1. Check whether package description will render properly on PyPI:
twine check dist/*
  1. Upload release to pypi:
twine upload -r testpypi dist/*

Note: requires ~/.pypirc file with API token (when 2FA is enabled on PyPi).