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.in.
gridDisk
of invalid indexes should not crash. (#498)cellAreaRads2
cellAreaKm2
cellAreaM2
pointDistRads
pointDistKm
pointDistM
exactEdgeLengthRads
exactEdgeLengthKm
exactEdgeLengthM
Refactor getH3UnidirectionalEdgeBoundary
for accuracy at small resolutions. (#391)
getH3UnidirectionalEdgeBoundary
by about 3x.Implement core logic for future vertex mode.
Fixed building the library with custom memory allocation functions on Mac OSX. (#362)
The installed H3 CMake target should have include directories specified. (#381)
Tests now use bash
on Windows. (#381)
H3_MEMORY_PREFIX
CMake option for replacing the memory management functions used in H3. (#317)Support for building Debian packages of H3. (#352)
Removed duplicate include statements. (#333)
Fixed macro H3_DIGIT_MASK_NEGATIVE
. (#329)
Again implement new polyfill
algorithm. (#313)
compact
detects and fails on cases with duplicated input indexes. (#299)
h3IsValid
returns false for indexes that have non-zero reserved bits. (#300)
h3IsValid
and h3UnidirectionalEdgeIsValid
return false for indexes with the high bit set. (#300)
polyfill
algorithm until reported issues are fixed. (#293)compact
handles zero length input correctly. (#278)bboxHexRadius
scaling factor adjusted to guarantee containment for polyfill
. (#279)polyfill
new algorithm for up to 3x perf boost. (#282)h3ToCenterChild
function to find center child at given resolution (#267)getPentagonIndexes
(and pentagonIndexCount
) function to find pentagons at given resolution (#267)
Fix bounds check for local IJ coordinates (#271)
h3GetFaces
function to find icosahedron faces for an index, and helper function maxFaceCount
(#253)
Argument parsing for all filter applications is more flexible. (#238)
Fix printing program name in h3ToHier
error messages. (#254)
h3ToGeo
, geoToH3
, and h3ToGeoBoundary
is more flexible. (#227)localIjToH3
filter application (#222)An option to print distances in the kRing
filter application (#222)
Arguments parsing for kRing
filter application is more flexible. (#224)
benchmarkPolyfill
allocates its memory on the heap (#198)
Fixed constraints of vertex longitudes (#213)
Zero only input to uncompact
does not produce an error (#223)
binding-functions
build target generates an ASCII file on Windows (#193)binding-functions
build target fixed when running the build out of source (#188)getRes0Indexes
function for getting all base cells, and helper function res0IndexCount
(#174)h3Line
and h3LineSize
functions for getting the line of indexes between some start and end (inclusive) (#165)
Indexes in deleted pentagon subsequences are not considered valid.
experimentalH3ToLocalIj
function for getting local coordinates for an index. (#102)experimentalLocalIjToH3
function for getting an index from local coordinates. (#102)Benchmarks for the kRing method for k's of size 10, 20, 30, and 40. (#142, #144)
Internal h3ToIjk
function renamed to h3ToLocalIjk
. (#102)
h3ToIjk
filter application replaced with h3ToLocalIj
. (#102)
Added #include <stdio.h>
to benchmark.h
(#142)
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)
h3Distance
function for determining the grid distance between H3 indexes (#83)h3ToIjk
function for getting IJK+ coordinates from an index (#83)ijkDistance
function for determining the grid distance between IJK+ coordinates (#83)h3ToIjk
filter application for experimenting with h3ToIjk
(#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
and h3ToGeoBoundaryHier
. (#90)
Fixed a segfault in h3SetToLinkedGeo
(#94)
Warnings are not errors by default. (#90)
WARNINGS_AS_ERRORS
option, default on, for Clang and GCC (#70)Added CMake TEST_WRAPPER
setting when WRAP_VALGRIND
is on (#66)
Moved Vec3d structure to vec3d.h
(#67)
Added input validation when getting the origin or destination of an edge (#74)
hexRange
, hexRanges
, or hexRangeDistances
in the bindings. These functions may be deprecated in the public API in future releases; consumers should use kRing
and kRingDistances
instead.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.
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
to 11
instead of using compiler flag -std=c1x
.
Use CMAKE_POSITION_INDEPENDENT_CODE
instead of using compiler flag -fPIC
.
Rename library target from h3.1
to h3
with SONAME
property of 1.
CMake H3_COMPILER
option in favor of built-in CMAKE_C_COMPILER
.
CMake BUILD_STATIC
option in favor of built-in BUILD_SHARED_LIBS
.
CMake ENABLE_TESTS
option in favor of built-in BUILD_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.