Python bindings for H3, a hierarchical hexagonal geospatial indexing system developed by Uber Technologies
Project description
H3-Python
=========
|Build Status| |H3 Version| |License|
This library provides Python bindings for the `H3 Core
Library <https://github.com/uber/h3>`__. For API reference, please see
the `H3 Documentation <https://uber.github.io/h3/>`__.
Installing
==========
You need to have ``cc``, ``make``, and ``cmake`` in your ``$PATH`` when installing this
package:
.. code:: sh
which cc
/usr/bin/cc
which make
/usr/bin/make
which cmake
/usr/bin/cmake
.. code:: sh
pip install h3
Development
===========
.. code:: sh
git clone https://github.com/uber/h3-py.git && cd h3-py
virtualenv env
source env/bin/activate
pip install -r requirements-dev.txt
fab bootstrap
Usage
=====
The following visualizations are achieved with
`folium <https://github.com/python-visualization/folium>`__.
.. code:: python
from h3 import h3
Convert lat/lng to hexagon address
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: python
h3_address = h3.geo_to_h3(37.3615593, -122.0553238, 5) # lat, lng, hex resolution
hex_center_coordinates = h3.h3_to_geo(h3_address) # array of [lat, lng]
hex_boundary = h3.h3_to_geo_boundary(h3_address) # array of arrays of [lat, lng]
.. image:: docs/source/Hexagon.png
:scale: 50%
Get KRings of hexagon
~~~~~~~~~~~~~~~~~~~~~
.. code:: python
h3.k_ring_distances(h3_address, 4) # array of 4 rings with size [1, 6, 12, 18]
h3.k_ring(h3_address, 4) # a collection of hexagons within kring sizes from 0 to 3
.. image:: docs/source/KRings.png
:scale: 50%
Polyfill a Geo Json with hexagons
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: python
geoJson = {'type': 'Polygon',
'coordinates': [[[37.813318999983238, -122.4089866999972145],
[ 37.7866302000007224, -122.3805436999997056 ],
[37.7198061999978478, -122.3544736999993603],
[ 37.7076131999975672, -122.5123436999983966 ],
[37.7835871999971715, -122.5247187000021967],
[37.8151571999998453, -122.4798767000009008]]] }
hexagons = list(h3.polyfill(geoJson, 8)) # resolution 8
.. image:: docs/source/Polyfill.png
:scale: 50%
For more API reference, please see the `H3
Documentation <https://uber.github.io/h3/>`__.
.. |Build Status| image:: https://travis-ci.org/uber/h3-py.svg?branch=master
:target: https://travis-ci.org/uber/h3-py
.. |H3 Version| image:: https://img.shields.io/badge/h3-v3.1.0-blue.svg
:target: https://github.com/uber/h3/releases/tag/v3.1.0
.. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
:target: LICENSE
=========
|Build Status| |H3 Version| |License|
This library provides Python bindings for the `H3 Core
Library <https://github.com/uber/h3>`__. For API reference, please see
the `H3 Documentation <https://uber.github.io/h3/>`__.
Installing
==========
You need to have ``cc``, ``make``, and ``cmake`` in your ``$PATH`` when installing this
package:
.. code:: sh
which cc
/usr/bin/cc
which make
/usr/bin/make
which cmake
/usr/bin/cmake
.. code:: sh
pip install h3
Development
===========
.. code:: sh
git clone https://github.com/uber/h3-py.git && cd h3-py
virtualenv env
source env/bin/activate
pip install -r requirements-dev.txt
fab bootstrap
Usage
=====
The following visualizations are achieved with
`folium <https://github.com/python-visualization/folium>`__.
.. code:: python
from h3 import h3
Convert lat/lng to hexagon address
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: python
h3_address = h3.geo_to_h3(37.3615593, -122.0553238, 5) # lat, lng, hex resolution
hex_center_coordinates = h3.h3_to_geo(h3_address) # array of [lat, lng]
hex_boundary = h3.h3_to_geo_boundary(h3_address) # array of arrays of [lat, lng]
.. image:: docs/source/Hexagon.png
:scale: 50%
Get KRings of hexagon
~~~~~~~~~~~~~~~~~~~~~
.. code:: python
h3.k_ring_distances(h3_address, 4) # array of 4 rings with size [1, 6, 12, 18]
h3.k_ring(h3_address, 4) # a collection of hexagons within kring sizes from 0 to 3
.. image:: docs/source/KRings.png
:scale: 50%
Polyfill a Geo Json with hexagons
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: python
geoJson = {'type': 'Polygon',
'coordinates': [[[37.813318999983238, -122.4089866999972145],
[ 37.7866302000007224, -122.3805436999997056 ],
[37.7198061999978478, -122.3544736999993603],
[ 37.7076131999975672, -122.5123436999983966 ],
[37.7835871999971715, -122.5247187000021967],
[37.8151571999998453, -122.4798767000009008]]] }
hexagons = list(h3.polyfill(geoJson, 8)) # resolution 8
.. image:: docs/source/Polyfill.png
:scale: 50%
For more API reference, please see the `H3
Documentation <https://uber.github.io/h3/>`__.
.. |Build Status| image:: https://travis-ci.org/uber/h3-py.svg?branch=master
:target: https://travis-ci.org/uber/h3-py
.. |H3 Version| image:: https://img.shields.io/badge/h3-v3.1.0-blue.svg
:target: https://github.com/uber/h3/releases/tag/v3.1.0
.. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
:target: LICENSE
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
h3-3.4.2.tar.gz
(10.2 kB
view details)
File details
Details for the file h3-3.4.2.tar.gz.
File metadata
- Download URL: h3-3.4.2.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.9.1 pkginfo/1.1 requests/2.13.0 setuptools/19.7 requests-toolbelt/0.8.0 tqdm/4.19.4 CPython/2.7.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccc676a09db38a10f76c0948bb2a238fa21ba42174875409c8ed74291bff36e3
|
|
| MD5 |
d965937bb031e4fdeb833441207c080c
|
|
| BLAKE2b-256 |
f3ee9fc225d259538f73f08d21b52aa9c64d6e911d2a358866d5c1c860c2f7c8
|