All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
The public API of this library consists of the functions declared in file h3api.h.
- Added #include <stdio.h> to benchmark.h
- Benchmarks for the kRing method for k's of size 10, 20, 30, and 40.
- Fixed bounding box bug for polygons crossing the antimeridian (#130)
- Normalize output of h3SetToMultiPolygon to align with the GeoJSON spec, ensuring that each polygon has only one outer loop, followed by holes (#131)
- Longitude outputs are now guaranteed to be in the range [-Pi, Pi]. (#93)
- Implemented closed form formula for maxKringSize. Source: https://oeis.org/A003215 (#138)
- Improved test and benchmark harnesses (#126, #128)
h3Distance
function for determining the grid distance between H3 indexes (#83)- Internal
h3ToIjk
function for getting IJK+ coordinates from an index (#83) - Internal
ijkDistance
function for determining the grid distance between IJK+ coordinates (#83) h3ToIjk
filter application for experimenting withh3ToIjk
(#83)
- Don't require a C++ compiler (#107)
- Most dynamic internal memory allocations happen on the heap instead of the stack (#100)
- Added Direction enum, replacing int and defined constants (#77)
- Ensured unused memory is cleared for pentagon children. (#84)
- Fixed compiler warnings in
h3ToGeoHier
andh3ToGeoBoundaryHier
. (#90) - Fixed a segfault in
h3SetToLinkedGeo
(#94)
- Warnings are not errors by default. (#90)
- Generator for the faceCenterPoint table (#67)
- Generator for number of indexes per resolution (#69)
- Added CMake
WARNINGS_AS_ERRORS
option, default on, for Clang and GCC (#70) - Added CMake
TEST_WRAPPER
setting whenWRAP_VALGRIND
is on (#66)
- Moved Vec3d structure to
vec3d.h
(#67) - Added input validation when getting the origin or destination of an edge (#74)
- Changed signature of internal function h3NeighborRotations.
- Do not require support for
hexRange
,hexRanges
, orhexRangeDistances
in the bindings. These functions may be deprecated in the public API in future releases; consumers should usekRing
andkRingDistances
instead. - Performance improvement in core indexing logic for
geoToH3
(thanks @wewei!)
- Fixed duplicate vertex in h3ToGeoBoundary for certain class III hexagons (#46)
- Release guide
- Assertions when allocating memory on the heap.
- Most internal memory allocations happen on the stack instead of the heap.
- CMake config installation to ease use of h3 from CMake projects.
- Add CMake toolchain file to set build options upfront.
- Add CMake
C_CLANG_TIDY
property to integrate clang-tidy checks during build. - YouCompleteMe completion support.
- Improved resilience to out of range inputs.
- Minimum CMake version to 3.1.
- Set
CMAKE_C_STANDARD
to11
instead of using compiler flag-std=c1x
. - Use
CMAKE_POSITION_INDEPENDENT_CODE
instead of using compiler flag-fPIC
. - Rename library target from
h3.1
toh3
withSONAME
property of 1.
- CMake
H3_COMPILER
option in favor of built-inCMAKE_C_COMPILER
. - CMake
BUILD_STATIC
option in favor of built-inBUILD_SHARED_LIBS
. - CMake
ENABLE_TESTS
option in favor of built-inBUILD_TESTING
. - File globbing in CMake in favor of listing source files.
- Removed the
H3IndexFat
internal structure.
- Simplified build process on Windows.
- Fixed an issue where tests would fail on ARM systems.
- Added a
make install
target.
- Improved compatability with building on Windows.
- Fixed various cases where the test suite could crash or not compile.
- First public release.