geo-polygonize 0.34.0 → 0.35.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.
Files changed (71) hide show
  1. package/README.md +68 -18
  2. package/dist/geo_polygonize.wasm +0 -0
  3. package/dist/geo_polygonize_simd.wasm +0 -0
  4. package/dist/slim/cjs/index_slim.d.ts +1 -1
  5. package/dist/slim/cjs/index_slim.js +19 -850
  6. package/dist/slim/es/index_slim.d.ts +1 -1
  7. package/dist/slim/es/index_slim.js +11 -842
  8. package/dist/slim/pkg-scalar/geo_polygonize.d.ts +119 -0
  9. package/dist/slim/pkg-scalar/geo_polygonize_bg.wasm.d.ts +37 -0
  10. package/dist/slim/pkg-wrapper/bindings/ContainmentOptions.d.ts +6 -0
  11. package/dist/slim/pkg-wrapper/bindings/DedupPolicy.d.ts +1 -0
  12. package/dist/slim/pkg-wrapper/bindings/DeterminismOptions.d.ts +5 -0
  13. package/dist/slim/pkg-wrapper/bindings/DiagnosticsOptions.d.ts +4 -0
  14. package/dist/slim/pkg-wrapper/bindings/IndexBackend.d.ts +1 -0
  15. package/dist/slim/pkg-wrapper/bindings/NodingBackend.d.ts +1 -0
  16. package/dist/slim/pkg-wrapper/bindings/NodingOptions.d.ts +6 -0
  17. package/dist/slim/pkg-wrapper/bindings/PolygonizerOptions.d.ts +92 -0
  18. package/dist/slim/pkg-wrapper/bindings/ProvenanceOptions.d.ts +4 -0
  19. package/dist/slim/pkg-wrapper/bindings/SnapMode.d.ts +1 -0
  20. package/dist/slim/pkg-wrapper/bindings/SnapStrategy.d.ts +25 -0
  21. package/dist/slim/pkg-wrapper/bindings/TargetProfile.d.ts +1 -0
  22. package/dist/slim/pkg-wrapper/bindings/TileOwnershipPolicy.d.ts +1 -0
  23. package/dist/slim/pkg-wrapper/bindings/TilingOptions.d.ts +6 -0
  24. package/dist/slim/pkg-wrapper/bindings/TouchPolicy.d.ts +1 -0
  25. package/dist/slim/pkg-wrapper/bindings/ZOptions.d.ts +4 -0
  26. package/dist/slim/pkg-wrapper/bindings/ZPolicy.d.ts +5 -0
  27. package/dist/standard/cjs/index.js +3 -3
  28. package/dist/standard/cjs/index_slim.d.ts +1 -1
  29. package/dist/standard/es/index.js +3 -3
  30. package/dist/standard/es/index_slim.d.ts +1 -1
  31. package/dist/standard/pkg-scalar/geo_polygonize.d.ts +119 -0
  32. package/dist/standard/pkg-scalar/geo_polygonize_bg.wasm.d.ts +37 -0
  33. package/dist/standard/pkg-wrapper/bindings/ContainmentOptions.d.ts +6 -0
  34. package/dist/standard/pkg-wrapper/bindings/DedupPolicy.d.ts +1 -0
  35. package/dist/standard/pkg-wrapper/bindings/DeterminismOptions.d.ts +5 -0
  36. package/dist/standard/pkg-wrapper/bindings/DiagnosticsOptions.d.ts +4 -0
  37. package/dist/standard/pkg-wrapper/bindings/IndexBackend.d.ts +1 -0
  38. package/dist/standard/pkg-wrapper/bindings/NodingBackend.d.ts +1 -0
  39. package/dist/standard/pkg-wrapper/bindings/NodingOptions.d.ts +6 -0
  40. package/dist/standard/pkg-wrapper/bindings/PolygonizerOptions.d.ts +92 -0
  41. package/dist/standard/pkg-wrapper/bindings/ProvenanceOptions.d.ts +4 -0
  42. package/dist/standard/pkg-wrapper/bindings/SnapMode.d.ts +1 -0
  43. package/dist/standard/pkg-wrapper/bindings/SnapStrategy.d.ts +25 -0
  44. package/dist/standard/pkg-wrapper/bindings/TargetProfile.d.ts +1 -0
  45. package/dist/standard/pkg-wrapper/bindings/TileOwnershipPolicy.d.ts +1 -0
  46. package/dist/standard/pkg-wrapper/bindings/TilingOptions.d.ts +6 -0
  47. package/dist/standard/pkg-wrapper/bindings/TouchPolicy.d.ts +1 -0
  48. package/dist/standard/pkg-wrapper/bindings/ZOptions.d.ts +4 -0
  49. package/dist/standard/pkg-wrapper/bindings/ZPolicy.d.ts +5 -0
  50. package/dist/threads/es/index.js +1 -1
  51. package/dist/threads/es/index_slim.d.ts +1 -1
  52. package/dist/threads/pkg-threads/geo_polygonize.d.ts +139 -0
  53. package/dist/threads/pkg-threads/geo_polygonize_bg.wasm.d.ts +44 -0
  54. package/dist/threads/pkg-wrapper/bindings/ContainmentOptions.d.ts +6 -0
  55. package/dist/threads/pkg-wrapper/bindings/DedupPolicy.d.ts +1 -0
  56. package/dist/threads/pkg-wrapper/bindings/DeterminismOptions.d.ts +5 -0
  57. package/dist/threads/pkg-wrapper/bindings/DiagnosticsOptions.d.ts +4 -0
  58. package/dist/threads/pkg-wrapper/bindings/IndexBackend.d.ts +1 -0
  59. package/dist/threads/pkg-wrapper/bindings/NodingBackend.d.ts +1 -0
  60. package/dist/threads/pkg-wrapper/bindings/NodingOptions.d.ts +6 -0
  61. package/dist/threads/pkg-wrapper/bindings/PolygonizerOptions.d.ts +92 -0
  62. package/dist/threads/pkg-wrapper/bindings/ProvenanceOptions.d.ts +4 -0
  63. package/dist/threads/pkg-wrapper/bindings/SnapMode.d.ts +1 -0
  64. package/dist/threads/pkg-wrapper/bindings/SnapStrategy.d.ts +25 -0
  65. package/dist/threads/pkg-wrapper/bindings/TargetProfile.d.ts +1 -0
  66. package/dist/threads/pkg-wrapper/bindings/TileOwnershipPolicy.d.ts +1 -0
  67. package/dist/threads/pkg-wrapper/bindings/TilingOptions.d.ts +6 -0
  68. package/dist/threads/pkg-wrapper/bindings/TouchPolicy.d.ts +1 -0
  69. package/dist/threads/pkg-wrapper/bindings/ZOptions.d.ts +4 -0
  70. package/dist/threads/pkg-wrapper/bindings/ZPolicy.d.ts +5 -0
  71. package/package.json +1 -1
