h3 3.4.4 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/Gemfile.lock +1 -1
  4. data/README.md +2 -1
  5. data/ext/h3/Makefile +1 -1
  6. data/ext/h3/src/.gitignore +2 -1
  7. data/ext/h3/src/CHANGELOG.md +9 -0
  8. data/ext/h3/src/CMakeLists.txt +72 -45
  9. data/ext/h3/src/RELEASE.md +2 -1
  10. data/ext/h3/src/VERSION +1 -1
  11. data/ext/h3/src/docs/api/hierarchy.md +2 -0
  12. data/ext/h3/src/docs/api/indexing.md +3 -1
  13. data/ext/h3/src/docs/api/inspection.md +20 -0
  14. data/ext/h3/src/docs/api/misc.md +2 -0
  15. data/ext/h3/src/docs/api/regions.md +2 -0
  16. data/ext/h3/src/docs/api/traversal.md +2 -0
  17. data/ext/h3/src/docs/api/uniedge.md +2 -0
  18. data/ext/h3/src/docs/community/bindings.md +4 -0
  19. data/ext/h3/src/docs/community/tutorials.md +12 -0
  20. data/ext/h3/src/scripts/update_version.sh +50 -0
  21. data/ext/h3/src/src/apps/applib/include/args.h +122 -0
  22. data/ext/h3/src/src/apps/applib/include/utility.h +5 -62
  23. data/ext/h3/src/src/apps/applib/lib/args.c +216 -0
  24. data/ext/h3/src/src/apps/applib/lib/utility.c +40 -206
  25. data/ext/h3/src/src/apps/filters/geoToH3.c +7 -9
  26. data/ext/h3/src/src/apps/filters/h3ToComponents.c +50 -47
  27. data/ext/h3/src/src/apps/filters/h3ToGeo.c +7 -30
  28. data/ext/h3/src/src/apps/filters/h3ToGeoBoundary.c +7 -27
  29. data/ext/h3/src/src/apps/filters/h3ToLocalIj.c +42 -25
  30. data/ext/h3/src/src/apps/filters/hexRange.c +43 -24
  31. data/ext/h3/src/src/apps/filters/kRing.c +4 -4
  32. data/ext/h3/src/src/apps/filters/localIjToH3.c +63 -21
  33. data/ext/h3/src/src/apps/miscapps/h3ToGeoBoundaryHier.c +68 -44
  34. data/ext/h3/src/src/apps/miscapps/h3ToGeoHier.c +68 -43
  35. data/ext/h3/src/src/apps/miscapps/h3ToHier.c +48 -37
  36. data/ext/h3/src/src/apps/testapps/mkRandGeo.c +32 -27
  37. data/ext/h3/src/src/apps/testapps/mkRandGeoBoundary.c +33 -28
  38. data/ext/h3/src/src/apps/testapps/testH3GetFaces.c +136 -0
  39. data/ext/h3/src/src/h3lib/include/faceijk.h +19 -7
  40. data/ext/h3/src/src/h3lib/include/h3api.h.in +12 -1
  41. data/ext/h3/src/src/h3lib/lib/algos.c +7 -2
  42. data/ext/h3/src/src/h3lib/lib/faceijk.c +135 -103
  43. data/ext/h3/src/src/h3lib/lib/h3Index.c +86 -5
  44. data/lib/h3/bindings/private.rb +1 -0
  45. data/lib/h3/inspection.rb +34 -0
  46. data/lib/h3/version.rb +1 -1
  47. data/spec/inspection_spec.rb +33 -1
  48. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9855fbbfa15205895e0467ef2561ec63580395d72c2cacf535c727dfca25e41
4
- data.tar.gz: 2b92de2e824682fcaee25176007799203afb24180da11cac5d63d463d3649e90
3
+ metadata.gz: 95994576b5df069470128bda24d6768b3c8d5fe9ee61ebf0b5f4f16126f64208
4
+ data.tar.gz: a439783870113f4101d00a3fb94c8f4fec978ddabc55410531aa3e0f3c787fdd
5
5
  SHA512:
