@@ -182,6 +182,183 @@ $ h3 maxPolygonToCellsSize -r 7 -p "[[37.813318999983238, -122.4089866999972145]
182
182
</TabItem >
183
183
</Tabs >
184
184
185
+ ## polygonToCellsExperimental
186
+
187
+ Each binding's version of ` polygonToCellsExperimental ` takes as input a
188
+ GeoJSON-like data structure describing a polygon (i.e., an outer ring and
189
+ optional holes) and a target cell resolution.
190
+ It produces a collection of cells that are contained within the polygon.
191
+
192
+ This function differs from ` polygonToCells ` in that it uses an experimental
193
+ new algorithm which supports center-based, fully-contained, and
194
+ overlapping containment modes.
195
+
196
+ <Tabs
197
+ groupId = " language"
198
+ defaultValue = " c"
199
+ values = { [
200
+ {label: ' C' , value: ' c' },
201
+ {label: ' Java' , value: ' java' },
202
+ {label: ' JavaScript (Live)' , value: ' javascript' },
203
+ {label: ' Python' , value: ' python' },
204
+ {label: ' Shell' , value: ' shell' },
205
+ ]
206
+ } >
207
+ <TabItem value = " c" >
208
+
209
+ ``` c
210
+ H3Error polygonToCellsExperimental (const GeoPolygon * geoPolygon, int res, uint32_t flags, int64_t size, H3Index * out);
211
+ ```
212
+
213
+ In C, `polygonToCellsExperimental` takes a `GeoPolygon` struct and preallocated,
214
+ zeroed memory, and fills it with the covering cells.
215
+
216
+ `size` should be the size in number of `H3Index`s of `out`.
217
+
218
+ The valid values for `flags` are:
219
+
220
+ | Enum name | Integer value | Description
221
+ | --------- | ------------- | -----------
222
+ | `CONTAINMENT_CENTER` | 0 | Cell center is contained in the shape
223
+ | `CONTAINMENT_FULL` | 1 | Cell is fully contained in the shape
224
+ | `CONTAINMENT_OVERLAPPING` | 2 | Cell overlaps the shape at any point
225
+ | `CONTAINMENT_OVERLAPPING_BBOX` | 3 | Cell bounding box overlaps shape
226
+
227
+ Returns 0 (`E_SUCCESS`) on success.
228
+
229
+ </TabItem>
230
+ <TabItem value="java">
231
+
232
+ ```java
233
+ List<Long> polygonToCellsExperimental(List<LatLng> points, List<List<LatLng>> holes, PolygonToCellsFlags flags, int res);
234
+ List<String> polygonToCellExperimentalAddresses(List<LatLng> points, List<List<LatLng>> holes, PolygonToCellsFlags flags, int res);
235
+ ```
236
+
237
+ The valid values for ` flags ` are:
238
+
239
+ | Enum name | Description
240
+ | --------- | -----------
241
+ | ` PolygonToCellsFlags.containment_center ` | Cell center is contained in the shape
242
+ | ` PolygonToCellsFlags.containment_full ` | Cell is fully contained in the shape
243
+ | ` PolygonToCellsFlags.containment_overlapping ` | Cell overlaps the shape at any point
244
+ | ` PolygonToCellsFlags.containment_overlapping_bbox ` | Cell bounding box overlaps shape
245
+
246
+ </TabItem >
247
+ <TabItem value = " javascript" >
248
+
249
+ ``` js
250
+ h3 .polygonToCellsExperimental (polygon, res, flags, isGeoJson)
251
+ ```
252
+
253
+ ``` js live
254
+ function example () {
255
+ const polygon = [
256
+ [37.813318999983238 , - 122.4089866999972145 ],
257
+ [37.7198061999978478 , - 122.3544736999993603 ],
258
+ [37.8151571999998453 , - 122.4798767000009008 ]
259
+ ];
260
+ const res = 7 ;
261
+ return h3 .polygonToCellsExperimental (polygon, h3 .POLYGON_TO_CELLS_FLAGS .containmentOverlapping , res);
262
+ }
263
+ ```
264
+
265
+ The valid values for ` flags ` are:
266
+
267
+ | Enum name | Description
268
+ | --------- | -----------
269
+ | ` POLYGON_TO_CELLS_FLAGS.containment_center ` | Cell center is contained in the shape
270
+ | ` POLYGON_TO_CELLS_FLAGS.containment_full ` | Cell is fully contained in the shape
271
+ | ` POLYGON_TO_CELLS_FLAGS.containment_overlapping ` | Cell overlaps the shape at any point
272
+ | ` POLYGON_TO_CELLS_FLAGS.containment_overlapping_bbox ` | Cell bounding box overlaps shape
273
+
274
+ </TabItem >
275
+ <TabItem value = " python" >
276
+
277
+ ``` py
278
+ h3.h3shape_to_cells_experimental(h3shape, res, contain = ' overlap' )
279
+ ```
280
+
281
+ In Python, ` h3shape_to_cells_experimental ` takes an ` H3Shape ` object
282
+ (` LatLngPoly ` or ` LatLngMultiPoly ` ).
283
+ For more info, see the [ ` h3-py ` docs] ( https://uber.github.io/h3-py/api_quick.html#polygon-interface ) .
284
+
285
+ The valid values for ` contain ` are:
286
+
287
+ | String value | Description
288
+ | ------------ | -----------
289
+ | ` center ` | Cell center is contained in the shape (default)
290
+ | ` full ` | Cell is fully contained in the shape
291
+ | ` overlap ` | Cell overlaps the shape at any point
292
+ | ` bbox_overlap ` | Cell bounding box overlaps shape
293
+
294
+ </TabItem >
295
+ <TabItem value = " shell" >
296
+
297
+ This function is not exposed in the CLI bindings.
298
+
299
+ </TabItem >
300
+ </Tabs >
301
+
302
+
303
+ ## maxPolygonToCellsExperimentalSize
304
+
305
+ Provides an upper bound on the number of cells needed for memory allocation
306
+ purposes when computing ` polygonToCellsExperimental ` on the given GeoJSON-like data structure.
307
+
308
+ <Tabs
309
+ groupId = " language"
310
+ defaultValue = " c"
311
+ values = { [
312
+ {label: ' C' , value: ' c' },
313
+ {label: ' Java' , value: ' java' },
314
+ {label: ' JavaScript (Live)' , value: ' javascript' },
315
+ {label: ' Python' , value: ' python' },
316
+ {label: ' Shell' , value: ' shell' },
317
+ ]
318
+ } >
319
+ <TabItem value = " c" >
320
+
321
+ ``` c
322
+ H3Error maxPolygonToCellsExperimentalSize (const GeoPolygon * geoPolygon, int res, uint32_t flags, int64_t * out);
323
+ ```
324
+
325
+ Returns 0 (`E_SUCCESS`) on success.
326
+
327
+ </TabItem>
328
+ <TabItem value="java">
329
+
330
+ :::note
331
+
332
+ This function exists for memory management and is not exposed.
333
+
334
+ :::
335
+
336
+ </TabItem>
337
+ <TabItem value="javascript">
338
+
339
+ :::note
340
+
341
+ This function exists for memory management and is not exposed.
342
+
343
+ :::
344
+
345
+ </TabItem>
346
+ <TabItem value="python">
347
+
348
+ :::note
349
+
350
+ This function exists for memory management and is not exposed.
351
+
352
+ :::
353
+
354
+ </TabItem>
355
+ <TabItem value="shell">
356
+
357
+ This function is not exposed in the CLI bindings.
358
+
359
+ </TabItem>
360
+ </Tabs>
361
+
185
362
186
363
## cellsToLinkedMultiPolygon / cellsToMultiPolygon
187
364
0 commit comments