package/README.md CHANGED
@@ -88,11 +88,15 @@ use geo_polygonize_core::arrow_api::{polygonize_arrow, PolygonizerOptions};
88
88
 
89
89
  ### Python
90
90
 
91
- The library provides native Python bindings via PyO3, packaged as `geo-polygonize`.
91
+ The Python package is published as `geo-polygonize-py` and imported as `geo_polygonize`.
92
+
93
+ ```bash
94
+ pip install geo-polygonize-py
95
+ ```
92
96
 
93
97
  ```python
94
98
  import numpy as np
95
- from geo_polygonize import polygonize
99
+ from geo_polygonize import polygonize, import_probe
96
100
 
97
101
  # 1. Using Shapely LineStrings or coordinate lists directly
98
102
  lines = [
@@ -116,8 +120,54 @@ coords = np.array([
116
120
  # The final closing offset is computed implicitly.
117
121
  offsets = np.array([0, 5], dtype=np.uint32)
118
122
 
119
- # Returns a dictionary with 'flat_coords', 'ring_offsets', 'polygon_offsets', etc.
123
+ # Returns a stable dictionary with 'polygons', diagnostics, and provenance.
120
124
  result_dict = polygonize(coords=coords, offsets=offsets)
125
+
126
+ # Native-extension probes are cheap and safe for optional integrations.
127
+ ok, error = import_probe()
128
+ ```
129
+
130
+ CFB/autograder integrations should use the versioned production profile rather
131
+ than assembling caller-side knobs or using legacy `polygonize(..., node=True,
132
+ snap=0.5)` calls:
133
+
134
+ ```python
135
+ from geo_polygonize import cfb_robust_options, polygonize_with_options
136
+
137
+ result = polygonize_with_options(
138
+ coords=coords,
139
+ offsets=offsets,
140
+ options=cfb_robust_options(),
141
+ )
142
+ ```
143
+
144
+ The default return shape is a stable dictionary with `polygons` as
145
+ `SimplePolygon` values. Use `return_polygons=True` only when you want Shapely
146
+ `Polygon` objects.
147
+
148
+ For Shapely parity checks, compare report-mode outputs with the built-in
149
+ mismatch helper:
150
+
151
+ ```python
152
+ from geo_polygonize import explain_mismatch, polygonize_with_options
153
+
154
+ options = cfb_robust_options()
155
+ result_a = polygonize_with_options(coords=coords_a, offsets=offsets_a, options=options)
156
+ result_b = polygonize_with_options(coords=coords_b, offsets=offsets_b, options=options)
157
+ result_a["options"] = options
158
+ result_b["options"] = options
159
+
160
+ mismatch = explain_mismatch(result_a, result_b)
161
+ ```
162
+
163
+ For a minimal Shapely smoke comparison, use area signatures:
164
+
165
+ ```python
166
+ from shapely.ops import polygonize as shapely_polygonize
167
+
168
+ rust_polys = polygonize_with_options(lines=lines, options=cfb_robust_options(), return_polygons=True)
169
+ rust_areas = sorted(round(poly.area, 6) for poly in rust_polys)
170
+ shapely_areas = sorted(round(poly.area, 6) for poly in shapely_polygonize(lines))
121
171
  ```
