h3 3.4.4 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
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