h3 3.6.2 → 3.7.1
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 +5 -5
- data/CHANGELOG.md +23 -0
- data/Gemfile.lock +6 -6
- data/README.md +1 -1
- 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 +16 -46
- data/ext/h3/src/CHANGELOG.md +43 -0
- data/ext/h3/src/CMakeLists.txt +133 -33
- data/ext/h3/src/CONTRIBUTING.md +1 -1
- data/ext/h3/src/README.md +60 -10
- 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 +7 -1
- 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 +75 -0
- data/ext/h3/src/src/apps/testapps/testCoordIj.c +1 -0
- data/ext/h3/src/src/apps/testapps/testGeoCoord.c +40 -13
- 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 +9 -5
- 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 +1 -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 +1 -0
- 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 +300 -75
- data/ext/h3/src/src/h3lib/lib/baseCells.c +26 -4
- data/ext/h3/src/src/h3lib/lib/bbox.c +56 -31
- 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 +81 -43
- 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/lib/h3/bindings/private.rb +3 -0
- data/lib/h3/miscellaneous.rb +123 -0
- data/lib/h3/version.rb +1 -1
- data/spec/miscellaneous_spec.rb +117 -0
- data/spec/regions_spec.rb +1 -1
- metadata +35 -14
- data/ext/h3/src/.ycm_extra_conf.py +0 -92
- data/ext/h3/src/appveyor.yml +0 -50
- data/ext/h3/src/src/apps/testapps/testPolyfill_GH136.c +0 -58
- 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/lib/h3/bindings/private.rb
CHANGED
|
@@ -52,6 +52,9 @@ module H3
|
|
|
52
52
|
[GeoPolygon, Resolution],
|
|
53
53
|
:int
|
|
54
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
60
|
attach_function :uncompact, [H3IndexesIn, :size_t, H3IndexesOut, :size_t, Resolution], :bool
|
data/lib/h3/miscellaneous.rb
CHANGED
|
@@ -119,6 +119,105 @@ module H3
|
|
|
119
119
|
# @return [Integer] The number of pentagons per resolution.
|
|
120
120
|
attach_function :pentagon_count, :pentagonIndexCount, [], :int
|
|
121
121
|
|
|
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))
|
|
219
|
+
end
|
|
220
|
+
|
|
122
221
|
# Returns all resolution 0 hexagons (base cells).
|
|
123
222
|
#
|
|
124
223
|
# @example Return all base cells.
|
|
@@ -144,5 +243,29 @@ module H3
|
|
|
144
243
|
Bindings::Private.get_pentagon_indexes(resolution, out)
|
|
145
244
|
out.read
|
|
146
245
|
end
|
|
246
|
+
|
|
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
|
|
269
|
+
end
|
|
147
270
|
end
|
|
148
271
|
end
|
data/lib/h3/version.rb
CHANGED
data/spec/miscellaneous_spec.rb
CHANGED
|
@@ -109,4 +109,121 @@ RSpec.describe H3 do
|
|
|
109
109
|
expect(pentagons).to eq(expected)
|
|
110
110
|
end
|
|
111
111
|
end
|
|
112
|
+
|
|
113
|
+
describe ".cell_area_rads2" do
|
|
114
|
+
let(:cell) { "8928308280fffff".to_i(16) }
|
|
115
|
+
let(:expected) { 2.6952182709835757e-09 }
|
|
116
|
+
subject(:cell_area_rads2) { H3.cell_area_rads2(cell) }
|
|
117
|
+
|
|
118
|
+
it "returns cell area in rads2" do
|
|
119
|
+
expect(cell_area_rads2).to be_within(0.0001).of(expected)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
describe ".cell_area_km2" do
|
|
124
|
+
let(:cell) { "8928308280fffff".to_i(16) }
|
|
125
|
+
let(:expected) { 0.10939818864648902 }
|
|
126
|
+
subject(:cell_area_km2) { H3.cell_area_km2(cell) }
|
|
127
|
+
|
|
128
|
+
it "returns cell area in km2" do
|
|
129
|
+
expect(cell_area_km2).to be_within(0.0001).of(expected)
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
describe ".cell_area_m2" do
|
|
134
|
+
let(:cell) { "8928308280fffff".to_i(16) }
|
|
135
|
+
let(:expected) { 109398.18864648901 }
|
|
136
|
+
subject(:cell_area_m2) { H3.cell_area_m2(cell) }
|
|
137
|
+
|
|
138
|
+
it "returns cell area in m2" do
|
|
139
|
+
expect(cell_area_m2).to be_within(0.0001).of(expected)
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
describe ".exact_edge_length_rads" do
|
|
144
|
+
let(:cell) { "11928308280fffff".to_i(16) }
|
|
145
|
+
let(:expected) { 3.287684056071637e-05 }
|
|
146
|
+
subject(:exact_edge_length_rads) { H3.exact_edge_length_rads(cell) }
|
|
147
|
+
|
|
148
|
+
it "returns edge length in rads" do
|
|
149
|
+
expect(exact_edge_length_rads).to be_within(0.0001).of(expected)
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
describe ".exact_edge_length_km" do
|
|
154
|
+
let(:cell) { "11928308280fffff".to_i(16) }
|
|
155
|
+
let(:expected) { 0.20945858729823577 }
|
|
156
|
+
subject(:exact_edge_length_km) { H3.exact_edge_length_km(cell) }
|
|
157
|
+
|
|
158
|
+
it "returns edge length in km" do
|
|
159
|
+
expect(exact_edge_length_km).to be_within(0.0001).of(expected)
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
describe ".exact_edge_length_m" do
|
|
164
|
+
let(:cell) { "11928308280fffff".to_i(16) }
|
|
165
|
+
let(:expected) { 209.45858729823578 }
|
|
166
|
+
subject(:exact_edge_length_m) { H3.exact_edge_length_m(cell) }
|
|
167
|
+
|
|
168
|
+
it "returns edge length in m" do
|
|
169
|
+
expect(exact_edge_length_m).to be_within(0.0001).of(expected)
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
describe ".point_distance_rads" do
|
|
174
|
+
let(:a) { [41.3964809, 2.160444] }
|
|
175
|
+
let(:b) { [41.3870609, 2.164917] }
|
|
176
|
+
let(:expected) { 0.00017453024784008713 }
|
|
177
|
+
subject(:point_distance_rads) { H3.point_distance_rads(a, b) }
|
|
178
|
+
|
|
179
|
+
it "returns distance between points in rads" do
|
|
180
|
+
expect(point_distance_rads).to be_within(0.0001).of(expected)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
context "when the coordinates are invalid" do
|
|
184
|
+
let(:a) { [91, -18] }
|
|
185
|
+
|
|
186
|
+
it "raises an argument error" do
|
|
187
|
+
expect { point_distance_rads }.to raise_error(ArgumentError)
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
describe ".point_distance_km" do
|
|
193
|
+
let(:a) { [41.3964809, 2.160444] }
|
|
194
|
+
let(:b) { [41.3870609, 2.164917] }
|
|
195
|
+
let(:expected) { 1.1119334622766763 }
|
|
196
|
+
subject(:point_distance_km) { H3.point_distance_km(a, b) }
|
|
197
|
+
|
|
198
|
+
it "returns distance between points in km" do
|
|
199
|
+
expect(point_distance_km).to be_within(0.0001).of(expected)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
context "when the coordinates are invalid" do
|
|
203
|
+
let(:a) { [89, -181] }
|
|
204
|
+
|
|
205
|
+
it "raises an argument error" do
|
|
206
|
+
expect { point_distance_km }.to raise_error(ArgumentError)
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
describe ".point_distance_m" do
|
|
212
|
+
let(:a) { [41.3964809, 2.160444] }
|
|
213
|
+
let(:b) { [41.3870609, 2.164917] }
|
|
214
|
+
let(:expected) { 1111.9334622766764 }
|
|
215
|
+
subject(:point_distance_m) { H3.point_distance_m(a, b) }
|
|
216
|
+
|
|
217
|
+
it "returns distance between points in m" do
|
|
218
|
+
expect(point_distance_m).to be_within(0.0001).of(expected)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
context "when the coordinates are invalid" do
|
|
222
|
+
let(:a) { "boom" }
|
|
223
|
+
|
|
224
|
+
it "raises an argument error" do
|
|
225
|
+
expect { point_distance_m }.to raise_error(ArgumentError)
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
end
|
|
112
229
|
end
|
data/spec/regions_spec.rb
CHANGED
|
@@ -42,7 +42,7 @@ RSpec.describe H3 do
|
|
|
42
42
|
File.read(File.join(File.dirname(__FILE__), "support/fixtures/banbury.json"))
|
|
43
43
|
end
|
|
44
44
|
let(:resolution) { 9 }
|
|
45
|
-
let(:expected_count) {
|
|
45
|
+
let(:expected_count) { 47_018 }
|
|
46
46
|
|
|
47
47
|
subject(:max_polyfill_size) { H3.max_polyfill_size(geojson, resolution) }
|
|
48
48
|
|
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.7.1
|
|
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: 2020-
|
|
12
|
+
date: 2020-10-13 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: ffi
|
|
@@ -133,9 +133,12 @@ files:
|
|
|
133
133
|
- ext/h3/extconf.rb
|
|
134
134
|
- ext/h3/src/.clang-format
|
|
135
135
|
- ext/h3/src/.clang-tidy
|
|
136
|
+
- ext/h3/src/.github/workflows/test-linux.yml
|
|
137
|
+
- ext/h3/src/.github/workflows/test-macos.yml
|
|
138
|
+
- ext/h3/src/.github/workflows/test-website.yml
|
|
139
|
+
- ext/h3/src/.github/workflows/test-windows.yml
|
|
136
140
|
- ext/h3/src/.gitignore
|
|
137
141
|
- ext/h3/src/.travis.yml
|
|
138
|
-
- ext/h3/src/.ycm_extra_conf.py
|
|
139
142
|
- ext/h3/src/CHANGELOG.md
|
|
140
143
|
- ext/h3/src/CMakeLists.txt
|
|
141
144
|
- ext/h3/src/CONTRIBUTING.md
|
|
@@ -144,13 +147,20 @@ files:
|
|
|
144
147
|
- ext/h3/src/README.md
|
|
145
148
|
- ext/h3/src/RELEASE.md
|
|
146
149
|
- ext/h3/src/VERSION
|
|
147
|
-
- ext/h3/src/appveyor.yml
|
|
148
150
|
- ext/h3/src/cmake/Config.cmake.in
|
|
149
151
|
- ext/h3/src/cmake/TestWrapValgrind.cmake
|
|
150
152
|
- ext/h3/src/cmake/toolchain.cmake
|
|
151
153
|
- ext/h3/src/dev-docs/Doxyfile.in
|
|
154
|
+
- ext/h3/src/dev-docs/RFCs/rfc-template.md
|
|
155
|
+
- ext/h3/src/dev-docs/RFCs/v4.0.0/error-handling-rfc.md
|
|
156
|
+
- ext/h3/src/dev-docs/RFCs/v4.0.0/names_for_concepts_types_functions.md
|
|
157
|
+
- ext/h3/src/dev-docs/RFCs/v4.0.0/overrideable-allocators-rfc.md
|
|
158
|
+
- ext/h3/src/dev-docs/RFCs/v4.0.0/polyfill-modes-rfc.md
|
|
159
|
+
- ext/h3/src/dev-docs/RFCs/v4.0.0/vertex-mode-rfc.md
|
|
152
160
|
- ext/h3/src/dev-docs/build_windows.md
|
|
153
161
|
- ext/h3/src/dev-docs/creating_bindings.md
|
|
162
|
+
- ext/h3/src/dev-docs/custom_alloc.md
|
|
163
|
+
- ext/h3/src/docs/README.md
|
|
154
164
|
- ext/h3/src/docs/api/hierarchy.md
|
|
155
165
|
- ext/h3/src/docs/api/indexing.md
|
|
156
166
|
- ext/h3/src/docs/api/inspection.md
|
|
@@ -171,8 +181,8 @@ files:
|
|
|
171
181
|
- ext/h3/src/docs/core-library/overview.md
|
|
172
182
|
- ext/h3/src/docs/core-library/restable.md
|
|
173
183
|
- ext/h3/src/docs/core-library/usage.md
|
|
174
|
-
- ext/h3/src/docs/
|
|
175
|
-
- ext/h3/src/docs/
|
|
184
|
+
- ext/h3/src/docs/table-of-contents.json
|
|
185
|
+
- ext/h3/src/docs/usecases.md
|
|
176
186
|
- ext/h3/src/examples/CMakeLists.txt
|
|
177
187
|
- ext/h3/src/examples/compact.c
|
|
178
188
|
- ext/h3/src/examples/distance.c
|
|
@@ -196,6 +206,7 @@ files:
|
|
|
196
206
|
- ext/h3/src/src/apps/benchmarks/benchmarkH3Api.c
|
|
197
207
|
- ext/h3/src/src/apps/benchmarks/benchmarkH3Line.c
|
|
198
208
|
- ext/h3/src/src/apps/benchmarks/benchmarkH3SetToLinkedGeo.c
|
|
209
|
+
- ext/h3/src/src/apps/benchmarks/benchmarkH3UniEdge.c
|
|
199
210
|
- ext/h3/src/src/apps/benchmarks/benchmarkKRing.c
|
|
200
211
|
- ext/h3/src/src/apps/benchmarks/benchmarkPolyfill.c
|
|
201
212
|
- ext/h3/src/src/apps/benchmarks/benchmarkPolygon.c
|
|
@@ -210,6 +221,7 @@ files:
|
|
|
210
221
|
- ext/h3/src/src/apps/miscapps/generateBaseCellNeighbors.c
|
|
211
222
|
- ext/h3/src/src/apps/miscapps/generateFaceCenterPoint.c
|
|
212
223
|
- ext/h3/src/src/apps/miscapps/generateNumHexagons.c
|
|
224
|
+
- ext/h3/src/src/apps/miscapps/generatePentagonDirectionFaces.c
|
|
213
225
|
- ext/h3/src/src/apps/miscapps/h3ToGeoBoundaryHier.c
|
|
214
226
|
- ext/h3/src/src/apps/miscapps/h3ToGeoHier.c
|
|
215
227
|
- ext/h3/src/src/apps/miscapps/h3ToHier.c
|
|
@@ -224,12 +236,15 @@ files:
|
|
|
224
236
|
- ext/h3/src/src/apps/testapps/testGeoCoord.c
|
|
225
237
|
- ext/h3/src/src/apps/testapps/testGeoToH3.c
|
|
226
238
|
- ext/h3/src/src/apps/testapps/testH3Api.c
|
|
239
|
+
- ext/h3/src/src/apps/testapps/testH3CellArea.c
|
|
240
|
+
- ext/h3/src/src/apps/testapps/testH3CellAreaExhaustive.c
|
|
227
241
|
- ext/h3/src/src/apps/testapps/testH3Distance.c
|
|
228
242
|
- ext/h3/src/src/apps/testapps/testH3DistanceExhaustive.c
|
|
229
243
|
- ext/h3/src/src/apps/testapps/testH3GetFaces.c
|
|
230
244
|
- ext/h3/src/src/apps/testapps/testH3Index.c
|
|
231
245
|
- ext/h3/src/src/apps/testapps/testH3Line.c
|
|
232
246
|
- ext/h3/src/src/apps/testapps/testH3LineExhaustive.c
|
|
247
|
+
- ext/h3/src/src/apps/testapps/testH3Memory.c
|
|
233
248
|
- ext/h3/src/src/apps/testapps/testH3NeighborRotations.c
|
|
234
249
|
- ext/h3/src/src/apps/testapps/testH3SetToLinkedGeo.c
|
|
235
250
|
- ext/h3/src/src/apps/testapps/testH3SetToVertexGraph.c
|
|
@@ -241,6 +256,7 @@ files:
|
|
|
241
256
|
- ext/h3/src/src/apps/testapps/testH3ToLocalIjExhaustive.c
|
|
242
257
|
- ext/h3/src/src/apps/testapps/testH3ToParent.c
|
|
243
258
|
- ext/h3/src/src/apps/testapps/testH3UniEdge.c
|
|
259
|
+
- ext/h3/src/src/apps/testapps/testH3UniEdgeExhaustive.c
|
|
244
260
|
- ext/h3/src/src/apps/testapps/testHexRanges.c
|
|
245
261
|
- ext/h3/src/src/apps/testapps/testHexRing.c
|
|
246
262
|
- ext/h3/src/src/apps/testapps/testKRing.c
|
|
@@ -248,12 +264,14 @@ files:
|
|
|
248
264
|
- ext/h3/src/src/apps/testapps/testMaxH3ToChildrenSize.c
|
|
249
265
|
- ext/h3/src/src/apps/testapps/testPentagonIndexes.c
|
|
250
266
|
- ext/h3/src/src/apps/testapps/testPolyfill.c
|
|
251
|
-
- ext/h3/src/src/apps/testapps/
|
|
267
|
+
- ext/h3/src/src/apps/testapps/testPolyfillReported.c
|
|
252
268
|
- ext/h3/src/src/apps/testapps/testPolygon.c
|
|
253
269
|
- ext/h3/src/src/apps/testapps/testVec2d.c
|
|
254
270
|
- ext/h3/src/src/apps/testapps/testVec3d.c
|
|
271
|
+
- ext/h3/src/src/apps/testapps/testVertex.c
|
|
255
272
|
- ext/h3/src/src/apps/testapps/testVertexGraph.c
|
|
256
273
|
- ext/h3/src/src/h3lib/include/algos.h
|
|
274
|
+
- ext/h3/src/src/h3lib/include/alloc.h
|
|
257
275
|
- ext/h3/src/src/h3lib/include/baseCells.h
|
|
258
276
|
- ext/h3/src/src/h3lib/include/bbox.h
|
|
259
277
|
- ext/h3/src/src/h3lib/include/constants.h
|
|
@@ -270,6 +288,7 @@ files:
|
|
|
270
288
|
- ext/h3/src/src/h3lib/include/polygonAlgos.h
|
|
271
289
|
- ext/h3/src/src/h3lib/include/vec2d.h
|
|
272
290
|
- ext/h3/src/src/h3lib/include/vec3d.h
|
|
291
|
+
- ext/h3/src/src/h3lib/include/vertex.h
|
|
273
292
|
- ext/h3/src/src/h3lib/include/vertexGraph.h
|
|
274
293
|
- ext/h3/src/src/h3lib/lib/algos.c
|
|
275
294
|
- ext/h3/src/src/h3lib/lib/baseCells.c
|
|
@@ -285,6 +304,7 @@ files:
|
|
|
285
304
|
- ext/h3/src/src/h3lib/lib/polygon.c
|
|
286
305
|
- ext/h3/src/src/h3lib/lib/vec2d.c
|
|
287
306
|
- ext/h3/src/src/h3lib/lib/vec3d.c
|
|
307
|
+
- ext/h3/src/src/h3lib/lib/vertex.c
|
|
288
308
|
- ext/h3/src/src/h3lib/lib/vertexGraph.c
|
|
289
309
|
- ext/h3/src/tests/inputfiles/bc05r08cells.txt
|
|
290
310
|
- ext/h3/src/tests/inputfiles/bc05r08centers.txt
|
|
@@ -365,14 +385,14 @@ files:
|
|
|
365
385
|
- ext/h3/src/tests/inputfiles/res03cells.txt
|
|
366
386
|
- ext/h3/src/tests/inputfiles/res03ic.txt
|
|
367
387
|
- ext/h3/src/tests/inputfiles/res04ic.txt
|
|
388
|
+
- ext/h3/src/website/.eslintignore
|
|
389
|
+
- ext/h3/src/website/.gitignore
|
|
390
|
+
- ext/h3/src/website/.nvmrc
|
|
368
391
|
- ext/h3/src/website/README.md
|
|
369
|
-
- ext/h3/src/website/
|
|
392
|
+
- ext/h3/src/website/gatsby-config.js
|
|
370
393
|
- ext/h3/src/website/package.json
|
|
371
394
|
- ext/h3/src/website/scripts/build-to-gh-pages.sh
|
|
372
|
-
- ext/h3/src/website/src
|
|
373
|
-
- ext/h3/src/website/src/mdRoutes.js
|
|
374
|
-
- ext/h3/src/website/src/styles/_variables.scss
|
|
375
|
-
- ext/h3/src/website/src/styles/index.scss
|
|
395
|
+
- ext/h3/src/website/src/.gitkeep
|
|
376
396
|
- ext/h3/src/website/static/favicon.ico
|
|
377
397
|
- ext/h3/src/website/static/images/ca_compact_6_901.png
|
|
378
398
|
- ext/h3/src/website/static/images/ca_uncompact_6_10633.png
|
|
@@ -391,7 +411,8 @@ files:
|
|
|
391
411
|
- ext/h3/src/website/static/images/substrate3.png
|
|
392
412
|
- ext/h3/src/website/static/images/triEdge.png
|
|
393
413
|
- ext/h3/src/website/static/images/uber-logo.png
|
|
394
|
-
- ext/h3/src/website/
|
|
414
|
+
- ext/h3/src/website/templates/documentation.jsx
|
|
415
|
+
- ext/h3/src/website/yarn.lock
|
|
395
416
|
- h3.gemspec
|
|
396
417
|
- lib/h3.rb
|
|
397
418
|
- lib/h3/bindings/base.rb
|
|
@@ -443,7 +464,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
443
464
|
version: '0'
|
|
444
465
|
requirements: []
|
|
445
466
|
rubyforge_project:
|
|
446
|
-
rubygems_version: 2.
|
|
467
|
+
rubygems_version: 2.6.14.3
|
|
447
468
|
signing_key:
|
|
448
469
|
specification_version: 4
|
|
449
470
|
summary: C Bindings for Uber's H3 library
|