122
172
 
123
173
  ### WebAssembly (WASM)
@@ -129,8 +179,8 @@ This library supports WebAssembly with an ergonomic dual-build configuration tha
129
179
  npm install geo-polygonize
130
180
  ```
131
181
 
132
- **Standard Usage (Bundlers / Browser):**
133
- The default entry point automatically handles feature detection (SIMD) and lazy-loading of the Wasm binary. The Wasm is inlined as a Base64 Data URI, so no extra bundler configuration is needed.
182
+ **Standard Usage (Quick Demos):**
183
+ The default entry point automatically handles feature detection (SIMD) and lazy-loading of the Wasm binary. The Wasm is inlined as a Base64 Data URI, so no extra bundler configuration is needed. For app builds, prefer the slim entry point below so your bundler keeps the Wasm assets out of the JavaScript chunk.
134
184
 
135
185
  ```javascript
136
186
  import init, { polygonize, polygonize_geoarrow } from "geo-polygonize";
@@ -160,24 +210,24 @@ async function run() {
160
210
  }
161
211
  ```
162
212
 
163
- **Slim Usage (Manual Loading):**
164
- If you prefer to manage the Wasm binary yourself (e.g., to reduce bundle size or load from a CDN), import from `geo-polygonize/slim`.
213
+ **Slim Usage (Apps / Manual Loading):**
214
+ For Vite and other app bundlers, import from `geo-polygonize/slim` and pass explicit Wasm asset URLs.
165
215
 
166
216
  ```javascript
167
- import { initBest, polygonize } from "geo-polygonize/slim";
217
+ import { cfbRobustOptions, initBest } from "geo-polygonize/slim";
218
+ import scalarUrl from "geo-polygonize/geo_polygonize.wasm?url";
219
+ import simdUrl from "geo-polygonize/geo_polygonize_simd.wasm?url";
168
220
 
169
221
  async function run() {
170
- // You must provide the compiled WebAssembly.Module or URL
171
- // You can choose to load the SIMD or Scalar version based on your own detection or availability
172
- const response = await fetch("geo_polygonize.wasm");
173
- const buffer = await response.arrayBuffer();
174
- const module = await WebAssembly.compile(buffer);
175
-
176
- // Helper to initialize the best available implementation
177
- // Pass the module to both arguments if you only have one version
178
- await initBest(module, module);
222
+ const wasm = await initBest(
223
+ { module_or_path: scalarUrl },
224
+ { module_or_path: simdUrl },
225
+ );
179
226
 
180
- // ... use polygonize
227
+ const result = wasm.polygonizeWithOptions(
228
+ JSON.stringify(geojson),
229
+ cfbRobustOptions,
230
+ );
181
231
  }
182
232
  ```
183
233
 
Binary file
Binary file
@@ -17,4 +17,4 @@ export * from "./bindings/TouchPolicy";
17
17
  export * from "./bindings/ZOptions";
18
18
  export * from "./bindings/ZPolicy";
19
19
  export * from "./cfb";
20
- export declare function initBest(scalarModule: any, simdModule: any): Promise<typeof scalarExports>;
20
+ export declare function initBest(scalarModule: any, simdModule?: any): Promise<typeof scalarExports>;