nmandery / h3ronpy

A data science toolkit for the H3 geospatial grid
63 stars 7 forks source link
arrow geopandas geospatial h3 pandas polars python

h3ronpy

A data science toolkit for the H3 geospatial grid <https://h3geo.org/>_.

.. image:: https://img.shields.io/pypi/v/h3ronpy :alt: PyPI :target: https://pypi.python.org/pypi/h3ronpy/

.. image:: https://readthedocs.org/projects/h3ronpy/badge/?version=latest :alt: ReadTheDocs :target: https://h3ronpy.readthedocs.io/

This library is not a substitute for the official python h3 library <https://github.com/uber/h3-py>_ - instead it provides more high-level functions on top of H3 and integrations into common dataframe libraries.

Documentation is available on <https://h3ronpy.readthedocs.io/>_.

Features

Most parts of this library aim to be well-performing. Benchmarking the conversion of 1000 uint64 cell values to strings using

leads to the following result on a standard laptop:

.. code-block::

---------------------------------------------------------------------------------------------- benchmark: 3 tests ---------------------------------------------------------------------------------------------
Name (time in us)                           Min                 Max                Mean            StdDev              Median               IQR            Outliers  OPS (Kops/s)            Rounds  Iterations
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_cells_to_string                    48.4710 (1.0)       75.5000 (1.0)       52.4252 (1.0)      1.5461 (1.0)       52.0330 (1.0)      0.4890 (1.0)       307;448       19.0748 (1.0)        4090           1
test_h3_to_string_python_list          290.5460 (5.99)     325.8180 (4.32)     297.5644 (5.68)     4.8769 (3.15)     296.1350 (5.69)     8.2420 (16.85)       806;4        3.3606 (0.18)       2863           1
test_h3_to_string_numpy_vectorized     352.9870 (7.28)     393.8450 (5.22)     360.1159 (6.87)     3.7195 (2.41)     359.4820 (6.91)     3.8420 (7.86)      447;131        2.7769 (0.15)       2334           1
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Legend:
  Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile.
  OPS: Operations Per Second, computed as 1 / Mean

The benchmark implementation can be found in tests/polars/test_benches.py and uses pytest-benchmark <https://pypi.org/project/pytest-benchmark/>_.

Limitations

Not all functionalities of the H3 grid are wrapped by this library, the current feature-set was implemented when there was a need and the time for it. As a opensource library new features can be requested in the form of github issues or contributed using pull requests.

License

MIT