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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/README.md +2 -1
- data/ext/h3/Makefile +1 -1
- data/ext/h3/src/.gitignore +2 -1
- data/ext/h3/src/CHANGELOG.md +9 -0
- data/ext/h3/src/CMakeLists.txt +72 -45
- data/ext/h3/src/RELEASE.md +2 -1
- data/ext/h3/src/VERSION +1 -1
- data/ext/h3/src/docs/api/hierarchy.md +2 -0
- data/ext/h3/src/docs/api/indexing.md +3 -1
- data/ext/h3/src/docs/api/inspection.md +20 -0
- data/ext/h3/src/docs/api/misc.md +2 -0
- data/ext/h3/src/docs/api/regions.md +2 -0
- data/ext/h3/src/docs/api/traversal.md +2 -0
- data/ext/h3/src/docs/api/uniedge.md +2 -0
- data/ext/h3/src/docs/community/bindings.md +4 -0
- data/ext/h3/src/docs/community/tutorials.md +12 -0
- data/ext/h3/src/scripts/update_version.sh +50 -0
- data/ext/h3/src/src/apps/applib/include/args.h +122 -0
- data/ext/h3/src/src/apps/applib/include/utility.h +5 -62
- data/ext/h3/src/src/apps/applib/lib/args.c +216 -0
- data/ext/h3/src/src/apps/applib/lib/utility.c +40 -206
- data/ext/h3/src/src/apps/filters/geoToH3.c +7 -9
- data/ext/h3/src/src/apps/filters/h3ToComponents.c +50 -47
- data/ext/h3/src/src/apps/filters/h3ToGeo.c +7 -30
- data/ext/h3/src/src/apps/filters/h3ToGeoBoundary.c +7 -27
- data/ext/h3/src/src/apps/filters/h3ToLocalIj.c +42 -25
- data/ext/h3/src/src/apps/filters/hexRange.c +43 -24
- data/ext/h3/src/src/apps/filters/kRing.c +4 -4
- data/ext/h3/src/src/apps/filters/localIjToH3.c +63 -21
- data/ext/h3/src/src/apps/miscapps/h3ToGeoBoundaryHier.c +68 -44
- data/ext/h3/src/src/apps/miscapps/h3ToGeoHier.c +68 -43
- data/ext/h3/src/src/apps/miscapps/h3ToHier.c +48 -37
- data/ext/h3/src/src/apps/testapps/mkRandGeo.c +32 -27
- data/ext/h3/src/src/apps/testapps/mkRandGeoBoundary.c +33 -28
- data/ext/h3/src/src/apps/testapps/testH3GetFaces.c +136 -0
- data/ext/h3/src/src/h3lib/include/faceijk.h +19 -7
- data/ext/h3/src/src/h3lib/include/h3api.h.in +12 -1
- data/ext/h3/src/src/h3lib/lib/algos.c +7 -2
- data/ext/h3/src/src/h3lib/lib/faceijk.c +135 -103
- data/ext/h3/src/src/h3lib/lib/h3Index.c +86 -5
- data/lib/h3/bindings/private.rb +1 -0
- data/lib/h3/inspection.rb +34 -0
- data/lib/h3/version.rb +1 -1
- data/spec/inspection_spec.rb +33 -1
- metadata +6 -2
data/lib/h3/bindings/private.rb
CHANGED
@@ -10,6 +10,7 @@ module H3
|
|
10
10
|
attach_function :compact, [H3IndexesIn, H3IndexesOut, :size], :bool
|
11
11
|
attach_function :destroy_linked_polygon, :destroyLinkedPolygon, [LinkedGeoPolygon], :void
|
12
12
|
attach_function :geo_to_h3, :geoToH3, [GeoCoord, Resolution], :h3_index
|
13
|
+
attach_function :h3_faces, :h3GetFaces, %i[h3_index output_buffer], :void
|
13
14
|
attach_function :h3_indexes_from_unidirectional_edge,
|
14
15
|
:getH3IndexesFromUnidirectionalEdge,
|
15
16
|
[:h3_index, H3IndexesOut], :void
|
data/lib/h3/inspection.rb
CHANGED
@@ -101,5 +101,39 @@ module H3
|
|
101
101
|
Bindings::Private.h3_to_string(h3_index, h3_str, H3_TO_STR_BUF_SIZE)
|
102
102
|
h3_str.read_string
|
103
103
|
end
|
104
|
+
|
105
|
+
# @!method max_face_count(h3_index)
|
106
|
+
#
|
107
|
+
# Returns the maximum number of icosahedron faces the given H3 index may intersect.
|
108
|
+
#
|
109
|
+
# @param [Integer] h3_index A H3 index.
|
110
|
+
#
|
111
|
+
# @example Check maximum faces
|
112
|
+
# H3.max_face_count(585961082523222015)
|
113
|
+
# 5
|
114
|
+
#
|
115
|
+
# @return [Integer] Maximum possible number of faces
|
116
|
+
attach_function :max_face_count, :maxFaceCount, %i[h3_index], :int
|
117
|
+
|
118
|
+
# void h3GetFaces(H3Index h, int* out);
|
119
|
+
|
120
|
+
# @!method h3_faces(h3_index)
|
121
|
+
#
|
122
|
+
# Find all icosahedron faces intersected by a given H3 index.
|
123
|
+
#
|
124
|
+
# @param [Integer] h3_index A H3 index.
|
125
|
+
#
|
126
|
+
# @example Find icosahedron faces for given index
|
127
|
+
# H3.h3_faces(585961082523222015)
|
128
|
+
# [1, 2, 6, 7, 11]
|
129
|
+
#
|
130
|
+
# @return [Array<Integer>] Faces. Faces are represented as integers from 0-19, inclusive.
|
131
|
+
def h3_faces(h3_index)
|
132
|
+
max_faces = max_face_count(h3_index)
|
133
|
+
out = FFI::MemoryPointer.new(:int, max_faces)
|
134
|
+
Bindings::Private.h3_faces(h3_index, out)
|
135
|
+
# The C function returns a sparse array whose holes are represented by -1.
|
136
|
+
out.read_array_of_int(max_faces).reject(&:negative?).sort
|
137
|
+
end
|
104
138
|
end
|
105
139
|
end
|
data/lib/h3/version.rb
CHANGED
data/spec/inspection_spec.rb
CHANGED
@@ -87,4 +87,36 @@ RSpec.describe H3 do
|
|
87
87
|
it { is_expected.to eq(result) }
|
88
88
|
end
|
89
89
|
end
|
90
|
-
|
90
|
+
|
91
|
+
describe ".max_face_count" do
|
92
|
+
let(:h3_index) { "8928308280fffff".to_i(16) }
|
93
|
+
let(:result) { 2 }
|
94
|
+
|
95
|
+
subject(:max_face_count) { H3.max_face_count(h3_index) }
|
96
|
+
|
97
|
+
it { is_expected.to eq(result) }
|
98
|
+
|
99
|
+
context "when the h3 index is a pentagon" do
|
100
|
+
let(:h3_index) { "821c07fffffffff".to_i(16) }
|
101
|
+
let(:result) { 5 }
|
102
|
+
|
103
|
+
it { is_expected.to eq(result) }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe ".h3_faces" do
|
108
|
+
let(:h3_index) { "8928308280fffff".to_i(16) }
|
109
|
+
let(:result) { [7] }
|
110
|
+
|
111
|
+
subject(:max_face_count) { H3.h3_faces(h3_index) }
|
112
|
+
|
113
|
+
it { is_expected.to eq(result) }
|
114
|
+
|
115
|
+
context "when the h3 index is a pentagon" do
|
116
|
+
let(:h3_index) { "821c07fffffffff".to_i(16) }
|
117
|
+
let(:result) { [1, 2, 6, 7, 11] }
|
118
|
+
|
119
|
+
it { is_expected.to eq(result) }
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: h3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lachlan Laycock
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-07-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
@@ -169,10 +169,13 @@ files:
|
|
169
169
|
- ext/h3/src/scripts/binding_functions.sh
|
170
170
|
- ext/h3/src/scripts/coverage.sh.in
|
171
171
|
- ext/h3/src/scripts/publish_website.sh
|
172
|
+
- ext/h3/src/scripts/update_version.sh
|
173
|
+
- ext/h3/src/src/apps/applib/include/args.h
|
172
174
|
- ext/h3/src/src/apps/applib/include/benchmark.h
|
173
175
|
- ext/h3/src/src/apps/applib/include/kml.h
|
174
176
|
- ext/h3/src/src/apps/applib/include/test.h
|
175
177
|
- ext/h3/src/src/apps/applib/include/utility.h
|
178
|
+
- ext/h3/src/src/apps/applib/lib/args.c
|
176
179
|
- ext/h3/src/src/apps/applib/lib/kml.c
|
177
180
|
- ext/h3/src/src/apps/applib/lib/test.c
|
178
181
|
- ext/h3/src/src/apps/applib/lib/utility.c
|
@@ -208,6 +211,7 @@ files:
|
|
208
211
|
- ext/h3/src/src/apps/testapps/testGeoToH3.c
|
209
212
|
- ext/h3/src/src/apps/testapps/testH3Api.c
|
210
213
|
- ext/h3/src/src/apps/testapps/testH3Distance.c
|
214
|
+
- ext/h3/src/src/apps/testapps/testH3GetFaces.c
|
211
215
|
- ext/h3/src/src/apps/testapps/testH3Index.c
|
212
216
|
- ext/h3/src/src/apps/testapps/testH3Line.c
|
213
217
|
- ext/h3/src/src/apps/testapps/testH3NeighborRotations.c
|