h3 3.6.0 → 3.7.2
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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby_ci.yml +30 -0
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -0
- data/CHANGELOG.md +39 -0
- data/Gemfile.lock +6 -24
- data/LICENSE.md +1 -1
- data/README.md +2 -3
- data/ext/h3/src/.github/workflows/test-linux.yml +118 -0
- data/ext/h3/src/.github/workflows/test-macos.yml +42 -0
- data/ext/h3/src/.github/workflows/test-website.yml +32 -0
- data/ext/h3/src/.github/workflows/test-windows.yml +44 -0
- data/ext/h3/src/.gitignore +5 -0
- data/ext/h3/src/.travis.yml +20 -42
- data/ext/h3/src/CHANGELOG.md +57 -0
- data/ext/h3/src/CMakeLists.txt +135 -33
- data/ext/h3/src/CONTRIBUTING.md +1 -1
- data/ext/h3/src/README.md +61 -11
- data/ext/h3/src/RELEASE.md +3 -1
- data/ext/h3/src/VERSION +1 -1
- data/ext/h3/src/dev-docs/RFCs/rfc-template.md +21 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/error-handling-rfc.md +21 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/names_for_concepts_types_functions.md +276 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/overrideable-allocators-rfc.md +141 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/polyfill-modes-rfc.md +21 -0
- data/ext/h3/src/dev-docs/RFCs/v4.0.0/vertex-mode-rfc.md +50 -0
- data/ext/h3/src/dev-docs/build_windows.md +6 -1
- data/ext/h3/src/dev-docs/creating_bindings.md +3 -3
- data/ext/h3/src/dev-docs/custom_alloc.md +27 -0
- data/ext/h3/src/docs/{overview/mainpage.md → README.md} +2 -3
- data/ext/h3/src/docs/api/misc.md +76 -0
- data/ext/h3/src/docs/community/applications.md +1 -0
- data/ext/h3/src/docs/community/bindings.md +10 -0
- data/ext/h3/src/docs/community/tutorials.md +8 -3
- data/ext/h3/src/docs/core-library/coordsystems.md +5 -4
- data/ext/h3/src/docs/core-library/filters.md +8 -9
- data/ext/h3/src/docs/core-library/geoToH3desc.md +2 -3
- data/ext/h3/src/docs/core-library/h3ToGeoBoundaryDesc.md +4 -5
- data/ext/h3/src/docs/core-library/h3ToGeoDesc.md +3 -4
- data/ext/h3/src/docs/core-library/h3indexing.md +26 -17
- data/ext/h3/src/docs/core-library/overview.md +2 -3
- data/ext/h3/src/docs/core-library/restable.md +1 -2
- data/ext/h3/src/docs/core-library/usage.md +1 -2
- data/ext/h3/src/docs/table-of-contents.json +47 -0
- data/ext/h3/src/docs/{overview/usecases.md → usecases.md} +6 -11
- data/ext/h3/src/scripts/binding_functions.sh +1 -1
- data/ext/h3/src/scripts/coverage.sh.in +1 -1
- data/ext/h3/src/scripts/update_version.sh +2 -2
- data/ext/h3/src/src/apps/applib/include/args.h +1 -0
- data/ext/h3/src/src/apps/applib/include/test.h +1 -0
- data/ext/h3/src/src/apps/applib/include/utility.h +7 -1
- data/ext/h3/src/src/apps/applib/lib/args.c +2 -0
- data/ext/h3/src/src/apps/applib/lib/kml.c +2 -0
- data/ext/h3/src/src/apps/applib/lib/test.c +1 -0
- data/ext/h3/src/src/apps/applib/lib/utility.c +133 -2
- data/ext/h3/src/src/apps/benchmarks/benchmarkH3Api.c +1 -1
- data/ext/h3/src/{website/html.config.js → src/apps/benchmarks/benchmarkH3UniEdge.c} +15 -12
- data/ext/h3/src/src/apps/filters/h3ToComponents.c +1 -0
- data/ext/h3/src/src/apps/filters/h3ToGeo.c +1 -0
- data/ext/h3/src/src/apps/filters/h3ToGeoBoundary.c +1 -0
- data/ext/h3/src/src/apps/filters/h3ToLocalIj.c +1 -0
- data/ext/h3/src/src/apps/filters/hexRange.c +1 -0
- data/ext/h3/src/src/apps/filters/kRing.c +1 -0
- data/ext/h3/src/src/apps/filters/localIjToH3.c +1 -0
- data/ext/h3/src/src/apps/miscapps/generateFaceCenterPoint.c +1 -0
- data/ext/h3/src/src/apps/miscapps/generateNumHexagons.c +1 -0
- data/ext/h3/src/src/apps/miscapps/generatePentagonDirectionFaces.c +67 -0
- data/ext/h3/src/src/apps/miscapps/h3ToGeoBoundaryHier.c +1 -0
- data/ext/h3/src/src/apps/miscapps/h3ToGeoHier.c +1 -0
- data/ext/h3/src/src/apps/miscapps/h3ToHier.c +1 -0
- data/ext/h3/src/src/apps/testapps/mkRandGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/mkRandGeoBoundary.c +1 -0
- data/ext/h3/src/src/apps/testapps/testBBox.c +1 -0
- data/ext/h3/src/src/apps/testapps/testBaseCells.c +15 -1
- data/ext/h3/src/src/apps/testapps/testCompact.c +109 -2
- data/ext/h3/src/src/apps/testapps/testCoordIj.c +1 -0
- data/ext/h3/src/src/apps/testapps/testGeoCoord.c +47 -8
- data/ext/h3/src/src/apps/testapps/testGeoToH3.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3Api.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3CellArea.c +47 -0
- data/ext/h3/src/src/apps/testapps/testH3CellAreaExhaustive.c +180 -0
- data/ext/h3/src/src/apps/testapps/testH3Distance.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3DistanceExhaustive.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3GetFaces.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3Index.c +33 -3
- data/ext/h3/src/src/apps/testapps/testH3Line.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3LineExhaustive.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3Memory.c +175 -0
- data/ext/h3/src/src/apps/testapps/testH3NeighborRotations.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3SetToLinkedGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3SetToVertexGraph.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToCenterChild.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToChildren.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToGeoBoundary.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToLocalIj.c +12 -6
- data/ext/h3/src/src/apps/testapps/testH3ToLocalIjExhaustive.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3ToParent.c +1 -0
- data/ext/h3/src/src/apps/testapps/testH3UniEdge.c +45 -16
- data/ext/h3/src/src/apps/testapps/testH3UniEdgeExhaustive.c +111 -0
- data/ext/h3/src/src/apps/testapps/testHexRanges.c +1 -0
- data/ext/h3/src/src/apps/testapps/testHexRing.c +1 -0
- data/ext/h3/src/src/apps/testapps/testKRing.c +19 -0
- data/ext/h3/src/src/apps/testapps/testLinkedGeo.c +1 -0
- data/ext/h3/src/src/apps/testapps/testMaxH3ToChildrenSize.c +1 -0
- data/ext/h3/src/src/apps/testapps/testPentagonIndexes.c +1 -0
- data/ext/h3/src/src/apps/testapps/testPolyfill.c +72 -9
- data/ext/h3/src/src/apps/testapps/testPolyfillReported.c +157 -0
- data/ext/h3/src/src/apps/testapps/testPolygon.c +27 -1
- data/ext/h3/src/src/apps/testapps/testVec2d.c +1 -0
- data/ext/h3/src/src/apps/testapps/testVec3d.c +1 -0
- data/ext/h3/src/src/apps/testapps/testVertex.c +66 -0
- data/ext/h3/src/src/apps/testapps/testVertexGraph.c +1 -0
- data/ext/h3/src/src/h3lib/include/algos.h +8 -0
- data/ext/h3/src/src/h3lib/include/alloc.h +40 -0
- data/ext/h3/src/src/h3lib/include/baseCells.h +4 -0
- data/ext/h3/src/src/h3lib/include/bbox.h +4 -1
- data/ext/h3/src/src/h3lib/include/faceijk.h +3 -2
- data/ext/h3/src/src/h3lib/include/geoCoord.h +2 -3
- data/ext/h3/src/src/h3lib/include/h3Index.h +37 -4
- data/ext/h3/src/src/h3lib/include/h3api.h.in +65 -17
- data/ext/h3/src/src/h3lib/include/linkedGeo.h +1 -0
- data/ext/h3/src/src/h3lib/include/polygon.h +1 -0
- data/ext/h3/src/src/h3lib/include/polygonAlgos.h +1 -0
- data/ext/h3/src/src/h3lib/include/vertex.h +44 -0
- data/ext/h3/src/src/h3lib/include/vertexGraph.h +1 -0
- data/ext/h3/src/src/h3lib/lib/algos.c +304 -76
- data/ext/h3/src/src/h3lib/lib/baseCells.c +26 -4
- data/ext/h3/src/src/h3lib/lib/bbox.c +56 -27
- data/ext/h3/src/src/h3lib/lib/coordijk.c +2 -0
- data/ext/h3/src/src/h3lib/lib/faceijk.c +32 -21
- data/ext/h3/src/src/h3lib/lib/geoCoord.c +162 -44
- data/ext/h3/src/src/h3lib/lib/h3Index.c +83 -42
- data/ext/h3/src/src/h3lib/lib/h3UniEdge.c +42 -57
- data/ext/h3/src/src/h3lib/lib/linkedGeo.c +20 -15
- data/ext/h3/src/src/h3lib/lib/localij.c +1 -1
- data/ext/h3/src/src/h3lib/lib/polygon.c +2 -0
- data/ext/h3/src/src/h3lib/lib/vec2d.c +1 -0
- data/ext/h3/src/src/h3lib/lib/vec3d.c +1 -0
- data/ext/h3/src/src/h3lib/lib/vertex.c +134 -0
- data/ext/h3/src/src/h3lib/lib/vertexGraph.c +8 -5
- data/ext/h3/src/website/.eslintignore +2 -0
- data/ext/h3/src/website/.gitignore +57 -0
- data/ext/h3/src/website/.nvmrc +1 -0
- data/ext/h3/src/website/README.md +8 -6
- data/ext/h3/src/website/gatsby-config.js +83 -0
- data/ext/h3/src/website/package.json +20 -12
- data/ext/h3/src/website/scripts/build-to-gh-pages.sh +7 -5
- data/ext/h3/src/website/src/.gitkeep +0 -0
- data/ext/h3/src/website/templates/documentation.jsx +129 -0
- data/ext/h3/src/website/yarn.lock +13723 -0
- data/h3.gemspec +2 -2
- data/lib/h3/bindings/base.rb +14 -4
- data/lib/h3/bindings/private.rb +12 -9
- data/lib/h3/hierarchy.rb +0 -18
- data/lib/h3/indexing.rb +0 -18
- data/lib/h3/inspection.rb +3 -59
- data/lib/h3/miscellaneous.rb +119 -14
- data/lib/h3/regions.rb +3 -0
- data/lib/h3/traversal.rb +0 -18
- data/lib/h3/unidirectional_edges.rb +5 -60
- data/lib/h3/version.rb +1 -1
- data/spec/geo_json_spec.rb +8 -0
- data/spec/miscellaneous_spec.rb +117 -0
- data/spec/{region_spec.rb → regions_spec.rb} +1 -1
- data/spec/spec_helper.rb +2 -2
- metadata +44 -36
- data/.travis.yml +0 -11
- data/ext/h3/src/.ycm_extra_conf.py +0 -92
- data/ext/h3/src/appveyor.yml +0 -50
- data/ext/h3/src/website/src/config.js +0 -46
- data/ext/h3/src/website/src/mdRoutes.js +0 -151
- data/ext/h3/src/website/src/styles/_variables.scss +0 -16
- data/ext/h3/src/website/src/styles/index.scss +0 -3
- data/ext/h3/src/website/static/index.html +0 -15
data/h3.gemspec
CHANGED
|
@@ -9,14 +9,14 @@ Gem::Specification.new do |spec|
|
|
|
9
9
|
spec.authors = ["Lachlan Laycock", "Sean Handley"]
|
|
10
10
|
spec.email = "l.laycock@stuart.com"
|
|
11
11
|
|
|
12
|
-
spec.required_ruby_version = "
|
|
12
|
+
spec.required_ruby_version = ">= 2.5"
|
|
13
13
|
spec.files = `git ls-files --recurse-submodules`.split("\n")
|
|
14
14
|
|
|
15
15
|
spec.add_runtime_dependency "ffi", "~> 1.9"
|
|
16
16
|
spec.add_runtime_dependency "rgeo-geojson", "~> 2.1"
|
|
17
17
|
spec.add_runtime_dependency "zeitwerk", "~> 2.1"
|
|
18
18
|
|
|
19
|
-
spec.add_development_dependency "coveralls", "~> 0.8"
|
|
19
|
+
# spec.add_development_dependency "coveralls", "~> 0.8"
|
|
20
20
|
spec.add_development_dependency "rake", "~> 12.3"
|
|
21
21
|
spec.add_development_dependency "rspec", "~> 3.8"
|
|
22
22
|
spec.add_development_dependency "yard", "~> 0.9"
|
data/lib/h3/bindings/base.rb
CHANGED
|
@@ -12,11 +12,21 @@ module H3
|
|
|
12
12
|
base.include Types
|
|
13
13
|
base.ffi_lib ["#{lib_path}/libh3.dylib", "#{lib_path}/libh3.so"]
|
|
14
14
|
base.typedef :ulong_long, :h3_index
|
|
15
|
-
base.typedef :int, :size
|
|
16
15
|
base.typedef :int, :k_distance
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def attach_predicate_function(name, *args)
|
|
19
|
+
stripped_name = name.to_s.gsub("?", "")
|
|
20
|
+
attach_function(stripped_name, *args).tap do
|
|
21
|
+
rename_function stripped_name, name
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def rename_function(from, to)
|
|
28
|
+
alias_method to, from
|
|
29
|
+
undef_method from
|
|
20
30
|
end
|
|
21
31
|
end
|
|
22
32
|
end
|
data/lib/h3/bindings/private.rb
CHANGED
|
@@ -7,11 +7,11 @@ module H3
|
|
|
7
7
|
module Private
|
|
8
8
|
extend H3::Bindings::Base
|
|
9
9
|
|
|
10
|
-
attach_function :compact, [H3IndexesIn, H3IndexesOut, :
|
|
10
|
+
attach_function :compact, [H3IndexesIn, H3IndexesOut, :size_t], :bool
|
|
11
11
|
attach_function :destroy_linked_polygon, :destroyLinkedPolygon, [LinkedGeoPolygon], :void
|
|
12
12
|
attach_function :geo_to_h3, :geoToH3, [GeoCoord, Resolution], :h3_index
|
|
13
13
|
attach_function :get_pentagon_indexes, :getPentagonIndexes, [:int, H3IndexesOut], :void
|
|
14
|
-
attach_function :h3_faces, :h3GetFaces, %i[h3_index
|
|
14
|
+
attach_function :h3_faces, :h3GetFaces, %i[h3_index buffer_out], :void
|
|
15
15
|
attach_function :h3_indexes_from_unidirectional_edge,
|
|
16
16
|
:getH3IndexesFromUnidirectionalEdge,
|
|
17
17
|
[:h3_index, H3IndexesOut], :void
|
|
@@ -21,11 +21,11 @@ module H3
|
|
|
21
21
|
[:h3_index, H3IndexesOut], :void
|
|
22
22
|
attach_function :h3_set_to_linked_geo,
|
|
23
23
|
:h3SetToLinkedGeo,
|
|
24
|
-
[H3IndexesIn, :
|
|
24
|
+
[H3IndexesIn, :size_t, LinkedGeoPolygon],
|
|
25
25
|
:void
|
|
26
26
|
attach_function :h3_to_children, :h3ToChildren, [:h3_index, Resolution, H3IndexesOut], :void
|
|
27
27
|
attach_function :h3_to_geo, :h3ToGeo, [:h3_index, GeoCoord], :void
|
|
28
|
-
attach_function :h3_to_string, :h3ToString, %i[h3_index
|
|
28
|
+
attach_function :h3_to_string, :h3ToString, %i[h3_index buffer_out size_t], :void
|
|
29
29
|
attach_function :h3_to_geo_boundary,
|
|
30
30
|
:h3ToGeoBoundary,
|
|
31
31
|
[:h3_index, GeoBoundary],
|
|
@@ -36,25 +36,28 @@ module H3
|
|
|
36
36
|
attach_function :hex_range, :hexRange, [:h3_index, :k_distance, H3IndexesOut], :bool
|
|
37
37
|
attach_function :hex_range_distances,
|
|
38
38
|
:hexRangeDistances,
|
|
39
|
-
[:h3_index, :k_distance, H3IndexesOut, :
|
|
39
|
+
[:h3_index, :k_distance, H3IndexesOut, :buffer_out], :bool
|
|
40
40
|
attach_function :hex_ranges,
|
|
41
41
|
:hexRanges,
|
|
42
|
-
[H3IndexesIn, :
|
|
42
|
+
[H3IndexesIn, :size_t, :k_distance, H3IndexesOut],
|
|
43
43
|
:bool
|
|
44
44
|
attach_function :hex_ring, :hexRing, [:h3_index, :k_distance, H3IndexesOut], :bool
|
|
45
45
|
attach_function :k_ring, :kRing, [:h3_index, :k_distance, H3IndexesOut], :void
|
|
46
46
|
attach_function :k_ring_distances,
|
|
47
47
|
:kRingDistances,
|
|
48
|
-
[:h3_index, :k_distance, H3IndexesOut, :
|
|
48
|
+
[:h3_index, :k_distance, H3IndexesOut, :buffer_out],
|
|
49
49
|
:bool
|
|
50
50
|
attach_function :max_polyfill_size,
|
|
51
51
|
:maxPolyfillSize,
|
|
52
52
|
[GeoPolygon, Resolution],
|
|
53
53
|
:int
|
|
54
|
-
attach_function :max_uncompact_size, :maxUncompactSize, [H3IndexesIn, :
|
|
54
|
+
attach_function :max_uncompact_size, :maxUncompactSize, [H3IndexesIn, :size_t, Resolution], :int
|
|
55
|
+
attach_function :point_distance_rads, :pointDistRads, [GeoCoord, GeoCoord], :double
|
|
56
|
+
attach_function :point_distance_km, :pointDistKm, [GeoCoord, GeoCoord], :double
|
|
57
|
+
attach_function :point_distance_m, :pointDistM, [GeoCoord, GeoCoord], :double
|
|
55
58
|
attach_function :polyfill, [GeoPolygon, Resolution, H3IndexesOut], :void
|
|
56
59
|
attach_function :res_0_indexes, :getRes0Indexes, [H3IndexesOut], :void
|
|
57
|
-
attach_function :uncompact, [H3IndexesIn, :
|
|
60
|
+
attach_function :uncompact, [H3IndexesIn, :size_t, H3IndexesOut, :size_t, Resolution], :bool
|
|
58
61
|
end
|
|
59
62
|
end
|
|
60
63
|
end
|
data/lib/h3/hierarchy.rb
CHANGED
|
@@ -19,12 +19,6 @@ module H3
|
|
|
19
19
|
# @return [Integer] H3 index of parent hexagon.
|
|
20
20
|
attach_function :parent, :h3ToParent, [:h3_index, Resolution], :h3_index
|
|
21
21
|
|
|
22
|
-
# @deprecated Please use {#parent} instead.
|
|
23
|
-
def h3_to_parent(h3_index, resolution)
|
|
24
|
-
parent(h3_index, resolution)
|
|
25
|
-
end
|
|
26
|
-
deprecate :h3_to_parent, :parent, 2020, 1
|
|
27
|
-
|
|
28
22
|
# @!method max_children(h3_index, child_resolution)
|
|
29
23
|
#
|
|
30
24
|
# Derive maximum number of child hexagons possible at given resolution.
|
|
@@ -54,12 +48,6 @@ module H3
|
|
|
54
48
|
# @return [Integer] H3 index of center child hexagon.
|
|
55
49
|
attach_function :center_child, :h3ToCenterChild, [:h3_index, Resolution], :h3_index
|
|
56
50
|
|
|
57
|
-
# @deprecated Please use {#max_children} instead.
|
|
58
|
-
def max_h3_to_children_size(h3_index, resolution)
|
|
59
|
-
max_children(h3_index, resolution)
|
|
60
|
-
end
|
|
61
|
-
deprecate :max_h3_to_children_size, :max_children, 2020, 1
|
|
62
|
-
|
|
63
51
|
# Derive child hexagons contained within the hexagon at the given H3 index.
|
|
64
52
|
#
|
|
65
53
|
# @param [Integer] h3_index A valid H3 index.
|
|
@@ -80,12 +68,6 @@ module H3
|
|
|
80
68
|
out.read
|
|
81
69
|
end
|
|
82
70
|
|
|
83
|
-
# @deprecated Please use {#children} instead.
|
|
84
|
-
def h3_to_children(h3_index, resolution)
|
|
85
|
-
children(h3_index, resolution)
|
|
86
|
-
end
|
|
87
|
-
deprecate :h3_to_children, :children, 2020, 1
|
|
88
|
-
|
|
89
71
|
# Find the maximum uncompacted size of the given set of H3 indexes.
|
|
90
72
|
#
|
|
91
73
|
# @param [Array<Integer>] compacted_set An array of valid H3 indexes.
|
data/lib/h3/indexing.rb
CHANGED
|
@@ -35,12 +35,6 @@ module H3
|
|
|
35
35
|
Bindings::Private.geo_to_h3(coords, resolution)
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
# @deprecated Please use {#from_geo_coordinates} instead.
|
|
39
|
-
def geo_to_h3(coords, resolution)
|
|
40
|
-
from_geo_coordinates(coords, resolution)
|
|
41
|
-
end
|
|
42
|
-
deprecate :geo_to_h3, :from_geo_coordinates, 2020, 1
|
|
43
|
-
|
|
44
38
|
# Derive coordinates for a given H3 index.
|
|
45
39
|
#
|
|
46
40
|
# The coordinates map to the centre of the hexagon at the given index.
|
|
@@ -58,12 +52,6 @@ module H3
|
|
|
58
52
|
[rads_to_degs(coords[:lat]), rads_to_degs(coords[:lon])]
|
|
59
53
|
end
|
|
60
54
|
|
|
61
|
-
# @deprecated Please use {#to_geo_coordinates} instead.
|
|
62
|
-
def h3_to_geo(h3_index)
|
|
63
|
-
to_geo_coordinates(h3_index)
|
|
64
|
-
end
|
|
65
|
-
deprecate :h3_to_geo, :to_geo_coordinates, 2020, 1
|
|
66
|
-
|
|
67
55
|
# Derive the geographical boundary as coordinates for a given H3 index.
|
|
68
56
|
#
|
|
69
57
|
# This will be a set of 6 coordinate pairs matching the vertexes of the
|
|
@@ -89,11 +77,5 @@ module H3
|
|
|
89
77
|
[rads_to_degs(d[:lat]), rads_to_degs(d[:lon])]
|
|
90
78
|
end
|
|
91
79
|
end
|
|
92
|
-
|
|
93
|
-
# @deprecated Please use {#to_boundary} instead.
|
|
94
|
-
def h3_to_geo_boundary(h3_index)
|
|
95
|
-
to_boundary(h3_index)
|
|
96
|
-
end
|
|
97
|
-
deprecate :h3_to_geo_boundary, :to_boundary, 2020, 1
|
|
98
80
|
end
|
|
99
81
|
end
|
data/lib/h3/inspection.rb
CHANGED
|
@@ -21,12 +21,6 @@ module H3
|
|
|
21
21
|
# @return [Integer] Resolution of H3 index
|
|
22
22
|
attach_function :resolution, :h3GetResolution, %i[h3_index], Resolution
|
|
23
23
|
|
|
24
|
-
# @deprecated Please use {#resolution} instead.
|
|
25
|
-
def h3_resolution(h3_index)
|
|
26
|
-
resolution(h3_index)
|
|
27
|
-
end
|
|
28
|
-
deprecate :h3_resolution, :resolution, 2020, 1
|
|
29
|
-
|
|
30
24
|
# @!method base_cell(h3_index)
|
|
31
25
|
#
|
|
32
26
|
# Derives the base cell number of the given H3 index
|
|
@@ -40,12 +34,6 @@ module H3
|
|
|
40
34
|
# @return [Integer] Base cell number
|
|
41
35
|
attach_function :base_cell, :h3GetBaseCell, %i[h3_index], :int
|
|
42
36
|
|
|
43
|
-
# @deprecated Please use {#base_cell} instead.
|
|
44
|
-
def h3_base_cell(h3_index)
|
|
45
|
-
base_cell(h3_index)
|
|
46
|
-
end
|
|
47
|
-
deprecate :h3_base_cell, :base_cell, 2020, 1
|
|
48
|
-
|
|
49
37
|
# @!method from_string(h3_string)
|
|
50
38
|
#
|
|
51
39
|
# Derives the H3 index for a given hexadecimal string representation.
|
|
@@ -59,12 +47,6 @@ module H3
|
|
|
59
47
|
# @return [Integer] H3 index
|
|
60
48
|
attach_function :from_string, :stringToH3, %i[string], :h3_index
|
|
61
49
|
|
|
62
|
-
# @deprecated Please use {#from_string} instead.
|
|
63
|
-
def string_to_h3(string)
|
|
64
|
-
from_string(string)
|
|
65
|
-
end
|
|
66
|
-
deprecate :string_to_h3, :from_string, 2020, 1
|
|
67
|
-
|
|
68
50
|
# @!method pentagon?(h3_index)
|
|
69
51
|
#
|
|
70
52
|
# Determine whether the given H3 index is a pentagon.
|
|
@@ -76,15 +58,7 @@ module H3
|
|
|
76
58
|
# true
|
|
77
59
|
#
|
|
78
60
|
# @return [Boolean] True if the H3 index is a pentagon.
|
|
79
|
-
|
|
80
|
-
alias_method :pentagon?, :pentagon
|
|
81
|
-
undef_method :pentagon
|
|
82
|
-
|
|
83
|
-
# @deprecated Please use {#pentagon?} instead.
|
|
84
|
-
def h3_pentagon?(h3_index)
|
|
85
|
-
pentagon?(h3_index)
|
|
86
|
-
end
|
|
87
|
-
deprecate :h3_pentagon?, :pentagon?, 2020, 1
|
|
61
|
+
attach_predicate_function :pentagon?, :h3IsPentagon, %i[h3_index], :bool
|
|
88
62
|
|
|
89
63
|
# @!method class_3_resolution?(h3_index)
|
|
90
64
|
#
|
|
@@ -98,15 +72,7 @@ module H3
|
|
|
98
72
|
# true
|
|
99
73
|
#
|
|
100
74
|
# @return [Boolean] True if the H3 index has a class III resolution.
|
|
101
|
-
|
|
102
|
-
alias_method :class_3_resolution?, :class_3_resolution
|
|
103
|
-
undef_method :class_3_resolution
|
|
104
|
-
|
|
105
|
-
# @deprecated Please use {#class_3_resolution?} instead.
|
|
106
|
-
def h3_res_class_3?(h3_index)
|
|
107
|
-
class_3_resolution?(h3_index)
|
|
108
|
-
end
|
|
109
|
-
deprecate :h3_res_class_3?, :class_3_resolution?, 2020, 1
|
|
75
|
+
attach_predicate_function :class_3_resolution?, :h3IsResClassIII, %i[h3_index], :bool
|
|
110
76
|
|
|
111
77
|
# @!method valid?(h3_index)
|
|
112
78
|
#
|
|
@@ -119,15 +85,7 @@ module H3
|
|
|
119
85
|
# true
|
|
120
86
|
#
|
|
121
87
|
# @return [Boolean] True if the H3 index is valid.
|
|
122
|
-
|
|
123
|
-
alias_method :valid?, :valid
|
|
124
|
-
undef_method :valid
|
|
125
|
-
|
|
126
|
-
# @deprecated Please use {#valid?} instead.
|
|
127
|
-
def h3_valid?(h3_index)
|
|
128
|
-
valid?(h3_index)
|
|
129
|
-
end
|
|
130
|
-
deprecate :h3_valid?, :valid?, 2020, 1
|
|
88
|
+
attach_predicate_function :valid?, :h3IsValid, %i[h3_index], :bool
|
|
131
89
|
|
|
132
90
|
# Derives the hexadecimal string representation for a given H3 index.
|
|
133
91
|
#
|
|
@@ -144,12 +102,6 @@ module H3
|
|
|
144
102
|
h3_str.read_string
|
|
145
103
|
end
|
|
146
104
|
|
|
147
|
-
# @deprecated Please use {#to_string} instead.
|
|
148
|
-
def h3_to_string(h3_index)
|
|
149
|
-
to_string(h3_index)
|
|
150
|
-
end
|
|
151
|
-
deprecate :h3_to_string, :to_strings, 2020, 1
|
|
152
|
-
|
|
153
105
|
# @!method max_face_count(h3_index)
|
|
154
106
|
#
|
|
155
107
|
# Returns the maximum number of icosahedron faces the given H3 index may intersect.
|
|
@@ -163,8 +115,6 @@ module H3
|
|
|
163
115
|
# @return [Integer] Maximum possible number of faces
|
|
164
116
|
attach_function :max_face_count, :maxFaceCount, %i[h3_index], :int
|
|
165
117
|
|
|
166
|
-
# @!method faces(h3_index)
|
|
167
|
-
#
|
|
168
118
|
# Find all icosahedron faces intersected by a given H3 index.
|
|
169
119
|
#
|
|
170
120
|
# @param [Integer] h3_index A H3 index.
|
|
@@ -181,11 +131,5 @@ module H3
|
|
|
181
131
|
# The C function returns a sparse array whose holes are represented by -1.
|
|
182
132
|
out.read_array_of_int(max_faces).reject(&:negative?).sort
|
|
183
133
|
end
|
|
184
|
-
|
|
185
|
-
# @deprecated Please use {#faces} instead.
|
|
186
|
-
def h3_faces(h3_index)
|
|
187
|
-
faces(h3_index)
|
|
188
|
-
end
|
|
189
|
-
deprecate :h3_faces, :faces, 2020, 1
|
|
190
134
|
end
|
|
191
135
|
end
|
data/lib/h3/miscellaneous.rb
CHANGED
|
@@ -83,12 +83,6 @@ module H3
|
|
|
83
83
|
# @return [Integer] Number of unique hexagons
|
|
84
84
|
attach_function :hexagon_count, :numHexagons, [Resolution], :ulong_long
|
|
85
85
|
|
|
86
|
-
# @deprecated Please use {#hexagon_count} instead.
|
|
87
|
-
def num_hexagons(resolution)
|
|
88
|
-
hexagon_count(resolution)
|
|
89
|
-
end
|
|
90
|
-
deprecate :num_hexagons, :hexagon_count, 2020, 1
|
|
91
|
-
|
|
92
86
|
# @!method rads_to_degs(rads)
|
|
93
87
|
#
|
|
94
88
|
# Convert a number expressed in radians to its equivalent in degrees.
|
|
@@ -125,11 +119,104 @@ module H3
|
|
|
125
119
|
# @return [Integer] The number of pentagons per resolution.
|
|
126
120
|
attach_function :pentagon_count, :pentagonIndexCount, [], :int
|
|
127
121
|
|
|
128
|
-
#
|
|
129
|
-
|
|
130
|
-
|
|
122
|
+
# @!method cell_area_rads2
|
|
123
|
+
#
|
|
124
|
+
# Area of a given cell expressed in radians squared
|
|
125
|
+
#
|
|
126
|
+
# @example Return the area of the cell
|
|
127
|
+
# H3.cell_area_rads2(617700169958293503)
|
|
128
|
+
# 2.6952182709835757e-09
|
|
129
|
+
#
|
|
130
|
+
# @return [Double] Area of cell in rads2
|
|
131
|
+
attach_function :cell_area_rads2, :cellAreaRads2, %i[h3_index], :double
|
|
132
|
+
|
|
133
|
+
# @!method cell_area_km2
|
|
134
|
+
#
|
|
135
|
+
# Area of a given cell expressed in km squared
|
|
136
|
+
#
|
|
137
|
+
# @example Return the area of the cell
|
|
138
|
+
# H3.cell_area_km2(617700169958293503)
|
|
139
|
+
# 0.10939818864648902
|
|
140
|
+
#
|
|
141
|
+
# @return [Double] Area of cell in km2
|
|
142
|
+
attach_function :cell_area_km2, :cellAreaKm2, %i[h3_index], :double
|
|
143
|
+
|
|
144
|
+
# @!method cell_area_m2
|
|
145
|
+
#
|
|
146
|
+
# Area of a given cell expressed in metres squared
|
|
147
|
+
#
|
|
148
|
+
# @example Return the area of the cell
|
|
149
|
+
# H3.cell_area_m2(617700169958293503)
|
|
150
|
+
# 109398.18864648901
|
|
151
|
+
#
|
|
152
|
+
# @return [Double] Area of cell in metres squared
|
|
153
|
+
attach_function :cell_area_m2, :cellAreaM2, %i[h3_index], :double
|
|
154
|
+
|
|
155
|
+
# @!method exact_edge_length_rads
|
|
156
|
+
#
|
|
157
|
+
# Exact length of edge in rads
|
|
158
|
+
#
|
|
159
|
+
# @example Return the edge length
|
|
160
|
+
# H3.exact_edge_length_rads(1266218516299644927)
|
|
161
|
+
# 3.287684056071637e-05
|
|
162
|
+
#
|
|
163
|
+
# @return [Double] Edge length in rads
|
|
164
|
+
attach_function :exact_edge_length_rads, :exactEdgeLengthRads, %i[h3_index], :double
|
|
165
|
+
|
|
166
|
+
# @!method exact_edge_length_km
|
|
167
|
+
#
|
|
168
|
+
# Exact length of edge in kilometres
|
|
169
|
+
#
|
|
170
|
+
# @example Return the edge length
|
|
171
|
+
# H3.exact_edge_length_km(1266218516299644927)
|
|
172
|
+
# 3.287684056071637e-05
|
|
173
|
+
#
|
|
174
|
+
# @return [Double] Edge length in kilometres
|
|
175
|
+
attach_function :exact_edge_length_km, :exactEdgeLengthKm, %i[h3_index], :double
|
|
176
|
+
|
|
177
|
+
# @!method exact_edge_length_m
|
|
178
|
+
#
|
|
179
|
+
# Exact length of edge in metres
|
|
180
|
+
#
|
|
181
|
+
# @example Return the edge length
|
|
182
|
+
# H3.exact_edge_length_m(1266218516299644927)
|
|
183
|
+
# 3.287684056071637e-05
|
|
184
|
+
#
|
|
185
|
+
# @return [Double] Edge length in metres
|
|
186
|
+
attach_function :exact_edge_length_m, :exactEdgeLengthM, %i[h3_index], :double
|
|
187
|
+
|
|
188
|
+
# Returns the radians distance between two points.
|
|
189
|
+
#
|
|
190
|
+
# @example Return radians distance.
|
|
191
|
+
# H3.point_distance_rads([41.3964809, 2.160444], [41.3870609, 2.164917])
|
|
192
|
+
# 0.00017453024784008713
|
|
193
|
+
#
|
|
194
|
+
# @return [Double] Radians distance between two points.
|
|
195
|
+
def point_distance_rads(origin, destination)
|
|
196
|
+
Bindings::Private.point_distance_rads(*build_geocoords(origin, destination))
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Returns the kilometres distance between two points.
|
|
200
|
+
#
|
|
201
|
+
# @example Return km distance.
|
|
202
|
+
# H3.point_distance_km([41.3964809, 2.160444], [41.3870609, 2.164917])
|
|
203
|
+
# 1.1119334622766763
|
|
204
|
+
#
|
|
205
|
+
# @return [Double] KM distance between two points.
|
|
206
|
+
def point_distance_km(origin, destination)
|
|
207
|
+
Bindings::Private.point_distance_km(*build_geocoords(origin, destination))
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# Returns the metre distance between two points.
|
|
211
|
+
#
|
|
212
|
+
# @example Return metre distance.
|
|
213
|
+
# H3.point_distance_m([41.3964809, 2.160444], [41.3870609, 2.164917])
|
|
214
|
+
# 1111.9334622766764
|
|
215
|
+
#
|
|
216
|
+
# @return [Double] Metre distance between two points.
|
|
217
|
+
def point_distance_m(origin, destination)
|
|
218
|
+
Bindings::Private.point_distance_m(*build_geocoords(origin, destination))
|
|
131
219
|
end
|
|
132
|
-
deprecate :res_0_index_count, :base_cell_count, 2020, 1
|
|
133
220
|
|
|
134
221
|
# Returns all resolution 0 hexagons (base cells).
|
|
135
222
|
#
|
|
@@ -157,10 +244,28 @@ module H3
|
|
|
157
244
|
out.read
|
|
158
245
|
end
|
|
159
246
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
247
|
+
private
|
|
248
|
+
|
|
249
|
+
def build_geocoords(origin, destination)
|
|
250
|
+
[origin, destination].inject([]) do |acc, coords|
|
|
251
|
+
validate_coordinate(coords)
|
|
252
|
+
|
|
253
|
+
geo_coord = GeoCoord.new
|
|
254
|
+
lat, lon = coords
|
|
255
|
+
geo_coord[:lat] = degs_to_rads(lat)
|
|
256
|
+
geo_coord[:lon] = degs_to_rads(lon)
|
|
257
|
+
acc << geo_coord
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def validate_coordinate(coords)
|
|
262
|
+
raise ArgumentError unless coords.is_a?(Array) && coords.count == 2
|
|
263
|
+
|
|
264
|
+
lat, lon = coords
|
|
265
|
+
|
|
266
|
+
if lat > 90 || lat < -90 || lon > 180 || lon < -180
|
|
267
|
+
raise(ArgumentError, "Invalid coordinates")
|
|
268
|
+
end
|
|
163
269
|
end
|
|
164
|
-
deprecate :res_0_indexes, :base_cells, 2020, 1
|
|
165
270
|
end
|
|
166
271
|
end
|