6
- metadata.gz: '08630f598e940bd5f28f86292de45c50a84ac8bcd6965fd406b52cba745d825d8c3fcd18bf687831785a087f2a461a63c230b2a8bd599d26e2c9199c6516f4e3'
7
- data.tar.gz: aa9fb82ed82cda98c56d75d89240cc556ca9568562d791aceaee5df084bb95b050c1d314a157d53a400020b25516ea86cf14f5e2ad18b56a0e74af4b67768aa9
6
+ metadata.gz: 6315cd5682f58cf7384b67fbf8dd4cba4eaa59ccbede04386a94d526b26d593dd0a92df2c4446dc5ff3a662622acbede640d63bae7345c64be0225b92c81d244
7
+ data.tar.gz: 9b543348c2c66cc8a441ba42e27503d8ace2b83b6714b577e5531a1cb29cb28810a5e816b90adda4a344a2082ed6e4623a25f10b7126a648498fe200787b930e
data/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
7
  We track the MAJOR and MINOR version levels of Uber's H3 project (https://github.com/uber/h3) but maintain independent patch levels so we can make small fixes and non breaking changes.
8
8
 
9
+ ## [3.5.0] - 2019-7-25
10
+ ### Added
11
+ - `h3_faces` and `max_face_count` support (#56)
12
+ ### Changed
13
+ - New CMake options to prevent unnecessary building of filter apps and benchmarks.
14
+
15
+ ## [3.4.4] - 2019-6-4
16
+ ### Changed
17
+ - Internal h3 bugfixes.
18
+
9
19
  ## [3.4.0] - 2019-1-24
10
20
  ### Added
11
21
  - `res_0_indexes` and `res_0_index_count` support (#51).
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- h3 (3.4.0)
4
+ h3 (3.5.0)
5
5
  ffi (~> 1.9)
6
6
  rgeo-geojson (~> 2.1)
7
7
 
data/README.md CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  ![h3](https://user-images.githubusercontent.com/98526/50283275-48177300-044d-11e9-8337-eba8d3cc88a2.png)
4
4
 
5
- [![Build Status](https://travis-ci.org/StuartApp/h3_ruby.svg?branch=master)](https://travis-ci.org/seanhandley/h3_ruby) [![Maintainability](https://api.codeclimate.com/v1/badges/c55e1f67421eba8af8d0/maintainability)](https://codeclimate.com/repos/5c18b7f49bc79a02a4000d81/maintainability) [![Coverage Status](https://coveralls.io/repos/github/StuartApp/h3_ruby/badge.svg?branch=master)](https://coveralls.io/github/StuartApp/h3_ruby?branch=master) [![Gem Version](https://badge.fury.io/rb/h3.svg)](https://badge.fury.io/rb/h3)
5
+ [![Build Status](https://travis-ci.org/StuartApp/h3_ruby.svg?branch=master)](https://travis-ci.org/seanhandley/h3_ruby)
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/74a47e7fa516588ab545/maintainability)](https://codeclimate.com/repos/5ca38395a86379029800281f/maintainability) [![Coverage Status](https://coveralls.io/repos/github/StuartApp/h3_ruby/badge.svg?branch=master)](https://coveralls.io/github/StuartApp/h3_ruby?branch=master) [![Gem Version](https://badge.fury.io/rb/h3.svg)](https://badge.fury.io/rb/h3)
6
7
 
7
8
  Ruby-to-C bindings for Uber's [H3 library](https://uber.github.io/h3/).
8
9
 
data/ext/h3/Makefile CHANGED
@@ -1,5 +1,5 @@
1
1
  make:
2
- cd src; cmake . -DBUILD_SHARED_LIBS=true; make
2
+ cd src; cmake . -DBUILD_SHARED_LIBS=true -DBUILD_FILTERS=OFF -DBUILD_BENCHMARKS=OFF; make
3
3
  install:
4
4
  : # do nothing, we'll load the lib directly
5
5
  clean:
@@ -57,6 +57,7 @@ dev-docs/_build/
57
57
  env_docs/
58
58
  node_modules/
59
59
  website/dist/
60
+ website/package-lock.json
60
61
  # Generated Doxyfile
61
62
  dev-docs/Doxyfile
62
63
 
@@ -98,4 +99,4 @@ KML/res*cells.kml
98
99
  KML/res*centers.kml
99
100
 
100
101
  # Generated files
101
- src/h3lib/include/h3api.h
102
+ src/h3lib/include/h3api.h
@@ -7,6 +7,15 @@ The public API of this library consists of the functions declared in file
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [3.5.0] - 2019-07-22
11
+ ### Added
12
+ - CMake options for excluding filter applications or benchmarks from the build. (#247)
13
+ - `h3GetFaces` function to find icosahedron faces for an index, and helper function `maxFaceCount` (#253)
14
+ ### Changed
15
+ - Argument parsing for all filter applications is more flexible. (#238)
16
+ ### Fixed
17
+ - Fix printing program name in `h3ToHier` error messages. (#254)
18
+
10
19
  ## [3.4.4] - 2019-05-30
11
20
  ### Changed
12
21
  - Local coordinate spaces cannot cross more than one icosahedron edge. (#234)
@@ -1,4 +1,4 @@
1
- # Copyright 2017, 2018 Uber Technologies, Inc.
1
+ # Copyright 2017-2019 Uber Technologies, Inc.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -29,6 +29,9 @@ set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/toolchain.cmake"
29
29
  "Toolchain to use for building this project")
30
30
 
31
31
  option(ENABLE_COVERAGE "Enable compiling tests with coverage." ON)
32
+ option(BUILD_BENCHMARKS "Build benchmarking applications." ON)
33
+ option(BUILD_FILTERS "Build filter applications." ON)
34
+ option(BUILD_GENERATORS "Build code generation applications." ON)
32
35
 
33
36
  if(WIN32)
34
37
  set(SHELL PowerShell -Command)
@@ -117,9 +120,11 @@ set(APP_SOURCE_FILES
117
120
  src/apps/applib/include/kml.h
118
121
  src/apps/applib/include/benchmark.h
119
122
  src/apps/applib/include/utility.h
123
+ src/apps/applib/include/args.h
124
+ src/apps/applib/lib/test.c
120
125
  src/apps/applib/lib/kml.c
121
126
  src/apps/applib/lib/utility.c
122
- src/apps/applib/lib/test.c)
127
+ src/apps/applib/lib/args.c)
123
128
  set(EXAMPLE_SOURCE_FILES
124
129
  examples/index.c
125
130
  examples/distance.c
@@ -149,6 +154,7 @@ set(OTHER_SOURCE_FILES
149
154
  src/apps/testapps/testHexRanges.c
150
155
  src/apps/testapps/testH3ToGeo.c
151
156
  src/apps/testapps/testH3ToChildren.c
157
+ src/apps/testapps/testH3GetFaces.c
152
158
  src/apps/testapps/testGeoCoord.c
153
159
  src/apps/testapps/testHexRing.c
154
160
  src/apps/testapps/testH3SetToVertexGraph.c
@@ -186,6 +192,8 @@ set(UNCONFIGURED_API_HEADER src/h3lib/include/h3api.h.in)
186
192
  set(CONFIGURED_API_HEADER src/h3lib/include/h3api.h)
187
193
  configure_file(${UNCONFIGURED_API_HEADER} ${CONFIGURED_API_HEADER})
188
194
 
195
+ set(INSTALL_TARGETS h3)
196
+
189
197
  # Build the H3 library
190
198
  add_library(h3 ${LIB_SOURCE_FILES} ${CONFIGURED_API_HEADER})
191
199
 
@@ -282,6 +290,12 @@ else()
282
290
  )
283
291
  endif()
284
292
 
293
+ # Release publishing
294
+ add_custom_target(update-version
295
+ COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/update_version.sh
296
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
297
+ )
298
+
285
299
  # Website publishing
286
300
  add_custom_target(publish-website
287
301
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/publish_website.sh
@@ -301,43 +315,58 @@ macro(add_h3_executable name)
301
315
  endif()
302
316
  endmacro()
303
317
 
304
- add_h3_executable(geoToH3 src/apps/filters/geoToH3.c ${APP_SOURCE_FILES})
305
- add_h3_executable(h3ToComponents src/apps/filters/h3ToComponents.c ${APP_SOURCE_FILES})
306
- add_h3_executable(h3ToGeo src/apps/filters/h3ToGeo.c ${APP_SOURCE_FILES})
307
- add_h3_executable(h3ToLocalIj src/apps/filters/h3ToLocalIj.c ${APP_SOURCE_FILES})
308
- add_h3_executable(localIjToH3 src/apps/filters/localIjToH3.c ${APP_SOURCE_FILES})
309
- add_h3_executable(h3ToGeoBoundary src/apps/filters/h3ToGeoBoundary.c ${APP_SOURCE_FILES})
310
- add_h3_executable(hexRange src/apps/filters/hexRange.c ${APP_SOURCE_FILES})
311
- add_h3_executable(kRing src/apps/filters/kRing.c ${APP_SOURCE_FILES})
312
- add_h3_executable(generateBaseCellNeighbors src/apps/miscapps/generateBaseCellNeighbors.c ${APP_SOURCE_FILES})
313
- add_h3_executable(generateNumHexagons src/apps/miscapps/generateNumHexagons.c ${APP_SOURCE_FILES})
314
- add_h3_executable(generateFaceCenterPoint src/apps/miscapps/generateFaceCenterPoint.c ${APP_SOURCE_FILES})
315
- add_h3_executable(h3ToGeoBoundaryHier src/apps/miscapps/h3ToGeoBoundaryHier.c ${APP_SOURCE_FILES})
316
- add_h3_executable(h3ToGeoHier src/apps/miscapps/h3ToGeoHier.c ${APP_SOURCE_FILES})
317
- add_h3_executable(h3ToHier src/apps/miscapps/h3ToHier.c ${APP_SOURCE_FILES})
318
-
319
- # Generate KML files for visualizing the H3 grid
320
- add_custom_target(create-kml-dir
321
- COMMAND ${CMAKE_COMMAND} -E make_directory KML)
322
- add_custom_target(kml)
323
-
324
- # Only the first 3 resolution grids are generated. The others can be generated,
325
- # but the file sizes would be very, very large.
326
- foreach(resolution RANGE 3)
327
- set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "KML/res${resolution}cells.kml")
328
- set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "KML/res${resolution}centers.kml")
329
- add_custom_target(kml_cells_${resolution}
330
- COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> ${resolution} | $<TARGET_FILE:h3ToGeoBoundary> 1 res${resolution}cells.kml \"Res ${resolution} Cells\" > KML/res${resolution}cells.kml"
331
- VERBATIM
332
- DEPENDS create-kml-dir)
333
- add_custom_target(kml_centers_${resolution}
334
- COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> ${resolution} | $<TARGET_FILE:h3ToGeo> 1 res${resolution}centers.kml \"Res ${resolution} Centers\" > KML/res${resolution}centers.kml"
335
- VERBATIM
336
- DEPENDS create-kml-dir)
337
- add_dependencies(kml
338
- kml_cells_${resolution}
339
- kml_centers_${resolution})
340
- endforeach()
318
+ if(BUILD_FILTERS)
319
+ macro(add_h3_filter name)
320
+ add_h3_executable(${ARGV})
321
+ list(APPEND INSTALL_TARGETS ${name})
322
+ endmacro()
323
+
324
+ add_h3_filter(geoToH3 src/apps/filters/geoToH3.c ${APP_SOURCE_FILES})
325
+ add_h3_filter(h3ToComponents src/apps/filters/h3ToComponents.c ${APP_SOURCE_FILES})
326
+ add_h3_filter(h3ToGeo src/apps/filters/h3ToGeo.c ${APP_SOURCE_FILES})
327
+ add_h3_filter(h3ToLocalIj src/apps/filters/h3ToLocalIj.c ${APP_SOURCE_FILES})
328
+ add_h3_filter(localIjToH3 src/apps/filters/localIjToH3.c ${APP_SOURCE_FILES})
329
+ add_h3_filter(h3ToGeoBoundary src/apps/filters/h3ToGeoBoundary.c ${APP_SOURCE_FILES})
330
+ add_h3_filter(hexRange src/apps/filters/hexRange.c ${APP_SOURCE_FILES})
331
+ add_h3_filter(kRing src/apps/filters/kRing.c ${APP_SOURCE_FILES})
332
+ add_h3_filter(h3ToGeoBoundaryHier src/apps/miscapps/h3ToGeoBoundaryHier.c ${APP_SOURCE_FILES})
333
+ add_h3_filter(h3ToGeoHier src/apps/miscapps/h3ToGeoHier.c ${APP_SOURCE_FILES})
334
+ add_h3_filter(h3ToHier src/apps/miscapps/h3ToHier.c ${APP_SOURCE_FILES})
335
+
336
+ # Generate KML files for visualizing the H3 grid
337
+ add_custom_target(create-kml-dir
338
+ COMMAND ${CMAKE_COMMAND} -E make_directory KML)
339
+ add_custom_target(kml)
340
+
341
+ # Only the first 3 resolution grids are generated. The others can be generated,
342
+ # but the file sizes would be very, very large.
343
+ foreach(resolution RANGE 3)
344
+ set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "KML/res${resolution}cells.kml")
345
+ set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "KML/res${resolution}centers.kml")
346
+ add_custom_target(kml_cells_${resolution}
347
+ COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> ${resolution} | $<TARGET_FILE:h3ToGeoBoundary> 1 res${resolution}cells.kml \"Res ${resolution} Cells\" > KML/res${resolution}cells.kml"
348
+ VERBATIM
349
+ DEPENDS create-kml-dir)
350
+ add_custom_target(kml_centers_${resolution}
351
+ COMMAND ${SHELL} "$<TARGET_FILE:h3ToHier> ${resolution} | $<TARGET_FILE:h3ToGeo> 1 res${resolution}centers.kml \"Res ${resolution} Centers\" > KML/res${resolution}centers.kml"
352
+ VERBATIM
353
+ DEPENDS create-kml-dir)
354
+ add_dependencies(kml
355
+ kml_cells_${resolution}
356
+ kml_centers_${resolution})
357
+ endforeach()
358
+ endif()
359
+
360
+ if(BUILD_GENERATORS)
361
+ # Code generation
362
+ add_h3_executable(generateBaseCellNeighbors src/apps/miscapps/generateBaseCellNeighbors.c ${APP_SOURCE_FILES})
363
+ add_h3_executable(generateNumHexagons src/apps/miscapps/generateNumHexagons.c ${APP_SOURCE_FILES})
364
+ add_h3_executable(generateFaceCenterPoint src/apps/miscapps/generateFaceCenterPoint.c ${APP_SOURCE_FILES})
365
+
366
+ # Miscellaneous testing applications - generating random data
367
+ add_h3_executable(mkRandGeo src/apps/testapps/mkRandGeo.c ${APP_SOURCE_FILES})
368
+ add_h3_executable(mkRandGeoBoundary src/apps/testapps/mkRandGeoBoundary.c ${APP_SOURCE_FILES})
369
+ endif()
341
370
 
342
371
  if(BUILD_TESTING)
343
372
  option(PRINT_TEST_FILES "Print which test files correspond to which tests" OFF)
@@ -463,6 +492,7 @@ if(BUILD_TESTING)
463
492
  add_h3_test(testHexRanges src/apps/testapps/testHexRanges.c)
464
493
  add_h3_test(testH3ToParent src/apps/testapps/testH3ToParent.c)
465
494
  add_h3_test(testH3ToChildren src/apps/testapps/testH3ToChildren.c)
495
+ add_h3_test(testH3GetFaces src/apps/testapps/testH3GetFaces.c)
466
496
  add_h3_test(testMaxH3ToChildrenSize src/apps/testapps/testMaxH3ToChildrenSize.c)
467
497
  add_h3_test(testH3Index src/apps/testapps/testH3Index.c)
468
498
  add_h3_test(testH3Api src/apps/testapps/testH3Api.c)
@@ -487,11 +517,9 @@ if(BUILD_TESTING)
487
517
  add_h3_test_with_arg(testH3NeighborRotations src/apps/testapps/testH3NeighborRotations.c 0)
488
518
  add_h3_test_with_arg(testH3NeighborRotations src/apps/testapps/testH3NeighborRotations.c 1)
489
519
  add_h3_test_with_arg(testH3NeighborRotations src/apps/testapps/testH3NeighborRotations.c 2)
520
+ endif()
490
521
 
491
- # Miscellaneous testing applications
492
- add_h3_executable(mkRandGeo src/apps/testapps/mkRandGeo.c ${APP_SOURCE_FILES})
493
- add_h3_executable(mkRandGeoBoundary src/apps/testapps/mkRandGeoBoundary.c ${APP_SOURCE_FILES})
494
-
522
+ if(BUILD_BENCHMARKS)
495
523
  # Benchmarks
496
524
  add_custom_target(benchmarks)
497
525
 
@@ -552,8 +580,7 @@ configure_package_config_file(
552
580
  # * headers can be included by C++ code `#include <h3/h3api.h>`
553
581
  # Installing the library and filters system-wide.
554
582
  install(
555
- TARGETS h3 geoToH3 h3ToComponents h3ToGeo h3ToGeoBoundary hexRange
556
- kRing h3ToGeoBoundaryHier h3ToGeoHier h3ToHier
583
+ TARGETS ${INSTALL_TARGETS}
557
584
  EXPORT "${TARGETS_EXPORT_NAME}"
558
585
  LIBRARY DESTINATION "lib"
559
586
  ARCHIVE DESTINATION "lib"
@@ -1,8 +1,9 @@
1
1
  # Release Process
2
2
 
3
3
  1. Create a PR "Preparing for release X.Y.Z" against master branch
4
- * Update VERSION to `X.Y.Z`
5
4
  * Alter CHANGELOG.md from `[Unreleased]` to `[X.Y.Z] YYYY-MM-DD`
5
+ * Run `make update-version` and give `X.Y.Z` when prompted
6
+ * Check that all merges that need to be in the changelog are present
6
7
 
7
8
  2. Create a release "Release X.Y.Z" on Github
8
9
  * Create Tag `vX.Y.Z`
data/ext/h3/src/VERSION CHANGED
@@ -1 +1 @@
1
- 3.4.4
1
+ 3.5.0
@@ -1,5 +1,7 @@
1
1
  # Hierarchical grid functions
2
2
 
3
+ These functions permit moving between resolutions in the H3 grid system. The functions produce parent (coarser) or children (finer) cells.
4
+
3
5
  ## h3ToParent
4
6
 
5
7
  ```
@@ -1,12 +1,14 @@
1
1
  # Indexing functions
2
2
 
3
+ These function are used for finding the H3 index containing coordinates, and for finding the center and boundary of H3 indexes.
4
+
3
5
  ## geoToH3
4
6
 
5
7
  ```
6
8
  H3Index geoToH3(const GeoCoord *g, int res);
7
9
  ```
8
10
 
9
- Indexes the location at the specified resolution.
11
+ Indexes the location at the specified resolution, returning the index of the cell containing the location.
10
12
 
11
13
  Returns 0 on error.
12
14
 
@@ -1,5 +1,7 @@
1
1
  # Index inspection functions
2
2
 
3
+ These functions provide metadata about an H3 index, such as its resolution or base cell, and provide utilities for converting into and out of the 64-bit representation of an H3 index.
4
+
3
5
  ## h3GetResolution
4
6
 
5
7
  ```
@@ -57,3 +59,21 @@ int h3IsPentagon(H3Index h);
57
59
  ```
58
60
 
59
61
  Returns non-zero if this index represents a pentagonal cell.
62
+
63
+ ## h3GetFaces
64
+
65
+ ```
66
+ void h3GetFaces(H3Index h, int* out);
67
+ ```
68
+
69
+ Find all icosahedron faces intersected by a given H3 index and places them in the array `out`. `out` must be at least of length `maxFaceCount(h)`.
70
+
71
+ Faces are represented as integers from 0-19, inclusive. The array is sparse, and empty (no intersection) array values are represented by -1.
72
+
73
+ ### maxFaceCount
74
+
75
+ ```
76
+ int maxFaceCount(H3Index h3);
77
+ ```
78
+
79
+ Returns the maximum number of icosahedron faces the given H3 index may intersect.
@@ -1,5 +1,7 @@
1
1
  # Miscellaneous H3 functions
2
2
 
3
+ These functions include descriptions of the H3 grid system.
4
+
3
5
  ## degsToRads
4
6
 
5
7
  ```
@@ -1,5 +1,7 @@
1
1
  # Region functions
2
2
 
3
+ These functions convert H3 indexes to and from polygonal areas.
4
+
3
5
  ## polyfill
4
6
 
5
7
  ```
@@ -1,5 +1,7 @@
1
1
  # Grid traversal functions
2
2
 
3
+ Grid traversal allows finding cells in the vicinity of an origin cell, and determining how to traverse the grid from one cell to another.
4
+
3
5
  ## kRing
4
6
 
5
7
  ```
@@ -1,5 +1,7 @@
1
1
  # Unidirectional edge functions
2
2
 
3
+ Unidirectional edges allow encoding the directed edge from one cell to a neighboring cell.
4
+
3
5
  ## h3IndexesAreNeighbors
4
6
 
5
7
  ```
@@ -6,6 +6,10 @@ As a C library, bindings can be made to call H3 functions from different program
6
6
 
7
7
  - [entrepreneur-interet-general/h3.standard](https://github.com/entrepreneur-interet-general/H3.Standard)
8
8
 
9
+ ## ClickHouse
10
+
11
+ - [geoToH3 function, since version 19.11](https://github.com/yandex/ClickHouse/blob/master/dbms/src/Functions/geoToH3.cpp#L35)
12
+
9
13
  ## ECL
10
14
 
11
15
  - [hpcc-systems/HPCC-Platform](https://github.com/hpcc-systems/HPCC-Platform/tree/master/plugins/h3)
@@ -2,6 +2,18 @@
2
2
 
3
3
  This page lists further learning materials and code walkthroughs for the H3 library and bindings. Contributions to this list are welcome, please feel free to open a [pull request](https://github.com/uber/h3/tree/master/docs/community/tutorials.md).
4
4
 
5
+ ## Videos
6
+
7
+ - [Introduction to H3](https://www.youtube.com/watch?v=wDuKeUkNLkQ) (June 2019)
8
+ - [Engineering an H3-based Geospatial Data Platform at Uber](https://www.youtube.com/watch?v=aCj-YVZ0mlE)
9
+ - [Building City Cores with H3](https://www.youtube.com/watch?v=PutOhe8HVNU)
10
+ - [H3-js: Hexagons in the Browser](https://www.youtube.com/watch?v=BsMIrBHLfLE&list=PLLEUtp5eGr7CNf9Bj3w3i30rzaU8lKZeV&index=16&t=0s)
11
+ - [Hexagon Convolution for Data Smoothing & Forecasting](https://www.youtube.com/watch?v=z3PaGIQTFSE&list=PLLEUtp5eGr7CNf9Bj3w3i30rzaU8lKZeV&index=14&t=0s)
12
+ - [Spatial Intelligence Using Hex](https://www.youtube.com/watch?v=0OlIpNAqokQ&list=PLLEUtp5eGr7CNf9Bj3w3i30rzaU8lKZeV&index=18&t=0s)
13
+ - [Hierarchical Hexagons in Depth](https://www.youtube.com/watch?v=UILoSqvIM2w&list=PLLEUtp5eGr7CNf9Bj3w3i30rzaU8lKZeV&index=15&t=0s)
14
+ - [H3: Tiling the Earth with Hexagons](https://www.youtube.com/watch?v=_-265mfMzl4&list=PLLEUtp5eGr7CNf9Bj3w3i30rzaU8lKZeV&index=22&t=0s) (Introduction to H3, November 2018)
15
+ - [H3: Tiling the Earth with Hexagons](https://www.youtube.com/watch?v=ay2uwtRO3QE) (Introduction to H3, January 2018)
16
+
5
17
  ## Java
6
18
 
7
19
  - [H3 Measurements](https://github.com/isaacbrodsky/h3measurements): Measurements of average cell area, average cell perimeter length, truncation error, and so on.
@@ -0,0 +1,50 @@
1
+ #!/bin/bash
2
+ # Copyright 2019 Uber Technologies, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ # This script is used interactively as part of the H3 release process
17
+ # (RELEASE.md) to update the version number in the VERSION file. Before
18
+ # writing the new version to the file, changelog information is presented
19
+ # for verification. It is invoked by the make target `update-version`.
20
+
21
+ set -eo pipefail
22
+
23
+ CURRENT_VERSION=$(<VERSION)
24
+ echo "Current version: $CURRENT_VERSION"
25
+ CURRENT_TAG="v$CURRENT_VERSION"
26
+
27
+ if ! git rev-parse $CURRENT_TAG -- > /dev/null 2>&1; then
28
+ echo "Could not locate $CURRENT_TAG as a Git revision."
29
+ exit 1
30
+ fi
31
+
32
+ REVISION_RANGE="$CURRENT_TAG..HEAD"
33
+
34
+ read -p "Next version: " NEXT_VERSION
35
+
36
+ echo -e "\n * Changelog entries *"
37
+ git diff $REVISION_RANGE -- CHANGELOG.md
38
+ echo -e "\n * Committed merges *"
39
+ git log --merges --oneline $REVISION_RANGE
40
+
41
+ echo
42
+ read -p "Are all changes in the changelog [y/N]? " CHANGELOG_OK
43
+ if [ "y" = "$CHANGELOG_OK" ] || [ "Y" = "$CHANGELOG_OK" ]; then
44
+ echo $NEXT_VERSION > VERSION
45
+ echo "Wrote $NEXT_VERSION to the VERSION file"
46
+ else
47
+ echo "Cancelled - did not write VERSION file"
48
+ echo "Please update the CHANGELOG with the appropriate entries before bumping the version."
49
+ exit 2
50
+ fi