Awesome
<img align="right" src="https://uber.github.io/img/h3Logo-color.svg" alt="H3 Logo" width="200">h3-py: Uber's H3 Hexagonal Hierarchical Geospatial Indexing System in Python
<!-- TODO: have a nice 3d image of hexagons up front -->ANNOUNCEMENT: v4.1 final released on 2024-10-13!
Feedback is welcome via Issues, Discussions, and Slack.
Python bindings for the H3 core library.
- Documentation: uber.github.io/h3-py
- GitHub repo: github.com/uber/h3-py
Installation
From PyPI:
pip install h3
From conda:
conda config --add channels conda-forge
conda install h3-py
Usage
>>> import h3
>>> lat, lng = 37.769377, -122.388903
>>> resolution = 9
>>> h3.latlng_to_cell(lat, lng, resolution)
'89283082e73ffff'
APIs
We provide multiple APIs in h3-py
.
- All APIs have the same set of functions; see the API reference.
- The APIs differ only in their input/output formats; see the API comparison page.
Example gallery
Browse a collection of example notebooks, and if you have examples or visualizations of your own, please feel free to contribute!
We also have an introductory walkthrough of the API.
Versioning
<!-- todo: this should just be the h3.versions() docstring, yeah? -->h3-py
wraps the H3 core library,
which is written in C.
The C and Python projects each employ
semantic versioning,
where versions take the form X.Y.Z
.
The h3-py
version string is guaranteed to match the C library string
in both major and minor numbers (X.Y
), but may differ on the
patch (Z
) number.
This convention provides users with information on breaking changes and
feature additions, while providing downstream bindings (like this one!)
with the versioning freedom to fix bugs.
Use h3.versions()
to see the version numbers for both
h3-py
and the C library. For example,
>>> import h3
>>> h3.versions()
{'c': '4.1.0', 'python': '4.1.1'}