@math.gl/geospatial 5.0.0-alpha.2 → 5.0.0-alpha.20

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 (2520) hide show
  1. package/GEOGRAPHICLIB-LICENSE.txt +27 -0
  2. package/LICENSE +267 -69
  3. package/README.md +17 -0
  4. package/THIRD-PARTY-NOTICES.md +95 -0
  5. package/crs/README.md +84 -0
  6. package/crs/schemas/README.md +9 -0
  7. package/crs/schemas/projjson.schema.json +1174 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +5 -3
  10. package/dist/constants.js.map +1 -1
  11. package/dist/crs/crs-metadata.cjs +67 -0
  12. package/dist/crs/crs-metadata.cjs.map +6 -0
  13. package/dist/crs/crs-metadata.d.ts +43 -0
  14. package/dist/crs/crs-metadata.d.ts.map +1 -0
  15. package/dist/crs/crs-metadata.js +26 -0
  16. package/dist/crs/crs-metadata.js.map +1 -0
  17. package/dist/crs/crs.d.ts +22 -0
  18. package/dist/crs/crs.d.ts.map +1 -0
  19. package/dist/crs/crs.js +5 -0
  20. package/dist/crs/crs.js.map +1 -0
  21. package/dist/crs/index.cjs +916 -0
  22. package/dist/crs/index.cjs.map +6 -0
  23. package/dist/crs/index.d.ts +12 -0
  24. package/dist/crs/index.d.ts.map +1 -0
  25. package/dist/crs/index.js +10 -0
  26. package/dist/crs/index.js.map +1 -0
  27. package/dist/crs/proj-string.cjs +219 -0
  28. package/dist/crs/proj-string.cjs.map +6 -0
  29. package/dist/crs/proj-string.d.ts +32 -0
  30. package/dist/crs/proj-string.d.ts.map +1 -0
  31. package/dist/crs/proj-string.js +204 -0
  32. package/dist/crs/proj-string.js.map +1 -0
  33. package/dist/crs/projjson-schema-constants.d.ts +5 -0
  34. package/dist/crs/projjson-schema-constants.d.ts.map +1 -0
  35. package/dist/crs/projjson-schema-constants.js +8 -0
  36. package/dist/crs/projjson-schema-constants.js.map +1 -0
  37. package/dist/crs/projjson-types.d.ts +557 -0
  38. package/dist/crs/projjson-types.d.ts.map +1 -0
  39. package/dist/crs/projjson-types.js +5 -0
  40. package/dist/crs/projjson-types.js.map +1 -0
  41. package/dist/crs/spatial-reference.cjs +80 -0
  42. package/dist/crs/spatial-reference.cjs.map +6 -0
  43. package/dist/crs/spatial-reference.d.ts +104 -0
  44. package/dist/crs/spatial-reference.d.ts.map +1 -0
  45. package/dist/crs/spatial-reference.js +86 -0
  46. package/dist/crs/spatial-reference.js.map +1 -0
  47. package/dist/crs/units-table.d.ts +4 -0
  48. package/dist/crs/units-table.d.ts.map +1 -0
  49. package/dist/crs/units-table.js +29 -0
  50. package/dist/crs/units-table.js.map +1 -0
  51. package/dist/crs/wkt-crs.cjs +610 -0
  52. package/dist/crs/wkt-crs.cjs.map +6 -0
  53. package/dist/crs/wkt-crs.d.ts +86 -0
  54. package/dist/crs/wkt-crs.d.ts.map +1 -0
  55. package/dist/crs/wkt-crs.js +613 -0
  56. package/dist/crs/wkt-crs.js.map +1 -0
  57. package/dist/discontinuous/air-ocean-mesh.d.ts +15 -0
  58. package/dist/discontinuous/air-ocean-mesh.d.ts.map +1 -0
  59. package/dist/discontinuous/air-ocean-mesh.js +75 -0
  60. package/dist/discontinuous/air-ocean-mesh.js.map +1 -0
  61. package/dist/discontinuous/albers-usa.d.ts +9 -0
  62. package/dist/discontinuous/albers-usa.d.ts.map +1 -0
  63. package/dist/discontinuous/albers-usa.js +105 -0
  64. package/dist/discontinuous/albers-usa.js.map +1 -0
  65. package/dist/discontinuous/cap-map.d.ts +23 -0
  66. package/dist/discontinuous/cap-map.d.ts.map +1 -0
  67. package/dist/discontinuous/cap-map.js +314 -0
  68. package/dist/discontinuous/cap-map.js.map +1 -0
  69. package/dist/discontinuous/elastic/data.d.ts +26 -0
  70. package/dist/discontinuous/elastic/data.d.ts.map +1 -0
  71. package/dist/discontinuous/elastic/data.js +72 -0
  72. package/dist/discontinuous/elastic/data.js.map +1 -0
  73. package/dist/discontinuous/elastic/elasticI.d.ts +3 -0
  74. package/dist/discontinuous/elastic/elasticI.d.ts.map +1 -0
  75. package/dist/discontinuous/elastic/elasticI.js +5233 -0
  76. package/dist/discontinuous/elastic/elasticI.js.map +1 -0
  77. package/dist/discontinuous/elastic/elasticII.d.ts +3 -0
  78. package/dist/discontinuous/elastic/elasticII.d.ts.map +1 -0
  79. package/dist/discontinuous/elastic/elasticII.js +18162 -0
  80. package/dist/discontinuous/elastic/elasticII.js.map +1 -0
  81. package/dist/discontinuous/elastic/elasticIII.d.ts +3 -0
  82. package/dist/discontinuous/elastic/elasticIII.d.ts.map +1 -0
  83. package/dist/discontinuous/elastic/elasticIII.js +29566 -0
  84. package/dist/discontinuous/elastic/elasticIII.js.map +1 -0
  85. package/dist/discontinuous/elastic/geometry.d.ts +22 -0
  86. package/dist/discontinuous/elastic/geometry.d.ts.map +1 -0
  87. package/dist/discontinuous/elastic/geometry.js +131 -0
  88. package/dist/discontinuous/elastic/geometry.js.map +1 -0
  89. package/dist/discontinuous/elastic/grid.d.ts +15 -0
  90. package/dist/discontinuous/elastic/grid.d.ts.map +1 -0
  91. package/dist/discontinuous/elastic/grid.js +177 -0
  92. package/dist/discontinuous/elastic/grid.js.map +1 -0
  93. package/dist/discontinuous/elastic/map.d.ts +8 -0
  94. package/dist/discontinuous/elastic/map.d.ts.map +1 -0
  95. package/dist/discontinuous/elastic/map.js +260 -0
  96. package/dist/discontinuous/elastic/map.js.map +1 -0
  97. package/dist/discontinuous/gray-fuller.d.ts +5 -0
  98. package/dist/discontinuous/gray-fuller.d.ts.map +1 -0
  99. package/dist/discontinuous/gray-fuller.js +36 -0
  100. package/dist/discontinuous/gray-fuller.js.map +1 -0
  101. package/dist/discontinuous/gringorten-kernel.d.ts +5 -0
  102. package/dist/discontinuous/gringorten-kernel.d.ts.map +1 -0
  103. package/dist/discontinuous/gringorten-kernel.js +94 -0
  104. package/dist/discontinuous/gringorten-kernel.js.map +1 -0
  105. package/dist/discontinuous/healpix.d.ts +13 -0
  106. package/dist/discontinuous/healpix.d.ts.map +1 -0
  107. package/dist/discontinuous/healpix.js +61 -0
  108. package/dist/discontinuous/healpix.js.map +1 -0
  109. package/dist/discontinuous/layout.d.ts +72 -0
  110. package/dist/discontinuous/layout.d.ts.map +1 -0
  111. package/dist/discontinuous/layout.js +114 -0
  112. package/dist/discontinuous/layout.js.map +1 -0
  113. package/dist/discontinuous/map-engine.d.ts +197 -0
  114. package/dist/discontinuous/map-engine.d.ts.map +1 -0
  115. package/dist/discontinuous/map-engine.js +356 -0
  116. package/dist/discontinuous/map-engine.js.map +1 -0
  117. package/dist/discontinuous/map-layout.d.ts +93 -0
  118. package/dist/discontinuous/map-layout.d.ts.map +1 -0
  119. package/dist/discontinuous/map-layout.js +490 -0
  120. package/dist/discontinuous/map-layout.js.map +1 -0
  121. package/dist/discontinuous/map-transition.d.ts +42 -0
  122. package/dist/discontinuous/map-transition.d.ts.map +1 -0
  123. package/dist/discontinuous/map-transition.js +283 -0
  124. package/dist/discontinuous/map-transition.js.map +1 -0
  125. package/dist/discontinuous/math.d.ts +19 -0
  126. package/dist/discontinuous/math.d.ts.map +1 -0
  127. package/dist/discontinuous/math.js +65 -0
  128. package/dist/discontinuous/math.js.map +1 -0
  129. package/dist/discontinuous/mercator-map.d.ts +22 -0
  130. package/dist/discontinuous/mercator-map.d.ts.map +1 -0
  131. package/dist/discontinuous/mercator-map.js +130 -0
  132. package/dist/discontinuous/mercator-map.js.map +1 -0
  133. package/dist/discontinuous/myriahedral/graticule.d.ts +6 -0
  134. package/dist/discontinuous/myriahedral/graticule.d.ts.map +1 -0
  135. package/dist/discontinuous/myriahedral/graticule.js +37 -0
  136. package/dist/discontinuous/myriahedral/graticule.js.map +1 -0
  137. package/dist/discontinuous/myriahedral/mesh.d.ts +18 -0
  138. package/dist/discontinuous/myriahedral/mesh.d.ts.map +1 -0
  139. package/dist/discontinuous/myriahedral/mesh.js +131 -0
  140. package/dist/discontinuous/myriahedral/mesh.js.map +1 -0
  141. package/dist/discontinuous/myriahedral/unfold.d.ts +36 -0
  142. package/dist/discontinuous/myriahedral/unfold.d.ts.map +1 -0
  143. package/dist/discontinuous/myriahedral/unfold.js +172 -0
  144. package/dist/discontinuous/myriahedral/unfold.js.map +1 -0
  145. package/dist/discontinuous/myriahedral.d.ts +56 -0
  146. package/dist/discontinuous/myriahedral.d.ts.map +1 -0
  147. package/dist/discontinuous/myriahedral.js +204 -0
  148. package/dist/discontinuous/myriahedral.js.map +1 -0
  149. package/dist/discontinuous/petroff.d.ts +8 -0
  150. package/dist/discontinuous/petroff.d.ts.map +1 -0
  151. package/dist/discontinuous/petroff.js +159 -0
  152. package/dist/discontinuous/petroff.js.map +1 -0
  153. package/dist/discontinuous/polyhedral.d.ts +8 -0
  154. package/dist/discontinuous/polyhedral.d.ts.map +1 -0
  155. package/dist/discontinuous/polyhedral.js +117 -0
  156. package/dist/discontinuous/polyhedral.js.map +1 -0
  157. package/dist/discontinuous/prepare-features.d.ts +78 -0
  158. package/dist/discontinuous/prepare-features.d.ts.map +1 -0
  159. package/dist/discontinuous/prepare-features.js +146 -0
  160. package/dist/discontinuous/prepare-features.js.map +1 -0
  161. package/dist/discontinuous/presets.d.ts +71 -0
  162. package/dist/discontinuous/presets.d.ts.map +1 -0
  163. package/dist/discontinuous/presets.js +372 -0
  164. package/dist/discontinuous/presets.js.map +1 -0
  165. package/dist/discontinuous/projection-catalog.d.ts +33 -0
  166. package/dist/discontinuous/projection-catalog.d.ts.map +1 -0
  167. package/dist/discontinuous/projection-catalog.js +96 -0
  168. package/dist/discontinuous/projection-catalog.js.map +1 -0
  169. package/dist/discontinuous/quincuncial-kernel.d.ts +9 -0
  170. package/dist/discontinuous/quincuncial-kernel.d.ts.map +1 -0
  171. package/dist/discontinuous/quincuncial-kernel.js +139 -0
  172. package/dist/discontinuous/quincuncial-kernel.js.map +1 -0
  173. package/dist/discontinuous/quincuncial-star.d.ts +29 -0
  174. package/dist/discontinuous/quincuncial-star.d.ts.map +1 -0
  175. package/dist/discontinuous/quincuncial-star.js +307 -0
  176. package/dist/discontinuous/quincuncial-star.js.map +1 -0
  177. package/dist/discontinuous/regional-map.d.ts +18 -0
  178. package/dist/discontinuous/regional-map.d.ts.map +1 -0
  179. package/dist/discontinuous/regional-map.js +193 -0
  180. package/dist/discontinuous/regional-map.js.map +1 -0
  181. package/dist/discontinuous/retroazimuthal-map.d.ts +6 -0
  182. package/dist/discontinuous/retroazimuthal-map.d.ts.map +1 -0
  183. package/dist/discontinuous/retroazimuthal-map.js +52 -0
  184. package/dist/discontinuous/retroazimuthal-map.js.map +1 -0
  185. package/dist/discontinuous/rotated-map.d.ts +31 -0
  186. package/dist/discontinuous/rotated-map.d.ts.map +1 -0
  187. package/dist/discontinuous/rotated-map.js +66 -0
  188. package/dist/discontinuous/rotated-map.js.map +1 -0
  189. package/dist/discontinuous/snyder-mesh.d.ts +11 -0
  190. package/dist/discontinuous/snyder-mesh.d.ts.map +1 -0
  191. package/dist/discontinuous/snyder-mesh.js +88 -0
  192. package/dist/discontinuous/snyder-mesh.js.map +1 -0
  193. package/dist/discontinuous/snyder.d.ts +16 -0
  194. package/dist/discontinuous/snyder.d.ts.map +1 -0
  195. package/dist/discontinuous/snyder.js +153 -0
  196. package/dist/discontinuous/snyder.js.map +1 -0
  197. package/dist/discontinuous/spherical-clip/cartesian.d.ts +8 -0
  198. package/dist/discontinuous/spherical-clip/cartesian.d.ts.map +1 -0
  199. package/dist/discontinuous/spherical-clip/cartesian.js +34 -0
  200. package/dist/discontinuous/spherical-clip/cartesian.js.map +1 -0
  201. package/dist/discontinuous/spherical-clip/circle.d.ts +2 -0
  202. package/dist/discontinuous/spherical-clip/circle.d.ts.map +1 -0
  203. package/dist/discontinuous/spherical-clip/circle.js +34 -0
  204. package/dist/discontinuous/spherical-clip/circle.js.map +1 -0
  205. package/dist/discontinuous/spherical-clip/clip-buffer.d.ts +9 -0
  206. package/dist/discontinuous/spherical-clip/clip-buffer.d.ts.map +1 -0
  207. package/dist/discontinuous/spherical-clip/clip-buffer.js +28 -0
  208. package/dist/discontinuous/spherical-clip/clip-buffer.js.map +1 -0
  209. package/dist/discontinuous/spherical-clip/clip-circle.d.ts +9 -0
  210. package/dist/discontinuous/spherical-clip/clip-circle.d.ts.map +1 -0
  211. package/dist/discontinuous/spherical-clip/clip-circle.js +160 -0
  212. package/dist/discontinuous/spherical-clip/clip-circle.js.map +1 -0
  213. package/dist/discontinuous/spherical-clip/clip-index.d.ts +9 -0
  214. package/dist/discontinuous/spherical-clip/clip-index.d.ts.map +1 -0
  215. package/dist/discontinuous/spherical-clip/clip-index.js +117 -0
  216. package/dist/discontinuous/spherical-clip/clip-index.js.map +1 -0
  217. package/dist/discontinuous/spherical-clip/clip-rejoin.d.ts +2 -0
  218. package/dist/discontinuous/spherical-clip/clip-rejoin.d.ts.map +1 -0
  219. package/dist/discontinuous/spherical-clip/clip-rejoin.js +99 -0
  220. package/dist/discontinuous/spherical-clip/clip-rejoin.js.map +1 -0
  221. package/dist/discontinuous/spherical-clip/helpers.d.ts +8 -0
  222. package/dist/discontinuous/spherical-clip/helpers.d.ts.map +1 -0
  223. package/dist/discontinuous/spherical-clip/helpers.js +21 -0
  224. package/dist/discontinuous/spherical-clip/helpers.js.map +1 -0
  225. package/dist/discontinuous/spherical-clip/math.d.ts +26 -0
  226. package/dist/discontinuous/spherical-clip/math.d.ts.map +1 -0
  227. package/dist/discontinuous/spherical-clip/math.js +39 -0
  228. package/dist/discontinuous/spherical-clip/math.js.map +1 -0
  229. package/dist/discontinuous/spherical-clip/noop.d.ts +2 -0
  230. package/dist/discontinuous/spherical-clip/noop.d.ts.map +1 -0
  231. package/dist/discontinuous/spherical-clip/noop.js +6 -0
  232. package/dist/discontinuous/spherical-clip/noop.js.map +1 -0
  233. package/dist/discontinuous/spherical-clip/pointEqual.d.ts +2 -0
  234. package/dist/discontinuous/spherical-clip/pointEqual.d.ts.map +1 -0
  235. package/dist/discontinuous/spherical-clip/pointEqual.js +9 -0
  236. package/dist/discontinuous/spherical-clip/pointEqual.js.map +1 -0
  237. package/dist/discontinuous/spherical-clip/polygonContains.d.ts +2 -0
  238. package/dist/discontinuous/spherical-clip/polygonContains.d.ts.map +1 -0
  239. package/dist/discontinuous/spherical-clip/polygonContains.js +52 -0
  240. package/dist/discontinuous/spherical-clip/polygonContains.js.map +1 -0
  241. package/dist/discontinuous/world-composite-kernels.d.ts +11 -0
  242. package/dist/discontinuous/world-composite-kernels.d.ts.map +1 -0
  243. package/dist/discontinuous/world-composite-kernels.js +30 -0
  244. package/dist/discontinuous/world-composite-kernels.js.map +1 -0
  245. package/dist/discontinuous/world-kernels/airy.d.ts +5 -0
  246. package/dist/discontinuous/world-kernels/airy.d.ts.map +1 -0
  247. package/dist/discontinuous/world-kernels/airy.js +28 -0
  248. package/dist/discontinuous/world-kernels/airy.js.map +1 -0
  249. package/dist/discontinuous/world-kernels/aitoff.d.ts +5 -0
  250. package/dist/discontinuous/world-kernels/aitoff.d.ts.map +1 -0
  251. package/dist/discontinuous/world-kernels/aitoff.js +26 -0
  252. package/dist/discontinuous/world-kernels/aitoff.js.map +1 -0
  253. package/dist/discontinuous/world-kernels/armadillo.d.ts +5 -0
  254. package/dist/discontinuous/world-kernels/armadillo.d.ts.map +1 -0
  255. package/dist/discontinuous/world-kernels/armadillo.js +28 -0
  256. package/dist/discontinuous/world-kernels/armadillo.js.map +1 -0
  257. package/dist/discontinuous/world-kernels/august.d.ts +5 -0
  258. package/dist/discontinuous/world-kernels/august.d.ts.map +1 -0
  259. package/dist/discontinuous/world-kernels/august.js +21 -0
  260. package/dist/discontinuous/world-kernels/august.js.map +1 -0
  261. package/dist/discontinuous/world-kernels/baker.d.ts +5 -0
  262. package/dist/discontinuous/world-kernels/baker.d.ts.map +1 -0
  263. package/dist/discontinuous/world-kernels/baker.js +29 -0
  264. package/dist/discontinuous/world-kernels/baker.js.map +1 -0
  265. package/dist/discontinuous/world-kernels/bertin.d.ts +5 -0
  266. package/dist/discontinuous/world-kernels/bertin.d.ts.map +1 -0
  267. package/dist/discontinuous/world-kernels/bertin.js +32 -0
  268. package/dist/discontinuous/world-kernels/bertin.js.map +1 -0
  269. package/dist/discontinuous/world-kernels/boggs.d.ts +5 -0
  270. package/dist/discontinuous/world-kernels/boggs.d.ts.map +1 -0
  271. package/dist/discontinuous/world-kernels/boggs.js +24 -0
  272. package/dist/discontinuous/world-kernels/boggs.js.map +1 -0
  273. package/dist/discontinuous/world-kernels/bonne.d.ts +3 -0
  274. package/dist/discontinuous/world-kernels/bonne.d.ts.map +1 -0
  275. package/dist/discontinuous/world-kernels/bonne.js +22 -0
  276. package/dist/discontinuous/world-kernels/bonne.js.map +1 -0
  277. package/dist/discontinuous/world-kernels/bottomley.d.ts +5 -0
  278. package/dist/discontinuous/world-kernels/bottomley.d.ts.map +1 -0
  279. package/dist/discontinuous/world-kernels/bottomley.js +18 -0
  280. package/dist/discontinuous/world-kernels/bottomley.js.map +1 -0
  281. package/dist/discontinuous/world-kernels/bromley.d.ts +5 -0
  282. package/dist/discontinuous/world-kernels/bromley.d.ts.map +1 -0
  283. package/dist/discontinuous/world-kernels/bromley.js +9 -0
  284. package/dist/discontinuous/world-kernels/bromley.js.map +1 -0
  285. package/dist/discontinuous/world-kernels/chamberlin.d.ts +2 -0
  286. package/dist/discontinuous/world-kernels/chamberlin.d.ts.map +1 -0
  287. package/dist/discontinuous/world-kernels/chamberlin.js +81 -0
  288. package/dist/discontinuous/world-kernels/chamberlin.js.map +1 -0
  289. package/dist/discontinuous/world-kernels/collignon.d.ts +5 -0
  290. package/dist/discontinuous/world-kernels/collignon.d.ts.map +1 -0
  291. package/dist/discontinuous/world-kernels/collignon.js +15 -0
  292. package/dist/discontinuous/world-kernels/collignon.js.map +1 -0
  293. package/dist/discontinuous/world-kernels/craig.d.ts +5 -0
  294. package/dist/discontinuous/world-kernels/craig.d.ts.map +1 -0
  295. package/dist/discontinuous/world-kernels/craig.js +30 -0
  296. package/dist/discontinuous/world-kernels/craig.js.map +1 -0
  297. package/dist/discontinuous/world-kernels/craster.d.ts +5 -0
  298. package/dist/discontinuous/world-kernels/craster.d.ts.map +1 -0
  299. package/dist/discontinuous/world-kernels/craster.js +15 -0
  300. package/dist/discontinuous/world-kernels/craster.js.map +1 -0
  301. package/dist/discontinuous/world-kernels/cylindricalEqualArea.d.ts +5 -0
  302. package/dist/discontinuous/world-kernels/cylindricalEqualArea.d.ts.map +1 -0
  303. package/dist/discontinuous/world-kernels/cylindricalEqualArea.js +17 -0
  304. package/dist/discontinuous/world-kernels/cylindricalEqualArea.js.map +1 -0
  305. package/dist/discontinuous/world-kernels/cylindricalStereographic.d.ts +5 -0
  306. package/dist/discontinuous/world-kernels/cylindricalStereographic.d.ts.map +1 -0
  307. package/dist/discontinuous/world-kernels/cylindricalStereographic.js +17 -0
  308. package/dist/discontinuous/world-kernels/cylindricalStereographic.js.map +1 -0
  309. package/dist/discontinuous/world-kernels/d3-geo-raw.d.ts +9 -0
  310. package/dist/discontinuous/world-kernels/d3-geo-raw.d.ts.map +1 -0
  311. package/dist/discontinuous/world-kernels/d3-geo-raw.js +21 -0
  312. package/dist/discontinuous/world-kernels/d3-geo-raw.js.map +1 -0
  313. package/dist/discontinuous/world-kernels/eckert1.d.ts +5 -0
  314. package/dist/discontinuous/world-kernels/eckert1.d.ts.map +1 -0
  315. package/dist/discontinuous/world-kernels/eckert1.js +15 -0
  316. package/dist/discontinuous/world-kernels/eckert1.js.map +1 -0
  317. package/dist/discontinuous/world-kernels/eckert2.d.ts +5 -0
  318. package/dist/discontinuous/world-kernels/eckert2.d.ts.map +1 -0
  319. package/dist/discontinuous/world-kernels/eckert2.js +15 -0
  320. package/dist/discontinuous/world-kernels/eckert2.js.map +1 -0
  321. package/dist/discontinuous/world-kernels/eckert3.d.ts +5 -0
  322. package/dist/discontinuous/world-kernels/eckert3.d.ts.map +1 -0
  323. package/dist/discontinuous/world-kernels/eckert3.js +15 -0
  324. package/dist/discontinuous/world-kernels/eckert3.js.map +1 -0
  325. package/dist/discontinuous/world-kernels/eckert4.d.ts +5 -0
  326. package/dist/discontinuous/world-kernels/eckert4.d.ts.map +1 -0
  327. package/dist/discontinuous/world-kernels/eckert4.js +20 -0
  328. package/dist/discontinuous/world-kernels/eckert4.js.map +1 -0
  329. package/dist/discontinuous/world-kernels/eckert5.d.ts +5 -0
  330. package/dist/discontinuous/world-kernels/eckert5.d.ts.map +1 -0
  331. package/dist/discontinuous/world-kernels/eckert5.js +14 -0
  332. package/dist/discontinuous/world-kernels/eckert5.js.map +1 -0
  333. package/dist/discontinuous/world-kernels/eckert6.d.ts +5 -0
  334. package/dist/discontinuous/world-kernels/eckert6.d.ts.map +1 -0
  335. package/dist/discontinuous/world-kernels/eckert6.js +19 -0
  336. package/dist/discontinuous/world-kernels/eckert6.js.map +1 -0
  337. package/dist/discontinuous/world-kernels/eisenlohr.d.ts +5 -0
  338. package/dist/discontinuous/world-kernels/eisenlohr.d.ts.map +1 -0
  339. package/dist/discontinuous/world-kernels/eisenlohr.js +41 -0
  340. package/dist/discontinuous/world-kernels/eisenlohr.js.map +1 -0
  341. package/dist/discontinuous/world-kernels/fahey.d.ts +5 -0
  342. package/dist/discontinuous/world-kernels/fahey.d.ts.map +1 -0
  343. package/dist/discontinuous/world-kernels/fahey.js +16 -0
  344. package/dist/discontinuous/world-kernels/fahey.js.map +1 -0
  345. package/dist/discontinuous/world-kernels/foucaut.d.ts +5 -0
  346. package/dist/discontinuous/world-kernels/foucaut.d.ts.map +1 -0
  347. package/dist/discontinuous/world-kernels/foucaut.js +15 -0
  348. package/dist/discontinuous/world-kernels/foucaut.js.map +1 -0
  349. package/dist/discontinuous/world-kernels/foucautSinusoidal.d.ts +5 -0
  350. package/dist/discontinuous/world-kernels/foucautSinusoidal.d.ts.map +1 -0
  351. package/dist/discontinuous/world-kernels/foucautSinusoidal.js +27 -0
  352. package/dist/discontinuous/world-kernels/foucautSinusoidal.js.map +1 -0
  353. package/dist/discontinuous/world-kernels/ginzburg4.d.ts +5 -0
  354. package/dist/discontinuous/world-kernels/ginzburg4.d.ts.map +1 -0
  355. package/dist/discontinuous/world-kernels/ginzburg4.js +8 -0
  356. package/dist/discontinuous/world-kernels/ginzburg4.js.map +1 -0
  357. package/dist/discontinuous/world-kernels/ginzburg5.d.ts +5 -0
  358. package/dist/discontinuous/world-kernels/ginzburg5.d.ts.map +1 -0
  359. package/dist/discontinuous/world-kernels/ginzburg5.js +8 -0
  360. package/dist/discontinuous/world-kernels/ginzburg5.js.map +1 -0
  361. package/dist/discontinuous/world-kernels/ginzburg6.d.ts +5 -0
  362. package/dist/discontinuous/world-kernels/ginzburg6.d.ts.map +1 -0
  363. package/dist/discontinuous/world-kernels/ginzburg6.js +9 -0
  364. package/dist/discontinuous/world-kernels/ginzburg6.js.map +1 -0
  365. package/dist/discontinuous/world-kernels/ginzburg8.d.ts +5 -0
  366. package/dist/discontinuous/world-kernels/ginzburg8.d.ts.map +1 -0
  367. package/dist/discontinuous/world-kernels/ginzburg8.js +28 -0
  368. package/dist/discontinuous/world-kernels/ginzburg8.js.map +1 -0
  369. package/dist/discontinuous/world-kernels/ginzburg9.d.ts +5 -0
  370. package/dist/discontinuous/world-kernels/ginzburg9.d.ts.map +1 -0
  371. package/dist/discontinuous/world-kernels/ginzburg9.js +8 -0
  372. package/dist/discontinuous/world-kernels/ginzburg9.js.map +1 -0
  373. package/dist/discontinuous/world-kernels/ginzburgPolyconic.d.ts +5 -0
  374. package/dist/discontinuous/world-kernels/ginzburgPolyconic.d.ts.map +1 -0
  375. package/dist/discontinuous/world-kernels/ginzburgPolyconic.js +29 -0
  376. package/dist/discontinuous/world-kernels/ginzburgPolyconic.js.map +1 -0
  377. package/dist/discontinuous/world-kernels/hammer.d.ts +3 -0
  378. package/dist/discontinuous/world-kernels/hammer.d.ts.map +1 -0
  379. package/dist/discontinuous/world-kernels/hammer.js +34 -0
  380. package/dist/discontinuous/world-kernels/hammer.js.map +1 -0
  381. package/dist/discontinuous/world-kernels/hammerRetroazimuthal.d.ts +5 -0
  382. package/dist/discontinuous/world-kernels/hammerRetroazimuthal.d.ts.map +1 -0
  383. package/dist/discontinuous/world-kernels/hammerRetroazimuthal.js +37 -0
  384. package/dist/discontinuous/world-kernels/hammerRetroazimuthal.js.map +1 -0
  385. package/dist/discontinuous/world-kernels/hill.d.ts +5 -0
  386. package/dist/discontinuous/world-kernels/hill.d.ts.map +1 -0
  387. package/dist/discontinuous/world-kernels/hill.js +36 -0
  388. package/dist/discontinuous/world-kernels/hill.js.map +1 -0
  389. package/dist/discontinuous/world-kernels/homolosine.d.ts +5 -0
  390. package/dist/discontinuous/world-kernels/homolosine.d.ts.map +1 -0
  391. package/dist/discontinuous/world-kernels/homolosine.js +22 -0
  392. package/dist/discontinuous/world-kernels/homolosine.js.map +1 -0
  393. package/dist/discontinuous/world-kernels/hufnagel.d.ts +5 -0
  394. package/dist/discontinuous/world-kernels/hufnagel.d.ts.map +1 -0
  395. package/dist/discontinuous/world-kernels/hufnagel.js +53 -0
  396. package/dist/discontinuous/world-kernels/hufnagel.js.map +1 -0
  397. package/dist/discontinuous/world-kernels/hyperelliptical.d.ts +5 -0
  398. package/dist/discontinuous/world-kernels/hyperelliptical.d.ts.map +1 -0
  399. package/dist/discontinuous/world-kernels/hyperelliptical.js +47 -0
  400. package/dist/discontinuous/world-kernels/hyperelliptical.js.map +1 -0
  401. package/dist/discontinuous/world-kernels/integrate.d.ts +2 -0
  402. package/dist/discontinuous/world-kernels/integrate.d.ts.map +1 -0
  403. package/dist/discontinuous/world-kernels/integrate.js +82 -0
  404. package/dist/discontinuous/world-kernels/integrate.js.map +1 -0
  405. package/dist/discontinuous/world-kernels/kavrayskiy7.d.ts +5 -0
  406. package/dist/discontinuous/world-kernels/kavrayskiy7.d.ts.map +1 -0
  407. package/dist/discontinuous/world-kernels/kavrayskiy7.js +13 -0
  408. package/dist/discontinuous/world-kernels/kavrayskiy7.js.map +1 -0
  409. package/dist/discontinuous/world-kernels/lagrange.d.ts +5 -0
  410. package/dist/discontinuous/world-kernels/lagrange.d.ts.map +1 -0
  411. package/dist/discontinuous/world-kernels/lagrange.js +27 -0
  412. package/dist/discontinuous/world-kernels/lagrange.js.map +1 -0
  413. package/dist/discontinuous/world-kernels/larrivee.d.ts +5 -0
  414. package/dist/discontinuous/world-kernels/larrivee.d.ts.map +1 -0
  415. package/dist/discontinuous/world-kernels/larrivee.js +26 -0
  416. package/dist/discontinuous/world-kernels/larrivee.js.map +1 -0
  417. package/dist/discontinuous/world-kernels/laskowski.d.ts +5 -0
  418. package/dist/discontinuous/world-kernels/laskowski.d.ts.map +1 -0
  419. package/dist/discontinuous/world-kernels/laskowski.js +31 -0
  420. package/dist/discontinuous/world-kernels/laskowski.js.map +1 -0
  421. package/dist/discontinuous/world-kernels/littrow.d.ts +5 -0
  422. package/dist/discontinuous/world-kernels/littrow.d.ts.map +1 -0
  423. package/dist/discontinuous/world-kernels/littrow.js +13 -0
  424. package/dist/discontinuous/world-kernels/littrow.js.map +1 -0
  425. package/dist/discontinuous/world-kernels/loximuthal.d.ts +5 -0
  426. package/dist/discontinuous/world-kernels/loximuthal.d.ts.map +1 -0
  427. package/dist/discontinuous/world-kernels/loximuthal.js +30 -0
  428. package/dist/discontinuous/world-kernels/loximuthal.js.map +1 -0
  429. package/dist/discontinuous/world-kernels/math.d.ts +36 -0
  430. package/dist/discontinuous/world-kernels/math.d.ts.map +1 -0
  431. package/dist/discontinuous/world-kernels/math.js +63 -0
  432. package/dist/discontinuous/world-kernels/math.js.map +1 -0
  433. package/dist/discontinuous/world-kernels/miller.d.ts +5 -0
  434. package/dist/discontinuous/world-kernels/miller.d.ts.map +1 -0
  435. package/dist/discontinuous/world-kernels/miller.js +13 -0
  436. package/dist/discontinuous/world-kernels/miller.js.map +1 -0
  437. package/dist/discontinuous/world-kernels/modifiedStereographic.d.ts +18 -0
  438. package/dist/discontinuous/world-kernels/modifiedStereographic.d.ts.map +1 -0
  439. package/dist/discontinuous/world-kernels/modifiedStereographic.js +79 -0
  440. package/dist/discontinuous/world-kernels/modifiedStereographic.js.map +1 -0
  441. package/dist/discontinuous/world-kernels/mollweide.d.ts +10 -0
  442. package/dist/discontinuous/world-kernels/mollweide.d.ts.map +1 -0
  443. package/dist/discontinuous/world-kernels/mollweide.js +24 -0
  444. package/dist/discontinuous/world-kernels/mollweide.js.map +1 -0
  445. package/dist/discontinuous/world-kernels/mtFlatPolarParabolic.d.ts +5 -0
  446. package/dist/discontinuous/world-kernels/mtFlatPolarParabolic.d.ts.map +1 -0
  447. package/dist/discontinuous/world-kernels/mtFlatPolarParabolic.js +19 -0
  448. package/dist/discontinuous/world-kernels/mtFlatPolarParabolic.js.map +1 -0
  449. package/dist/discontinuous/world-kernels/mtFlatPolarQuartic.d.ts +5 -0
  450. package/dist/discontinuous/world-kernels/mtFlatPolarQuartic.d.ts.map +1 -0
  451. package/dist/discontinuous/world-kernels/mtFlatPolarQuartic.js +26 -0
  452. package/dist/discontinuous/world-kernels/mtFlatPolarQuartic.js.map +1 -0
  453. package/dist/discontinuous/world-kernels/mtFlatPolarSinusoidal.d.ts +5 -0
  454. package/dist/discontinuous/world-kernels/mtFlatPolarSinusoidal.d.ts.map +1 -0
  455. package/dist/discontinuous/world-kernels/mtFlatPolarSinusoidal.js +22 -0
  456. package/dist/discontinuous/world-kernels/mtFlatPolarSinusoidal.js.map +1 -0
  457. package/dist/discontinuous/world-kernels/naturalEarth2.d.ts +5 -0
  458. package/dist/discontinuous/world-kernels/naturalEarth2.d.ts.map +1 -0
  459. package/dist/discontinuous/world-kernels/naturalEarth2.js +37 -0
  460. package/dist/discontinuous/world-kernels/naturalEarth2.js.map +1 -0
  461. package/dist/discontinuous/world-kernels/nellHammer.d.ts +5 -0
  462. package/dist/discontinuous/world-kernels/nellHammer.d.ts.map +1 -0
  463. package/dist/discontinuous/world-kernels/nellHammer.js +18 -0
  464. package/dist/discontinuous/world-kernels/nellHammer.js.map +1 -0
  465. package/dist/discontinuous/world-kernels/newton.d.ts +3 -0
  466. package/dist/discontinuous/world-kernels/newton.d.ts.map +1 -0
  467. package/dist/discontinuous/world-kernels/newton.js +65 -0
  468. package/dist/discontinuous/world-kernels/newton.js.map +1 -0
  469. package/dist/discontinuous/world-kernels/nicolosi.d.ts +5 -0
  470. package/dist/discontinuous/world-kernels/nicolosi.d.ts.map +1 -0
  471. package/dist/discontinuous/world-kernels/nicolosi.js +38 -0
  472. package/dist/discontinuous/world-kernels/nicolosi.js.map +1 -0
  473. package/dist/discontinuous/world-kernels/patterson.d.ts +5 -0
  474. package/dist/discontinuous/world-kernels/patterson.d.ts.map +1 -0
  475. package/dist/discontinuous/world-kernels/patterson.js +32 -0
  476. package/dist/discontinuous/world-kernels/patterson.js.map +1 -0
  477. package/dist/discontinuous/world-kernels/polyconic.d.ts +5 -0
  478. package/dist/discontinuous/world-kernels/polyconic.d.ts.map +1 -0
  479. package/dist/discontinuous/world-kernels/polyconic.js +30 -0
  480. package/dist/discontinuous/world-kernels/polyconic.js.map +1 -0
  481. package/dist/discontinuous/world-kernels/rectangularPolyconic.d.ts +5 -0
  482. package/dist/discontinuous/world-kernels/rectangularPolyconic.d.ts.map +1 -0
  483. package/dist/discontinuous/world-kernels/rectangularPolyconic.js +31 -0
  484. package/dist/discontinuous/world-kernels/rectangularPolyconic.js.map +1 -0
  485. package/dist/discontinuous/world-kernels/robinson.d.ts +5 -0
  486. package/dist/discontinuous/world-kernels/robinson.d.ts.map +1 -0
  487. package/dist/discontinuous/world-kernels/robinson.js +63 -0
  488. package/dist/discontinuous/world-kernels/robinson.js.map +1 -0
  489. package/dist/discontinuous/world-kernels/satellite.d.ts +5 -0
  490. package/dist/discontinuous/world-kernels/satellite.d.ts.map +1 -0
  491. package/dist/discontinuous/world-kernels/satellite.js +32 -0
  492. package/dist/discontinuous/world-kernels/satellite.js.map +1 -0
  493. package/dist/discontinuous/world-kernels/sinuMollweide.d.ts +7 -0
  494. package/dist/discontinuous/world-kernels/sinuMollweide.d.ts.map +1 -0
  495. package/dist/discontinuous/world-kernels/sinuMollweide.js +20 -0
  496. package/dist/discontinuous/world-kernels/sinuMollweide.js.map +1 -0
  497. package/dist/discontinuous/world-kernels/sinusoidal.d.ts +5 -0
  498. package/dist/discontinuous/world-kernels/sinusoidal.d.ts.map +1 -0
  499. package/dist/discontinuous/world-kernels/sinusoidal.js +13 -0
  500. package/dist/discontinuous/world-kernels/sinusoidal.js.map +1 -0
  501. package/dist/discontinuous/world-kernels/times.d.ts +5 -0
  502. package/dist/discontinuous/world-kernels/times.d.ts.map +1 -0
  503. package/dist/discontinuous/world-kernels/times.js +15 -0
  504. package/dist/discontinuous/world-kernels/times.js.map +1 -0
  505. package/dist/discontinuous/world-kernels/twoPointEquidistant.d.ts +3 -0
  506. package/dist/discontinuous/world-kernels/twoPointEquidistant.d.ts.map +1 -0
  507. package/dist/discontinuous/world-kernels/twoPointEquidistant.js +28 -0
  508. package/dist/discontinuous/world-kernels/twoPointEquidistant.js.map +1 -0
  509. package/dist/discontinuous/world-kernels/vanDerGrinten.d.ts +5 -0
  510. package/dist/discontinuous/world-kernels/vanDerGrinten.d.ts.map +1 -0
  511. package/dist/discontinuous/world-kernels/vanDerGrinten.js +30 -0
  512. package/dist/discontinuous/world-kernels/vanDerGrinten.js.map +1 -0
  513. package/dist/discontinuous/world-kernels/vanDerGrinten2.d.ts +5 -0
  514. package/dist/discontinuous/world-kernels/vanDerGrinten2.d.ts.map +1 -0
  515. package/dist/discontinuous/world-kernels/vanDerGrinten2.js +25 -0
  516. package/dist/discontinuous/world-kernels/vanDerGrinten2.js.map +1 -0
  517. package/dist/discontinuous/world-kernels/vanDerGrinten3.d.ts +5 -0
  518. package/dist/discontinuous/world-kernels/vanDerGrinten3.d.ts.map +1 -0
  519. package/dist/discontinuous/world-kernels/vanDerGrinten3.js +22 -0
  520. package/dist/discontinuous/world-kernels/vanDerGrinten3.js.map +1 -0
  521. package/dist/discontinuous/world-kernels/vanDerGrinten4.d.ts +5 -0
  522. package/dist/discontinuous/world-kernels/vanDerGrinten4.d.ts.map +1 -0
  523. package/dist/discontinuous/world-kernels/vanDerGrinten4.js +38 -0
  524. package/dist/discontinuous/world-kernels/vanDerGrinten4.js.map +1 -0
  525. package/dist/discontinuous/world-kernels/wagner.d.ts +5 -0
  526. package/dist/discontinuous/world-kernels/wagner.d.ts.map +1 -0
  527. package/dist/discontinuous/world-kernels/wagner.js +44 -0
  528. package/dist/discontinuous/world-kernels/wagner.js.map +1 -0
  529. package/dist/discontinuous/world-kernels/wagner4.d.ts +5 -0
  530. package/dist/discontinuous/world-kernels/wagner4.d.ts.map +1 -0
  531. package/dist/discontinuous/world-kernels/wagner4.js +10 -0
  532. package/dist/discontinuous/world-kernels/wagner4.js.map +1 -0
  533. package/dist/discontinuous/world-kernels/wagner6.d.ts +5 -0
  534. package/dist/discontinuous/world-kernels/wagner6.d.ts.map +1 -0
  535. package/dist/discontinuous/world-kernels/wagner6.js +13 -0
  536. package/dist/discontinuous/world-kernels/wagner6.js.map +1 -0
  537. package/dist/discontinuous/world-kernels/wiechel.d.ts +5 -0
  538. package/dist/discontinuous/world-kernels/wiechel.d.ts.map +1 -0
  539. package/dist/discontinuous/world-kernels/wiechel.js +15 -0
  540. package/dist/discontinuous/world-kernels/wiechel.js.map +1 -0
  541. package/dist/discontinuous/world-kernels/winkel3.d.ts +5 -0
  542. package/dist/discontinuous/world-kernels/winkel3.d.ts.map +1 -0
  543. package/dist/discontinuous/world-kernels/winkel3.js +20 -0
  544. package/dist/discontinuous/world-kernels/winkel3.js.map +1 -0
  545. package/dist/discontinuous/world-kernels.d.ts +150 -0
  546. package/dist/discontinuous/world-kernels.d.ts.map +1 -0
  547. package/dist/discontinuous/world-kernels.js +215 -0
  548. package/dist/discontinuous/world-kernels.js.map +1 -0
  549. package/dist/discontinuous/world-map.d.ts +25 -0
  550. package/dist/discontinuous/world-map.d.ts.map +1 -0
  551. package/dist/discontinuous/world-map.js +187 -0
  552. package/dist/discontinuous/world-map.js.map +1 -0
  553. package/dist/discontinuous.cjs +7037 -0
  554. package/dist/discontinuous.cjs.map +6 -0
  555. package/dist/discontinuous.d.ts +50 -0
  556. package/dist/discontinuous.d.ts.map +1 -0
  557. package/dist/discontinuous.js +35 -0
  558. package/dist/discontinuous.js.map +1 -0
  559. package/dist/elastic.cjs +52991 -0
  560. package/dist/elastic.cjs.map +6 -0
  561. package/dist/elastic.d.ts +5 -0
  562. package/dist/elastic.d.ts.map +1 -0
  563. package/dist/elastic.js +8 -0
  564. package/dist/elastic.js.map +1 -0
  565. package/dist/ellipsoid-geodesic.d.ts +62 -0
  566. package/dist/ellipsoid-geodesic.d.ts.map +1 -0
  567. package/dist/ellipsoid-geodesic.js +69 -0
  568. package/dist/ellipsoid-geodesic.js.map +1 -0
  569. package/dist/ellipsoid-helpers/ellipsoid-transform.d.ts +1 -1
  570. package/dist/ellipsoid-helpers/ellipsoid-transform.d.ts.map +1 -1
  571. package/dist/ellipsoid-helpers/ellipsoid-transform.js +59 -18
  572. package/dist/ellipsoid-helpers/ellipsoid-transform.js.map +1 -1
  573. package/dist/ellipsoid-helpers/exact-nearest-surface.d.ts +16 -0
  574. package/dist/ellipsoid-helpers/exact-nearest-surface.d.ts.map +1 -0
  575. package/dist/ellipsoid-helpers/exact-nearest-surface.js +108 -0
  576. package/dist/ellipsoid-helpers/exact-nearest-surface.js.map +1 -0
  577. package/dist/ellipsoid-helpers/intersection-bounds.d.ts +18 -0
  578. package/dist/ellipsoid-helpers/intersection-bounds.d.ts.map +1 -0
  579. package/dist/ellipsoid-helpers/intersection-bounds.js +60 -0
  580. package/dist/ellipsoid-helpers/intersection-bounds.js.map +1 -0
  581. package/dist/ellipsoid-helpers/nearest-surface.d.ts +12 -0
  582. package/dist/ellipsoid-helpers/nearest-surface.d.ts.map +1 -0
  583. package/dist/ellipsoid-helpers/nearest-surface.js +127 -0
  584. package/dist/ellipsoid-helpers/nearest-surface.js.map +1 -0
  585. package/dist/ellipsoid-helpers/rhumb-pole-distance.d.ts +3 -0
  586. package/dist/ellipsoid-helpers/rhumb-pole-distance.d.ts.map +1 -0
  587. package/dist/ellipsoid-helpers/rhumb-pole-distance.js +63 -0
  588. package/dist/ellipsoid-helpers/rhumb-pole-distance.js.map +1 -0
  589. package/dist/ellipsoid-helpers/scale-to-geodetic-surface.d.ts +2 -0
  590. package/dist/ellipsoid-helpers/scale-to-geodetic-surface.d.ts.map +1 -1
  591. package/dist/ellipsoid-helpers/scale-to-geodetic-surface.js +32 -63
  592. package/dist/ellipsoid-helpers/scale-to-geodetic-surface.js.map +1 -1
  593. package/dist/ellipsoid-helpers/surface-polygon.d.ts +65 -0
  594. package/dist/ellipsoid-helpers/surface-polygon.d.ts.map +1 -0
  595. package/dist/ellipsoid-helpers/surface-polygon.js +159 -0
  596. package/dist/ellipsoid-helpers/surface-polygon.js.map +1 -0
  597. package/dist/ellipsoid-helpers/tangent-plane-numerics.d.ts +7 -0
  598. package/dist/ellipsoid-helpers/tangent-plane-numerics.d.ts.map +1 -0
  599. package/dist/ellipsoid-helpers/tangent-plane-numerics.js +88 -0
  600. package/dist/ellipsoid-helpers/tangent-plane-numerics.js.map +1 -0
  601. package/dist/ellipsoid-metrics.d.ts +31 -0
  602. package/dist/ellipsoid-metrics.d.ts.map +1 -0
  603. package/dist/ellipsoid-metrics.js +186 -0
  604. package/dist/ellipsoid-metrics.js.map +1 -0
  605. package/dist/ellipsoid-occluder.d.ts +28 -0
  606. package/dist/ellipsoid-occluder.d.ts.map +1 -0
  607. package/dist/ellipsoid-occluder.js +112 -0
  608. package/dist/ellipsoid-occluder.js.map +1 -0
  609. package/dist/ellipsoid-rhumb.d.ts +52 -0
  610. package/dist/ellipsoid-rhumb.d.ts.map +1 -0
  611. package/dist/ellipsoid-rhumb.js +321 -0
  612. package/dist/ellipsoid-rhumb.js.map +1 -0
  613. package/dist/ellipsoid-tangent-plane.d.ts +30 -8
  614. package/dist/ellipsoid-tangent-plane.d.ts.map +1 -1
  615. package/dist/ellipsoid-tangent-plane.js +181 -31
  616. package/dist/ellipsoid-tangent-plane.js.map +1 -1
  617. package/dist/ellipsoid-transforms.d.ts +12 -0
  618. package/dist/ellipsoid-transforms.d.ts.map +1 -0
  619. package/dist/ellipsoid-transforms.js +15 -0
  620. package/dist/ellipsoid-transforms.js.map +1 -0
  621. package/dist/ellipsoid.d.ts +13 -12
  622. package/dist/ellipsoid.d.ts.map +1 -1
  623. package/dist/ellipsoid.js +230 -66
  624. package/dist/ellipsoid.js.map +1 -1
  625. package/dist/entries/ellipsoid.cjs +3910 -0
  626. package/dist/entries/ellipsoid.cjs.map +6 -0
  627. package/dist/entries/ellipsoid.d.ts +26 -0
  628. package/dist/entries/ellipsoid.d.ts.map +1 -0
  629. package/dist/entries/ellipsoid.js +17 -0
  630. package/dist/entries/ellipsoid.js.map +1 -0
  631. package/dist/expressions.cjs +726 -0
  632. package/dist/expressions.cjs.map +6 -0
  633. package/dist/expressions.d.ts +4 -0
  634. package/dist/expressions.d.ts.map +1 -0
  635. package/dist/expressions.js +24 -0
  636. package/dist/expressions.js.map +1 -0
  637. package/dist/geoarrow/builder-entry.cjs +699 -0
  638. package/dist/geoarrow/builder-entry.cjs.map +6 -0
  639. package/dist/geoarrow/builder-entry.d.ts +4 -0
  640. package/dist/geoarrow/builder-entry.d.ts.map +1 -0
  641. package/dist/geoarrow/builder-entry.js +5 -0
  642. package/dist/geoarrow/builder-entry.js.map +1 -0
  643. package/dist/geoarrow/builder.d.ts +106 -0
  644. package/dist/geoarrow/builder.d.ts.map +1 -0
  645. package/dist/geoarrow/builder.js +668 -0
  646. package/dist/geoarrow/builder.js.map +1 -0
  647. package/dist/geoarrow/codecs.d.ts +24 -0
  648. package/dist/geoarrow/codecs.d.ts.map +1 -0
  649. package/dist/geoarrow/codecs.js +916 -0
  650. package/dist/geoarrow/codecs.js.map +1 -0
  651. package/dist/geoarrow/index.cjs +4114 -0
  652. package/dist/geoarrow/index.cjs.map +6 -0
  653. package/dist/geoarrow/index.d.ts +15 -0
  654. package/dist/geoarrow/index.d.ts.map +1 -0
  655. package/dist/geoarrow/index.js +11 -0
  656. package/dist/geoarrow/index.js.map +1 -0
  657. package/dist/geoarrow/kernels.d.ts +56 -0
  658. package/dist/geoarrow/kernels.d.ts.map +1 -0
  659. package/dist/geoarrow/kernels.js +982 -0
  660. package/dist/geoarrow/kernels.js.map +1 -0
  661. package/dist/geoarrow/layout.d.ts +64 -0
  662. package/dist/geoarrow/layout.d.ts.map +1 -0
  663. package/dist/geoarrow/layout.js +722 -0
  664. package/dist/geoarrow/layout.js.map +1 -0
  665. package/dist/geoarrow/tessellate.d.ts +31 -0
  666. package/dist/geoarrow/tessellate.d.ts.map +1 -0
  667. package/dist/geoarrow/tessellate.js +102 -0
  668. package/dist/geoarrow/tessellate.js.map +1 -0
  669. package/dist/geoarrow/tessellation-entry.cjs +431 -0
  670. package/dist/geoarrow/tessellation-entry.cjs.map +6 -0
  671. package/dist/geoarrow/tessellation-entry.d.ts +4 -0
  672. package/dist/geoarrow/tessellation-entry.d.ts.map +1 -0
  673. package/dist/geoarrow/tessellation-entry.js +5 -0
  674. package/dist/geoarrow/tessellation-entry.js.map +1 -0
  675. package/dist/geoarrow/types.d.ts +155 -0
  676. package/dist/geoarrow/types.d.ts.map +1 -0
  677. package/dist/geoarrow/types.js +71 -0
  678. package/dist/geoarrow/types.js.map +1 -0
  679. package/dist/geoarrow/views.d.ts +45 -0
  680. package/dist/geoarrow/views.d.ts.map +1 -0
  681. package/dist/geoarrow/views.js +114 -0
  682. package/dist/geoarrow/views.js.map +1 -0
  683. package/dist/geoarrow/wkb-entry.cjs +2472 -0
  684. package/dist/geoarrow/wkb-entry.cjs.map +6 -0
  685. package/dist/geoarrow/wkb-entry.d.ts +4 -0
  686. package/dist/geoarrow/wkb-entry.d.ts.map +1 -0
  687. package/dist/geoarrow/wkb-entry.js +6 -0
  688. package/dist/geoarrow/wkb-entry.js.map +1 -0
  689. package/dist/geoarrow/worker.cjs +77 -0
  690. package/dist/geoarrow/worker.cjs.map +6 -0
  691. package/dist/geoarrow/worker.d.ts +11 -0
  692. package/dist/geoarrow/worker.d.ts.map +1 -0
  693. package/dist/geoarrow/worker.js +10 -0
  694. package/dist/geoarrow/worker.js.map +1 -0
  695. package/dist/geodesic-exact/area.d.ts +5 -0
  696. package/dist/geodesic-exact/area.d.ts.map +1 -0
  697. package/dist/geodesic-exact/area.js +56 -0
  698. package/dist/geodesic-exact/area.js.map +1 -0
  699. package/dist/geodesic-exact/inverse-engine.d.ts +57 -0
  700. package/dist/geodesic-exact/inverse-engine.d.ts.map +1 -0
  701. package/dist/geodesic-exact/inverse-engine.js +56 -0
  702. package/dist/geodesic-exact/inverse-engine.js.map +1 -0
  703. package/dist/geodesic-exact/polygon.d.ts +12 -0
  704. package/dist/geodesic-exact/polygon.d.ts.map +1 -0
  705. package/dist/geodesic-exact/polygon.js +27 -0
  706. package/dist/geodesic-exact/polygon.js.map +1 -0
  707. package/dist/geodesic-exact/quadrature.d.ts +9 -0
  708. package/dist/geodesic-exact/quadrature.d.ts.map +1 -0
  709. package/dist/geodesic-exact/quadrature.js +62 -0
  710. package/dist/geodesic-exact/quadrature.js.map +1 -0
  711. package/dist/geodesic-exact.cjs +1871 -0
  712. package/dist/geodesic-exact.cjs.map +6 -0
  713. package/dist/geodesic-exact.d.ts +23 -0
  714. package/dist/geodesic-exact.d.ts.map +1 -0
  715. package/dist/geodesic-exact.js +210 -0
  716. package/dist/geodesic-exact.js.map +1 -0
  717. package/dist/geodesic-intersections.d.ts +83 -0
  718. package/dist/geodesic-intersections.d.ts.map +1 -0
  719. package/dist/geodesic-intersections.js +451 -0
  720. package/dist/geodesic-intersections.js.map +1 -0
  721. package/dist/geodesic-path.d.ts +28 -0
  722. package/dist/geodesic-path.d.ts.map +1 -0
  723. package/dist/geodesic-path.js +102 -0
  724. package/dist/geodesic-path.js.map +1 -0
  725. package/dist/geodesic-polygon.d.ts +11 -0
  726. package/dist/geodesic-polygon.d.ts.map +1 -0
  727. package/dist/geodesic-polygon.js +16 -0
  728. package/dist/geodesic-polygon.js.map +1 -0
  729. package/dist/geographic-seams/edge.d.ts +46 -0
  730. package/dist/geographic-seams/edge.d.ts.map +1 -0
  731. package/dist/geographic-seams/edge.js +362 -0
  732. package/dist/geographic-seams/edge.js.map +1 -0
  733. package/dist/geographic-seams/polygon.d.ts +8 -0
  734. package/dist/geographic-seams/polygon.d.ts.map +1 -0
  735. package/dist/geographic-seams/polygon.js +381 -0
  736. package/dist/geographic-seams/polygon.js.map +1 -0
  737. package/dist/geographic-seams/types.d.ts +59 -0
  738. package/dist/geographic-seams/types.d.ts.map +1 -0
  739. package/dist/geographic-seams/types.js +8 -0
  740. package/dist/geographic-seams/types.js.map +1 -0
  741. package/dist/geographic-seams.d.ts +12 -0
  742. package/dist/geographic-seams.d.ts.map +1 -0
  743. package/dist/geographic-seams.js +54 -0
  744. package/dist/geographic-seams.js.map +1 -0
  745. package/dist/geographic-tiles.d.ts +24 -0
  746. package/dist/geographic-tiles.d.ts.map +1 -0
  747. package/dist/geographic-tiles.js +72 -0
  748. package/dist/geographic-tiles.js.map +1 -0
  749. package/dist/globe-horizon-bounds.d.ts +13 -0
  750. package/dist/globe-horizon-bounds.d.ts.map +1 -0
  751. package/dist/globe-horizon-bounds.js +59 -0
  752. package/dist/globe-horizon-bounds.js.map +1 -0
  753. package/dist/globe.cjs +4155 -0
  754. package/dist/globe.cjs.map +6 -0
  755. package/dist/globe.d.ts +16 -0
  756. package/dist/globe.d.ts.map +1 -0
  757. package/dist/globe.js +12 -0
  758. package/dist/globe.js.map +1 -0
  759. package/dist/index.cjs +5027 -361
  760. package/dist/index.cjs.map +3 -3
  761. package/dist/index.d.ts +3 -6
  762. package/dist/index.d.ts.map +1 -1
  763. package/dist/index.js +4 -6
  764. package/dist/index.js.map +1 -1
  765. package/dist/lng-lat-rectangle.d.ts.map +1 -1
  766. package/dist/lng-lat-rectangle.js +5 -3
  767. package/dist/lng-lat-rectangle.js.map +1 -1
  768. package/dist/local-reference-frame.d.ts +57 -0
  769. package/dist/local-reference-frame.d.ts.map +1 -0
  770. package/dist/local-reference-frame.js +247 -0
  771. package/dist/local-reference-frame.js.map +1 -0
  772. package/dist/make-obb-from-region.d.ts +1 -1
  773. package/dist/make-obb-from-region.d.ts.map +1 -1
  774. package/dist/make-obb-from-region.js +6 -4
  775. package/dist/make-obb-from-region.js.map +1 -1
  776. package/dist/projection/analysis.cjs +239 -0
  777. package/dist/projection/analysis.cjs.map +6 -0
  778. package/dist/projection/analysis.d.ts +72 -0
  779. package/dist/projection/analysis.d.ts.map +1 -0
  780. package/dist/projection/analysis.js +221 -0
  781. package/dist/projection/analysis.js.map +1 -0
  782. package/dist/projection/bulk.cjs +203 -0
  783. package/dist/projection/bulk.cjs.map +6 -0
  784. package/dist/projection/bulk.d.ts +51 -0
  785. package/dist/projection/bulk.d.ts.map +1 -0
  786. package/dist/projection/bulk.js +215 -0
  787. package/dist/projection/bulk.js.map +1 -0
  788. package/dist/projection/datums.cjs +1383 -0
  789. package/dist/projection/datums.cjs.map +6 -0
  790. package/dist/projection/datums.d.ts +5 -0
  791. package/dist/projection/datums.d.ts.map +1 -0
  792. package/dist/projection/datums.js +10 -0
  793. package/dist/projection/datums.js.map +1 -0
  794. package/dist/projection/deformation.cjs +134 -0
  795. package/dist/projection/deformation.cjs.map +6 -0
  796. package/dist/projection/deformation.d.ts +3 -0
  797. package/dist/projection/deformation.d.ts.map +1 -0
  798. package/dist/projection/deformation.js +5 -0
  799. package/dist/projection/deformation.js.map +1 -0
  800. package/dist/projection/experimental/authalic-latitude.d.ts +7 -0
  801. package/dist/projection/experimental/authalic-latitude.d.ts.map +1 -0
  802. package/dist/projection/experimental/authalic-latitude.js +51 -0
  803. package/dist/projection/experimental/authalic-latitude.js.map +1 -0
  804. package/dist/projection/experimental/catalogue-kernel.d.ts +9 -0
  805. package/dist/projection/experimental/catalogue-kernel.d.ts.map +1 -0
  806. package/dist/projection/experimental/catalogue-kernel.js +44 -0
  807. package/dist/projection/experimental/catalogue-kernel.js.map +1 -0
  808. package/dist/projection/experimental/common/adjust_lat.d.ts +2 -0
  809. package/dist/projection/experimental/common/adjust_lat.d.ts.map +1 -0
  810. package/dist/projection/experimental/common/adjust_lat.js +10 -0
  811. package/dist/projection/experimental/common/adjust_lat.js.map +1 -0
  812. package/dist/projection/experimental/common/adjust_lon.d.ts +2 -0
  813. package/dist/projection/experimental/common/adjust_lon.d.ts.map +1 -0
  814. package/dist/projection/experimental/common/adjust_lon.js +13 -0
  815. package/dist/projection/experimental/common/adjust_lon.js.map +1 -0
  816. package/dist/projection/experimental/common/asinhy.d.ts +2 -0
  817. package/dist/projection/experimental/common/asinhy.d.ts.map +1 -0
  818. package/dist/projection/experimental/common/asinhy.js +12 -0
  819. package/dist/projection/experimental/common/asinhy.js.map +1 -0
  820. package/dist/projection/experimental/common/asinz.d.ts +2 -0
  821. package/dist/projection/experimental/common/asinz.d.ts.map +1 -0
  822. package/dist/projection/experimental/common/asinz.js +11 -0
  823. package/dist/projection/experimental/common/asinz.js.map +1 -0
  824. package/dist/projection/experimental/common/authlat.d.ts +2 -0
  825. package/dist/projection/experimental/common/authlat.d.ts.map +1 -0
  826. package/dist/projection/experimental/common/authlat.js +9 -0
  827. package/dist/projection/experimental/common/authlat.js.map +1 -0
  828. package/dist/projection/experimental/common/authset.d.ts +2 -0
  829. package/dist/projection/experimental/common/authset.d.ts.map +1 -0
  830. package/dist/projection/experimental/common/authset.js +24 -0
  831. package/dist/projection/experimental/common/authset.js.map +1 -0
  832. package/dist/projection/experimental/common/clens.d.ts +2 -0
  833. package/dist/projection/experimental/common/clens.d.ts.map +1 -0
  834. package/dist/projection/experimental/common/clens.js +18 -0
  835. package/dist/projection/experimental/common/clens.js.map +1 -0
  836. package/dist/projection/experimental/common/clens_cmplx.d.ts +5 -0
  837. package/dist/projection/experimental/common/clens_cmplx.d.ts.map +1 -0
  838. package/dist/projection/experimental/common/clens_cmplx.js +34 -0
  839. package/dist/projection/experimental/common/clens_cmplx.js.map +1 -0
  840. package/dist/projection/experimental/common/constants.d.ts +9 -0
  841. package/dist/projection/experimental/common/constants.d.ts.map +1 -0
  842. package/dist/projection/experimental/common/constants.js +14 -0
  843. package/dist/projection/experimental/common/constants.js.map +1 -0
  844. package/dist/projection/experimental/common/cosh.d.ts +2 -0
  845. package/dist/projection/experimental/common/cosh.d.ts.map +1 -0
  846. package/dist/projection/experimental/common/cosh.js +10 -0
  847. package/dist/projection/experimental/common/cosh.js.map +1 -0
  848. package/dist/projection/experimental/common/e0fn.d.ts +2 -0
  849. package/dist/projection/experimental/common/e0fn.d.ts.map +1 -0
  850. package/dist/projection/experimental/common/e0fn.js +8 -0
  851. package/dist/projection/experimental/common/e0fn.js.map +1 -0
  852. package/dist/projection/experimental/common/e1fn.d.ts +2 -0
  853. package/dist/projection/experimental/common/e1fn.d.ts.map +1 -0
  854. package/dist/projection/experimental/common/e1fn.js +8 -0
  855. package/dist/projection/experimental/common/e1fn.js.map +1 -0
  856. package/dist/projection/experimental/common/e2fn.d.ts +2 -0
  857. package/dist/projection/experimental/common/e2fn.d.ts.map +1 -0
  858. package/dist/projection/experimental/common/e2fn.js +8 -0
  859. package/dist/projection/experimental/common/e2fn.js.map +1 -0
  860. package/dist/projection/experimental/common/e3fn.d.ts +2 -0
  861. package/dist/projection/experimental/common/e3fn.d.ts.map +1 -0
  862. package/dist/projection/experimental/common/e3fn.js +8 -0
  863. package/dist/projection/experimental/common/e3fn.js.map +1 -0
  864. package/dist/projection/experimental/common/fL.d.ts +2 -0
  865. package/dist/projection/experimental/common/fL.d.ts.map +1 -0
  866. package/dist/projection/experimental/common/fL.js +9 -0
  867. package/dist/projection/experimental/common/fL.js.map +1 -0
  868. package/dist/projection/experimental/common/gN.d.ts +2 -0
  869. package/dist/projection/experimental/common/gN.d.ts.map +1 -0
  870. package/dist/projection/experimental/common/gN.js +9 -0
  871. package/dist/projection/experimental/common/gN.js.map +1 -0
  872. package/dist/projection/experimental/common/gatg.d.ts +2 -0
  873. package/dist/projection/experimental/common/gatg.d.ts.map +1 -0
  874. package/dist/projection/experimental/common/gatg.js +18 -0
  875. package/dist/projection/experimental/common/gatg.js.map +1 -0
  876. package/dist/projection/experimental/common/hypot.d.ts +2 -0
  877. package/dist/projection/experimental/common/hypot.d.ts.map +1 -0
  878. package/dist/projection/experimental/common/hypot.js +12 -0
  879. package/dist/projection/experimental/common/hypot.js.map +1 -0
  880. package/dist/projection/experimental/common/imlfn.d.ts +2 -0
  881. package/dist/projection/experimental/common/imlfn.d.ts.map +1 -0
  882. package/dist/projection/experimental/common/imlfn.js +21 -0
  883. package/dist/projection/experimental/common/imlfn.js.map +1 -0
  884. package/dist/projection/experimental/common/invlatiso.d.ts +2 -0
  885. package/dist/projection/experimental/common/invlatiso.d.ts.map +1 -0
  886. package/dist/projection/experimental/common/invlatiso.js +20 -0
  887. package/dist/projection/experimental/common/invlatiso.js.map +1 -0
  888. package/dist/projection/experimental/common/iqsfnz.d.ts +2 -0
  889. package/dist/projection/experimental/common/iqsfnz.d.ts.map +1 -0
  890. package/dist/projection/experimental/common/iqsfnz.js +44 -0
  891. package/dist/projection/experimental/common/iqsfnz.js.map +1 -0
  892. package/dist/projection/experimental/common/latiso.d.ts +2 -0
  893. package/dist/projection/experimental/common/latiso.d.ts.map +1 -0
  894. package/dist/projection/experimental/common/latiso.js +19 -0
  895. package/dist/projection/experimental/common/latiso.js.map +1 -0
  896. package/dist/projection/experimental/common/log1py.d.ts +2 -0
  897. package/dist/projection/experimental/common/log1py.d.ts.map +1 -0
  898. package/dist/projection/experimental/common/log1py.js +10 -0
  899. package/dist/projection/experimental/common/log1py.js.map +1 -0
  900. package/dist/projection/experimental/common/meridian-distance.d.ts +5 -0
  901. package/dist/projection/experimental/common/meridian-distance.d.ts.map +1 -0
  902. package/dist/projection/experimental/common/meridian-distance.js +47 -0
  903. package/dist/projection/experimental/common/meridian-distance.js.map +1 -0
  904. package/dist/projection/experimental/common/mlfn.d.ts +2 -0
  905. package/dist/projection/experimental/common/mlfn.d.ts.map +1 -0
  906. package/dist/projection/experimental/common/mlfn.js +8 -0
  907. package/dist/projection/experimental/common/mlfn.js.map +1 -0
  908. package/dist/projection/experimental/common/msfnz.d.ts +2 -0
  909. package/dist/projection/experimental/common/msfnz.d.ts.map +1 -0
  910. package/dist/projection/experimental/common/msfnz.js +9 -0
  911. package/dist/projection/experimental/common/msfnz.js.map +1 -0
  912. package/dist/projection/experimental/common/phi2z.d.ts +2 -0
  913. package/dist/projection/experimental/common/phi2z.d.ts.map +1 -0
  914. package/dist/projection/experimental/common/phi2z.js +21 -0
  915. package/dist/projection/experimental/common/phi2z.js.map +1 -0
  916. package/dist/projection/experimental/common/pj_enfn.d.ts +2 -0
  917. package/dist/projection/experimental/common/pj_enfn.d.ts.map +1 -0
  918. package/dist/projection/experimental/common/pj_enfn.js +28 -0
  919. package/dist/projection/experimental/common/pj_enfn.js.map +1 -0
  920. package/dist/projection/experimental/common/pj_inv_mlfn.d.ts +2 -0
  921. package/dist/projection/experimental/common/pj_inv_mlfn.d.ts.map +1 -0
  922. package/dist/projection/experimental/common/pj_inv_mlfn.js +26 -0
  923. package/dist/projection/experimental/common/pj_inv_mlfn.js.map +1 -0
  924. package/dist/projection/experimental/common/pj_mlfn.d.ts +2 -0
  925. package/dist/projection/experimental/common/pj_mlfn.d.ts.map +1 -0
  926. package/dist/projection/experimental/common/pj_mlfn.js +10 -0
  927. package/dist/projection/experimental/common/pj_mlfn.js.map +1 -0
  928. package/dist/projection/experimental/common/qsfnz.d.ts +2 -0
  929. package/dist/projection/experimental/common/qsfnz.d.ts.map +1 -0
  930. package/dist/projection/experimental/common/qsfnz.js +16 -0
  931. package/dist/projection/experimental/common/qsfnz.js.map +1 -0
  932. package/dist/projection/experimental/common/sign.d.ts +2 -0
  933. package/dist/projection/experimental/common/sign.d.ts.map +1 -0
  934. package/dist/projection/experimental/common/sign.js +8 -0
  935. package/dist/projection/experimental/common/sign.js.map +1 -0
  936. package/dist/projection/experimental/common/sinh.d.ts +2 -0
  937. package/dist/projection/experimental/common/sinh.d.ts.map +1 -0
  938. package/dist/projection/experimental/common/sinh.js +10 -0
  939. package/dist/projection/experimental/common/sinh.js.map +1 -0
  940. package/dist/projection/experimental/common/srat.d.ts +2 -0
  941. package/dist/projection/experimental/common/srat.d.ts.map +1 -0
  942. package/dist/projection/experimental/common/srat.js +8 -0
  943. package/dist/projection/experimental/common/srat.js.map +1 -0
  944. package/dist/projection/experimental/common/tsfnz.d.ts +2 -0
  945. package/dist/projection/experimental/common/tsfnz.d.ts.map +1 -0
  946. package/dist/projection/experimental/common/tsfnz.js +12 -0
  947. package/dist/projection/experimental/common/tsfnz.js.map +1 -0
  948. package/dist/projection/experimental/common/vincenty.d.ts +29 -0
  949. package/dist/projection/experimental/common/vincenty.d.ts.map +1 -0
  950. package/dist/projection/experimental/common/vincenty.js +134 -0
  951. package/dist/projection/experimental/common/vincenty.js.map +1 -0
  952. package/dist/projection/experimental/core.cjs +1940 -0
  953. package/dist/projection/experimental/core.cjs.map +6 -0
  954. package/dist/projection/experimental/core.d.ts +16 -0
  955. package/dist/projection/experimental/core.d.ts.map +1 -0
  956. package/dist/projection/experimental/core.js +10 -0
  957. package/dist/projection/experimental/core.js.map +1 -0
  958. package/dist/projection/experimental/crs/datum-catalog.d.ts +5 -0
  959. package/dist/projection/experimental/crs/datum-catalog.d.ts.map +1 -0
  960. package/dist/projection/experimental/crs/datum-catalog.js +47 -0
  961. package/dist/projection/experimental/crs/datum-catalog.js.map +1 -0
  962. package/dist/projection/experimental/crs/datum-table.d.ts +8 -0
  963. package/dist/projection/experimental/crs/datum-table.d.ts.map +1 -0
  964. package/dist/projection/experimental/crs/datum-table.js +1355 -0
  965. package/dist/projection/experimental/crs/datum-table.js.map +1 -0
  966. package/dist/projection/experimental/crs/ellipsoid-table.d.ts +8 -0
  967. package/dist/projection/experimental/crs/ellipsoid-table.d.ts.map +1 -0
  968. package/dist/projection/experimental/crs/ellipsoid-table.js +229 -0
  969. package/dist/projection/experimental/crs/ellipsoid-table.js.map +1 -0
  970. package/dist/projection/experimental/crs/normalize.d.ts +8 -0
  971. package/dist/projection/experimental/crs/normalize.d.ts.map +1 -0
  972. package/dist/projection/experimental/crs/normalize.js +279 -0
  973. package/dist/projection/experimental/crs/normalize.js.map +1 -0
  974. package/dist/projection/experimental/crs/primemeridian-table.d.ts +3 -0
  975. package/dist/projection/experimental/crs/primemeridian-table.d.ts.map +1 -0
  976. package/dist/projection/experimental/crs/primemeridian-table.js +20 -0
  977. package/dist/projection/experimental/crs/primemeridian-table.js.map +1 -0
  978. package/dist/projection/experimental/crs/projjson.cjs +564 -0
  979. package/dist/projection/experimental/crs/projjson.cjs.map +6 -0
  980. package/dist/projection/experimental/crs/projjson.d.ts +4 -0
  981. package/dist/projection/experimental/crs/projjson.d.ts.map +1 -0
  982. package/dist/projection/experimental/crs/projjson.js +12 -0
  983. package/dist/projection/experimental/crs/projjson.js.map +1 -0
  984. package/dist/projection/experimental/crs/spatial-reference.d.ts +11 -0
  985. package/dist/projection/experimental/crs/spatial-reference.d.ts.map +1 -0
  986. package/dist/projection/experimental/crs/spatial-reference.js +91 -0
  987. package/dist/projection/experimental/crs/spatial-reference.js.map +1 -0
  988. package/dist/projection/experimental/crs/structured.d.ts +8 -0
  989. package/dist/projection/experimental/crs/structured.d.ts.map +1 -0
  990. package/dist/projection/experimental/crs/structured.js +534 -0
  991. package/dist/projection/experimental/crs/structured.js.map +1 -0
  992. package/dist/projection/experimental/crs/types.d.ts +73 -0
  993. package/dist/projection/experimental/crs/types.d.ts.map +1 -0
  994. package/dist/projection/experimental/crs/types.js +21 -0
  995. package/dist/projection/experimental/crs/types.js.map +1 -0
  996. package/dist/projection/experimental/crs/wkt.cjs +1229 -0
  997. package/dist/projection/experimental/crs/wkt.cjs.map +6 -0
  998. package/dist/projection/experimental/crs/wkt.d.ts +3 -0
  999. package/dist/projection/experimental/crs/wkt.d.ts.map +1 -0
  1000. package/dist/projection/experimental/crs/wkt.js +190 -0
  1001. package/dist/projection/experimental/crs/wkt.js.map +1 -0
  1002. package/dist/projection/experimental/crs-descriptor.d.ts +10 -0
  1003. package/dist/projection/experimental/crs-descriptor.d.ts.map +1 -0
  1004. package/dist/projection/experimental/crs-descriptor.js +171 -0
  1005. package/dist/projection/experimental/crs-descriptor.js.map +1 -0
  1006. package/dist/projection/experimental/crs-rendering-scale.d.ts +5 -0
  1007. package/dist/projection/experimental/crs-rendering-scale.d.ts.map +1 -0
  1008. package/dist/projection/experimental/crs-rendering-scale.js +97 -0
  1009. package/dist/projection/experimental/crs-rendering-scale.js.map +1 -0
  1010. package/dist/projection/experimental/datum.d.ts +17 -0
  1011. package/dist/projection/experimental/datum.d.ts.map +1 -0
  1012. package/dist/projection/experimental/datum.js +160 -0
  1013. package/dist/projection/experimental/datum.js.map +1 -0
  1014. package/dist/projection/experimental/deformation-inverse.d.ts +5 -0
  1015. package/dist/projection/experimental/deformation-inverse.d.ts.map +1 -0
  1016. package/dist/projection/experimental/deformation-inverse.js +89 -0
  1017. package/dist/projection/experimental/deformation-inverse.js.map +1 -0
  1018. package/dist/projection/experimental/deformation.d.ts +23 -0
  1019. package/dist/projection/experimental/deformation.d.ts.map +1 -0
  1020. package/dist/projection/experimental/deformation.js +13 -0
  1021. package/dist/projection/experimental/deformation.js.map +1 -0
  1022. package/dist/projection/experimental/ellipsoidal-gnomonic.d.ts +10 -0
  1023. package/dist/projection/experimental/ellipsoidal-gnomonic.d.ts.map +1 -0
  1024. package/dist/projection/experimental/ellipsoidal-gnomonic.js +59 -0
  1025. package/dist/projection/experimental/ellipsoidal-gnomonic.js.map +1 -0
  1026. package/dist/projection/experimental/entries/projections/aea.cjs +649 -0
  1027. package/dist/projection/experimental/entries/projections/aea.cjs.map +6 -0
  1028. package/dist/projection/experimental/entries/projections/aea.d.ts +2 -0
  1029. package/dist/projection/experimental/entries/projections/aea.d.ts.map +1 -0
  1030. package/dist/projection/experimental/entries/projections/aea.js +5 -0
  1031. package/dist/projection/experimental/entries/projections/aea.js.map +1 -0
  1032. package/dist/projection/experimental/entries/projections/aeqd.cjs +718 -0
  1033. package/dist/projection/experimental/entries/projections/aeqd.cjs.map +6 -0
  1034. package/dist/projection/experimental/entries/projections/aeqd.d.ts +2 -0
  1035. package/dist/projection/experimental/entries/projections/aeqd.d.ts.map +1 -0
  1036. package/dist/projection/experimental/entries/projections/aeqd.js +5 -0
  1037. package/dist/projection/experimental/entries/projections/aeqd.js.map +1 -0
  1038. package/dist/projection/experimental/entries/projections/bonne.cjs +621 -0
  1039. package/dist/projection/experimental/entries/projections/bonne.cjs.map +6 -0
  1040. package/dist/projection/experimental/entries/projections/bonne.d.ts +2 -0
  1041. package/dist/projection/experimental/entries/projections/bonne.d.ts.map +1 -0
  1042. package/dist/projection/experimental/entries/projections/bonne.js +5 -0
  1043. package/dist/projection/experimental/entries/projections/bonne.js.map +1 -0
  1044. package/dist/projection/experimental/entries/projections/cass.cjs +610 -0
  1045. package/dist/projection/experimental/entries/projections/cass.cjs.map +6 -0
  1046. package/dist/projection/experimental/entries/projections/cass.d.ts +2 -0
  1047. package/dist/projection/experimental/entries/projections/cass.d.ts.map +1 -0
  1048. package/dist/projection/experimental/entries/projections/cass.js +5 -0
  1049. package/dist/projection/experimental/entries/projections/cass.js.map +1 -0
  1050. package/dist/projection/experimental/entries/projections/cea.cjs +536 -0
  1051. package/dist/projection/experimental/entries/projections/cea.cjs.map +6 -0
  1052. package/dist/projection/experimental/entries/projections/cea.d.ts +2 -0
  1053. package/dist/projection/experimental/entries/projections/cea.d.ts.map +1 -0
  1054. package/dist/projection/experimental/entries/projections/cea.js +5 -0
  1055. package/dist/projection/experimental/entries/projections/cea.js.map +1 -0
  1056. package/dist/projection/experimental/entries/projections/eck6.cjs +562 -0
  1057. package/dist/projection/experimental/entries/projections/eck6.cjs.map +6 -0
  1058. package/dist/projection/experimental/entries/projections/eck6.d.ts +2 -0
  1059. package/dist/projection/experimental/entries/projections/eck6.d.ts.map +1 -0
  1060. package/dist/projection/experimental/entries/projections/eck6.js +5 -0
  1061. package/dist/projection/experimental/entries/projections/eck6.js.map +1 -0
  1062. package/dist/projection/experimental/entries/projections/eqc.cjs +256 -0
  1063. package/dist/projection/experimental/entries/projections/eqc.cjs.map +6 -0
  1064. package/dist/projection/experimental/entries/projections/eqc.d.ts +2 -0
  1065. package/dist/projection/experimental/entries/projections/eqc.d.ts.map +1 -0
  1066. package/dist/projection/experimental/entries/projections/eqc.js +5 -0
  1067. package/dist/projection/experimental/entries/projections/eqc.js.map +1 -0
  1068. package/dist/projection/experimental/entries/projections/eqdc.cjs +650 -0
  1069. package/dist/projection/experimental/entries/projections/eqdc.cjs.map +6 -0
  1070. package/dist/projection/experimental/entries/projections/eqdc.d.ts +2 -0
  1071. package/dist/projection/experimental/entries/projections/eqdc.d.ts.map +1 -0
  1072. package/dist/projection/experimental/entries/projections/eqdc.js +5 -0
  1073. package/dist/projection/experimental/entries/projections/eqdc.js.map +1 -0
  1074. package/dist/projection/experimental/entries/projections/eqearth.cjs +460 -0
  1075. package/dist/projection/experimental/entries/projections/eqearth.cjs.map +6 -0
  1076. package/dist/projection/experimental/entries/projections/eqearth.d.ts +2 -0
  1077. package/dist/projection/experimental/entries/projections/eqearth.d.ts.map +1 -0
  1078. package/dist/projection/experimental/entries/projections/eqearth.js +5 -0
  1079. package/dist/projection/experimental/entries/projections/eqearth.js.map +1 -0
  1080. package/dist/projection/experimental/entries/projections/equi.cjs +477 -0
  1081. package/dist/projection/experimental/entries/projections/equi.cjs.map +6 -0
  1082. package/dist/projection/experimental/entries/projections/equi.d.ts +2 -0
  1083. package/dist/projection/experimental/entries/projections/equi.d.ts.map +1 -0
  1084. package/dist/projection/experimental/entries/projections/equi.js +5 -0
  1085. package/dist/projection/experimental/entries/projections/equi.js.map +1 -0
  1086. package/dist/projection/experimental/entries/projections/etmerc.cjs +887 -0
  1087. package/dist/projection/experimental/entries/projections/etmerc.cjs.map +6 -0
  1088. package/dist/projection/experimental/entries/projections/etmerc.d.ts +2 -0
  1089. package/dist/projection/experimental/entries/projections/etmerc.d.ts.map +1 -0
  1090. package/dist/projection/experimental/entries/projections/etmerc.js +5 -0
  1091. package/dist/projection/experimental/entries/projections/etmerc.js.map +1 -0
  1092. package/dist/projection/experimental/entries/projections/geocent.cjs +215 -0
  1093. package/dist/projection/experimental/entries/projections/geocent.cjs.map +6 -0
  1094. package/dist/projection/experimental/entries/projections/geocent.d.ts +2 -0
  1095. package/dist/projection/experimental/entries/projections/geocent.d.ts.map +1 -0
  1096. package/dist/projection/experimental/entries/projections/geocent.js +5 -0
  1097. package/dist/projection/experimental/entries/projections/geocent.js.map +1 -0
  1098. package/dist/projection/experimental/entries/projections/geos.cjs +703 -0
  1099. package/dist/projection/experimental/entries/projections/geos.cjs.map +6 -0
  1100. package/dist/projection/experimental/entries/projections/geos.d.ts +2 -0
  1101. package/dist/projection/experimental/entries/projections/geos.d.ts.map +1 -0
  1102. package/dist/projection/experimental/entries/projections/geos.js +5 -0
  1103. package/dist/projection/experimental/entries/projections/geos.js.map +1 -0
  1104. package/dist/projection/experimental/entries/projections/gnom.cjs +2028 -0
  1105. package/dist/projection/experimental/entries/projections/gnom.cjs.map +6 -0
  1106. package/dist/projection/experimental/entries/projections/gnom.d.ts +2 -0
  1107. package/dist/projection/experimental/entries/projections/gnom.d.ts.map +1 -0
  1108. package/dist/projection/experimental/entries/projections/gnom.js +5 -0
  1109. package/dist/projection/experimental/entries/projections/gnom.js.map +1 -0
  1110. package/dist/projection/experimental/entries/projections/gstmerc.cjs +526 -0
  1111. package/dist/projection/experimental/entries/projections/gstmerc.cjs.map +6 -0
  1112. package/dist/projection/experimental/entries/projections/gstmerc.d.ts +2 -0
  1113. package/dist/projection/experimental/entries/projections/gstmerc.d.ts.map +1 -0
  1114. package/dist/projection/experimental/entries/projections/gstmerc.js +5 -0
  1115. package/dist/projection/experimental/entries/projections/gstmerc.js.map +1 -0
  1116. package/dist/projection/experimental/entries/projections/krovak.cjs +683 -0
  1117. package/dist/projection/experimental/entries/projections/krovak.cjs.map +6 -0
  1118. package/dist/projection/experimental/entries/projections/krovak.d.ts +2 -0
  1119. package/dist/projection/experimental/entries/projections/krovak.d.ts.map +1 -0
  1120. package/dist/projection/experimental/entries/projections/krovak.js +5 -0
  1121. package/dist/projection/experimental/entries/projections/krovak.js.map +1 -0
  1122. package/dist/projection/experimental/entries/projections/laea.cjs +797 -0
  1123. package/dist/projection/experimental/entries/projections/laea.cjs.map +6 -0
  1124. package/dist/projection/experimental/entries/projections/laea.d.ts +2 -0
  1125. package/dist/projection/experimental/entries/projections/laea.d.ts.map +1 -0
  1126. package/dist/projection/experimental/entries/projections/laea.js +5 -0
  1127. package/dist/projection/experimental/entries/projections/laea.js.map +1 -0
  1128. package/dist/projection/experimental/entries/projections/lcc.cjs +637 -0
  1129. package/dist/projection/experimental/entries/projections/lcc.cjs.map +6 -0
  1130. package/dist/projection/experimental/entries/projections/lcc.d.ts +2 -0
  1131. package/dist/projection/experimental/entries/projections/lcc.d.ts.map +1 -0
  1132. package/dist/projection/experimental/entries/projections/lcc.js +5 -0
  1133. package/dist/projection/experimental/entries/projections/lcc.js.map +1 -0
  1134. package/dist/projection/experimental/entries/projections/merc.cjs +354 -0
  1135. package/dist/projection/experimental/entries/projections/merc.cjs.map +6 -0
  1136. package/dist/projection/experimental/entries/projections/merc.d.ts +2 -0
  1137. package/dist/projection/experimental/entries/projections/merc.d.ts.map +1 -0
  1138. package/dist/projection/experimental/entries/projections/merc.js +5 -0
  1139. package/dist/projection/experimental/entries/projections/merc.js.map +1 -0
  1140. package/dist/projection/experimental/entries/projections/mill.cjs +470 -0
  1141. package/dist/projection/experimental/entries/projections/mill.cjs.map +6 -0
  1142. package/dist/projection/experimental/entries/projections/mill.d.ts +2 -0
  1143. package/dist/projection/experimental/entries/projections/mill.d.ts.map +1 -0
  1144. package/dist/projection/experimental/entries/projections/mill.js +5 -0
  1145. package/dist/projection/experimental/entries/projections/mill.js.map +1 -0
  1146. package/dist/projection/experimental/entries/projections/moll.cjs +517 -0
  1147. package/dist/projection/experimental/entries/projections/moll.cjs.map +6 -0
  1148. package/dist/projection/experimental/entries/projections/moll.d.ts +2 -0
  1149. package/dist/projection/experimental/entries/projections/moll.d.ts.map +1 -0
  1150. package/dist/projection/experimental/entries/projections/moll.js +5 -0
  1151. package/dist/projection/experimental/entries/projections/moll.js.map +1 -0
  1152. package/dist/projection/experimental/entries/projections/nzmg.cjs +623 -0
  1153. package/dist/projection/experimental/entries/projections/nzmg.cjs.map +6 -0
  1154. package/dist/projection/experimental/entries/projections/nzmg.d.ts +2 -0
  1155. package/dist/projection/experimental/entries/projections/nzmg.d.ts.map +1 -0
  1156. package/dist/projection/experimental/entries/projections/nzmg.js +5 -0
  1157. package/dist/projection/experimental/entries/projections/nzmg.js.map +1 -0
  1158. package/dist/projection/experimental/entries/projections/ob_tran.cjs +540 -0
  1159. package/dist/projection/experimental/entries/projections/ob_tran.cjs.map +6 -0
  1160. package/dist/projection/experimental/entries/projections/ob_tran.d.ts +2 -0
  1161. package/dist/projection/experimental/entries/projections/ob_tran.d.ts.map +1 -0
  1162. package/dist/projection/experimental/entries/projections/ob_tran.js +5 -0
  1163. package/dist/projection/experimental/entries/projections/ob_tran.js.map +1 -0
  1164. package/dist/projection/experimental/entries/projections/omerc.cjs +850 -0
  1165. package/dist/projection/experimental/entries/projections/omerc.cjs.map +6 -0
  1166. package/dist/projection/experimental/entries/projections/omerc.d.ts +2 -0
  1167. package/dist/projection/experimental/entries/projections/omerc.d.ts.map +1 -0
  1168. package/dist/projection/experimental/entries/projections/omerc.js +5 -0
  1169. package/dist/projection/experimental/entries/projections/omerc.js.map +1 -0
  1170. package/dist/projection/experimental/entries/projections/ortho.cjs +519 -0
  1171. package/dist/projection/experimental/entries/projections/ortho.cjs.map +6 -0
  1172. package/dist/projection/experimental/entries/projections/ortho.d.ts +2 -0
  1173. package/dist/projection/experimental/entries/projections/ortho.d.ts.map +1 -0
  1174. package/dist/projection/experimental/entries/projections/ortho.js +5 -0
  1175. package/dist/projection/experimental/entries/projections/ortho.js.map +1 -0
  1176. package/dist/projection/experimental/entries/projections/poly.cjs +622 -0
  1177. package/dist/projection/experimental/entries/projections/poly.cjs.map +6 -0
  1178. package/dist/projection/experimental/entries/projections/poly.d.ts +2 -0
  1179. package/dist/projection/experimental/entries/projections/poly.d.ts.map +1 -0
  1180. package/dist/projection/experimental/entries/projections/poly.js +5 -0
  1181. package/dist/projection/experimental/entries/projections/poly.js.map +1 -0
  1182. package/dist/projection/experimental/entries/projections/qsc.cjs +695 -0
  1183. package/dist/projection/experimental/entries/projections/qsc.cjs.map +6 -0
  1184. package/dist/projection/experimental/entries/projections/qsc.d.ts +2 -0
  1185. package/dist/projection/experimental/entries/projections/qsc.d.ts.map +1 -0
  1186. package/dist/projection/experimental/entries/projections/qsc.js +5 -0
  1187. package/dist/projection/experimental/entries/projections/qsc.js.map +1 -0
  1188. package/dist/projection/experimental/entries/projections/robin.cjs +584 -0
  1189. package/dist/projection/experimental/entries/projections/robin.cjs.map +6 -0
  1190. package/dist/projection/experimental/entries/projections/robin.d.ts +2 -0
  1191. package/dist/projection/experimental/entries/projections/robin.d.ts.map +1 -0
  1192. package/dist/projection/experimental/entries/projections/robin.js +5 -0
  1193. package/dist/projection/experimental/entries/projections/robin.js.map +1 -0
  1194. package/dist/projection/experimental/entries/projections/sinu.cjs +586 -0
  1195. package/dist/projection/experimental/entries/projections/sinu.cjs.map +6 -0
  1196. package/dist/projection/experimental/entries/projections/sinu.d.ts +2 -0
  1197. package/dist/projection/experimental/entries/projections/sinu.d.ts.map +1 -0
  1198. package/dist/projection/experimental/entries/projections/sinu.js +5 -0
  1199. package/dist/projection/experimental/entries/projections/sinu.js.map +1 -0
  1200. package/dist/projection/experimental/entries/projections/somerc.cjs +575 -0
  1201. package/dist/projection/experimental/entries/projections/somerc.cjs.map +6 -0
  1202. package/dist/projection/experimental/entries/projections/somerc.d.ts +2 -0
  1203. package/dist/projection/experimental/entries/projections/somerc.d.ts.map +1 -0
  1204. package/dist/projection/experimental/entries/projections/somerc.js +5 -0
  1205. package/dist/projection/experimental/entries/projections/somerc.js.map +1 -0
  1206. package/dist/projection/experimental/entries/projections/stere.cjs +697 -0
  1207. package/dist/projection/experimental/entries/projections/stere.cjs.map +6 -0
  1208. package/dist/projection/experimental/entries/projections/stere.d.ts +2 -0
  1209. package/dist/projection/experimental/entries/projections/stere.d.ts.map +1 -0
  1210. package/dist/projection/experimental/entries/projections/stere.js +5 -0
  1211. package/dist/projection/experimental/entries/projections/stere.js.map +1 -0
  1212. package/dist/projection/experimental/entries/projections/sterea.cjs +631 -0
  1213. package/dist/projection/experimental/entries/projections/sterea.cjs.map +6 -0
  1214. package/dist/projection/experimental/entries/projections/sterea.d.ts +2 -0
  1215. package/dist/projection/experimental/entries/projections/sterea.d.ts.map +1 -0
  1216. package/dist/projection/experimental/entries/projections/sterea.js +5 -0
  1217. package/dist/projection/experimental/entries/projections/sterea.js.map +1 -0
  1218. package/dist/projection/experimental/entries/projections/tmerc.cjs +887 -0
  1219. package/dist/projection/experimental/entries/projections/tmerc.cjs.map +6 -0
  1220. package/dist/projection/experimental/entries/projections/tmerc.d.ts +2 -0
  1221. package/dist/projection/experimental/entries/projections/tmerc.d.ts.map +1 -0
  1222. package/dist/projection/experimental/entries/projections/tmerc.js +5 -0
  1223. package/dist/projection/experimental/entries/projections/tmerc.js.map +1 -0
  1224. package/dist/projection/experimental/entries/projections/tpers.cjs +645 -0
  1225. package/dist/projection/experimental/entries/projections/tpers.cjs.map +6 -0
  1226. package/dist/projection/experimental/entries/projections/tpers.d.ts +2 -0
  1227. package/dist/projection/experimental/entries/projections/tpers.d.ts.map +1 -0
  1228. package/dist/projection/experimental/entries/projections/tpers.js +5 -0
  1229. package/dist/projection/experimental/entries/projections/tpers.js.map +1 -0
  1230. package/dist/projection/experimental/entries/projections/utm.cjs +915 -0
  1231. package/dist/projection/experimental/entries/projections/utm.cjs.map +6 -0
  1232. package/dist/projection/experimental/entries/projections/utm.d.ts +2 -0
  1233. package/dist/projection/experimental/entries/projections/utm.d.ts.map +1 -0
  1234. package/dist/projection/experimental/entries/projections/utm.js +5 -0
  1235. package/dist/projection/experimental/entries/projections/utm.js.map +1 -0
  1236. package/dist/projection/experimental/entries/projections/vandg.cjs +560 -0
  1237. package/dist/projection/experimental/entries/projections/vandg.cjs.map +6 -0
  1238. package/dist/projection/experimental/entries/projections/vandg.d.ts +2 -0
  1239. package/dist/projection/experimental/entries/projections/vandg.d.ts.map +1 -0
  1240. package/dist/projection/experimental/entries/projections/vandg.js +5 -0
  1241. package/dist/projection/experimental/entries/projections/vandg.js.map +1 -0
  1242. package/dist/projection/experimental/exact-helmert.d.ts +9 -0
  1243. package/dist/projection/experimental/exact-helmert.d.ts.map +1 -0
  1244. package/dist/projection/experimental/exact-helmert.js +32 -0
  1245. package/dist/projection/experimental/exact-helmert.js.map +1 -0
  1246. package/dist/projection/experimental/flat-projection.d.ts +15 -0
  1247. package/dist/projection/experimental/flat-projection.d.ts.map +1 -0
  1248. package/dist/projection/experimental/flat-projection.js +70 -0
  1249. package/dist/projection/experimental/flat-projection.js.map +1 -0
  1250. package/dist/projection/experimental/grids/geotiff.cjs +180 -0
  1251. package/dist/projection/experimental/grids/geotiff.cjs.map +6 -0
  1252. package/dist/projection/experimental/grids/geotiff.d.ts +23 -0
  1253. package/dist/projection/experimental/grids/geotiff.d.ts.map +1 -0
  1254. package/dist/projection/experimental/grids/geotiff.js +59 -0
  1255. package/dist/projection/experimental/grids/geotiff.js.map +1 -0
  1256. package/dist/projection/experimental/grids/grid.d.ts +4 -0
  1257. package/dist/projection/experimental/grids/grid.d.ts.map +1 -0
  1258. package/dist/projection/experimental/grids/grid.js +111 -0
  1259. package/dist/projection/experimental/grids/grid.js.map +1 -0
  1260. package/dist/projection/experimental/grids/gtx.cjs +91 -0
  1261. package/dist/projection/experimental/grids/gtx.cjs.map +6 -0
  1262. package/dist/projection/experimental/grids/gtx.d.ts +7 -0
  1263. package/dist/projection/experimental/grids/gtx.d.ts.map +1 -0
  1264. package/dist/projection/experimental/grids/gtx.js +30 -0
  1265. package/dist/projection/experimental/grids/gtx.js.map +1 -0
  1266. package/dist/projection/experimental/grids/ntv2.cjs +181 -0
  1267. package/dist/projection/experimental/grids/ntv2.cjs.map +6 -0
  1268. package/dist/projection/experimental/grids/ntv2.d.ts +8 -0
  1269. package/dist/projection/experimental/grids/ntv2.d.ts.map +1 -0
  1270. package/dist/projection/experimental/grids/ntv2.js +56 -0
  1271. package/dist/projection/experimental/grids/ntv2.js.map +1 -0
  1272. package/dist/projection/experimental/grids/scalar-geotiff.d.ts +58 -0
  1273. package/dist/projection/experimental/grids/scalar-geotiff.d.ts.map +1 -0
  1274. package/dist/projection/experimental/grids/scalar-geotiff.js +147 -0
  1275. package/dist/projection/experimental/grids/scalar-geotiff.js.map +1 -0
  1276. package/dist/projection/experimental/grids/types.d.ts +35 -0
  1277. package/dist/projection/experimental/grids/types.d.ts.map +1 -0
  1278. package/dist/projection/experimental/grids/types.js +2 -0
  1279. package/dist/projection/experimental/grids/types.js.map +1 -0
  1280. package/dist/projection/experimental/grids/velocity-geotiff.cjs +247 -0
  1281. package/dist/projection/experimental/grids/velocity-geotiff.cjs.map +6 -0
  1282. package/dist/projection/experimental/grids/velocity-geotiff.d.ts +11 -0
  1283. package/dist/projection/experimental/grids/velocity-geotiff.d.ts.map +1 -0
  1284. package/dist/projection/experimental/grids/velocity-geotiff.js +61 -0
  1285. package/dist/projection/experimental/grids/velocity-geotiff.js.map +1 -0
  1286. package/dist/projection/experimental/grids/velocity.d.ts +21 -0
  1287. package/dist/projection/experimental/grids/velocity.d.ts.map +1 -0
  1288. package/dist/projection/experimental/grids/velocity.js +29 -0
  1289. package/dist/projection/experimental/grids/velocity.js.map +1 -0
  1290. package/dist/projection/experimental/grids/vertical-geotiff.cjs +195 -0
  1291. package/dist/projection/experimental/grids/vertical-geotiff.cjs.map +6 -0
  1292. package/dist/projection/experimental/grids/vertical-geotiff.d.ts +6 -0
  1293. package/dist/projection/experimental/grids/vertical-geotiff.d.ts.map +1 -0
  1294. package/dist/projection/experimental/grids/vertical-geotiff.js +20 -0
  1295. package/dist/projection/experimental/grids/vertical-geotiff.js.map +1 -0
  1296. package/dist/projection/experimental/grids/vertical.cjs +80 -0
  1297. package/dist/projection/experimental/grids/vertical.cjs.map +6 -0
  1298. package/dist/projection/experimental/grids/vertical.d.ts +22 -0
  1299. package/dist/projection/experimental/grids/vertical.d.ts.map +1 -0
  1300. package/dist/projection/experimental/grids/vertical.js +73 -0
  1301. package/dist/projection/experimental/grids/vertical.js.map +1 -0
  1302. package/dist/projection/experimental/helmert-flat.d.ts +4 -0
  1303. package/dist/projection/experimental/helmert-flat.d.ts.map +1 -0
  1304. package/dist/projection/experimental/helmert-flat.js +53 -0
  1305. package/dist/projection/experimental/helmert-flat.js.map +1 -0
  1306. package/dist/projection/experimental/index.cjs +11552 -0
  1307. package/dist/projection/experimental/index.cjs.map +6 -0
  1308. package/dist/projection/experimental/index.d.ts +49 -0
  1309. package/dist/projection/experimental/index.d.ts.map +1 -0
  1310. package/dist/projection/experimental/index.js +48 -0
  1311. package/dist/projection/experimental/index.js.map +1 -0
  1312. package/dist/projection/experimental/inverse-spherical-latitude.d.ts +2 -0
  1313. package/dist/projection/experimental/inverse-spherical-latitude.d.ts.map +1 -0
  1314. package/dist/projection/experimental/inverse-spherical-latitude.js +11 -0
  1315. package/dist/projection/experimental/inverse-spherical-latitude.js.map +1 -0
  1316. package/dist/projection/experimental/kernel.d.ts +37 -0
  1317. package/dist/projection/experimental/kernel.d.ts.map +1 -0
  1318. package/dist/projection/experimental/kernel.js +81 -0
  1319. package/dist/projection/experimental/kernel.js.map +1 -0
  1320. package/dist/projection/experimental/kernels/aea.d.ts +25 -0
  1321. package/dist/projection/experimental/kernels/aea.d.ts.map +1 -0
  1322. package/dist/projection/experimental/kernels/aea.js +118 -0
  1323. package/dist/projection/experimental/kernels/aea.js.map +1 -0
  1324. package/dist/projection/experimental/kernels/aeqd.d.ts +10 -0
  1325. package/dist/projection/experimental/kernels/aeqd.d.ts.map +1 -0
  1326. package/dist/projection/experimental/kernels/aeqd.js +168 -0
  1327. package/dist/projection/experimental/kernels/aeqd.js.map +1 -0
  1328. package/dist/projection/experimental/kernels/bonne.d.ts +12 -0
  1329. package/dist/projection/experimental/kernels/bonne.d.ts.map +1 -0
  1330. package/dist/projection/experimental/kernels/bonne.js +128 -0
  1331. package/dist/projection/experimental/kernels/bonne.js.map +1 -0
  1332. package/dist/projection/experimental/kernels/cass.d.ts +10 -0
  1333. package/dist/projection/experimental/kernels/cass.d.ts.map +1 -0
  1334. package/dist/projection/experimental/kernels/cass.js +122 -0
  1335. package/dist/projection/experimental/kernels/cass.js.map +1 -0
  1336. package/dist/projection/experimental/kernels/cea.d.ts +6 -0
  1337. package/dist/projection/experimental/kernels/cea.d.ts.map +1 -0
  1338. package/dist/projection/experimental/kernels/cea.js +63 -0
  1339. package/dist/projection/experimental/kernels/cea.js.map +1 -0
  1340. package/dist/projection/experimental/kernels/eck6.d.ts +13 -0
  1341. package/dist/projection/experimental/kernels/eck6.d.ts.map +1 -0
  1342. package/dist/projection/experimental/kernels/eck6.js +23 -0
  1343. package/dist/projection/experimental/kernels/eck6.js.map +1 -0
  1344. package/dist/projection/experimental/kernels/eqdc.d.ts +19 -0
  1345. package/dist/projection/experimental/kernels/eqdc.d.ts.map +1 -0
  1346. package/dist/projection/experimental/kernels/eqdc.js +117 -0
  1347. package/dist/projection/experimental/kernels/eqdc.js.map +1 -0
  1348. package/dist/projection/experimental/kernels/eqearth.d.ts +10 -0
  1349. package/dist/projection/experimental/kernels/eqearth.d.ts.map +1 -0
  1350. package/dist/projection/experimental/kernels/eqearth.js +114 -0
  1351. package/dist/projection/experimental/kernels/eqearth.js.map +1 -0
  1352. package/dist/projection/experimental/kernels/equi.d.ts +9 -0
  1353. package/dist/projection/experimental/kernels/equi.d.ts.map +1 -0
  1354. package/dist/projection/experimental/kernels/equi.js +43 -0
  1355. package/dist/projection/experimental/kernels/equi.js.map +1 -0
  1356. package/dist/projection/experimental/kernels/etmerc.d.ts +13 -0
  1357. package/dist/projection/experimental/kernels/etmerc.d.ts.map +1 -0
  1358. package/dist/projection/experimental/kernels/etmerc.js +145 -0
  1359. package/dist/projection/experimental/kernels/etmerc.js.map +1 -0
  1360. package/dist/projection/experimental/kernels/gauss.d.ts +12 -0
  1361. package/dist/projection/experimental/kernels/gauss.d.ts.map +1 -0
  1362. package/dist/projection/experimental/kernels/gauss.js +64 -0
  1363. package/dist/projection/experimental/kernels/gauss.js.map +1 -0
  1364. package/dist/projection/experimental/kernels/geos.d.ts +17 -0
  1365. package/dist/projection/experimental/kernels/geos.d.ts.map +1 -0
  1366. package/dist/projection/experimental/kernels/geos.js +153 -0
  1367. package/dist/projection/experimental/kernels/geos.js.map +1 -0
  1368. package/dist/projection/experimental/kernels/gnom.d.ts +14 -0
  1369. package/dist/projection/experimental/kernels/gnom.d.ts.map +1 -0
  1370. package/dist/projection/experimental/kernels/gnom.js +102 -0
  1371. package/dist/projection/experimental/kernels/gnom.js.map +1 -0
  1372. package/dist/projection/experimental/kernels/gstmerc.d.ts +13 -0
  1373. package/dist/projection/experimental/kernels/gstmerc.d.ts.map +1 -0
  1374. package/dist/projection/experimental/kernels/gstmerc.js +57 -0
  1375. package/dist/projection/experimental/kernels/gstmerc.js.map +1 -0
  1376. package/dist/projection/experimental/kernels/krovak.d.ts +23 -0
  1377. package/dist/projection/experimental/kernels/krovak.d.ts.map +1 -0
  1378. package/dist/projection/experimental/kernels/krovak.js +128 -0
  1379. package/dist/projection/experimental/kernels/krovak.js.map +1 -0
  1380. package/dist/projection/experimental/kernels/laea.d.ts +22 -0
  1381. package/dist/projection/experimental/kernels/laea.d.ts.map +1 -0
  1382. package/dist/projection/experimental/kernels/laea.js +296 -0
  1383. package/dist/projection/experimental/kernels/laea.js.map +1 -0
  1384. package/dist/projection/experimental/kernels/lcc.d.ts +10 -0
  1385. package/dist/projection/experimental/kernels/lcc.d.ts.map +1 -0
  1386. package/dist/projection/experimental/kernels/lcc.js +126 -0
  1387. package/dist/projection/experimental/kernels/lcc.js.map +1 -0
  1388. package/dist/projection/experimental/kernels/mill.d.ts +6 -0
  1389. package/dist/projection/experimental/kernels/mill.d.ts.map +1 -0
  1390. package/dist/projection/experimental/kernels/mill.js +49 -0
  1391. package/dist/projection/experimental/kernels/mill.js.map +1 -0
  1392. package/dist/projection/experimental/kernels/moll.d.ts +6 -0
  1393. package/dist/projection/experimental/kernels/moll.d.ts.map +1 -0
  1394. package/dist/projection/experimental/kernels/moll.js +104 -0
  1395. package/dist/projection/experimental/kernels/moll.js.map +1 -0
  1396. package/dist/projection/experimental/kernels/nzmg.d.ts +28 -0
  1397. package/dist/projection/experimental/kernels/nzmg.d.ts.map +1 -0
  1398. package/dist/projection/experimental/kernels/nzmg.js +209 -0
  1399. package/dist/projection/experimental/kernels/nzmg.js.map +1 -0
  1400. package/dist/projection/experimental/kernels/omerc.d.ts +30 -0
  1401. package/dist/projection/experimental/kernels/omerc.d.ts.map +1 -0
  1402. package/dist/projection/experimental/kernels/omerc.js +260 -0
  1403. package/dist/projection/experimental/kernels/omerc.js.map +1 -0
  1404. package/dist/projection/experimental/kernels/ortho.d.ts +10 -0
  1405. package/dist/projection/experimental/kernels/ortho.d.ts.map +1 -0
  1406. package/dist/projection/experimental/kernels/ortho.js +43 -0
  1407. package/dist/projection/experimental/kernels/ortho.js.map +1 -0
  1408. package/dist/projection/experimental/kernels/poly.d.ts +10 -0
  1409. package/dist/projection/experimental/kernels/poly.d.ts.map +1 -0
  1410. package/dist/projection/experimental/kernels/poly.js +193 -0
  1411. package/dist/projection/experimental/kernels/poly.js.map +1 -0
  1412. package/dist/projection/experimental/kernels/qsc.d.ts +10 -0
  1413. package/dist/projection/experimental/kernels/qsc.d.ts.map +1 -0
  1414. package/dist/projection/experimental/kernels/qsc.js +364 -0
  1415. package/dist/projection/experimental/kernels/qsc.js.map +1 -0
  1416. package/dist/projection/experimental/kernels/robin.d.ts +6 -0
  1417. package/dist/projection/experimental/kernels/robin.d.ts.map +1 -0
  1418. package/dist/projection/experimental/kernels/robin.js +166 -0
  1419. package/dist/projection/experimental/kernels/robin.js.map +1 -0
  1420. package/dist/projection/experimental/kernels/sinu.d.ts +12 -0
  1421. package/dist/projection/experimental/kernels/sinu.d.ts.map +1 -0
  1422. package/dist/projection/experimental/kernels/sinu.js +107 -0
  1423. package/dist/projection/experimental/kernels/sinu.js.map +1 -0
  1424. package/dist/projection/experimental/kernels/somerc.d.ts +13 -0
  1425. package/dist/projection/experimental/kernels/somerc.d.ts.map +1 -0
  1426. package/dist/projection/experimental/kernels/somerc.js +79 -0
  1427. package/dist/projection/experimental/kernels/somerc.js.map +1 -0
  1428. package/dist/projection/experimental/kernels/stere.d.ts +15 -0
  1429. package/dist/projection/experimental/kernels/stere.d.ts.map +1 -0
  1430. package/dist/projection/experimental/kernels/stere.js +207 -0
  1431. package/dist/projection/experimental/kernels/stere.js.map +1 -0
  1432. package/dist/projection/experimental/kernels/sterea.d.ts +11 -0
  1433. package/dist/projection/experimental/kernels/sterea.d.ts.map +1 -0
  1434. package/dist/projection/experimental/kernels/sterea.js +67 -0
  1435. package/dist/projection/experimental/kernels/sterea.js.map +1 -0
  1436. package/dist/projection/experimental/kernels/tmerc.d.ts +9 -0
  1437. package/dist/projection/experimental/kernels/tmerc.d.ts.map +1 -0
  1438. package/dist/projection/experimental/kernels/tmerc.js +201 -0
  1439. package/dist/projection/experimental/kernels/tmerc.js.map +1 -0
  1440. package/dist/projection/experimental/kernels/tpers.d.ts +22 -0
  1441. package/dist/projection/experimental/kernels/tpers.d.ts.map +1 -0
  1442. package/dist/projection/experimental/kernels/tpers.js +156 -0
  1443. package/dist/projection/experimental/kernels/tpers.js.map +1 -0
  1444. package/dist/projection/experimental/kernels/vandg.d.ts +8 -0
  1445. package/dist/projection/experimental/kernels/vandg.d.ts.map +1 -0
  1446. package/dist/projection/experimental/kernels/vandg.js +133 -0
  1447. package/dist/projection/experimental/kernels/vandg.js.map +1 -0
  1448. package/dist/projection/experimental/kinematic-helmert-flat.d.ts +4 -0
  1449. package/dist/projection/experimental/kinematic-helmert-flat.d.ts.map +1 -0
  1450. package/dist/projection/experimental/kinematic-helmert-flat.js +60 -0
  1451. package/dist/projection/experimental/kinematic-helmert-flat.js.map +1 -0
  1452. package/dist/projection/experimental/kinematic-helmert.d.ts +11 -0
  1453. package/dist/projection/experimental/kinematic-helmert.d.ts.map +1 -0
  1454. package/dist/projection/experimental/kinematic-helmert.js +103 -0
  1455. package/dist/projection/experimental/kinematic-helmert.js.map +1 -0
  1456. package/dist/projection/experimental/lazy-projection.d.ts +17 -0
  1457. package/dist/projection/experimental/lazy-projection.d.ts.map +1 -0
  1458. package/dist/projection/experimental/lazy-projection.js +156 -0
  1459. package/dist/projection/experimental/lazy-projection.js.map +1 -0
  1460. package/dist/projection/experimental/lazy-projections/aea.cjs +79 -0
  1461. package/dist/projection/experimental/lazy-projections/aea.cjs.map +6 -0
  1462. package/dist/projection/experimental/lazy-projections/aea.d.ts +3 -0
  1463. package/dist/projection/experimental/lazy-projections/aea.d.ts.map +1 -0
  1464. package/dist/projection/experimental/lazy-projections/aea.js +7 -0
  1465. package/dist/projection/experimental/lazy-projections/aea.js.map +1 -0
  1466. package/dist/projection/experimental/lazy-projections/aeqd.cjs +79 -0
  1467. package/dist/projection/experimental/lazy-projections/aeqd.cjs.map +6 -0
  1468. package/dist/projection/experimental/lazy-projections/aeqd.d.ts +3 -0
  1469. package/dist/projection/experimental/lazy-projections/aeqd.d.ts.map +1 -0
  1470. package/dist/projection/experimental/lazy-projections/aeqd.js +8 -0
  1471. package/dist/projection/experimental/lazy-projections/aeqd.js.map +1 -0
  1472. package/dist/projection/experimental/lazy-projections/bonne.cjs +79 -0
  1473. package/dist/projection/experimental/lazy-projections/bonne.cjs.map +6 -0
  1474. package/dist/projection/experimental/lazy-projections/bonne.d.ts +3 -0
  1475. package/dist/projection/experimental/lazy-projections/bonne.d.ts.map +1 -0
  1476. package/dist/projection/experimental/lazy-projections/bonne.js +7 -0
  1477. package/dist/projection/experimental/lazy-projections/bonne.js.map +1 -0
  1478. package/dist/projection/experimental/lazy-projections/cass.cjs +79 -0
  1479. package/dist/projection/experimental/lazy-projections/cass.cjs.map +6 -0
  1480. package/dist/projection/experimental/lazy-projections/cass.d.ts +3 -0
  1481. package/dist/projection/experimental/lazy-projections/cass.d.ts.map +1 -0
  1482. package/dist/projection/experimental/lazy-projections/cass.js +7 -0
  1483. package/dist/projection/experimental/lazy-projections/cass.js.map +1 -0
  1484. package/dist/projection/experimental/lazy-projections/cea.cjs +79 -0
  1485. package/dist/projection/experimental/lazy-projections/cea.cjs.map +6 -0
  1486. package/dist/projection/experimental/lazy-projections/cea.d.ts +3 -0
  1487. package/dist/projection/experimental/lazy-projections/cea.d.ts.map +1 -0
  1488. package/dist/projection/experimental/lazy-projections/cea.js +8 -0
  1489. package/dist/projection/experimental/lazy-projections/cea.js.map +1 -0
  1490. package/dist/projection/experimental/lazy-projections/eck6.cjs +79 -0
  1491. package/dist/projection/experimental/lazy-projections/eck6.cjs.map +6 -0
  1492. package/dist/projection/experimental/lazy-projections/eck6.d.ts +3 -0
  1493. package/dist/projection/experimental/lazy-projections/eck6.d.ts.map +1 -0
  1494. package/dist/projection/experimental/lazy-projections/eck6.js +7 -0
  1495. package/dist/projection/experimental/lazy-projections/eck6.js.map +1 -0
  1496. package/dist/projection/experimental/lazy-projections/eqc.cjs +82 -0
  1497. package/dist/projection/experimental/lazy-projections/eqc.cjs.map +6 -0
  1498. package/dist/projection/experimental/lazy-projections/eqc.d.ts +3 -0
  1499. package/dist/projection/experimental/lazy-projections/eqc.d.ts.map +1 -0
  1500. package/dist/projection/experimental/lazy-projections/eqc.js +11 -0
  1501. package/dist/projection/experimental/lazy-projections/eqc.js.map +1 -0
  1502. package/dist/projection/experimental/lazy-projections/eqdc.cjs +79 -0
  1503. package/dist/projection/experimental/lazy-projections/eqdc.cjs.map +6 -0
  1504. package/dist/projection/experimental/lazy-projections/eqdc.d.ts +3 -0
  1505. package/dist/projection/experimental/lazy-projections/eqdc.d.ts.map +1 -0
  1506. package/dist/projection/experimental/lazy-projections/eqdc.js +8 -0
  1507. package/dist/projection/experimental/lazy-projections/eqdc.js.map +1 -0
  1508. package/dist/projection/experimental/lazy-projections/eqearth.cjs +79 -0
  1509. package/dist/projection/experimental/lazy-projections/eqearth.cjs.map +6 -0
  1510. package/dist/projection/experimental/lazy-projections/eqearth.d.ts +3 -0
  1511. package/dist/projection/experimental/lazy-projections/eqearth.d.ts.map +1 -0
  1512. package/dist/projection/experimental/lazy-projections/eqearth.js +7 -0
  1513. package/dist/projection/experimental/lazy-projections/eqearth.js.map +1 -0
  1514. package/dist/projection/experimental/lazy-projections/equi.cjs +79 -0
  1515. package/dist/projection/experimental/lazy-projections/equi.cjs.map +6 -0
  1516. package/dist/projection/experimental/lazy-projections/equi.d.ts +3 -0
  1517. package/dist/projection/experimental/lazy-projections/equi.d.ts.map +1 -0
  1518. package/dist/projection/experimental/lazy-projections/equi.js +7 -0
  1519. package/dist/projection/experimental/lazy-projections/equi.js.map +1 -0
  1520. package/dist/projection/experimental/lazy-projections/etmerc.cjs +79 -0
  1521. package/dist/projection/experimental/lazy-projections/etmerc.cjs.map +6 -0
  1522. package/dist/projection/experimental/lazy-projections/etmerc.d.ts +3 -0
  1523. package/dist/projection/experimental/lazy-projections/etmerc.d.ts.map +1 -0
  1524. package/dist/projection/experimental/lazy-projections/etmerc.js +8 -0
  1525. package/dist/projection/experimental/lazy-projections/etmerc.js.map +1 -0
  1526. package/dist/projection/experimental/lazy-projections/geocent.cjs +79 -0
  1527. package/dist/projection/experimental/lazy-projections/geocent.cjs.map +6 -0
  1528. package/dist/projection/experimental/lazy-projections/geocent.d.ts +3 -0
  1529. package/dist/projection/experimental/lazy-projections/geocent.d.ts.map +1 -0
  1530. package/dist/projection/experimental/lazy-projections/geocent.js +7 -0
  1531. package/dist/projection/experimental/lazy-projections/geocent.js.map +1 -0
  1532. package/dist/projection/experimental/lazy-projections/geos.cjs +79 -0
  1533. package/dist/projection/experimental/lazy-projections/geos.cjs.map +6 -0
  1534. package/dist/projection/experimental/lazy-projections/geos.d.ts +3 -0
  1535. package/dist/projection/experimental/lazy-projections/geos.d.ts.map +1 -0
  1536. package/dist/projection/experimental/lazy-projections/geos.js +7 -0
  1537. package/dist/projection/experimental/lazy-projections/geos.js.map +1 -0
  1538. package/dist/projection/experimental/lazy-projections/gnom.cjs +79 -0
  1539. package/dist/projection/experimental/lazy-projections/gnom.cjs.map +6 -0
  1540. package/dist/projection/experimental/lazy-projections/gnom.d.ts +3 -0
  1541. package/dist/projection/experimental/lazy-projections/gnom.d.ts.map +1 -0
  1542. package/dist/projection/experimental/lazy-projections/gnom.js +7 -0
  1543. package/dist/projection/experimental/lazy-projections/gnom.js.map +1 -0
  1544. package/dist/projection/experimental/lazy-projections/gstmerc.cjs +79 -0
  1545. package/dist/projection/experimental/lazy-projections/gstmerc.cjs.map +6 -0
  1546. package/dist/projection/experimental/lazy-projections/gstmerc.d.ts +3 -0
  1547. package/dist/projection/experimental/lazy-projections/gstmerc.d.ts.map +1 -0
  1548. package/dist/projection/experimental/lazy-projections/gstmerc.js +9 -0
  1549. package/dist/projection/experimental/lazy-projections/gstmerc.js.map +1 -0
  1550. package/dist/projection/experimental/lazy-projections/index.cjs +2243 -0
  1551. package/dist/projection/experimental/lazy-projections/index.cjs.map +6 -0
  1552. package/dist/projection/experimental/lazy-projections/index.d.ts +38 -0
  1553. package/dist/projection/experimental/lazy-projections/index.d.ts.map +1 -0
  1554. package/dist/projection/experimental/lazy-projections/index.js +41 -0
  1555. package/dist/projection/experimental/lazy-projections/index.js.map +1 -0
  1556. package/dist/projection/experimental/lazy-projections/krovak.cjs +87 -0
  1557. package/dist/projection/experimental/lazy-projections/krovak.cjs.map +6 -0
  1558. package/dist/projection/experimental/lazy-projections/krovak.d.ts +3 -0
  1559. package/dist/projection/experimental/lazy-projections/krovak.d.ts.map +1 -0
  1560. package/dist/projection/experimental/lazy-projections/krovak.js +15 -0
  1561. package/dist/projection/experimental/lazy-projections/krovak.js.map +1 -0
  1562. package/dist/projection/experimental/lazy-projections/laea.cjs +79 -0
  1563. package/dist/projection/experimental/lazy-projections/laea.cjs.map +6 -0
  1564. package/dist/projection/experimental/lazy-projections/laea.d.ts +3 -0
  1565. package/dist/projection/experimental/lazy-projections/laea.d.ts.map +1 -0
  1566. package/dist/projection/experimental/lazy-projections/laea.js +8 -0
  1567. package/dist/projection/experimental/lazy-projections/laea.js.map +1 -0
  1568. package/dist/projection/experimental/lazy-projections/lcc.cjs +89 -0
  1569. package/dist/projection/experimental/lazy-projections/lcc.cjs.map +6 -0
  1570. package/dist/projection/experimental/lazy-projections/lcc.d.ts +3 -0
  1571. package/dist/projection/experimental/lazy-projections/lcc.d.ts.map +1 -0
  1572. package/dist/projection/experimental/lazy-projections/lcc.js +18 -0
  1573. package/dist/projection/experimental/lazy-projections/lcc.js.map +1 -0
  1574. package/dist/projection/experimental/lazy-projections/merc.cjs +88 -0
  1575. package/dist/projection/experimental/lazy-projections/merc.cjs.map +6 -0
  1576. package/dist/projection/experimental/lazy-projections/merc.d.ts +3 -0
  1577. package/dist/projection/experimental/lazy-projections/merc.d.ts.map +1 -0
  1578. package/dist/projection/experimental/lazy-projections/merc.js +16 -0
  1579. package/dist/projection/experimental/lazy-projections/merc.js.map +1 -0
  1580. package/dist/projection/experimental/lazy-projections/mill.cjs +79 -0
  1581. package/dist/projection/experimental/lazy-projections/mill.cjs.map +6 -0
  1582. package/dist/projection/experimental/lazy-projections/mill.d.ts +3 -0
  1583. package/dist/projection/experimental/lazy-projections/mill.d.ts.map +1 -0
  1584. package/dist/projection/experimental/lazy-projections/mill.js +8 -0
  1585. package/dist/projection/experimental/lazy-projections/mill.js.map +1 -0
  1586. package/dist/projection/experimental/lazy-projections/moll.cjs +79 -0
  1587. package/dist/projection/experimental/lazy-projections/moll.cjs.map +6 -0
  1588. package/dist/projection/experimental/lazy-projections/moll.d.ts +3 -0
  1589. package/dist/projection/experimental/lazy-projections/moll.d.ts.map +1 -0
  1590. package/dist/projection/experimental/lazy-projections/moll.js +7 -0
  1591. package/dist/projection/experimental/lazy-projections/moll.js.map +1 -0
  1592. package/dist/projection/experimental/lazy-projections/nzmg.cjs +79 -0
  1593. package/dist/projection/experimental/lazy-projections/nzmg.cjs.map +6 -0
  1594. package/dist/projection/experimental/lazy-projections/nzmg.d.ts +3 -0
  1595. package/dist/projection/experimental/lazy-projections/nzmg.d.ts.map +1 -0
  1596. package/dist/projection/experimental/lazy-projections/nzmg.js +8 -0
  1597. package/dist/projection/experimental/lazy-projections/nzmg.js.map +1 -0
  1598. package/dist/projection/experimental/lazy-projections/ob_tran.cjs +90 -0
  1599. package/dist/projection/experimental/lazy-projections/ob_tran.cjs.map +6 -0
  1600. package/dist/projection/experimental/lazy-projections/ob_tran.d.ts +5 -0
  1601. package/dist/projection/experimental/lazy-projections/ob_tran.d.ts.map +1 -0
  1602. package/dist/projection/experimental/lazy-projections/ob_tran.js +18 -0
  1603. package/dist/projection/experimental/lazy-projections/ob_tran.js.map +1 -0
  1604. package/dist/projection/experimental/lazy-projections/omerc.cjs +91 -0
  1605. package/dist/projection/experimental/lazy-projections/omerc.cjs.map +6 -0
  1606. package/dist/projection/experimental/lazy-projections/omerc.d.ts +3 -0
  1607. package/dist/projection/experimental/lazy-projections/omerc.d.ts.map +1 -0
  1608. package/dist/projection/experimental/lazy-projections/omerc.js +19 -0
  1609. package/dist/projection/experimental/lazy-projections/omerc.js.map +1 -0
  1610. package/dist/projection/experimental/lazy-projections/ortho.cjs +79 -0
  1611. package/dist/projection/experimental/lazy-projections/ortho.cjs.map +6 -0
  1612. package/dist/projection/experimental/lazy-projections/ortho.d.ts +3 -0
  1613. package/dist/projection/experimental/lazy-projections/ortho.d.ts.map +1 -0
  1614. package/dist/projection/experimental/lazy-projections/ortho.js +7 -0
  1615. package/dist/projection/experimental/lazy-projections/ortho.js.map +1 -0
  1616. package/dist/projection/experimental/lazy-projections/poly.cjs +79 -0
  1617. package/dist/projection/experimental/lazy-projections/poly.cjs.map +6 -0
  1618. package/dist/projection/experimental/lazy-projections/poly.d.ts +3 -0
  1619. package/dist/projection/experimental/lazy-projections/poly.d.ts.map +1 -0
  1620. package/dist/projection/experimental/lazy-projections/poly.js +7 -0
  1621. package/dist/projection/experimental/lazy-projections/poly.js.map +1 -0
  1622. package/dist/projection/experimental/lazy-projections/qsc.cjs +82 -0
  1623. package/dist/projection/experimental/lazy-projections/qsc.cjs.map +6 -0
  1624. package/dist/projection/experimental/lazy-projections/qsc.d.ts +3 -0
  1625. package/dist/projection/experimental/lazy-projections/qsc.d.ts.map +1 -0
  1626. package/dist/projection/experimental/lazy-projections/qsc.js +12 -0
  1627. package/dist/projection/experimental/lazy-projections/qsc.js.map +1 -0
  1628. package/dist/projection/experimental/lazy-projections/robin.cjs +79 -0
  1629. package/dist/projection/experimental/lazy-projections/robin.cjs.map +6 -0
  1630. package/dist/projection/experimental/lazy-projections/robin.d.ts +3 -0
  1631. package/dist/projection/experimental/lazy-projections/robin.d.ts.map +1 -0
  1632. package/dist/projection/experimental/lazy-projections/robin.js +7 -0
  1633. package/dist/projection/experimental/lazy-projections/robin.js.map +1 -0
  1634. package/dist/projection/experimental/lazy-projections/sinu.cjs +79 -0
  1635. package/dist/projection/experimental/lazy-projections/sinu.cjs.map +6 -0
  1636. package/dist/projection/experimental/lazy-projections/sinu.d.ts +3 -0
  1637. package/dist/projection/experimental/lazy-projections/sinu.d.ts.map +1 -0
  1638. package/dist/projection/experimental/lazy-projections/sinu.js +7 -0
  1639. package/dist/projection/experimental/lazy-projections/sinu.js.map +1 -0
  1640. package/dist/projection/experimental/lazy-projections/somerc.cjs +79 -0
  1641. package/dist/projection/experimental/lazy-projections/somerc.cjs.map +6 -0
  1642. package/dist/projection/experimental/lazy-projections/somerc.d.ts +3 -0
  1643. package/dist/projection/experimental/lazy-projections/somerc.d.ts.map +1 -0
  1644. package/dist/projection/experimental/lazy-projections/somerc.js +8 -0
  1645. package/dist/projection/experimental/lazy-projections/somerc.js.map +1 -0
  1646. package/dist/projection/experimental/lazy-projections/stere.cjs +87 -0
  1647. package/dist/projection/experimental/lazy-projections/stere.cjs.map +6 -0
  1648. package/dist/projection/experimental/lazy-projections/stere.d.ts +3 -0
  1649. package/dist/projection/experimental/lazy-projections/stere.d.ts.map +1 -0
  1650. package/dist/projection/experimental/lazy-projections/stere.js +15 -0
  1651. package/dist/projection/experimental/lazy-projections/stere.js.map +1 -0
  1652. package/dist/projection/experimental/lazy-projections/sterea.cjs +87 -0
  1653. package/dist/projection/experimental/lazy-projections/sterea.cjs.map +6 -0
  1654. package/dist/projection/experimental/lazy-projections/sterea.d.ts +3 -0
  1655. package/dist/projection/experimental/lazy-projections/sterea.d.ts.map +1 -0
  1656. package/dist/projection/experimental/lazy-projections/sterea.js +16 -0
  1657. package/dist/projection/experimental/lazy-projections/sterea.js.map +1 -0
  1658. package/dist/projection/experimental/lazy-projections/tmerc.cjs +89 -0
  1659. package/dist/projection/experimental/lazy-projections/tmerc.cjs.map +6 -0
  1660. package/dist/projection/experimental/lazy-projections/tmerc.d.ts +3 -0
  1661. package/dist/projection/experimental/lazy-projections/tmerc.d.ts.map +1 -0
  1662. package/dist/projection/experimental/lazy-projections/tmerc.js +18 -0
  1663. package/dist/projection/experimental/lazy-projections/tmerc.js.map +1 -0
  1664. package/dist/projection/experimental/lazy-projections/tpers.cjs +79 -0
  1665. package/dist/projection/experimental/lazy-projections/tpers.cjs.map +6 -0
  1666. package/dist/projection/experimental/lazy-projections/tpers.d.ts +3 -0
  1667. package/dist/projection/experimental/lazy-projections/tpers.d.ts.map +1 -0
  1668. package/dist/projection/experimental/lazy-projections/tpers.js +8 -0
  1669. package/dist/projection/experimental/lazy-projections/tpers.js.map +1 -0
  1670. package/dist/projection/experimental/lazy-projections/utm.cjs +79 -0
  1671. package/dist/projection/experimental/lazy-projections/utm.cjs.map +6 -0
  1672. package/dist/projection/experimental/lazy-projections/utm.d.ts +3 -0
  1673. package/dist/projection/experimental/lazy-projections/utm.d.ts.map +1 -0
  1674. package/dist/projection/experimental/lazy-projections/utm.js +8 -0
  1675. package/dist/projection/experimental/lazy-projections/utm.js.map +1 -0
  1676. package/dist/projection/experimental/lazy-projections/vandg.cjs +79 -0
  1677. package/dist/projection/experimental/lazy-projections/vandg.cjs.map +6 -0
  1678. package/dist/projection/experimental/lazy-projections/vandg.d.ts +3 -0
  1679. package/dist/projection/experimental/lazy-projections/vandg.d.ts.map +1 -0
  1680. package/dist/projection/experimental/lazy-projections/vandg.js +7 -0
  1681. package/dist/projection/experimental/lazy-projections/vandg.js.map +1 -0
  1682. package/dist/projection/experimental/mutable-projection.d.ts +6 -0
  1683. package/dist/projection/experimental/mutable-projection.d.ts.map +1 -0
  1684. package/dist/projection/experimental/mutable-projection.js +53 -0
  1685. package/dist/projection/experimental/mutable-projection.js.map +1 -0
  1686. package/dist/projection/experimental/numeric-flat.d.ts +8 -0
  1687. package/dist/projection/experimental/numeric-flat.d.ts.map +1 -0
  1688. package/dist/projection/experimental/numeric-flat.js +54 -0
  1689. package/dist/projection/experimental/numeric-flat.js.map +1 -0
  1690. package/dist/projection/experimental/parameters.d.ts +8 -0
  1691. package/dist/projection/experimental/parameters.d.ts.map +1 -0
  1692. package/dist/projection/experimental/parameters.js +31 -0
  1693. package/dist/projection/experimental/parameters.js.map +1 -0
  1694. package/dist/projection/experimental/projection-descriptor.d.ts +13 -0
  1695. package/dist/projection/experimental/projection-descriptor.d.ts.map +1 -0
  1696. package/dist/projection/experimental/projection-descriptor.js +52 -0
  1697. package/dist/projection/experimental/projection-descriptor.js.map +1 -0
  1698. package/dist/projection/experimental/projection-engine.d.ts +27 -0
  1699. package/dist/projection/experimental/projection-engine.d.ts.map +1 -0
  1700. package/dist/projection/experimental/projection-engine.js +50 -0
  1701. package/dist/projection/experimental/projection-engine.js.map +1 -0
  1702. package/dist/projection/experimental/projection-pipeline.d.ts +142 -0
  1703. package/dist/projection/experimental/projection-pipeline.d.ts.map +1 -0
  1704. package/dist/projection/experimental/projection-pipeline.js +740 -0
  1705. package/dist/projection/experimental/projection-pipeline.js.map +1 -0
  1706. package/dist/projection/experimental/projection-scratch.d.ts +11 -0
  1707. package/dist/projection/experimental/projection-scratch.d.ts.map +1 -0
  1708. package/dist/projection/experimental/projection-scratch.js +25 -0
  1709. package/dist/projection/experimental/projection-scratch.js.map +1 -0
  1710. package/dist/projection/experimental/projections/aea.d.ts +3 -0
  1711. package/dist/projection/experimental/projections/aea.d.ts.map +1 -0
  1712. package/dist/projection/experimental/projections/aea.js +24 -0
  1713. package/dist/projection/experimental/projections/aea.js.map +1 -0
  1714. package/dist/projection/experimental/projections/aeqd.d.ts +3 -0
  1715. package/dist/projection/experimental/projections/aeqd.d.ts.map +1 -0
  1716. package/dist/projection/experimental/projections/aeqd.js +19 -0
  1717. package/dist/projection/experimental/projections/aeqd.js.map +1 -0
  1718. package/dist/projection/experimental/projections/bonne.d.ts +3 -0
  1719. package/dist/projection/experimental/projections/bonne.d.ts.map +1 -0
  1720. package/dist/projection/experimental/projections/bonne.js +25 -0
  1721. package/dist/projection/experimental/projections/bonne.js.map +1 -0
  1722. package/dist/projection/experimental/projections/cass.d.ts +3 -0
  1723. package/dist/projection/experimental/projections/cass.d.ts.map +1 -0
  1724. package/dist/projection/experimental/projections/cass.js +22 -0
  1725. package/dist/projection/experimental/projections/cass.js.map +1 -0
  1726. package/dist/projection/experimental/projections/cea.d.ts +3 -0
  1727. package/dist/projection/experimental/projections/cea.d.ts.map +1 -0
  1728. package/dist/projection/experimental/projections/cea.js +24 -0
  1729. package/dist/projection/experimental/projections/cea.js.map +1 -0
  1730. package/dist/projection/experimental/projections/eck6.d.ts +3 -0
  1731. package/dist/projection/experimental/projections/eck6.d.ts.map +1 -0
  1732. package/dist/projection/experimental/projections/eck6.js +22 -0
  1733. package/dist/projection/experimental/projections/eck6.js.map +1 -0
  1734. package/dist/projection/experimental/projections/eqdc.d.ts +3 -0
  1735. package/dist/projection/experimental/projections/eqdc.d.ts.map +1 -0
  1736. package/dist/projection/experimental/projections/eqdc.js +23 -0
  1737. package/dist/projection/experimental/projections/eqdc.js.map +1 -0
  1738. package/dist/projection/experimental/projections/eqearth.d.ts +3 -0
  1739. package/dist/projection/experimental/projections/eqearth.d.ts.map +1 -0
  1740. package/dist/projection/experimental/projections/eqearth.js +47 -0
  1741. package/dist/projection/experimental/projections/eqearth.js.map +1 -0
  1742. package/dist/projection/experimental/projections/equi.d.ts +3 -0
  1743. package/dist/projection/experimental/projections/equi.d.ts.map +1 -0
  1744. package/dist/projection/experimental/projections/equi.js +24 -0
  1745. package/dist/projection/experimental/projections/equi.js.map +1 -0
  1746. package/dist/projection/experimental/projections/equidistant-cylindrical.d.ts +4 -0
  1747. package/dist/projection/experimental/projections/equidistant-cylindrical.d.ts.map +1 -0
  1748. package/dist/projection/experimental/projections/equidistant-cylindrical.js +47 -0
  1749. package/dist/projection/experimental/projections/equidistant-cylindrical.js.map +1 -0
  1750. package/dist/projection/experimental/projections/geocentric.d.ts +3 -0
  1751. package/dist/projection/experimental/projections/geocentric.d.ts.map +1 -0
  1752. package/dist/projection/experimental/projections/geocentric.js +34 -0
  1753. package/dist/projection/experimental/projections/geocentric.js.map +1 -0
  1754. package/dist/projection/experimental/projections/geos.d.ts +3 -0
  1755. package/dist/projection/experimental/projections/geos.d.ts.map +1 -0
  1756. package/dist/projection/experimental/projections/geos.js +30 -0
  1757. package/dist/projection/experimental/projections/geos.js.map +1 -0
  1758. package/dist/projection/experimental/projections/gnom.d.ts +3 -0
  1759. package/dist/projection/experimental/projections/gnom.d.ts.map +1 -0
  1760. package/dist/projection/experimental/projections/gnom.js +22 -0
  1761. package/dist/projection/experimental/projections/gnom.js.map +1 -0
  1762. package/dist/projection/experimental/projections/gstmerc.d.ts +3 -0
  1763. package/dist/projection/experimental/projections/gstmerc.d.ts.map +1 -0
  1764. package/dist/projection/experimental/projections/gstmerc.js +23 -0
  1765. package/dist/projection/experimental/projections/gstmerc.js.map +1 -0
  1766. package/dist/projection/experimental/projections/krovak.d.ts +3 -0
  1767. package/dist/projection/experimental/projections/krovak.d.ts.map +1 -0
  1768. package/dist/projection/experimental/projections/krovak.js +41 -0
  1769. package/dist/projection/experimental/projections/krovak.js.map +1 -0
  1770. package/dist/projection/experimental/projections/laea.d.ts +3 -0
  1771. package/dist/projection/experimental/projections/laea.d.ts.map +1 -0
  1772. package/dist/projection/experimental/projections/laea.js +22 -0
  1773. package/dist/projection/experimental/projections/laea.js.map +1 -0
  1774. package/dist/projection/experimental/projections/lcc.d.ts +3 -0
  1775. package/dist/projection/experimental/projections/lcc.d.ts.map +1 -0
  1776. package/dist/projection/experimental/projections/lcc.js +39 -0
  1777. package/dist/projection/experimental/projections/lcc.js.map +1 -0
  1778. package/dist/projection/experimental/projections/mercator.d.ts +4 -0
  1779. package/dist/projection/experimental/projections/mercator.d.ts.map +1 -0
  1780. package/dist/projection/experimental/projections/mercator.js +106 -0
  1781. package/dist/projection/experimental/projections/mercator.js.map +1 -0
  1782. package/dist/projection/experimental/projections/mill.d.ts +3 -0
  1783. package/dist/projection/experimental/projections/mill.d.ts.map +1 -0
  1784. package/dist/projection/experimental/projections/mill.js +22 -0
  1785. package/dist/projection/experimental/projections/mill.js.map +1 -0
  1786. package/dist/projection/experimental/projections/moll.d.ts +3 -0
  1787. package/dist/projection/experimental/projections/moll.d.ts.map +1 -0
  1788. package/dist/projection/experimental/projections/moll.js +22 -0
  1789. package/dist/projection/experimental/projections/moll.js.map +1 -0
  1790. package/dist/projection/experimental/projections/nzmg.d.ts +3 -0
  1791. package/dist/projection/experimental/projections/nzmg.d.ts.map +1 -0
  1792. package/dist/projection/experimental/projections/nzmg.js +29 -0
  1793. package/dist/projection/experimental/projections/nzmg.js.map +1 -0
  1794. package/dist/projection/experimental/projections/ob-tran.d.ts +4 -0
  1795. package/dist/projection/experimental/projections/ob-tran.d.ts.map +1 -0
  1796. package/dist/projection/experimental/projections/ob-tran.js +194 -0
  1797. package/dist/projection/experimental/projections/ob-tran.js.map +1 -0
  1798. package/dist/projection/experimental/projections/omerc.d.ts +3 -0
  1799. package/dist/projection/experimental/projections/omerc.d.ts.map +1 -0
  1800. package/dist/projection/experimental/projections/omerc.js +69 -0
  1801. package/dist/projection/experimental/projections/omerc.js.map +1 -0
  1802. package/dist/projection/experimental/projections/ortho.d.ts +3 -0
  1803. package/dist/projection/experimental/projections/ortho.d.ts.map +1 -0
  1804. package/dist/projection/experimental/projections/ortho.js +20 -0
  1805. package/dist/projection/experimental/projections/ortho.js.map +1 -0
  1806. package/dist/projection/experimental/projections/poly.d.ts +3 -0
  1807. package/dist/projection/experimental/projections/poly.d.ts.map +1 -0
  1808. package/dist/projection/experimental/projections/poly.js +22 -0
  1809. package/dist/projection/experimental/projections/poly.js.map +1 -0
  1810. package/dist/projection/experimental/projections/qsc.d.ts +3 -0
  1811. package/dist/projection/experimental/projections/qsc.d.ts.map +1 -0
  1812. package/dist/projection/experimental/projections/qsc.js +64 -0
  1813. package/dist/projection/experimental/projections/qsc.js.map +1 -0
  1814. package/dist/projection/experimental/projections/robin.d.ts +3 -0
  1815. package/dist/projection/experimental/projections/robin.d.ts.map +1 -0
  1816. package/dist/projection/experimental/projections/robin.js +22 -0
  1817. package/dist/projection/experimental/projections/robin.js.map +1 -0
  1818. package/dist/projection/experimental/projections/sinu.d.ts +3 -0
  1819. package/dist/projection/experimental/projections/sinu.d.ts.map +1 -0
  1820. package/dist/projection/experimental/projections/sinu.js +22 -0
  1821. package/dist/projection/experimental/projections/sinu.js.map +1 -0
  1822. package/dist/projection/experimental/projections/somerc.d.ts +3 -0
  1823. package/dist/projection/experimental/projections/somerc.d.ts.map +1 -0
  1824. package/dist/projection/experimental/projections/somerc.js +22 -0
  1825. package/dist/projection/experimental/projections/somerc.js.map +1 -0
  1826. package/dist/projection/experimental/projections/stere.d.ts +3 -0
  1827. package/dist/projection/experimental/projections/stere.d.ts.map +1 -0
  1828. package/dist/projection/experimental/projections/stere.js +32 -0
  1829. package/dist/projection/experimental/projections/stere.js.map +1 -0
  1830. package/dist/projection/experimental/projections/sterea.d.ts +3 -0
  1831. package/dist/projection/experimental/projections/sterea.d.ts.map +1 -0
  1832. package/dist/projection/experimental/projections/sterea.js +32 -0
  1833. package/dist/projection/experimental/projections/sterea.js.map +1 -0
  1834. package/dist/projection/experimental/projections/tpers.d.ts +3 -0
  1835. package/dist/projection/experimental/projections/tpers.d.ts.map +1 -0
  1836. package/dist/projection/experimental/projections/tpers.js +31 -0
  1837. package/dist/projection/experimental/projections/tpers.js.map +1 -0
  1838. package/dist/projection/experimental/projections/transverse-mercator.d.ts +6 -0
  1839. package/dist/projection/experimental/projections/transverse-mercator.d.ts.map +1 -0
  1840. package/dist/projection/experimental/projections/transverse-mercator.js +48 -0
  1841. package/dist/projection/experimental/projections/transverse-mercator.js.map +1 -0
  1842. package/dist/projection/experimental/projections/utm.d.ts +3 -0
  1843. package/dist/projection/experimental/projections/utm.d.ts.map +1 -0
  1844. package/dist/projection/experimental/projections/utm.js +37 -0
  1845. package/dist/projection/experimental/projections/utm.js.map +1 -0
  1846. package/dist/projection/experimental/projections/vandg.d.ts +3 -0
  1847. package/dist/projection/experimental/projections/vandg.d.ts.map +1 -0
  1848. package/dist/projection/experimental/projections/vandg.js +22 -0
  1849. package/dist/projection/experimental/projections/vandg.js.map +1 -0
  1850. package/dist/projection/experimental/rendering-profile/angular-rendering-profile.d.ts +9 -0
  1851. package/dist/projection/experimental/rendering-profile/angular-rendering-profile.d.ts.map +1 -0
  1852. package/dist/projection/experimental/rendering-profile/angular-rendering-profile.js +79 -0
  1853. package/dist/projection/experimental/rendering-profile/angular-rendering-profile.js.map +1 -0
  1854. package/dist/projection/experimental/rendering-profile/azimuthal-rendering-bounds.d.ts +23 -0
  1855. package/dist/projection/experimental/rendering-profile/azimuthal-rendering-bounds.d.ts.map +1 -0
  1856. package/dist/projection/experimental/rendering-profile/azimuthal-rendering-bounds.js +131 -0
  1857. package/dist/projection/experimental/rendering-profile/azimuthal-rendering-bounds.js.map +1 -0
  1858. package/dist/projection/experimental/rendering-profile/geographic-bounds.d.ts +29 -0
  1859. package/dist/projection/experimental/rendering-profile/geographic-bounds.d.ts.map +1 -0
  1860. package/dist/projection/experimental/rendering-profile/geographic-bounds.js +127 -0
  1861. package/dist/projection/experimental/rendering-profile/geographic-bounds.js.map +1 -0
  1862. package/dist/projection/experimental/rendering-profile/geographic-rendering-profile.d.ts +4 -0
  1863. package/dist/projection/experimental/rendering-profile/geographic-rendering-profile.d.ts.map +1 -0
  1864. package/dist/projection/experimental/rendering-profile/geographic-rendering-profile.js +18 -0
  1865. package/dist/projection/experimental/rendering-profile/geographic-rendering-profile.js.map +1 -0
  1866. package/dist/projection/experimental/rendering-profile/geostationary-rendering-profile.d.ts +7 -0
  1867. package/dist/projection/experimental/rendering-profile/geostationary-rendering-profile.d.ts.map +1 -0
  1868. package/dist/projection/experimental/rendering-profile/geostationary-rendering-profile.js +86 -0
  1869. package/dist/projection/experimental/rendering-profile/geostationary-rendering-profile.js.map +1 -0
  1870. package/dist/projection/experimental/rendering-profile/identity-rendering-profile.d.ts +4 -0
  1871. package/dist/projection/experimental/rendering-profile/identity-rendering-profile.d.ts.map +1 -0
  1872. package/dist/projection/experimental/rendering-profile/identity-rendering-profile.js +13 -0
  1873. package/dist/projection/experimental/rendering-profile/identity-rendering-profile.js.map +1 -0
  1874. package/dist/projection/experimental/rendering-profile/rectangular-rendering-profile.d.ts +13 -0
  1875. package/dist/projection/experimental/rendering-profile/rectangular-rendering-profile.d.ts.map +1 -0
  1876. package/dist/projection/experimental/rendering-profile/rectangular-rendering-profile.js +76 -0
  1877. package/dist/projection/experimental/rendering-profile/rectangular-rendering-profile.js.map +1 -0
  1878. package/dist/projection/experimental/rendering-profile/regional-rendering-bounds.d.ts +29 -0
  1879. package/dist/projection/experimental/rendering-profile/regional-rendering-bounds.d.ts.map +1 -0
  1880. package/dist/projection/experimental/rendering-profile/regional-rendering-bounds.js +143 -0
  1881. package/dist/projection/experimental/rendering-profile/regional-rendering-bounds.js.map +1 -0
  1882. package/dist/projection/experimental/rendering-profile/rendering-bounds.d.ts +28 -0
  1883. package/dist/projection/experimental/rendering-profile/rendering-bounds.d.ts.map +1 -0
  1884. package/dist/projection/experimental/rendering-profile/rendering-bounds.js +111 -0
  1885. package/dist/projection/experimental/rendering-profile/rendering-bounds.js.map +1 -0
  1886. package/dist/projection/experimental/rendering-profile/rendering-profile.d.ts +11 -0
  1887. package/dist/projection/experimental/rendering-profile/rendering-profile.d.ts.map +1 -0
  1888. package/dist/projection/experimental/rendering-profile/rendering-profile.js +81 -0
  1889. package/dist/projection/experimental/rendering-profile/rendering-profile.js.map +1 -0
  1890. package/dist/projection/experimental/rendering-profile/spherical-rendering-domain.d.ts +24 -0
  1891. package/dist/projection/experimental/rendering-profile/spherical-rendering-domain.d.ts.map +1 -0
  1892. package/dist/projection/experimental/rendering-profile/spherical-rendering-domain.js +129 -0
  1893. package/dist/projection/experimental/rendering-profile/spherical-rendering-domain.js.map +1 -0
  1894. package/dist/projection/experimental/scalar-output.d.ts +8 -0
  1895. package/dist/projection/experimental/scalar-output.d.ts.map +1 -0
  1896. package/dist/projection/experimental/scalar-output.js +46 -0
  1897. package/dist/projection/experimental/scalar-output.js.map +1 -0
  1898. package/dist/projection/experimental/spatial-deformation.d.ts +6 -0
  1899. package/dist/projection/experimental/spatial-deformation.d.ts.map +1 -0
  1900. package/dist/projection/experimental/spatial-deformation.js +85 -0
  1901. package/dist/projection/experimental/spatial-deformation.js.map +1 -0
  1902. package/dist/projection/experimental/types.d.ts +156 -0
  1903. package/dist/projection/experimental/types.d.ts.map +1 -0
  1904. package/dist/projection/experimental/types.js +5 -0
  1905. package/dist/projection/experimental/types.js.map +1 -0
  1906. package/dist/projection/experimental/typescript-projection.d.ts +76 -0
  1907. package/dist/projection/experimental/typescript-projection.d.ts.map +1 -0
  1908. package/dist/projection/experimental/typescript-projection.js +459 -0
  1909. package/dist/projection/experimental/typescript-projection.js.map +1 -0
  1910. package/dist/projection/experimental/vertical-datum.d.ts +4 -0
  1911. package/dist/projection/experimental/vertical-datum.d.ts.map +1 -0
  1912. package/dist/projection/experimental/vertical-datum.js +43 -0
  1913. package/dist/projection/experimental/vertical-datum.js.map +1 -0
  1914. package/dist/projection/grids/velocity.cjs +92 -0
  1915. package/dist/projection/grids/velocity.cjs.map +6 -0
  1916. package/dist/projection/grids/velocity.d.ts +3 -0
  1917. package/dist/projection/grids/velocity.d.ts.map +1 -0
  1918. package/dist/projection/grids/velocity.js +5 -0
  1919. package/dist/projection/grids/velocity.js.map +1 -0
  1920. package/dist/projection/index.cjs +13009 -0
  1921. package/dist/projection/index.cjs.map +6 -0
  1922. package/dist/projection/index.d.ts +3 -0
  1923. package/dist/projection/index.d.ts.map +1 -0
  1924. package/dist/projection/index.js +6 -0
  1925. package/dist/projection/index.js.map +1 -0
  1926. package/dist/projection/lib/projection.d.ts +8 -0
  1927. package/dist/projection/lib/projection.d.ts.map +1 -0
  1928. package/dist/projection/lib/projection.js +115 -0
  1929. package/dist/projection/lib/projection.js.map +1 -0
  1930. package/dist/projection/numerical-derivative.d.ts +15 -0
  1931. package/dist/projection/numerical-derivative.d.ts.map +1 -0
  1932. package/dist/projection/numerical-derivative.js +47 -0
  1933. package/dist/projection/numerical-derivative.js.map +1 -0
  1934. package/dist/projection/operations.cjs +322 -0
  1935. package/dist/projection/operations.cjs.map +6 -0
  1936. package/dist/projection/operations.d.ts +89 -0
  1937. package/dist/projection/operations.d.ts.map +1 -0
  1938. package/dist/projection/operations.js +344 -0
  1939. package/dist/projection/operations.js.map +1 -0
  1940. package/dist/projection/pipeline.cjs +1961 -0
  1941. package/dist/projection/pipeline.cjs.map +6 -0
  1942. package/dist/projection/pipeline.d.ts +2 -0
  1943. package/dist/projection/pipeline.d.ts.map +1 -0
  1944. package/dist/projection/pipeline.js +5 -0
  1945. package/dist/projection/pipeline.js.map +1 -0
  1946. package/dist/projection/temporal.cjs +290 -0
  1947. package/dist/projection/temporal.cjs.map +6 -0
  1948. package/dist/projection/temporal.d.ts +31 -0
  1949. package/dist/projection/temporal.d.ts.map +1 -0
  1950. package/dist/projection/temporal.js +91 -0
  1951. package/dist/projection/temporal.js.map +1 -0
  1952. package/dist/projection/transform-analysis.cjs +1889 -0
  1953. package/dist/projection/transform-analysis.cjs.map +6 -0
  1954. package/dist/projection/transform-analysis.d.ts +43 -0
  1955. package/dist/projection/transform-analysis.d.ts.map +1 -0
  1956. package/dist/projection/transform-analysis.js +110 -0
  1957. package/dist/projection/transform-analysis.js.map +1 -0
  1958. package/dist/projection/types.cjs +18 -0
  1959. package/dist/projection/types.cjs.map +6 -0
  1960. package/dist/projection/types.d.ts +47 -0
  1961. package/dist/projection/types.d.ts.map +1 -0
  1962. package/dist/projection/types.js +5 -0
  1963. package/dist/projection/types.js.map +1 -0
  1964. package/dist/projection/web-mercator.cjs +171 -0
  1965. package/dist/projection/web-mercator.cjs.map +6 -0
  1966. package/dist/projection/web-mercator.d.ts +7 -0
  1967. package/dist/projection/web-mercator.d.ts.map +1 -0
  1968. package/dist/projection/web-mercator.js +113 -0
  1969. package/dist/projection/web-mercator.js.map +1 -0
  1970. package/dist/rhumb-path.d.ts +28 -0
  1971. package/dist/rhumb-path.d.ts.map +1 -0
  1972. package/dist/rhumb-path.js +100 -0
  1973. package/dist/rhumb-path.js.map +1 -0
  1974. package/dist/rhumb-polygon.d.ts +11 -0
  1975. package/dist/rhumb-polygon.d.ts.map +1 -0
  1976. package/dist/rhumb-polygon.js +19 -0
  1977. package/dist/rhumb-polygon.js.map +1 -0
  1978. package/dist/subdivide-geodesic-polyline.d.ts +15 -0
  1979. package/dist/subdivide-geodesic-polyline.d.ts.map +1 -0
  1980. package/dist/subdivide-geodesic-polyline.js +52 -0
  1981. package/dist/subdivide-geodesic-polyline.js.map +1 -0
  1982. package/dist/subdivide-globe-mesh.d.ts +20 -0
  1983. package/dist/subdivide-globe-mesh.d.ts.map +1 -0
  1984. package/dist/subdivide-globe-mesh.js +54 -0
  1985. package/dist/subdivide-globe-mesh.js.map +1 -0
  1986. package/dist/subdivide-rhumb-polyline.d.ts +12 -0
  1987. package/dist/subdivide-rhumb-polyline.d.ts.map +1 -0
  1988. package/dist/subdivide-rhumb-polyline.js +82 -0
  1989. package/dist/subdivide-rhumb-polyline.js.map +1 -0
  1990. package/dist/tile-matrix.cjs +235 -0
  1991. package/dist/tile-matrix.cjs.map +6 -0
  1992. package/dist/tile-matrix.d.ts +87 -0
  1993. package/dist/tile-matrix.d.ts.map +1 -0
  1994. package/dist/tile-matrix.js +307 -0
  1995. package/dist/tile-matrix.js.map +1 -0
  1996. package/dist/tiles.cjs +303 -0
  1997. package/dist/tiles.cjs.map +6 -0
  1998. package/dist/tiles.d.ts +5 -0
  1999. package/dist/tiles.d.ts.map +1 -0
  2000. package/dist/tiles.js +6 -0
  2001. package/dist/tiles.js.map +1 -0
  2002. package/dist/triaxial/integrate.d.ts +2 -0
  2003. package/dist/triaxial/integrate.d.ts.map +1 -0
  2004. package/dist/triaxial/integrate.js +76 -0
  2005. package/dist/triaxial/integrate.js.map +1 -0
  2006. package/dist/triaxial.cjs +204 -0
  2007. package/dist/triaxial.cjs.map +6 -0
  2008. package/dist/triaxial.d.ts +38 -0
  2009. package/dist/triaxial.d.ts.map +1 -0
  2010. package/dist/triaxial.js +121 -0
  2011. package/dist/triaxial.js.map +1 -0
  2012. package/dist/type-utils.d.ts +2 -0
  2013. package/dist/type-utils.d.ts.map +1 -1
  2014. package/dist/type-utils.js +25 -2
  2015. package/dist/type-utils.js.map +1 -1
  2016. package/dist/vendor/geographiclib-geodesic/runtime.d.ts +9 -0
  2017. package/dist/vendor/geographiclib-geodesic/runtime.d.ts.map +1 -0
  2018. package/dist/vendor/geographiclib-geodesic/runtime.js +2244 -0
  2019. package/dist/vendor/geographiclib-geodesic/runtime.js.map +1 -0
  2020. package/dist/web-mercator.cjs +20 -0
  2021. package/dist/web-mercator.cjs.map +6 -0
  2022. package/dist/web-mercator.d.ts +2 -0
  2023. package/dist/web-mercator.d.ts.map +1 -0
  2024. package/dist/web-mercator.js +5 -0
  2025. package/dist/web-mercator.js.map +1 -0
  2026. package/dist/wkb/index.cjs +1055 -0
  2027. package/dist/wkb/index.cjs.map +6 -0
  2028. package/dist/wkb/index.d.ts +11 -0
  2029. package/dist/wkb/index.d.ts.map +1 -0
  2030. package/dist/wkb/index.js +9 -0
  2031. package/dist/wkb/index.js.map +1 -0
  2032. package/dist/wkb/types.d.ts +30 -0
  2033. package/dist/wkb/types.d.ts.map +1 -0
  2034. package/dist/wkb/types.js +34 -0
  2035. package/dist/wkb/types.js.map +1 -0
  2036. package/dist/wkb/wkb-builder.d.ts +91 -0
  2037. package/dist/wkb/wkb-builder.d.ts.map +1 -0
  2038. package/dist/wkb/wkb-builder.js +283 -0
  2039. package/dist/wkb/wkb-builder.js.map +1 -0
  2040. package/dist/wkb/wkb-reader.d.ts +74 -0
  2041. package/dist/wkb/wkb-reader.d.ts.map +1 -0
  2042. package/dist/wkb/wkb-reader.js +251 -0
  2043. package/dist/wkb/wkb-reader.js.map +1 -0
  2044. package/dist/wkb/wkb.d.ts +21 -0
  2045. package/dist/wkb/wkb.d.ts.map +1 -0
  2046. package/dist/wkb/wkb.js +204 -0
  2047. package/dist/wkb/wkb.js.map +1 -0
  2048. package/dist/wkb/wkt.d.ts +19 -0
  2049. package/dist/wkb/wkt.d.ts.map +1 -0
  2050. package/dist/wkb/wkt.js +321 -0
  2051. package/dist/wkb/wkt.js.map +1 -0
  2052. package/package.json +1082 -6
  2053. package/projection/APACHE-2.0-LICENSE.txt +55 -0
  2054. package/projection/PROJ-LICENSE.txt +37 -0
  2055. package/projection/PROJ4-LICENSE.md +29 -0
  2056. package/projection/THIRD-PARTY-NOTICES.md +210 -0
  2057. package/src/constants.ts +5 -3
  2058. package/src/crs/crs-metadata.ts +63 -0
  2059. package/src/crs/crs.ts +36 -0
  2060. package/src/crs/index.ts +65 -0
  2061. package/src/crs/proj-string.ts +239 -0
  2062. package/src/crs/projjson-schema-constants.ts +9 -0
  2063. package/src/crs/projjson-types.ts +665 -0
  2064. package/src/crs/spatial-reference.ts +221 -0
  2065. package/src/crs/units-table.ts +51 -0
  2066. package/src/crs/wkt-crs.ts +790 -0
  2067. package/src/discontinuous/AIR-OCEAN-LICENSE.txt +26 -0
  2068. package/src/discontinuous/D3-LICENSE.txt +37 -0
  2069. package/src/discontinuous/PETROFF-LICENSE.txt +55 -0
  2070. package/src/discontinuous/PROJ-LICENSE.txt +34 -0
  2071. package/src/discontinuous/air-ocean-mesh.ts +86 -0
  2072. package/src/discontinuous/albers-usa.ts +181 -0
  2073. package/src/discontinuous/cap-map.ts +406 -0
  2074. package/src/discontinuous/elastic/README.md +20 -0
  2075. package/src/discontinuous/elastic/UNLICENSE.txt +24 -0
  2076. package/src/discontinuous/elastic/data.ts +86 -0
  2077. package/src/discontinuous/elastic/elasticI.ts +5238 -0
  2078. package/src/discontinuous/elastic/elasticII.ts +18167 -0
  2079. package/src/discontinuous/elastic/elasticIII.ts +29571 -0
  2080. package/src/discontinuous/elastic/geometry.ts +172 -0
  2081. package/src/discontinuous/elastic/grid.ts +194 -0
  2082. package/src/discontinuous/elastic/map.ts +317 -0
  2083. package/src/discontinuous/gray-fuller.ts +38 -0
  2084. package/src/discontinuous/gringorten-kernel.ts +160 -0
  2085. package/src/discontinuous/healpix.ts +61 -0
  2086. package/src/discontinuous/layout.ts +177 -0
  2087. package/src/discontinuous/map-engine.ts +528 -0
  2088. package/src/discontinuous/map-layout.ts +605 -0
  2089. package/src/discontinuous/map-transition.ts +339 -0
  2090. package/src/discontinuous/math.ts +67 -0
  2091. package/src/discontinuous/mercator-map.ts +155 -0
  2092. package/src/discontinuous/myriahedral/graticule.ts +40 -0
  2093. package/src/discontinuous/myriahedral/mesh.ts +138 -0
  2094. package/src/discontinuous/myriahedral/unfold.ts +208 -0
  2095. package/src/discontinuous/myriahedral.ts +285 -0
  2096. package/src/discontinuous/petroff.ts +178 -0
  2097. package/src/discontinuous/polyhedral.ts +138 -0
  2098. package/src/discontinuous/prepare-features.ts +239 -0
  2099. package/src/discontinuous/presets.ts +450 -0
  2100. package/src/discontinuous/projection-catalog.ts +132 -0
  2101. package/src/discontinuous/quincuncial-kernel.ts +173 -0
  2102. package/src/discontinuous/quincuncial-star.ts +328 -0
  2103. package/src/discontinuous/regional-map.ts +228 -0
  2104. package/src/discontinuous/retroazimuthal-map.ts +52 -0
  2105. package/src/discontinuous/rotated-map.ts +86 -0
  2106. package/src/discontinuous/snyder-mesh.ts +88 -0
  2107. package/src/discontinuous/snyder.ts +171 -0
  2108. package/src/discontinuous/spherical-clip/D3-GEO-LICENSE.txt +34 -0
  2109. package/src/discontinuous/spherical-clip/README.md +16 -0
  2110. package/src/discontinuous/spherical-clip/cartesian.js +43 -0
  2111. package/src/discontinuous/spherical-clip/circle.js +35 -0
  2112. package/src/discontinuous/spherical-clip/clip-buffer.js +29 -0
  2113. package/src/discontinuous/spherical-clip/clip-circle.js +197 -0
  2114. package/src/discontinuous/spherical-clip/clip-index.js +140 -0
  2115. package/src/discontinuous/spherical-clip/clip-rejoin.js +111 -0
  2116. package/src/discontinuous/spherical-clip/helpers.js +20 -0
  2117. package/src/discontinuous/spherical-clip/math.js +45 -0
  2118. package/src/discontinuous/spherical-clip/noop.js +6 -0
  2119. package/src/discontinuous/spherical-clip/pointEqual.js +10 -0
  2120. package/src/discontinuous/spherical-clip/polygonContains.js +96 -0
  2121. package/src/discontinuous/world-composite-kernels.ts +30 -0
  2122. package/src/discontinuous/world-kernels/INTEGRATE-LICENSE.txt +21 -0
  2123. package/src/discontinuous/world-kernels/README.md +24 -0
  2124. package/src/discontinuous/world-kernels/airy.js +43 -0
  2125. package/src/discontinuous/world-kernels/aitoff.js +48 -0
  2126. package/src/discontinuous/world-kernels/armadillo.js +51 -0
  2127. package/src/discontinuous/world-kernels/august.js +36 -0
  2128. package/src/discontinuous/world-kernels/baker.js +50 -0
  2129. package/src/discontinuous/world-kernels/bertin.js +41 -0
  2130. package/src/discontinuous/world-kernels/boggs.js +32 -0
  2131. package/src/discontinuous/world-kernels/bonne.js +27 -0
  2132. package/src/discontinuous/world-kernels/bottomley.js +25 -0
  2133. package/src/discontinuous/world-kernels/bromley.js +10 -0
  2134. package/src/discontinuous/world-kernels/chamberlin.js +97 -0
  2135. package/src/discontinuous/world-kernels/collignon.js +17 -0
  2136. package/src/discontinuous/world-kernels/craig.js +33 -0
  2137. package/src/discontinuous/world-kernels/craster.js +18 -0
  2138. package/src/discontinuous/world-kernels/cylindricalEqualArea.js +21 -0
  2139. package/src/discontinuous/world-kernels/cylindricalStereographic.js +21 -0
  2140. package/src/discontinuous/world-kernels/d3-geo-raw.js +26 -0
  2141. package/src/discontinuous/world-kernels/eckert1.js +18 -0
  2142. package/src/discontinuous/world-kernels/eckert2.js +17 -0
  2143. package/src/discontinuous/world-kernels/eckert3.js +17 -0
  2144. package/src/discontinuous/world-kernels/eckert4.js +24 -0
  2145. package/src/discontinuous/world-kernels/eckert5.js +17 -0
  2146. package/src/discontinuous/world-kernels/eckert6.js +22 -0
  2147. package/src/discontinuous/world-kernels/eisenlohr.js +88 -0
  2148. package/src/discontinuous/world-kernels/fahey.js +19 -0
  2149. package/src/discontinuous/world-kernels/foucaut.js +20 -0
  2150. package/src/discontinuous/world-kernels/foucautSinusoidal.js +38 -0
  2151. package/src/discontinuous/world-kernels/ginzburg4.js +17 -0
  2152. package/src/discontinuous/world-kernels/ginzburg5.js +17 -0
  2153. package/src/discontinuous/world-kernels/ginzburg6.js +19 -0
  2154. package/src/discontinuous/world-kernels/ginzburg8.js +34 -0
  2155. package/src/discontinuous/world-kernels/ginzburg9.js +17 -0
  2156. package/src/discontinuous/world-kernels/ginzburgPolyconic.js +64 -0
  2157. package/src/discontinuous/world-kernels/hammer.js +37 -0
  2158. package/src/discontinuous/world-kernels/hammerRetroazimuthal.js +63 -0
  2159. package/src/discontinuous/world-kernels/hill.js +57 -0
  2160. package/src/discontinuous/world-kernels/homolosine.js +24 -0
  2161. package/src/discontinuous/world-kernels/hufnagel.js +68 -0
  2162. package/src/discontinuous/world-kernels/hyperelliptical.js +56 -0
  2163. package/src/discontinuous/world-kernels/integrate.js +99 -0
  2164. package/src/discontinuous/world-kernels/kavrayskiy7.js +15 -0
  2165. package/src/discontinuous/world-kernels/lagrange.js +32 -0
  2166. package/src/discontinuous/world-kernels/larrivee.js +43 -0
  2167. package/src/discontinuous/world-kernels/laskowski.js +50 -0
  2168. package/src/discontinuous/world-kernels/littrow.js +19 -0
  2169. package/src/discontinuous/world-kernels/loximuthal.js +38 -0
  2170. package/src/discontinuous/world-kernels/math.js +98 -0
  2171. package/src/discontinuous/world-kernels/miller.js +15 -0
  2172. package/src/discontinuous/world-kernels/modifiedStereographic.js +112 -0
  2173. package/src/discontinuous/world-kernels/mollweide.js +30 -0
  2174. package/src/discontinuous/world-kernels/mtFlatPolarParabolic.js +23 -0
  2175. package/src/discontinuous/world-kernels/mtFlatPolarQuartic.js +29 -0
  2176. package/src/discontinuous/world-kernels/mtFlatPolarSinusoidal.js +25 -0
  2177. package/src/discontinuous/world-kernels/naturalEarth2.js +46 -0
  2178. package/src/discontinuous/world-kernels/nellHammer.js +20 -0
  2179. package/src/discontinuous/world-kernels/newton.js +77 -0
  2180. package/src/discontinuous/world-kernels/nicolosi.js +60 -0
  2181. package/src/discontinuous/world-kernels/patterson.js +45 -0
  2182. package/src/discontinuous/world-kernels/polyconic.js +36 -0
  2183. package/src/discontinuous/world-kernels/rectangularPolyconic.js +41 -0
  2184. package/src/discontinuous/world-kernels/robinson.js +88 -0
  2185. package/src/discontinuous/world-kernels/satellite.js +44 -0
  2186. package/src/discontinuous/world-kernels/sinuMollweide.js +24 -0
  2187. package/src/discontinuous/world-kernels/sinusoidal.js +15 -0
  2188. package/src/discontinuous/world-kernels/times.js +19 -0
  2189. package/src/discontinuous/world-kernels/twoPointEquidistant.js +41 -0
  2190. package/src/discontinuous/world-kernels/vanDerGrinten.js +48 -0
  2191. package/src/discontinuous/world-kernels/vanDerGrinten2.js +32 -0
  2192. package/src/discontinuous/world-kernels/vanDerGrinten3.js +24 -0
  2193. package/src/discontinuous/world-kernels/vanDerGrinten4.js +70 -0
  2194. package/src/discontinuous/world-kernels/wagner.js +61 -0
  2195. package/src/discontinuous/world-kernels/wagner4.js +13 -0
  2196. package/src/discontinuous/world-kernels/wagner6.js +15 -0
  2197. package/src/discontinuous/world-kernels/wiechel.js +25 -0
  2198. package/src/discontinuous/world-kernels/winkel3.js +45 -0
  2199. package/src/discontinuous/world-kernels.ts +249 -0
  2200. package/src/discontinuous/world-map.ts +257 -0
  2201. package/src/discontinuous.ts +134 -0
  2202. package/src/elastic.ts +7 -0
  2203. package/src/ellipsoid-geodesic.ts +159 -0
  2204. package/src/ellipsoid-helpers/ellipsoid-transform.ts +79 -20
  2205. package/src/ellipsoid-helpers/exact-nearest-surface.ts +118 -0
  2206. package/src/ellipsoid-helpers/intersection-bounds.ts +85 -0
  2207. package/src/ellipsoid-helpers/nearest-surface.ts +157 -0
  2208. package/src/ellipsoid-helpers/rhumb-pole-distance.ts +76 -0
  2209. package/src/ellipsoid-helpers/scale-to-geodetic-surface.ts +31 -90
  2210. package/src/ellipsoid-helpers/surface-polygon.ts +210 -0
  2211. package/src/ellipsoid-helpers/tangent-plane-numerics.ts +124 -0
  2212. package/src/ellipsoid-metrics.ts +225 -0
  2213. package/src/ellipsoid-occluder.ts +135 -0
  2214. package/src/ellipsoid-rhumb.ts +404 -0
  2215. package/src/ellipsoid-tangent-plane.ts +236 -38
  2216. package/src/ellipsoid-transforms.ts +61 -0
  2217. package/src/ellipsoid.ts +285 -117
  2218. package/src/entries/ellipsoid.ts +44 -0
  2219. package/src/expressions.ts +35 -0
  2220. package/src/geoarrow/builder-entry.ts +18 -0
  2221. package/src/geoarrow/builder.ts +860 -0
  2222. package/src/geoarrow/codecs.ts +1268 -0
  2223. package/src/geoarrow/index.ts +102 -0
  2224. package/src/geoarrow/kernels.ts +1290 -0
  2225. package/src/geoarrow/layout.ts +899 -0
  2226. package/src/geoarrow/tessellate.ts +133 -0
  2227. package/src/geoarrow/tessellation-entry.ts +7 -0
  2228. package/src/geoarrow/types.ts +259 -0
  2229. package/src/geoarrow/views.ts +150 -0
  2230. package/src/geoarrow/wkb-entry.ts +13 -0
  2231. package/src/geoarrow/worker.ts +20 -0
  2232. package/src/geodesic-exact/area.ts +70 -0
  2233. package/src/geodesic-exact/inverse-engine.ts +166 -0
  2234. package/src/geodesic-exact/polygon.ts +36 -0
  2235. package/src/geodesic-exact/quadrature.ts +60 -0
  2236. package/src/geodesic-exact.ts +290 -0
  2237. package/src/geodesic-intersections.ts +598 -0
  2238. package/src/geodesic-path.ts +128 -0
  2239. package/src/geodesic-polygon.ts +19 -0
  2240. package/src/geographic-seams/edge.ts +406 -0
  2241. package/src/geographic-seams/polygon.ts +478 -0
  2242. package/src/geographic-seams/types.ts +67 -0
  2243. package/src/geographic-seams.ts +81 -0
  2244. package/src/geographic-tiles.ts +87 -0
  2245. package/src/globe-horizon-bounds.ts +68 -0
  2246. package/src/globe.ts +31 -0
  2247. package/src/index.ts +4 -7
  2248. package/src/lng-lat-rectangle.ts +5 -3
  2249. package/src/local-reference-frame.ts +320 -0
  2250. package/src/make-obb-from-region.ts +6 -4
  2251. package/src/projection/analysis.ts +284 -0
  2252. package/src/projection/bulk.ts +343 -0
  2253. package/src/projection/datums.ts +13 -0
  2254. package/src/projection/deformation.ts +5 -0
  2255. package/src/projection/experimental/authalic-latitude.ts +49 -0
  2256. package/src/projection/experimental/catalogue-kernel.ts +65 -0
  2257. package/src/projection/experimental/common/adjust_lat.ts +11 -0
  2258. package/src/projection/experimental/common/adjust_lon.ts +14 -0
  2259. package/src/projection/experimental/common/asinhy.ts +14 -0
  2260. package/src/projection/experimental/common/asinz.ts +11 -0
  2261. package/src/projection/experimental/common/authlat.ts +9 -0
  2262. package/src/projection/experimental/common/authset.ts +25 -0
  2263. package/src/projection/experimental/common/clens.ts +20 -0
  2264. package/src/projection/experimental/common/clens_cmplx.ts +43 -0
  2265. package/src/projection/experimental/common/constants.ts +15 -0
  2266. package/src/projection/experimental/common/cosh.ts +10 -0
  2267. package/src/projection/experimental/common/e0fn.ts +8 -0
  2268. package/src/projection/experimental/common/e1fn.ts +8 -0
  2269. package/src/projection/experimental/common/e2fn.ts +8 -0
  2270. package/src/projection/experimental/common/e3fn.ts +8 -0
  2271. package/src/projection/experimental/common/fL.ts +10 -0
  2272. package/src/projection/experimental/common/gN.ts +9 -0
  2273. package/src/projection/experimental/common/gatg.ts +20 -0
  2274. package/src/projection/experimental/common/hypot.ts +13 -0
  2275. package/src/projection/experimental/common/imlfn.ts +23 -0
  2276. package/src/projection/experimental/common/invlatiso.ts +20 -0
  2277. package/src/projection/experimental/common/iqsfnz.ts +45 -0
  2278. package/src/projection/experimental/common/latiso.ts +21 -0
  2279. package/src/projection/experimental/common/log1py.ts +11 -0
  2280. package/src/projection/experimental/common/meridian-distance.ts +45 -0
  2281. package/src/projection/experimental/common/mlfn.ts +8 -0
  2282. package/src/projection/experimental/common/msfnz.ts +9 -0
  2283. package/src/projection/experimental/common/phi2z.ts +22 -0
  2284. package/src/projection/experimental/common/pj_enfn.ts +29 -0
  2285. package/src/projection/experimental/common/pj_inv_mlfn.ts +28 -0
  2286. package/src/projection/experimental/common/pj_mlfn.ts +10 -0
  2287. package/src/projection/experimental/common/qsfnz.ts +17 -0
  2288. package/src/projection/experimental/common/sign.ts +8 -0
  2289. package/src/projection/experimental/common/sinh.ts +10 -0
  2290. package/src/projection/experimental/common/srat.ts +8 -0
  2291. package/src/projection/experimental/common/tsfnz.ts +14 -0
  2292. package/src/projection/experimental/common/vincenty.ts +180 -0
  2293. package/src/projection/experimental/core.ts +77 -0
  2294. package/src/projection/experimental/crs/datum-catalog.ts +65 -0
  2295. package/src/projection/experimental/crs/datum-table.ts +1360 -0
  2296. package/src/projection/experimental/crs/ellipsoid-table.ts +230 -0
  2297. package/src/projection/experimental/crs/normalize.ts +306 -0
  2298. package/src/projection/experimental/crs/primemeridian-table.ts +22 -0
  2299. package/src/projection/experimental/crs/projjson.ts +12 -0
  2300. package/src/projection/experimental/crs/spatial-reference.ts +115 -0
  2301. package/src/projection/experimental/crs/structured.ts +580 -0
  2302. package/src/projection/experimental/crs/types.ts +97 -0
  2303. package/src/projection/experimental/crs/wkt.ts +201 -0
  2304. package/src/projection/experimental/crs-descriptor.ts +250 -0
  2305. package/src/projection/experimental/crs-rendering-scale.ts +115 -0
  2306. package/src/projection/experimental/datum.ts +185 -0
  2307. package/src/projection/experimental/deformation-inverse.ts +125 -0
  2308. package/src/projection/experimental/deformation.ts +30 -0
  2309. package/src/projection/experimental/ellipsoidal-gnomonic.ts +83 -0
  2310. package/src/projection/experimental/entries/projections/aea.ts +5 -0
  2311. package/src/projection/experimental/entries/projections/aeqd.ts +5 -0
  2312. package/src/projection/experimental/entries/projections/bonne.ts +5 -0
  2313. package/src/projection/experimental/entries/projections/cass.ts +5 -0
  2314. package/src/projection/experimental/entries/projections/cea.ts +5 -0
  2315. package/src/projection/experimental/entries/projections/eck6.ts +5 -0
  2316. package/src/projection/experimental/entries/projections/eqc.ts +5 -0
  2317. package/src/projection/experimental/entries/projections/eqdc.ts +5 -0
  2318. package/src/projection/experimental/entries/projections/eqearth.ts +5 -0
  2319. package/src/projection/experimental/entries/projections/equi.ts +5 -0
  2320. package/src/projection/experimental/entries/projections/etmerc.ts +5 -0
  2321. package/src/projection/experimental/entries/projections/geocent.ts +5 -0
  2322. package/src/projection/experimental/entries/projections/geos.ts +5 -0
  2323. package/src/projection/experimental/entries/projections/gnom.ts +5 -0
  2324. package/src/projection/experimental/entries/projections/gstmerc.ts +5 -0
  2325. package/src/projection/experimental/entries/projections/krovak.ts +5 -0
  2326. package/src/projection/experimental/entries/projections/laea.ts +5 -0
  2327. package/src/projection/experimental/entries/projections/lcc.ts +5 -0
  2328. package/src/projection/experimental/entries/projections/merc.ts +5 -0
  2329. package/src/projection/experimental/entries/projections/mill.ts +5 -0
  2330. package/src/projection/experimental/entries/projections/moll.ts +5 -0
  2331. package/src/projection/experimental/entries/projections/nzmg.ts +5 -0
  2332. package/src/projection/experimental/entries/projections/ob_tran.ts +5 -0
  2333. package/src/projection/experimental/entries/projections/omerc.ts +5 -0
  2334. package/src/projection/experimental/entries/projections/ortho.ts +5 -0
  2335. package/src/projection/experimental/entries/projections/poly.ts +5 -0
  2336. package/src/projection/experimental/entries/projections/qsc.ts +5 -0
  2337. package/src/projection/experimental/entries/projections/robin.ts +5 -0
  2338. package/src/projection/experimental/entries/projections/sinu.ts +5 -0
  2339. package/src/projection/experimental/entries/projections/somerc.ts +5 -0
  2340. package/src/projection/experimental/entries/projections/stere.ts +5 -0
  2341. package/src/projection/experimental/entries/projections/sterea.ts +5 -0
  2342. package/src/projection/experimental/entries/projections/tmerc.ts +5 -0
  2343. package/src/projection/experimental/entries/projections/tpers.ts +5 -0
  2344. package/src/projection/experimental/entries/projections/utm.ts +5 -0
  2345. package/src/projection/experimental/entries/projections/vandg.ts +5 -0
  2346. package/src/projection/experimental/exact-helmert.ts +58 -0
  2347. package/src/projection/experimental/flat-projection.ts +80 -0
  2348. package/src/projection/experimental/grids/geotiff.ts +88 -0
  2349. package/src/projection/experimental/grids/grid.ts +141 -0
  2350. package/src/projection/experimental/grids/gtx.ts +31 -0
  2351. package/src/projection/experimental/grids/ntv2.ts +71 -0
  2352. package/src/projection/experimental/grids/scalar-geotiff.ts +231 -0
  2353. package/src/projection/experimental/grids/types.ts +35 -0
  2354. package/src/projection/experimental/grids/velocity-geotiff.ts +82 -0
  2355. package/src/projection/experimental/grids/velocity.ts +58 -0
  2356. package/src/projection/experimental/grids/vertical-geotiff.ts +28 -0
  2357. package/src/projection/experimental/grids/vertical.ts +99 -0
  2358. package/src/projection/experimental/helmert-flat.ts +76 -0
  2359. package/src/projection/experimental/index.ts +59 -0
  2360. package/src/projection/experimental/inverse-spherical-latitude.ts +19 -0
  2361. package/src/projection/experimental/kernel.ts +142 -0
  2362. package/src/projection/experimental/kernels/aea.ts +149 -0
  2363. package/src/projection/experimental/kernels/aeqd.ts +171 -0
  2364. package/src/projection/experimental/kernels/bonne.ts +141 -0
  2365. package/src/projection/experimental/kernels/cass.ts +140 -0
  2366. package/src/projection/experimental/kernels/cea.ts +71 -0
  2367. package/src/projection/experimental/kernels/eck6.ts +36 -0
  2368. package/src/projection/experimental/kernels/eqdc.ts +137 -0
  2369. package/src/projection/experimental/kernels/eqearth.ts +146 -0
  2370. package/src/projection/experimental/kernels/equi.ts +55 -0
  2371. package/src/projection/experimental/kernels/etmerc.ts +190 -0
  2372. package/src/projection/experimental/kernels/gauss.ts +79 -0
  2373. package/src/projection/experimental/kernels/geos.ts +183 -0
  2374. package/src/projection/experimental/kernels/gnom.ts +123 -0
  2375. package/src/projection/experimental/kernels/gstmerc.ts +74 -0
  2376. package/src/projection/experimental/kernels/krovak.ts +166 -0
  2377. package/src/projection/experimental/kernels/laea.ts +320 -0
  2378. package/src/projection/experimental/kernels/lcc.ts +141 -0
  2379. package/src/projection/experimental/kernels/mill.ts +60 -0
  2380. package/src/projection/experimental/kernels/moll.ts +109 -0
  2381. package/src/projection/experimental/kernels/nzmg.ts +249 -0
  2382. package/src/projection/experimental/kernels/omerc.ts +343 -0
  2383. package/src/projection/experimental/kernels/ortho.ts +52 -0
  2384. package/src/projection/experimental/kernels/poly.ts +217 -0
  2385. package/src/projection/experimental/kernels/qsc.ts +359 -0
  2386. package/src/projection/experimental/kernels/robin.ts +189 -0
  2387. package/src/projection/experimental/kernels/sinu.ts +118 -0
  2388. package/src/projection/experimental/kernels/somerc.ts +102 -0
  2389. package/src/projection/experimental/kernels/stere.ts +249 -0
  2390. package/src/projection/experimental/kernels/sterea.ts +82 -0
  2391. package/src/projection/experimental/kernels/tmerc.ts +227 -0
  2392. package/src/projection/experimental/kernels/tpers.ts +187 -0
  2393. package/src/projection/experimental/kernels/vandg.ts +147 -0
  2394. package/src/projection/experimental/kinematic-helmert-flat.ts +85 -0
  2395. package/src/projection/experimental/kinematic-helmert.ts +132 -0
  2396. package/src/projection/experimental/lazy-projection.ts +179 -0
  2397. package/src/projection/experimental/lazy-projections/aea.ts +10 -0
  2398. package/src/projection/experimental/lazy-projections/aeqd.ts +12 -0
  2399. package/src/projection/experimental/lazy-projections/bonne.ts +10 -0
  2400. package/src/projection/experimental/lazy-projections/cass.ts +10 -0
  2401. package/src/projection/experimental/lazy-projections/cea.ts +12 -0
  2402. package/src/projection/experimental/lazy-projections/eck6.ts +10 -0
  2403. package/src/projection/experimental/lazy-projections/eqc.ts +15 -0
  2404. package/src/projection/experimental/lazy-projections/eqdc.ts +11 -0
  2405. package/src/projection/experimental/lazy-projections/eqearth.ts +10 -0
  2406. package/src/projection/experimental/lazy-projections/equi.ts +10 -0
  2407. package/src/projection/experimental/lazy-projections/etmerc.ts +12 -0
  2408. package/src/projection/experimental/lazy-projections/geocent.ts +10 -0
  2409. package/src/projection/experimental/lazy-projections/geos.ts +10 -0
  2410. package/src/projection/experimental/lazy-projections/gnom.ts +10 -0
  2411. package/src/projection/experimental/lazy-projections/gstmerc.ts +13 -0
  2412. package/src/projection/experimental/lazy-projections/index.ts +41 -0
  2413. package/src/projection/experimental/lazy-projections/krovak.ts +18 -0
  2414. package/src/projection/experimental/lazy-projections/laea.ts +12 -0
  2415. package/src/projection/experimental/lazy-projections/lcc.ts +22 -0
  2416. package/src/projection/experimental/lazy-projections/merc.ts +19 -0
  2417. package/src/projection/experimental/lazy-projections/mill.ts +11 -0
  2418. package/src/projection/experimental/lazy-projections/moll.ts +10 -0
  2419. package/src/projection/experimental/lazy-projections/nzmg.ts +11 -0
  2420. package/src/projection/experimental/lazy-projections/ob_tran.ts +25 -0
  2421. package/src/projection/experimental/lazy-projections/omerc.ts +22 -0
  2422. package/src/projection/experimental/lazy-projections/ortho.ts +10 -0
  2423. package/src/projection/experimental/lazy-projections/poly.ts +10 -0
  2424. package/src/projection/experimental/lazy-projections/qsc.ts +16 -0
  2425. package/src/projection/experimental/lazy-projections/robin.ts +10 -0
  2426. package/src/projection/experimental/lazy-projections/sinu.ts +10 -0
  2427. package/src/projection/experimental/lazy-projections/somerc.ts +12 -0
  2428. package/src/projection/experimental/lazy-projections/stere.ts +18 -0
  2429. package/src/projection/experimental/lazy-projections/sterea.ts +20 -0
  2430. package/src/projection/experimental/lazy-projections/tmerc.ts +22 -0
  2431. package/src/projection/experimental/lazy-projections/tpers.ts +11 -0
  2432. package/src/projection/experimental/lazy-projections/utm.ts +12 -0
  2433. package/src/projection/experimental/lazy-projections/vandg.ts +10 -0
  2434. package/src/projection/experimental/mutable-projection.ts +63 -0
  2435. package/src/projection/experimental/numeric-flat.ts +73 -0
  2436. package/src/projection/experimental/parameters.ts +36 -0
  2437. package/src/projection/experimental/projection-descriptor.ts +79 -0
  2438. package/src/projection/experimental/projection-engine.ts +81 -0
  2439. package/src/projection/experimental/projection-pipeline.ts +1047 -0
  2440. package/src/projection/experimental/projection-scratch.ts +26 -0
  2441. package/src/projection/experimental/projections/aea.ts +41 -0
  2442. package/src/projection/experimental/projections/aeqd.ts +27 -0
  2443. package/src/projection/experimental/projections/bonne.ts +38 -0
  2444. package/src/projection/experimental/projections/cass.ts +39 -0
  2445. package/src/projection/experimental/projections/cea.ts +31 -0
  2446. package/src/projection/experimental/projections/eck6.ts +30 -0
  2447. package/src/projection/experimental/projections/eqdc.ts +40 -0
  2448. package/src/projection/experimental/projections/eqearth.ts +72 -0
  2449. package/src/projection/experimental/projections/equi.ts +31 -0
  2450. package/src/projection/experimental/projections/equidistant-cylindrical.ts +79 -0
  2451. package/src/projection/experimental/projections/geocentric.ts +42 -0
  2452. package/src/projection/experimental/projections/geos.ts +46 -0
  2453. package/src/projection/experimental/projections/gnom.ts +51 -0
  2454. package/src/projection/experimental/projections/gstmerc.ts +43 -0
  2455. package/src/projection/experimental/projections/krovak.ts +61 -0
  2456. package/src/projection/experimental/projections/laea.ts +39 -0
  2457. package/src/projection/experimental/projections/lcc.ts +67 -0
  2458. package/src/projection/experimental/projections/mercator.ts +150 -0
  2459. package/src/projection/experimental/projections/mill.ts +30 -0
  2460. package/src/projection/experimental/projections/moll.ts +30 -0
  2461. package/src/projection/experimental/projections/nzmg.ts +47 -0
  2462. package/src/projection/experimental/projections/ob-tran.ts +279 -0
  2463. package/src/projection/experimental/projections/omerc.ts +86 -0
  2464. package/src/projection/experimental/projections/ortho.ts +34 -0
  2465. package/src/projection/experimental/projections/poly.ts +40 -0
  2466. package/src/projection/experimental/projections/qsc.ts +84 -0
  2467. package/src/projection/experimental/projections/robin.ts +30 -0
  2468. package/src/projection/experimental/projections/sinu.ts +30 -0
  2469. package/src/projection/experimental/projections/somerc.ts +39 -0
  2470. package/src/projection/experimental/projections/stere.ts +59 -0
  2471. package/src/projection/experimental/projections/sterea.ts +61 -0
  2472. package/src/projection/experimental/projections/tpers.ts +59 -0
  2473. package/src/projection/experimental/projections/transverse-mercator.ts +89 -0
  2474. package/src/projection/experimental/projections/utm.ts +50 -0
  2475. package/src/projection/experimental/projections/vandg.ts +30 -0
  2476. package/src/projection/experimental/rendering-profile/angular-rendering-profile.ts +117 -0
  2477. package/src/projection/experimental/rendering-profile/azimuthal-rendering-bounds.ts +251 -0
  2478. package/src/projection/experimental/rendering-profile/geographic-bounds.ts +190 -0
  2479. package/src/projection/experimental/rendering-profile/geographic-rendering-profile.ts +29 -0
  2480. package/src/projection/experimental/rendering-profile/geostationary-rendering-profile.ts +128 -0
  2481. package/src/projection/experimental/rendering-profile/identity-rendering-profile.ts +15 -0
  2482. package/src/projection/experimental/rendering-profile/rectangular-rendering-profile.ts +133 -0
  2483. package/src/projection/experimental/rendering-profile/regional-rendering-bounds.ts +252 -0
  2484. package/src/projection/experimental/rendering-profile/rendering-bounds.ts +163 -0
  2485. package/src/projection/experimental/rendering-profile/rendering-profile.ts +96 -0
  2486. package/src/projection/experimental/rendering-profile/spherical-rendering-domain.ts +175 -0
  2487. package/src/projection/experimental/scalar-output.ts +74 -0
  2488. package/src/projection/experimental/spatial-deformation.ts +115 -0
  2489. package/src/projection/experimental/types.ts +181 -0
  2490. package/src/projection/experimental/typescript-projection.ts +581 -0
  2491. package/src/projection/experimental/vertical-datum.ts +39 -0
  2492. package/src/projection/grids/velocity.ts +5 -0
  2493. package/src/projection/index.ts +6 -0
  2494. package/src/projection/lib/projection.ts +161 -0
  2495. package/src/projection/numerical-derivative.ts +50 -0
  2496. package/src/projection/operations.ts +479 -0
  2497. package/src/projection/pipeline.ts +4 -0
  2498. package/src/projection/temporal.ts +133 -0
  2499. package/src/projection/transform-analysis.ts +169 -0
  2500. package/src/projection/types.ts +79 -0
  2501. package/src/projection/web-mercator.ts +148 -0
  2502. package/src/rhumb-path.ts +128 -0
  2503. package/src/rhumb-polygon.ts +24 -0
  2504. package/src/subdivide-geodesic-polyline.ts +74 -0
  2505. package/src/subdivide-globe-mesh.ts +75 -0
  2506. package/src/subdivide-rhumb-polyline.ts +108 -0
  2507. package/src/tile-matrix.ts +496 -0
  2508. package/src/tiles.ts +28 -0
  2509. package/src/triaxial/integrate.ts +82 -0
  2510. package/src/triaxial.ts +172 -0
  2511. package/src/type-utils.ts +31 -3
  2512. package/src/vendor/geographiclib-geodesic/README.md +21 -0
  2513. package/src/vendor/geographiclib-geodesic/runtime.js +2338 -0
  2514. package/src/web-mercator.ts +5 -0
  2515. package/src/wkb/index.ts +38 -0
  2516. package/src/wkb/types.ts +54 -0
  2517. package/src/wkb/wkb-builder.ts +395 -0
  2518. package/src/wkb/wkb-reader.ts +401 -0
  2519. package/src/wkb/wkb.ts +255 -0
  2520. package/src/wkb/wkt.ts +375 -0
@@ -0,0 +1,4114 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // dist/geoarrow/index.js
20
+ var index_exports = {};
21
+ __export(index_exports, {
22
+ GeoArrowBuilder: () => GeoArrowBuilder,
23
+ allocateGeoArrowBuilderTarget: () => allocateGeoArrowBuilderTarget,
24
+ assertGeoArrowResourceLimits: () => assertGeoArrowResourceLimits,
25
+ concatenateGeoArrowColumns: () => concatenateGeoArrowColumns,
26
+ convertGeoArrowColumn: () => convertGeoArrowColumn,
27
+ decodeGeoArrowWKB: () => decodeGeoArrowWKB,
28
+ decodeGeoArrowWKT: () => decodeGeoArrowWKT,
29
+ encodeGeoArrowWKB: () => encodeGeoArrowWKB,
30
+ encodeGeoArrowWKT: () => encodeGeoArrowWKT,
31
+ getGeoArrowBounds: () => getGeoArrowBounds,
32
+ getGeoArrowDimensionSize: () => getGeoArrowDimensionSize,
33
+ getGeoArrowEncodingForGeometry: () => getGeoArrowEncodingForGeometry,
34
+ getGeoArrowGeometryType: () => getGeoArrowGeometryType,
35
+ getGeoArrowRowBounds: () => getGeoArrowRowBounds,
36
+ getGeoArrowRowCount: () => getGeoArrowRowCount,
37
+ getGeoArrowRowView: () => getGeoArrowRowView,
38
+ getGeoArrowTransferList: () => getGeoArrowTransferList,
39
+ getGeoArrowVertexCount: () => getGeoArrowVertexCount,
40
+ getGeoArrowWKBVertexCount: () => getGeoArrowWKBVertexCount,
41
+ inferGeoArrowGeometryDimension: () => inferGeoArrowGeometryDimension,
42
+ inspectGeoArrowColumn: () => inspectGeoArrowColumn,
43
+ interleaveGeoArrowCoordinates: () => interleaveGeoArrowCoordinates,
44
+ isGeoArrowValueValid: () => isGeoArrowValueValid,
45
+ iterateGeoArrowBatches: () => iterateGeoArrowBatches,
46
+ makeGeoArrowColumnFromGeometryRows: () => makeGeoArrowColumnFromGeometryRows,
47
+ mapGeoArrowCoordinates: () => mapGeoArrowCoordinates,
48
+ mapGeoArrowCoordinatesInto: () => mapGeoArrowCoordinatesInto,
49
+ materializeGeoArrowRows: () => materializeGeoArrowRows,
50
+ mergeGeoArrowDimensions: () => mergeGeoArrowDimensions,
51
+ normalizeGeoArrowUnion: () => normalizeGeoArrowUnion,
52
+ rewindGeoArrow: () => rewindGeoArrow,
53
+ sliceGeoArrowArray: () => sliceGeoArrowArray,
54
+ sliceGeoArrowColumn: () => sliceGeoArrowColumn,
55
+ tessellateGeoArrowPolygons: () => tessellateGeoArrowPolygons,
56
+ validateGeoArrowColumn: () => validateGeoArrowColumn,
57
+ visitGeoArrowCoordinates: () => visitGeoArrowCoordinates
58
+ });
59
+ module.exports = __toCommonJS(index_exports);
60
+
61
+ // dist/geoarrow/types.js
62
+ function getGeoArrowDimensionSize(dimension) {
63
+ switch (dimension) {
64
+ case "xy":
65
+ return 2;
66
+ case "xyz":
67
+ case "xym":
68
+ return 3;
69
+ case "xyzm":
70
+ return 4;
71
+ }
72
+ }
73
+ function mergeGeoArrowDimensions(left, right) {
74
+ const hasZ = left === "xyz" || left === "xyzm" || right === "xyz" || right === "xyzm";
75
+ const hasM = left === "xym" || left === "xyzm" || right === "xym" || right === "xyzm";
76
+ return hasZ && hasM ? "xyzm" : hasZ ? "xyz" : hasM ? "xym" : "xy";
77
+ }
78
+ function inferGeoArrowGeometryDimension(geometry) {
79
+ if (geometry.type === "GeometryCollection") {
80
+ return geometry.geometries.reduce((dimension, child) => mergeGeoArrowDimensions(dimension, inferGeoArrowGeometryDimension(child)), "xy");
81
+ }
82
+ return inferCoordinateDimensions(geometry.coordinates);
83
+ }
84
+ function inferCoordinateDimensions(coordinates) {
85
+ if (typeof coordinates[0] === "number") {
86
+ return coordinates.length >= 4 ? "xyzm" : coordinates.length === 3 ? "xyz" : "xy";
87
+ }
88
+ let dimension = "xy";
89
+ for (const child of coordinates) {
90
+ if (Array.isArray(child)) {
91
+ dimension = mergeGeoArrowDimensions(dimension, inferCoordinateDimensions(child));
92
+ }
93
+ }
94
+ return dimension;
95
+ }
96
+ function getGeoArrowGeometryType(encoding) {
97
+ switch (encoding) {
98
+ case "geoarrow.point":
99
+ return "Point";
100
+ case "geoarrow.linestring":
101
+ return "LineString";
102
+ case "geoarrow.polygon":
103
+ return "Polygon";
104
+ case "geoarrow.multipoint":
105
+ return "MultiPoint";
106
+ case "geoarrow.multilinestring":
107
+ return "MultiLineString";
108
+ case "geoarrow.multipolygon":
109
+ return "MultiPolygon";
110
+ case "geoarrow.geometrycollection":
111
+ return "GeometryCollection";
112
+ default:
113
+ return null;
114
+ }
115
+ }
116
+ function getGeoArrowEncodingForGeometry(type) {
117
+ return `geoarrow.${type.toLowerCase()}`;
118
+ }
119
+
120
+ // dist/geoarrow/layout.js
121
+ function isGeoArrowValueValid(validity, index) {
122
+ if (!validity)
123
+ return true;
124
+ const bitIndex = (validity.bitOffset || 0) + index;
125
+ return Boolean(validity.values[bitIndex >> 3] & 1 << (bitIndex & 7));
126
+ }
127
+ function getGeoArrowRowCount(column) {
128
+ return column.chunks.reduce((count, chunk) => count + chunk.length, 0);
129
+ }
130
+ function visitGeoArrowCoordinates(column, visitor) {
131
+ let rowOffset = 0;
132
+ for (const chunk of column.chunks) {
133
+ visitChunkCoordinates(chunk, column.encoding, rowOffset, visitor);
134
+ rowOffset += chunk.length;
135
+ }
136
+ }
137
+ function sliceGeoArrowColumn(column, begin = 0, end = getGeoArrowRowCount(column)) {
138
+ const rowCount = getGeoArrowRowCount(column);
139
+ const first = normalizeSliceIndex(begin, rowCount);
140
+ const last = Math.max(first, normalizeSliceIndex(end, rowCount));
141
+ if (first === 0 && last === rowCount)
142
+ return column;
143
+ const chunks = [];
144
+ let chunkStart = 0;
145
+ for (const chunk of column.chunks) {
146
+ const chunkEnd = chunkStart + chunk.length;
147
+ const localFirst = Math.max(0, first - chunkStart);
148
+ const localLast = Math.min(chunk.length, last - chunkStart);
149
+ if (localLast > localFirst) {
150
+ chunks.push(sliceGeoArrowArray(chunk, localFirst, localLast));
151
+ }
152
+ chunkStart = chunkEnd;
153
+ if (chunkStart >= last)
154
+ break;
155
+ }
156
+ return { ...column, chunks };
157
+ }
158
+ function sliceGeoArrowArray(array, begin, end) {
159
+ if (begin === 0 && end === array.length)
160
+ return array;
161
+ const length = end - begin;
162
+ const validity = array.validity ? { ...array.validity, bitOffset: (array.validity.bitOffset || 0) + begin } : void 0;
163
+ switch (array.kind) {
164
+ case "primitive":
165
+ return {
166
+ ...array,
167
+ length,
168
+ offset: (array.offset || 0) + begin * (array.stride || 1),
169
+ validity
170
+ };
171
+ case "fixed-size-list":
172
+ return { ...array, length, offset: (array.offset || 0) + begin, validity };
173
+ case "list":
174
+ case "serialized":
175
+ return { ...array, length, offset: (array.offset || 0) + begin, validity };
176
+ case "struct":
177
+ return { ...array, length, offset: (array.offset || 0) + begin, validity };
178
+ case "dense-union":
179
+ return { ...array, length, offset: (array.offset || 0) + begin, validity };
180
+ }
181
+ }
182
+ function validateGeoArrowColumn(column) {
183
+ const issues = [];
184
+ for (let chunkIndex = 0; chunkIndex < column.chunks.length; chunkIndex++) {
185
+ validateArray(column.chunks[chunkIndex], `chunks[${chunkIndex}]`, issues);
186
+ }
187
+ validateColumnLayout(column, issues);
188
+ return { valid: issues.length === 0, issues };
189
+ }
190
+ function inspectGeoArrowColumn(column) {
191
+ const validation = validateGeoArrowColumn(column);
192
+ const storageKinds = [];
193
+ let nullCount = 0;
194
+ for (const chunk of column.chunks) {
195
+ collectStorageKinds(chunk, storageKinds);
196
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
197
+ if (!isGeoArrowRowValid(chunk, rowIndex))
198
+ nullCount++;
199
+ }
200
+ }
201
+ return {
202
+ encoding: column.encoding,
203
+ rowCount: getGeoArrowRowCount(column),
204
+ chunkCount: column.chunks.length,
205
+ nullCount,
206
+ coordinateCount: getGeoArrowVertexCount(column),
207
+ storageKinds,
208
+ valid: validation.valid,
209
+ issues: validation.issues
210
+ };
211
+ }
212
+ function isGeoArrowRowValid(array, rowIndex) {
213
+ if (!isGeoArrowValueValid(array.validity, rowIndex))
214
+ return false;
215
+ if (array.kind !== "dense-union")
216
+ return true;
217
+ const physicalIndex = (array.offset || 0) + rowIndex;
218
+ const child = array.children.find((candidate) => candidate.typeId === array.typeIds[physicalIndex]);
219
+ const valueOffset = array.valueOffsets[physicalIndex];
220
+ return Boolean(child && valueOffset >= 0 && valueOffset < child.data.length && isGeoArrowValueValid(child.data.validity, valueOffset));
221
+ }
222
+ function getGeoArrowVertexCount(column) {
223
+ if (column.encoding === "geoarrow.wkb" || column.encoding === "geoarrow.wkt" || column.encoding === "geoarrow.box") {
224
+ return 0;
225
+ }
226
+ let count = 0;
227
+ visitGeoArrowCoordinates(column, (coordinate) => {
228
+ count++;
229
+ return coordinate;
230
+ });
231
+ return count;
232
+ }
233
+ function getGeoArrowTransferList(column) {
234
+ const buffers = /* @__PURE__ */ new Set();
235
+ for (const chunk of column.chunks)
236
+ collectArrayBuffers(chunk, buffers);
237
+ return [...buffers];
238
+ }
239
+ function materializeGeoArrowRows(column) {
240
+ if (column.encoding === "geoarrow.wkb" || column.encoding === "geoarrow.wkt") {
241
+ throw new Error("Serialized GeoArrow columns must be decoded before materialization");
242
+ }
243
+ const rows = [];
244
+ for (const chunk of column.chunks) {
245
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
246
+ rows.push(materializeGeometryRow(chunk, rowIndex, column.encoding));
247
+ }
248
+ }
249
+ return rows;
250
+ }
251
+ function materializeGeometryRow(array, rowIndex, encoding) {
252
+ if (!isGeoArrowValueValid(array.validity, rowIndex))
253
+ return null;
254
+ if (encoding === "geoarrow.geometry") {
255
+ if (array.kind !== "dense-union")
256
+ return null;
257
+ return materializeUnionRow(array, rowIndex);
258
+ }
259
+ if (encoding === "geoarrow.geometrycollection") {
260
+ if (array.kind !== "list")
261
+ return null;
262
+ const [first, last] = getListRange(array, rowIndex);
263
+ const geometries = [];
264
+ for (let index = first; index < last; index++) {
265
+ if (array.child.kind !== "dense-union")
266
+ continue;
267
+ const geometry = materializeUnionRow(array.child, index);
268
+ if (geometry)
269
+ geometries.push(geometry);
270
+ }
271
+ return { type: "GeometryCollection", geometries };
272
+ }
273
+ const geometryType = getGeoArrowGeometryType(encoding);
274
+ if (!geometryType || geometryType === "GeometryCollection")
275
+ return null;
276
+ const depth = getEncodingDepth(encoding);
277
+ const coordinates = readNestedCoordinates(array, rowIndex, depth, geometryType === "Point" || geometryType === "MultiPoint");
278
+ if (!coordinates)
279
+ return null;
280
+ return { type: geometryType, coordinates };
281
+ }
282
+ function getGeoArrowOffset(offsets, index) {
283
+ const value = offsets[index];
284
+ const numericValue = typeof value === "bigint" ? Number(value) : value;
285
+ if (!Number.isSafeInteger(numericValue)) {
286
+ throw new Error(`GeoArrow offset ${String(value)} exceeds JavaScript's safe integer range`);
287
+ }
288
+ return numericValue;
289
+ }
290
+ function getListRange(list, rowIndex) {
291
+ const offsetIndex = (list.offset || 0) + rowIndex;
292
+ const baseValue = list.offsetBase ?? 0;
293
+ const base = typeof baseValue === "bigint" ? Number(baseValue) : baseValue;
294
+ return [
295
+ getGeoArrowOffset(list.offsets, offsetIndex) - base,
296
+ getGeoArrowOffset(list.offsets, offsetIndex + 1) - base
297
+ ];
298
+ }
299
+ function visitChunkCoordinates(array, encoding, rowOffset, visitor) {
300
+ for (let rowIndex = 0; rowIndex < array.length; rowIndex++) {
301
+ if (!isGeoArrowValueValid(array.validity, rowIndex))
302
+ continue;
303
+ if (encoding === "geoarrow.geometry" && array.kind === "dense-union") {
304
+ visitUnionRowCoordinates(array, rowIndex, rowOffset + rowIndex, visitor);
305
+ continue;
306
+ }
307
+ if (encoding === "geoarrow.geometrycollection" && array.kind === "list") {
308
+ const [first, last] = getListRange(array, rowIndex);
309
+ if (array.child.kind === "dense-union") {
310
+ for (let index = first; index < last; index++) {
311
+ visitUnionRowCoordinates(array.child, index, rowOffset + rowIndex, visitor);
312
+ }
313
+ }
314
+ continue;
315
+ }
316
+ const depth = getEncodingDepth(encoding);
317
+ visitNestedCoordinates(array, rowIndex, depth, rowOffset + rowIndex, visitor);
318
+ }
319
+ }
320
+ function visitUnionRowCoordinates(union, rowIndex, sourceRowIndex, visitor) {
321
+ if (!isGeoArrowValueValid(union.validity, rowIndex))
322
+ return;
323
+ const physicalIndex = (union.offset || 0) + rowIndex;
324
+ const typeId = union.typeIds[physicalIndex];
325
+ const valueOffset = union.valueOffsets[physicalIndex];
326
+ const child = union.children.find((candidate) => candidate.typeId === typeId);
327
+ if (!child)
328
+ return;
329
+ const encoding = child.encoding || getEncodingFromChildName(child.name);
330
+ if (encoding === "geoarrow.geometrycollection" && child.data.kind === "list") {
331
+ const [first, last] = getListRange(child.data, valueOffset);
332
+ if (child.data.child.kind === "dense-union") {
333
+ for (let index = first; index < last; index++) {
334
+ visitUnionRowCoordinates(child.data.child, index, sourceRowIndex, visitor);
335
+ }
336
+ }
337
+ return;
338
+ }
339
+ visitNestedCoordinates(child.data, valueOffset, getEncodingDepth(encoding), sourceRowIndex, visitor);
340
+ }
341
+ function visitNestedCoordinates(array, index, depth, rowIndex, visitor) {
342
+ if (depth === 0) {
343
+ const coordinate = readCoordinate(array, index);
344
+ if (coordinate)
345
+ visitor(coordinate, rowIndex);
346
+ return;
347
+ }
348
+ if (array.kind !== "list" || !isGeoArrowValueValid(array.validity, index))
349
+ return;
350
+ const [first, last] = getListRange(array, index);
351
+ for (let childIndex = first; childIndex < last; childIndex++) {
352
+ visitNestedCoordinates(array.child, childIndex, depth - 1, rowIndex, visitor);
353
+ }
354
+ }
355
+ function readNestedCoordinates(array, index, depth, normalizeEmptyPoints) {
356
+ if (depth === 0) {
357
+ const coordinate = readCoordinate(array, index);
358
+ return normalizeEmptyPoints && (coordinate == null ? void 0 : coordinate.every((value) => !Number.isFinite(value))) ? [] : coordinate;
359
+ }
360
+ if (array.kind !== "list" || !isGeoArrowValueValid(array.validity, index))
361
+ return null;
362
+ const [first, last] = getListRange(array, index);
363
+ const values = [];
364
+ for (let childIndex = first; childIndex < last; childIndex++) {
365
+ const value = readNestedCoordinates(array.child, childIndex, depth - 1, normalizeEmptyPoints);
366
+ if (value !== null)
367
+ values.push(value);
368
+ }
369
+ return values;
370
+ }
371
+ function readCoordinate(array, index) {
372
+ if (!isGeoArrowValueValid(array.validity, index))
373
+ return null;
374
+ if (array.kind === "fixed-size-list") {
375
+ const listIndex = (array.offset || 0) + index;
376
+ const coordinate = [];
377
+ for (let component = 0; component < array.size; component++) {
378
+ coordinate.push(readPrimitive(array.child, listIndex * array.size + component));
379
+ }
380
+ return coordinate;
381
+ }
382
+ if (array.kind === "struct") {
383
+ const structIndex = (array.offset || 0) + index;
384
+ const coordinate = [];
385
+ for (const name of ["x", "y", "z", "m"]) {
386
+ const child = array.children[name];
387
+ if (child)
388
+ coordinate.push(readPrimitive(child, structIndex));
389
+ }
390
+ return coordinate.length >= 2 ? coordinate : null;
391
+ }
392
+ return null;
393
+ }
394
+ function readPrimitive(array, index) {
395
+ if (array.kind !== "primitive")
396
+ throw new Error("GeoArrow coordinate child must be primitive");
397
+ if (!isGeoArrowValueValid(array.validity, index))
398
+ return Number.NaN;
399
+ const valueIndex = (array.offset || 0) + index * (array.stride || 1);
400
+ return Number(array.values[valueIndex]);
401
+ }
402
+ function materializeUnionRow(union, rowIndex) {
403
+ if (!isGeoArrowValueValid(union.validity, rowIndex))
404
+ return null;
405
+ const physicalIndex = (union.offset || 0) + rowIndex;
406
+ const typeId = union.typeIds[physicalIndex];
407
+ const valueOffset = union.valueOffsets[physicalIndex];
408
+ const child = union.children.find((candidate) => candidate.typeId === typeId);
409
+ if (!child || valueOffset < 0 || valueOffset >= child.data.length)
410
+ return null;
411
+ return materializeGeometryRow(child.data, valueOffset, child.encoding || getEncodingFromChildName(child.name));
412
+ }
413
+ function getEncodingFromChildName(name) {
414
+ const normalized = name.replace(/[^a-z]/gi, "").toLowerCase();
415
+ switch (normalized) {
416
+ case "point":
417
+ return "geoarrow.point";
418
+ case "linestring":
419
+ return "geoarrow.linestring";
420
+ case "polygon":
421
+ return "geoarrow.polygon";
422
+ case "multipoint":
423
+ return "geoarrow.multipoint";
424
+ case "multilinestring":
425
+ return "geoarrow.multilinestring";
426
+ case "multipolygon":
427
+ return "geoarrow.multipolygon";
428
+ case "geometrycollection":
429
+ return "geoarrow.geometrycollection";
430
+ default:
431
+ throw new Error(`Unknown GeoArrow dense-union child ${name}`);
432
+ }
433
+ }
434
+ function getEncodingDepth(encoding) {
435
+ switch (encoding) {
436
+ case "geoarrow.point":
437
+ return 0;
438
+ case "geoarrow.linestring":
439
+ case "geoarrow.multipoint":
440
+ return 1;
441
+ case "geoarrow.polygon":
442
+ case "geoarrow.multilinestring":
443
+ return 2;
444
+ case "geoarrow.multipolygon":
445
+ return 3;
446
+ default:
447
+ return 0;
448
+ }
449
+ }
450
+ function validateArray(array, path, issues) {
451
+ if (!Number.isSafeInteger(array.length) || array.length < 0) {
452
+ issues.push({
453
+ code: "invalid-length",
454
+ path,
455
+ message: "Length must be a non-negative safe integer."
456
+ });
457
+ return;
458
+ }
459
+ validateValidity(array.validity, array.length, path, issues);
460
+ switch (array.kind) {
461
+ case "primitive": {
462
+ const stride = array.stride || 1;
463
+ const offset = array.offset || 0;
464
+ if (!Number.isSafeInteger(stride) || stride < 1) {
465
+ issues.push({ code: "invalid-stride", path, message: "Primitive stride must be positive." });
466
+ }
467
+ const requiredLength = array.length === 0 ? offset : offset + (array.length - 1) * stride + 1;
468
+ if (offset < 0 || requiredLength > array.values.length) {
469
+ issues.push({
470
+ code: "invalid-length",
471
+ path,
472
+ message: "Primitive values do not cover the logical range."
473
+ });
474
+ }
475
+ break;
476
+ }
477
+ case "fixed-size-list": {
478
+ const offset = array.offset ?? 0;
479
+ const validOffset = Number.isSafeInteger(offset) && offset >= 0;
480
+ if (!validOffset) {
481
+ issues.push({
482
+ code: "invalid-offset",
483
+ path,
484
+ message: "Fixed-size list offset must be a non-negative safe integer."
485
+ });
486
+ }
487
+ if (!Number.isSafeInteger(array.size) || array.size < 1) {
488
+ issues.push({
489
+ code: "invalid-length",
490
+ path,
491
+ message: "Fixed-size list size must be positive."
492
+ });
493
+ }
494
+ const childEnd = (offset + array.length) * array.size;
495
+ if (validOffset && childEnd > array.child.length) {
496
+ issues.push({ code: "invalid-child", path, message: "Fixed-size list child is too short." });
497
+ }
498
+ validateArray(array.child, `${path}.child`, issues);
499
+ break;
500
+ }
501
+ case "list":
502
+ validateList(array, path, issues);
503
+ validateArray(array.child, `${path}.child`, issues);
504
+ break;
505
+ case "struct":
506
+ if (Object.keys(array.children).length === 0) {
507
+ issues.push({ code: "invalid-child", path, message: "Struct must contain children." });
508
+ }
509
+ for (const [name, child] of Object.entries(array.children)) {
510
+ if ((array.offset || 0) + array.length > child.length) {
511
+ issues.push({
512
+ code: "invalid-child",
513
+ path: `${path}.${name}`,
514
+ message: "Struct child is too short."
515
+ });
516
+ }
517
+ validateArray(child, `${path}.${name}`, issues);
518
+ }
519
+ break;
520
+ case "dense-union": {
521
+ const end = (array.offset || 0) + array.length;
522
+ if (end > array.typeIds.length || end > array.valueOffsets.length) {
523
+ issues.push({
524
+ code: "invalid-union",
525
+ path,
526
+ message: "Dense-union dispatch buffers are too short."
527
+ });
528
+ }
529
+ const childIds = /* @__PURE__ */ new Set();
530
+ for (const child of array.children) {
531
+ if (childIds.has(child.typeId)) {
532
+ issues.push({
533
+ code: "invalid-union",
534
+ path,
535
+ message: `Duplicate dense-union type ID ${child.typeId}.`
536
+ });
537
+ }
538
+ childIds.add(child.typeId);
539
+ validateArray(child.data, `${path}.${child.name}`, issues);
540
+ }
541
+ for (let index = array.offset || 0; index < end; index++) {
542
+ if (!isGeoArrowValueValid(array.validity, index - (array.offset || 0)))
543
+ continue;
544
+ const child = array.children.find((candidate) => candidate.typeId === array.typeIds[index]);
545
+ const valueOffset = array.valueOffsets[index];
546
+ if (!child || valueOffset < 0 || valueOffset >= child.data.length) {
547
+ issues.push({
548
+ code: "invalid-union",
549
+ path: `${path}[${index}]`,
550
+ message: "Dense-union row references an invalid child value."
551
+ });
552
+ }
553
+ }
554
+ break;
555
+ }
556
+ case "serialized": {
557
+ if (array.views) {
558
+ const requiredWords = ((array.offset || 0) + array.length) * 4;
559
+ if (requiredWords > array.views.length) {
560
+ issues.push({
561
+ code: "invalid-length",
562
+ path,
563
+ message: "Serialized view records are too short."
564
+ });
565
+ }
566
+ } else {
567
+ validateOffsets(array.offsets, array.offset || 0, array.length, array.values.length, array.offsetBase, path, issues);
568
+ }
569
+ break;
570
+ }
571
+ }
572
+ }
573
+ function validateList(list, path, issues) {
574
+ validateOffsets(list.offsets, list.offset || 0, list.length, list.child.length, list.offsetBase, path, issues);
575
+ }
576
+ function validateOffsets(offsets, offset, length, childLength, offsetBase, path, issues) {
577
+ if (offset < 0 || offset + length >= offsets.length) {
578
+ issues.push({ code: "invalid-offset", path, message: "Offset buffer is too short." });
579
+ return;
580
+ }
581
+ const base = typeof offsetBase === "bigint" ? Number(offsetBase) : offsetBase || 0;
582
+ let previous;
583
+ try {
584
+ previous = getGeoArrowOffset(offsets, offset) - base;
585
+ } catch (error) {
586
+ issues.push({ code: "unsafe-offset", path, message: error.message });
587
+ return;
588
+ }
589
+ for (let index = 1; index <= length; index++) {
590
+ let current;
591
+ try {
592
+ current = getGeoArrowOffset(offsets, offset + index) - base;
593
+ } catch (error) {
594
+ issues.push({ code: "unsafe-offset", path, message: error.message });
595
+ return;
596
+ }
597
+ if (current < previous || current < 0 || current > childLength) {
598
+ issues.push({
599
+ code: "invalid-offset",
600
+ path,
601
+ message: "Offsets must be monotonic and within child storage."
602
+ });
603
+ return;
604
+ }
605
+ previous = current;
606
+ }
607
+ }
608
+ function validateValidity(validity, length, path, issues) {
609
+ if (!validity)
610
+ return;
611
+ const bitOffset = validity.bitOffset || 0;
612
+ if (bitOffset < 0 || bitOffset + length > validity.values.length * 8) {
613
+ issues.push({ code: "invalid-validity", path, message: "Validity bitmap is too short." });
614
+ }
615
+ }
616
+ function validateColumnLayout(column, issues) {
617
+ var _a;
618
+ if (column.encoding === "geoarrow.wkb" || column.encoding === "geoarrow.wkt") {
619
+ for (const [index, chunk] of column.chunks.entries()) {
620
+ const expectedEncoding = column.encoding === "geoarrow.wkb" ? "binary" : "utf8";
621
+ if (chunk.kind !== "serialized" || chunk.encoding !== expectedEncoding) {
622
+ issues.push({
623
+ code: "invalid-layout",
624
+ path: `chunks[${index}]`,
625
+ message: `Serialized encoding requires ${expectedEncoding} storage.`
626
+ });
627
+ }
628
+ }
629
+ return;
630
+ }
631
+ if (column.encoding === "geoarrow.box") {
632
+ for (const [index, chunk] of column.chunks.entries()) {
633
+ if (chunk.kind !== "struct") {
634
+ addInvalidLayout(`chunks[${index}]`, "Box encoding requires struct storage.", issues);
635
+ continue;
636
+ }
637
+ const requiredNames = column.dimension === "xy" ? ["xmin", "ymin", "xmax", "ymax"] : column.dimension === "xyz" ? ["xmin", "ymin", "zmin", "xmax", "ymax", "zmax"] : column.dimension === "xym" ? ["xmin", "ymin", "mmin", "xmax", "ymax", "mmax"] : ["xmin", "ymin", "zmin", "mmin", "xmax", "ymax", "zmax", "mmax"];
638
+ for (const name of requiredNames) {
639
+ if (((_a = chunk.children[name]) == null ? void 0 : _a.kind) !== "primitive") {
640
+ addInvalidLayout(`chunks[${index}].${name}`, `Box storage requires primitive ${name}.`, issues);
641
+ }
642
+ }
643
+ }
644
+ return;
645
+ }
646
+ if (!column.coordinateLayout) {
647
+ addInvalidLayout("coordinateLayout", "Native geometry requires a coordinate layout.", issues);
648
+ return;
649
+ }
650
+ for (const [index, chunk] of column.chunks.entries()) {
651
+ validateGeometryLayout(chunk, column.encoding, column, `chunks[${index}]`, issues);
652
+ }
653
+ }
654
+ function validateGeometryLayout(array, encoding, column, path, issues) {
655
+ if (encoding === "geoarrow.geometry") {
656
+ if (array.kind !== "dense-union") {
657
+ addInvalidLayout(path, "Mixed geometry encoding requires dense-union storage.", issues);
658
+ return;
659
+ }
660
+ validateUnionLayouts(array, column, path, issues);
661
+ return;
662
+ }
663
+ if (encoding === "geoarrow.geometrycollection") {
664
+ if (array.kind !== "list" || array.child.kind !== "dense-union") {
665
+ addInvalidLayout(path, "GeometryCollection requires list-of-dense-union storage.", issues);
666
+ return;
667
+ }
668
+ validateUnionLayouts(array.child, column, `${path}.child`, issues);
669
+ return;
670
+ }
671
+ let coordinateArray = array;
672
+ const depth = getEncodingDepth(encoding);
673
+ for (let level = 0; level < depth; level++) {
674
+ if (coordinateArray.kind !== "list") {
675
+ addInvalidLayout(path, `${encoding} requires ${depth} variable-list levels.`, issues);
676
+ return;
677
+ }
678
+ coordinateArray = coordinateArray.child;
679
+ }
680
+ validateCoordinateLayout(coordinateArray, column, path, issues);
681
+ }
682
+ function validateUnionLayouts(union, column, path, issues) {
683
+ for (const child of union.children) {
684
+ let encoding;
685
+ try {
686
+ encoding = child.encoding || getEncodingFromChildName(child.name);
687
+ } catch (error) {
688
+ addInvalidLayout(`${path}.${child.name}`, error.message, issues);
689
+ continue;
690
+ }
691
+ const childColumn = child.dimension || child.coordinateLayout ? {
692
+ ...column,
693
+ dimension: child.dimension || column.dimension,
694
+ coordinateLayout: child.coordinateLayout || column.coordinateLayout
695
+ } : column;
696
+ validateGeometryLayout(child.data, encoding, childColumn, `${path}.${child.name}`, issues);
697
+ }
698
+ }
699
+ function validateCoordinateLayout(array, column, path, issues) {
700
+ var _a;
701
+ const dimensionSize = getGeoArrowDimensionSize(column.dimension);
702
+ if (column.coordinateLayout === "interleaved") {
703
+ if (array.kind !== "fixed-size-list" || array.size !== dimensionSize || array.child.kind !== "primitive") {
704
+ addInvalidLayout(path, `Interleaved ${column.dimension} coordinates require fixed-size-list<${dimensionSize}> primitive storage.`, issues);
705
+ }
706
+ return;
707
+ }
708
+ if (array.kind !== "struct") {
709
+ addInvalidLayout(path, `Separated ${column.dimension} coordinates require struct storage.`, issues);
710
+ return;
711
+ }
712
+ const requiredNames = column.dimension === "xy" ? ["x", "y"] : column.dimension === "xyz" ? ["x", "y", "z"] : column.dimension === "xym" ? ["x", "y", "m"] : ["x", "y", "z", "m"];
713
+ for (const name of requiredNames) {
714
+ if (((_a = array.children[name]) == null ? void 0 : _a.kind) !== "primitive") {
715
+ addInvalidLayout(`${path}.${name}`, `Separated coordinates require primitive ${name}.`, issues);
716
+ }
717
+ }
718
+ }
719
+ function addInvalidLayout(path, message, issues) {
720
+ issues.push({ code: "invalid-layout", path, message });
721
+ }
722
+ function collectStorageKinds(array, kinds) {
723
+ kinds.push(array.kind);
724
+ switch (array.kind) {
725
+ case "fixed-size-list":
726
+ case "list":
727
+ collectStorageKinds(array.child, kinds);
728
+ break;
729
+ case "struct":
730
+ for (const child of Object.values(array.children))
731
+ collectStorageKinds(child, kinds);
732
+ break;
733
+ case "dense-union":
734
+ for (const child of array.children)
735
+ collectStorageKinds(child.data, kinds);
736
+ break;
737
+ default:
738
+ break;
739
+ }
740
+ }
741
+ function collectArrayBuffers(array, buffers) {
742
+ if (array.validity)
743
+ addBuffer(array.validity.values.buffer, buffers);
744
+ switch (array.kind) {
745
+ case "primitive":
746
+ addBuffer(array.values.buffer, buffers);
747
+ break;
748
+ case "fixed-size-list":
749
+ collectArrayBuffers(array.child, buffers);
750
+ break;
751
+ case "list":
752
+ addBuffer(array.offsets.buffer, buffers);
753
+ collectArrayBuffers(array.child, buffers);
754
+ break;
755
+ case "struct":
756
+ for (const child of Object.values(array.children))
757
+ collectArrayBuffers(child, buffers);
758
+ break;
759
+ case "dense-union":
760
+ addBuffer(array.typeIds.buffer, buffers);
761
+ addBuffer(array.valueOffsets.buffer, buffers);
762
+ for (const child of array.children)
763
+ collectArrayBuffers(child.data, buffers);
764
+ break;
765
+ case "serialized":
766
+ addBuffer(array.offsets.buffer, buffers);
767
+ addBuffer(array.values.buffer, buffers);
768
+ if (array.views)
769
+ addBuffer(array.views.buffer, buffers);
770
+ for (const data of array.dataBuffers || [])
771
+ addBuffer(data.buffer, buffers);
772
+ break;
773
+ }
774
+ }
775
+ function addBuffer(buffer, buffers) {
776
+ if (buffer instanceof ArrayBuffer)
777
+ buffers.add(buffer);
778
+ }
779
+ function normalizeSliceIndex(index, length) {
780
+ const normalized = index < 0 ? Math.max(0, length + index) : Math.min(length, index);
781
+ return Math.max(0, Math.trunc(normalized));
782
+ }
783
+
784
+ // dist/geoarrow/views.js
785
+ function* iterateGeoArrowBatches(column) {
786
+ assertNativeGeometryColumn(column);
787
+ let rowOffset = 0;
788
+ for (let chunkIndex = 0; chunkIndex < column.chunks.length; chunkIndex++) {
789
+ const chunk = column.chunks[chunkIndex];
790
+ yield { column: { ...column, chunks: [chunk] }, chunkIndex, rowOffset };
791
+ rowOffset += chunk.length;
792
+ }
793
+ }
794
+ function getGeoArrowRowView(column, rowIndex) {
795
+ assertNativeGeometryColumn(column);
796
+ if (!Number.isSafeInteger(rowIndex) || rowIndex < 0) {
797
+ throw new RangeError("GeoArrow row index must be a nonnegative safe integer");
798
+ }
799
+ let chunkRowIndex = rowIndex;
800
+ for (let chunkIndex = 0; chunkIndex < column.chunks.length; chunkIndex++) {
801
+ const chunk = column.chunks[chunkIndex];
802
+ if (chunkRowIndex >= chunk.length) {
803
+ chunkRowIndex -= chunk.length;
804
+ continue;
805
+ }
806
+ let rowColumn = {
807
+ ...column,
808
+ chunks: [sliceGeoArrowArray(chunk, chunkRowIndex, chunkRowIndex + 1)]
809
+ };
810
+ if (column.encoding === "geoarrow.geometry" && isGeoArrowValueValid(chunk.validity, chunkRowIndex)) {
811
+ if (chunk.kind !== "dense-union") {
812
+ throw new Error("Mixed GeoArrow geometry requires dense-union storage");
813
+ }
814
+ const physicalIndex = (chunk.offset || 0) + chunkRowIndex;
815
+ const child = chunk.children.find((candidate) => candidate.typeId === chunk.typeIds[physicalIndex]);
816
+ const valueOffset = chunk.valueOffsets[physicalIndex];
817
+ if (!child || !Number.isInteger(valueOffset) || valueOffset < 0 || valueOffset >= child.data.length) {
818
+ throw new Error("Invalid GeoArrow union row dispatch");
819
+ }
820
+ const encoding = child.encoding || getEncodingFromChildName(child.name);
821
+ if (encoding === "geoarrow.geometry") {
822
+ throw new Error("GeoArrow geometry union children must be concrete geometries");
823
+ }
824
+ const data = sliceGeoArrowArray(child.data, valueOffset, valueOffset + 1);
825
+ rowColumn = {
826
+ ...column,
827
+ encoding,
828
+ dimension: child.dimension ?? column.dimension,
829
+ coordinateLayout: child.coordinateLayout ?? column.coordinateLayout,
830
+ chunks: [data]
831
+ };
832
+ assertNativeGeometryColumn(rowColumn);
833
+ }
834
+ return { column: rowColumn, rowIndex, chunkIndex, chunkRowIndex };
835
+ }
836
+ throw new RangeError("GeoArrow row index exceeds column length");
837
+ }
838
+ function concatenateGeoArrowColumns(columns) {
839
+ let firstColumn;
840
+ const chunks = [];
841
+ for (const column of columns) {
842
+ assertNativeGeometryColumn(column);
843
+ if (!firstColumn) {
844
+ firstColumn = column;
845
+ } else if (column.encoding !== firstColumn.encoding || column.dimension !== firstColumn.dimension || column.coordinateLayout !== firstColumn.coordinateLayout || (column.edges ?? "planar") !== (firstColumn.edges ?? "planar") || column.spatialReference !== firstColumn.spatialReference || column.metadata !== firstColumn.metadata) {
846
+ throw new Error("Cannot concatenate GeoArrow columns with different semantic envelopes");
847
+ }
848
+ for (const chunk of column.chunks)
849
+ chunks.push(chunk);
850
+ }
851
+ if (!firstColumn)
852
+ throw new Error("At least one GeoArrow column is required");
853
+ return { ...firstColumn, chunks };
854
+ }
855
+ function assertNativeGeometryColumn(column) {
856
+ if (column.encoding === "geoarrow.wkb" || column.encoding === "geoarrow.wkt" || column.encoding === "geoarrow.box") {
857
+ throw new Error("GeoArrow geometry views require native geometry; decode WKB/WKT first");
858
+ }
859
+ }
860
+
861
+ // dist/geoarrow/builder.js
862
+ var GeoArrowBuilder = class _GeoArrowBuilder {
863
+ constructor(options) {
864
+ this.length = 0;
865
+ this.nullCount = 0;
866
+ this.coordinateCount = 0;
867
+ this.partCount = 0;
868
+ this.ringCount = 0;
869
+ this.eventStack = [];
870
+ this.mode = options.mode;
871
+ this.encoding = options.encoding;
872
+ this.dimension = options.dimension || "xy";
873
+ this.coordinateLayout = options.coordinateLayout || "interleaved";
874
+ this.offsetType = options.offsetType || "int32";
875
+ this.coordinateType = options.coordinateType || "float64";
876
+ this.target = options.mode === "write" ? options.target : void 0;
877
+ if (this.target)
878
+ this.initializeTargetOffsets(this.target);
879
+ }
880
+ /** Appends one geometry row or null. */
881
+ append(geometry) {
882
+ var _a, _b, _c, _d, _e, _f;
883
+ const rowIndex = this.length++;
884
+ if (!geometry) {
885
+ this.nullCount++;
886
+ this.appendNull(rowIndex);
887
+ return this;
888
+ }
889
+ const expectedType = getGeoArrowGeometryType(this.encoding);
890
+ if (geometry.type !== expectedType) {
891
+ throw new Error(`GeoArrowBuilder for ${this.encoding} cannot append ${geometry.type}`);
892
+ }
893
+ if (geometry.type === "GeometryCollection") {
894
+ throw new Error("GeoArrowBuilder only accepts concrete geometry families");
895
+ }
896
+ if (this.target)
897
+ setValidityBit(this.target.validity, rowIndex);
898
+ const depth = getBuilderDepth(this.encoding);
899
+ const coordinates = geometry.coordinates;
900
+ if (depth === 0) {
901
+ this.writeCoordinateValues(coordinates);
902
+ } else if (depth === 1) {
903
+ this.writeCoordinateList(coordinates);
904
+ this.writeOffset((_a = this.target) == null ? void 0 : _a.geometryOffsets, rowIndex + 1, this.coordinateCount);
905
+ } else if (depth === 2) {
906
+ for (const part of coordinates) {
907
+ this.writeCoordinateList(part);
908
+ this.partCount++;
909
+ this.writeOffset((_b = this.target) == null ? void 0 : _b.partOffsets, this.partCount, this.coordinateCount);
910
+ }
911
+ this.writeOffset((_c = this.target) == null ? void 0 : _c.geometryOffsets, rowIndex + 1, this.partCount);
912
+ } else {
913
+ for (const polygon of coordinates) {
914
+ for (const ring of polygon) {
915
+ this.writeCoordinateList(ring);
916
+ this.ringCount++;
917
+ this.writeOffset((_d = this.target) == null ? void 0 : _d.ringOffsets, this.ringCount, this.coordinateCount);
918
+ }
919
+ this.partCount++;
920
+ this.writeOffset((_e = this.target) == null ? void 0 : _e.partOffsets, this.partCount, this.ringCount);
921
+ }
922
+ this.writeOffset((_f = this.target) == null ? void 0 : _f.geometryOffsets, rowIndex + 1, this.partCount);
923
+ }
924
+ return this;
925
+ }
926
+ /** Returns current exact allocation counts. */
927
+ getMeasurement() {
928
+ const depth = getBuilderDepth(this.encoding);
929
+ return {
930
+ length: this.length,
931
+ nullCount: this.nullCount,
932
+ coordinateCount: this.coordinateCount,
933
+ geometryOffsetCount: depth >= 1 ? this.length + 1 : 0,
934
+ partOffsetCount: depth >= 2 ? this.partCount + 1 : 0,
935
+ ringOffsetCount: depth >= 3 ? this.ringCount + 1 : 0
936
+ };
937
+ }
938
+ /** Allocates a write target from the current measure pass. */
939
+ allocateTarget() {
940
+ if (this.mode !== "measure")
941
+ throw new Error("Only a measure builder can allocate a target");
942
+ return allocateGeoArrowBuilderTarget(this.getMeasurement(), {
943
+ encoding: this.encoding,
944
+ dimension: this.dimension,
945
+ coordinateLayout: this.coordinateLayout,
946
+ offsetType: this.offsetType,
947
+ coordinateType: this.coordinateType
948
+ });
949
+ }
950
+ /** Finishes a write pass and returns a one-chunk borrowed column. */
951
+ finish() {
952
+ if (!this.target)
953
+ throw new Error("A measure builder has no finished column");
954
+ const measurement = this.getMeasurement();
955
+ assertTargetCapacity(this.target, measurement, getGeoArrowDimensionSize(this.dimension));
956
+ const coordinates = makeCoordinateArray(this.target.coordinates, measurement.coordinateCount, this.dimension, this.coordinateLayout);
957
+ const depth = getBuilderDepth(this.encoding);
958
+ let chunk = coordinates;
959
+ if (depth >= 3) {
960
+ chunk = {
961
+ kind: "list",
962
+ length: this.ringCount,
963
+ offsets: this.target.ringOffsets,
964
+ child: chunk
965
+ };
966
+ }
967
+ if (depth >= 2) {
968
+ chunk = {
969
+ kind: "list",
970
+ length: this.partCount,
971
+ offsets: this.target.partOffsets,
972
+ child: chunk
973
+ };
974
+ }
975
+ if (depth >= 1) {
976
+ chunk = {
977
+ kind: "list",
978
+ length: this.length,
979
+ offsets: this.target.geometryOffsets,
980
+ child: chunk,
981
+ validity: { values: this.target.validity }
982
+ };
983
+ } else {
984
+ chunk = { ...chunk, validity: { values: this.target.validity } };
985
+ }
986
+ return {
987
+ encoding: this.encoding,
988
+ dimension: this.dimension,
989
+ coordinateLayout: this.coordinateLayout,
990
+ chunks: [chunk]
991
+ };
992
+ }
993
+ /** Builds a homogeneous column using an internal measure/write pair. */
994
+ static build(rows, options) {
995
+ const measure = new _GeoArrowBuilder({ ...options, mode: "measure" });
996
+ for (const row of rows)
997
+ measure.append(row);
998
+ const write = new _GeoArrowBuilder({
999
+ ...options,
1000
+ mode: "write",
1001
+ target: measure.allocateTarget()
1002
+ });
1003
+ for (const row of rows)
1004
+ write.append(row);
1005
+ return write.finish();
1006
+ }
1007
+ appendNull(rowIndex) {
1008
+ var _a;
1009
+ const depth = getBuilderDepth(this.encoding);
1010
+ if (depth === 0) {
1011
+ this.writeCoordinateValues(new Array(getGeoArrowDimensionSize(this.dimension)).fill(0));
1012
+ } else {
1013
+ this.writeOffset((_a = this.target) == null ? void 0 : _a.geometryOffsets, rowIndex + 1, depth === 1 ? this.coordinateCount : this.partCount);
1014
+ }
1015
+ }
1016
+ writeCoordinateList(coordinates) {
1017
+ for (const coordinate of coordinates)
1018
+ this.writeCoordinateValues(coordinate);
1019
+ }
1020
+ writeCoordinateValues(coordinate) {
1021
+ const size = getGeoArrowDimensionSize(this.dimension);
1022
+ if (coordinate.length === 0 && (this.encoding === "geoarrow.point" || this.encoding === "geoarrow.multipoint")) {
1023
+ coordinate = new Array(size).fill(Number.NaN);
1024
+ }
1025
+ if (coordinate.length !== size) {
1026
+ throw new Error(`Expected ${size} coordinate values for ${this.dimension}`);
1027
+ }
1028
+ if (this.target)
1029
+ writeCoordinate(this.target.coordinates, this.coordinateCount, coordinate, this.dimension);
1030
+ this.coordinateCount++;
1031
+ }
1032
+ writeCoordinateComponents(x, y, z, m, sourceDimension) {
1033
+ const targetZ = sourceDimension === "xyz" || sourceDimension === "xyzm" ? z ?? 0 : 0;
1034
+ const targetM = sourceDimension === "xym" || sourceDimension === "xyzm" ? m ?? 0 : 0;
1035
+ if (this.target) {
1036
+ writeCoordinateComponents(this.target.coordinates, this.coordinateCount, x, y, targetZ, targetM, this.dimension);
1037
+ }
1038
+ this.coordinateCount++;
1039
+ }
1040
+ /** Begins an event-driven geometry. Events are accepted by both measure and write builders. */
1041
+ beginGeometry(type, dimension = this.dimension, _count) {
1042
+ const direct = getGeoArrowGeometryType(this.encoding) === type;
1043
+ const rowIndex = direct ? this.length++ : -1;
1044
+ this.eventStack.push({
1045
+ type,
1046
+ dimension,
1047
+ direct,
1048
+ rowIndex,
1049
+ ringStarted: false,
1050
+ polygonStarted: false,
1051
+ ...direct ? {} : { rings: [], polygons: [] },
1052
+ ...direct ? {} : { children: [] }
1053
+ });
1054
+ return this;
1055
+ }
1056
+ /** Begins a polygon part inside an event-built MultiPolygon. */
1057
+ beginPolygon() {
1058
+ const state = this.eventStack[this.eventStack.length - 1];
1059
+ if (!state || state.type !== "MultiPolygon") {
1060
+ throw new Error("beginPolygon must follow beginGeometry('MultiPolygon')");
1061
+ }
1062
+ if (state.direct) {
1063
+ this.finishEventRing(state);
1064
+ this.finishEventPolygon(state);
1065
+ state.polygonStarted = true;
1066
+ return this;
1067
+ }
1068
+ state.currentPolygon = [];
1069
+ state.polygons.push(state.currentPolygon);
1070
+ state.currentRing = void 0;
1071
+ return this;
1072
+ }
1073
+ /** Begins a ring/part in the current event geometry. */
1074
+ beginRing(_count) {
1075
+ const state = this.eventStack[this.eventStack.length - 1];
1076
+ if (!state)
1077
+ throw new Error("beginRing must follow beginGeometry");
1078
+ if (state.direct) {
1079
+ this.finishEventRing(state);
1080
+ state.ringStarted = true;
1081
+ return this;
1082
+ }
1083
+ state.currentRing = [];
1084
+ if (state.type === "MultiPolygon") {
1085
+ if (!state.currentPolygon)
1086
+ this.beginPolygon();
1087
+ state.currentPolygon.push(state.currentRing);
1088
+ } else {
1089
+ state.rings.push(state.currentRing);
1090
+ }
1091
+ return this;
1092
+ }
1093
+ /** Writes one coordinate into the current event ring or point. */
1094
+ writeCoordinate(x, y, z, m) {
1095
+ const state = this.eventStack[this.eventStack.length - 1];
1096
+ if (!state)
1097
+ throw new Error("writeCoordinate must follow beginGeometry");
1098
+ if (typeof x === "number" && state.direct) {
1099
+ this.writeCoordinateComponents(x, y, z, m, state.dimension);
1100
+ return this;
1101
+ }
1102
+ const coordinate = Array.isArray(x) ? [...x] : [x, y, ...z === void 0 ? [] : [z], ...m === void 0 ? [] : [m]];
1103
+ const size = getGeoArrowDimensionSize(state.dimension);
1104
+ if (coordinate.length !== size)
1105
+ throw new Error(`Expected ${size} coordinate values for ${state.dimension}`);
1106
+ if (state.direct) {
1107
+ this.writeCoordinateValues(resizeEventCoordinate(coordinate, state.dimension, this.dimension));
1108
+ return this;
1109
+ }
1110
+ if (state.type === "Point") {
1111
+ state.rings = [[coordinate]];
1112
+ return this;
1113
+ }
1114
+ if (!state.currentRing)
1115
+ this.beginRing();
1116
+ state.currentRing.push(coordinate);
1117
+ return this;
1118
+ }
1119
+ /** Writes scalar ordinates tagged with their source dimension without allocating a tuple. */
1120
+ writeCoordinateFromDimension(x, y, z, m, sourceDimension) {
1121
+ const state = this.eventStack[this.eventStack.length - 1];
1122
+ if (!state)
1123
+ throw new Error("writeCoordinateFromDimension must follow beginGeometry");
1124
+ if (state.direct) {
1125
+ this.writeCoordinateComponents(x, y, z, m, sourceDimension);
1126
+ return this;
1127
+ }
1128
+ const coordinate = getDimensionNames(state.dimension).map((name) => {
1129
+ if (name === "x")
1130
+ return x;
1131
+ if (name === "y")
1132
+ return y;
1133
+ if (name === "z")
1134
+ return sourceDimension === "xyz" || sourceDimension === "xyzm" ? z ?? 0 : 0;
1135
+ return sourceDimension === "xym" || sourceDimension === "xyzm" ? m ?? 0 : 0;
1136
+ });
1137
+ return this.writeCoordinate(coordinate);
1138
+ }
1139
+ /** Ends the current event geometry and appends it to the builder/parent. */
1140
+ endGeometry() {
1141
+ var _a, _b, _c;
1142
+ const state = this.eventStack.pop();
1143
+ if (!state)
1144
+ throw new Error("endGeometry without beginGeometry");
1145
+ if (state.direct) {
1146
+ this.finishEventRing(state);
1147
+ this.finishEventPolygon(state);
1148
+ const depth = getBuilderDepth(this.encoding);
1149
+ if (depth >= 1) {
1150
+ this.writeOffset((_a = this.target) == null ? void 0 : _a.geometryOffsets, state.rowIndex + 1, depth === 1 ? this.coordinateCount : this.partCount);
1151
+ }
1152
+ if (this.target)
1153
+ setValidityBit(this.target.validity, state.rowIndex);
1154
+ return this;
1155
+ }
1156
+ const coordinates = state.rings || [];
1157
+ let geometry;
1158
+ switch (state.type) {
1159
+ case "Point":
1160
+ geometry = { type: "Point", coordinates: ((_b = coordinates[0]) == null ? void 0 : _b[0]) || [] };
1161
+ break;
1162
+ case "LineString":
1163
+ geometry = { type: "LineString", coordinates: coordinates[0] || [] };
1164
+ break;
1165
+ case "MultiPoint":
1166
+ geometry = { type: "MultiPoint", coordinates: coordinates.flat() };
1167
+ break;
1168
+ case "Polygon":
1169
+ geometry = { type: "Polygon", coordinates };
1170
+ break;
1171
+ case "MultiLineString":
1172
+ geometry = { type: "MultiLineString", coordinates };
1173
+ break;
1174
+ case "MultiPolygon":
1175
+ geometry = {
1176
+ type: "MultiPolygon",
1177
+ coordinates: ((_c = state.polygons) == null ? void 0 : _c.length) ? state.polygons : [coordinates]
1178
+ };
1179
+ break;
1180
+ case "GeometryCollection":
1181
+ geometry = { type: "GeometryCollection", geometries: state.children || [] };
1182
+ break;
1183
+ }
1184
+ const parent = this.eventStack[this.eventStack.length - 1];
1185
+ if ((parent == null ? void 0 : parent.type) === "GeometryCollection")
1186
+ parent.children.push(geometry);
1187
+ else
1188
+ this.append(geometry);
1189
+ return this;
1190
+ }
1191
+ writeOffset(target, index, value) {
1192
+ if (!target)
1193
+ return;
1194
+ if (target instanceof BigInt64Array)
1195
+ target[index] = BigInt(value);
1196
+ else
1197
+ target[index] = value;
1198
+ }
1199
+ finishEventRing(state) {
1200
+ var _a, _b;
1201
+ if (!state.direct || !state.ringStarted)
1202
+ return;
1203
+ if (this.encoding === "geoarrow.multipolygon") {
1204
+ this.ringCount++;
1205
+ this.writeOffset((_a = this.target) == null ? void 0 : _a.ringOffsets, this.ringCount, this.coordinateCount);
1206
+ } else if (getBuilderDepth(this.encoding) >= 2) {
1207
+ this.partCount++;
1208
+ this.writeOffset((_b = this.target) == null ? void 0 : _b.partOffsets, this.partCount, this.coordinateCount);
1209
+ }
1210
+ state.ringStarted = false;
1211
+ }
1212
+ finishEventPolygon(state) {
1213
+ var _a;
1214
+ if (!state.direct || !state.polygonStarted)
1215
+ return;
1216
+ if (this.encoding === "geoarrow.multipolygon") {
1217
+ this.partCount++;
1218
+ this.writeOffset((_a = this.target) == null ? void 0 : _a.partOffsets, this.partCount, this.ringCount);
1219
+ }
1220
+ state.polygonStarted = false;
1221
+ }
1222
+ initializeTargetOffsets(target) {
1223
+ this.writeOffset(target.geometryOffsets, 0, 0);
1224
+ this.writeOffset(target.partOffsets, 0, 0);
1225
+ this.writeOffset(target.ringOffsets, 0, 0);
1226
+ }
1227
+ };
1228
+ function allocateGeoArrowBuilderTarget(measurement, options) {
1229
+ const dimension = options.dimension || "xy";
1230
+ const size = getGeoArrowDimensionSize(dimension);
1231
+ const FloatArray = options.coordinateType === "float32" ? Float32Array : Float64Array;
1232
+ const coordinateLayout = options.coordinateLayout || "interleaved";
1233
+ const coordinates = coordinateLayout === "interleaved" ? new FloatArray(measurement.coordinateCount * size) : makeSeparatedCoordinateTarget(FloatArray, measurement.coordinateCount, dimension);
1234
+ const OffsetArray = options.offsetType === "int64" ? BigInt64Array : Int32Array;
1235
+ return {
1236
+ validity: new Uint8Array(Math.ceil(measurement.length / 8)),
1237
+ coordinates,
1238
+ geometryOffsets: measurement.geometryOffsetCount ? new OffsetArray(measurement.geometryOffsetCount) : void 0,
1239
+ partOffsets: measurement.partOffsetCount ? new OffsetArray(measurement.partOffsetCount) : void 0,
1240
+ ringOffsets: measurement.ringOffsetCount ? new OffsetArray(measurement.ringOffsetCount) : void 0
1241
+ };
1242
+ }
1243
+ function makeGeoArrowColumnFromGeometryRows(rows, options = {}) {
1244
+ const geometryTypes = [...new Set(rows.filter(Boolean).map((row) => row.type))];
1245
+ const dimension = options.dimension || inferRowsDimension(rows);
1246
+ if (options.encoding === "geoarrow.geometry") {
1247
+ return {
1248
+ encoding: "geoarrow.geometry",
1249
+ dimension,
1250
+ coordinateLayout: options.coordinateLayout || "interleaved",
1251
+ chunks: [makeDenseUnionArray(rows, options, dimension)]
1252
+ };
1253
+ }
1254
+ if (geometryTypes.length === 0) {
1255
+ return GeoArrowBuilder.build(rows, { ...options, dimension, encoding: "geoarrow.point" });
1256
+ }
1257
+ if (geometryTypes.length === 1 && geometryTypes[0] !== "GeometryCollection") {
1258
+ return GeoArrowBuilder.build(rows, {
1259
+ ...options,
1260
+ dimension,
1261
+ encoding: getGeoArrowEncodingForGeometry(geometryTypes[0])
1262
+ });
1263
+ }
1264
+ if (geometryTypes.length === 1 && geometryTypes[0] === "GeometryCollection") {
1265
+ return {
1266
+ encoding: "geoarrow.geometrycollection",
1267
+ dimension,
1268
+ coordinateLayout: options.coordinateLayout || "interleaved",
1269
+ chunks: [makeGeometryCollectionArray(rows, options, dimension)]
1270
+ };
1271
+ }
1272
+ return {
1273
+ encoding: "geoarrow.geometry",
1274
+ dimension,
1275
+ coordinateLayout: options.coordinateLayout || "interleaved",
1276
+ chunks: [makeDenseUnionArray(rows, options, dimension)]
1277
+ };
1278
+ }
1279
+ function makeDenseUnionArray(rows, options, dimension) {
1280
+ const nonNullTypes = [...new Set(rows.filter(Boolean).map((row) => row.type))];
1281
+ const fallbackType = nonNullTypes[0] || "Point";
1282
+ const childRows = /* @__PURE__ */ new Map();
1283
+ for (const type of nonNullTypes.length ? nonNullTypes : [fallbackType])
1284
+ childRows.set(type, []);
1285
+ const typeIds = new Int8Array(rows.length);
1286
+ const valueOffsets = new Int32Array(rows.length);
1287
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
1288
+ const geometry = rows[rowIndex];
1289
+ const type = (geometry == null ? void 0 : geometry.type) || fallbackType;
1290
+ const values = childRows.get(type) || [];
1291
+ typeIds[rowIndex] = getGeometryTypeId(type, dimension);
1292
+ valueOffsets[rowIndex] = values.length;
1293
+ values.push(geometry);
1294
+ childRows.set(type, values);
1295
+ }
1296
+ const children = [...childRows.entries()].sort(([left], [right]) => getGeometryTypeId(left, dimension) - getGeometryTypeId(right, dimension)).map(([type, values]) => {
1297
+ const data = type === "GeometryCollection" ? makeGeometryCollectionArray(values, options, dimension) : GeoArrowBuilder.build(values, {
1298
+ ...options,
1299
+ dimension,
1300
+ encoding: getGeoArrowEncodingForGeometry(type)
1301
+ }).chunks[0];
1302
+ return {
1303
+ name: type,
1304
+ typeId: getGeometryTypeId(type, dimension),
1305
+ encoding: getGeoArrowEncodingForGeometry(type),
1306
+ dimension,
1307
+ coordinateLayout: options.coordinateLayout || "interleaved",
1308
+ data
1309
+ };
1310
+ });
1311
+ return {
1312
+ kind: "dense-union",
1313
+ length: rows.length,
1314
+ typeIds,
1315
+ valueOffsets,
1316
+ children
1317
+ };
1318
+ }
1319
+ function makeGeometryCollectionArray(rows, options, dimension) {
1320
+ const offsets = new Int32Array(rows.length + 1);
1321
+ const validity = new Uint8Array(Math.ceil(rows.length / 8));
1322
+ const flattened = [];
1323
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
1324
+ const row = rows[rowIndex];
1325
+ if ((row == null ? void 0 : row.type) === "GeometryCollection") {
1326
+ flattened.push(...row.geometries);
1327
+ setValidityBit(validity, rowIndex);
1328
+ }
1329
+ offsets[rowIndex + 1] = flattened.length;
1330
+ }
1331
+ return {
1332
+ kind: "list",
1333
+ length: rows.length,
1334
+ offsets,
1335
+ child: makeDenseUnionArray(flattened, options, dimension),
1336
+ validity: { values: validity }
1337
+ };
1338
+ }
1339
+ function makeCoordinateArray(coordinates, coordinateCount, dimension, layout) {
1340
+ const size = getGeoArrowDimensionSize(dimension);
1341
+ if (layout === "interleaved") {
1342
+ const values = coordinates;
1343
+ return {
1344
+ kind: "fixed-size-list",
1345
+ length: coordinateCount,
1346
+ size,
1347
+ child: { kind: "primitive", length: coordinateCount * size, values }
1348
+ };
1349
+ }
1350
+ const separated = coordinates;
1351
+ const children = {
1352
+ x: { kind: "primitive", length: coordinateCount, values: separated.x },
1353
+ y: { kind: "primitive", length: coordinateCount, values: separated.y }
1354
+ };
1355
+ if (separated.z) {
1356
+ children["z"] = { kind: "primitive", length: coordinateCount, values: separated.z };
1357
+ }
1358
+ if (separated.m) {
1359
+ children["m"] = { kind: "primitive", length: coordinateCount, values: separated.m };
1360
+ }
1361
+ return { kind: "struct", length: coordinateCount, children };
1362
+ }
1363
+ function makeSeparatedCoordinateTarget(FloatArray, count, dimension) {
1364
+ return {
1365
+ x: new FloatArray(count),
1366
+ y: new FloatArray(count),
1367
+ z: dimension === "xyz" || dimension === "xyzm" ? new FloatArray(count) : void 0,
1368
+ m: dimension === "xym" || dimension === "xyzm" ? new FloatArray(count) : void 0
1369
+ };
1370
+ }
1371
+ function writeCoordinate(target, coordinateIndex, coordinate, dimension) {
1372
+ if (target instanceof Float32Array || target instanceof Float64Array) {
1373
+ target.set(coordinate, coordinateIndex * coordinate.length);
1374
+ return;
1375
+ }
1376
+ target.x[coordinateIndex] = coordinate[0];
1377
+ target.y[coordinateIndex] = coordinate[1];
1378
+ if (dimension === "xyz")
1379
+ target.z[coordinateIndex] = coordinate[2];
1380
+ else if (dimension === "xym")
1381
+ target.m[coordinateIndex] = coordinate[2];
1382
+ else if (dimension === "xyzm") {
1383
+ target.z[coordinateIndex] = coordinate[2];
1384
+ target.m[coordinateIndex] = coordinate[3];
1385
+ }
1386
+ }
1387
+ function writeCoordinateComponents(target, coordinateIndex, x, y, z, m, dimension) {
1388
+ if (target instanceof Float32Array || target instanceof Float64Array) {
1389
+ const size = getGeoArrowDimensionSize(dimension);
1390
+ const offset = coordinateIndex * size;
1391
+ target[offset] = x;
1392
+ target[offset + 1] = y;
1393
+ if (dimension === "xyz")
1394
+ target[offset + 2] = z;
1395
+ else if (dimension === "xym")
1396
+ target[offset + 2] = m;
1397
+ else if (dimension === "xyzm") {
1398
+ target[offset + 2] = z;
1399
+ target[offset + 3] = m;
1400
+ }
1401
+ return;
1402
+ }
1403
+ target.x[coordinateIndex] = x;
1404
+ target.y[coordinateIndex] = y;
1405
+ if (dimension === "xyz")
1406
+ target.z[coordinateIndex] = z;
1407
+ else if (dimension === "xym")
1408
+ target.m[coordinateIndex] = m;
1409
+ else if (dimension === "xyzm") {
1410
+ target.z[coordinateIndex] = z;
1411
+ target.m[coordinateIndex] = m;
1412
+ }
1413
+ }
1414
+ function resizeEventCoordinate(coordinate, sourceDimension, targetDimension) {
1415
+ if (sourceDimension === targetDimension)
1416
+ return [...coordinate];
1417
+ const sourceNames = getDimensionNames(sourceDimension);
1418
+ return getDimensionNames(targetDimension).map((name) => {
1419
+ const index = sourceNames.indexOf(name);
1420
+ return index >= 0 ? coordinate[index] ?? 0 : 0;
1421
+ });
1422
+ }
1423
+ function getDimensionNames(dimension) {
1424
+ switch (dimension) {
1425
+ case "xy":
1426
+ return ["x", "y"];
1427
+ case "xyz":
1428
+ return ["x", "y", "z"];
1429
+ case "xym":
1430
+ return ["x", "y", "m"];
1431
+ case "xyzm":
1432
+ return ["x", "y", "z", "m"];
1433
+ }
1434
+ }
1435
+ function setValidityBit(validity, index) {
1436
+ validity[index >> 3] |= 1 << (index & 7);
1437
+ }
1438
+ function getBuilderDepth(encoding) {
1439
+ switch (encoding) {
1440
+ case "geoarrow.point":
1441
+ return 0;
1442
+ case "geoarrow.linestring":
1443
+ case "geoarrow.multipoint":
1444
+ return 1;
1445
+ case "geoarrow.polygon":
1446
+ case "geoarrow.multilinestring":
1447
+ return 2;
1448
+ case "geoarrow.multipolygon":
1449
+ return 3;
1450
+ }
1451
+ }
1452
+ function getGeometryTypeId(type, dimension = "xy") {
1453
+ const family = [
1454
+ "Point",
1455
+ "LineString",
1456
+ "Polygon",
1457
+ "MultiPoint",
1458
+ "MultiLineString",
1459
+ "MultiPolygon",
1460
+ "GeometryCollection"
1461
+ ].indexOf(type);
1462
+ const dimensionIndex = ["xy", "xyz", "xym", "xyzm"].indexOf(dimension);
1463
+ return family < 0 || dimensionIndex < 0 ? 1 : family * 4 + dimensionIndex + 1;
1464
+ }
1465
+ function inferRowsDimension(rows) {
1466
+ let size = 2;
1467
+ const visit = (value) => {
1468
+ if (!Array.isArray(value) || value.length === 0)
1469
+ return;
1470
+ if (typeof value[0] === "number")
1471
+ size = Math.max(size, value.length);
1472
+ else
1473
+ for (const child of value)
1474
+ visit(child);
1475
+ };
1476
+ const visitGeometry2 = (geometry) => {
1477
+ if (geometry.type === "GeometryCollection") {
1478
+ for (const child of geometry.geometries)
1479
+ visitGeometry2(child);
1480
+ } else {
1481
+ visit(geometry.coordinates);
1482
+ }
1483
+ };
1484
+ for (const row of rows) {
1485
+ if (row)
1486
+ visitGeometry2(row);
1487
+ }
1488
+ return size >= 4 ? "xyzm" : size === 3 ? "xyz" : "xy";
1489
+ }
1490
+ function assertTargetCapacity(target, measurement, size) {
1491
+ const coordinateLength = target.coordinates instanceof Float32Array || target.coordinates instanceof Float64Array ? target.coordinates.length / size : target.coordinates.x.length;
1492
+ if (coordinateLength < measurement.coordinateCount || target.validity.length * 8 < measurement.length) {
1493
+ throw new Error("GeoArrowBuilder target is smaller than its measured output");
1494
+ }
1495
+ }
1496
+
1497
+ // dist/geoarrow/kernels.js
1498
+ function getGeoArrowBounds(column) {
1499
+ if (column.encoding === "geoarrow.box")
1500
+ return getGeoArrowBoxBounds(column);
1501
+ let minimumX = Number.POSITIVE_INFINITY;
1502
+ let minimumY = Number.POSITIVE_INFINITY;
1503
+ let maximumX = Number.NEGATIVE_INFINITY;
1504
+ let maximumY = Number.NEGATIVE_INFINITY;
1505
+ visitGeoArrowCoordinates(column, (coordinate) => {
1506
+ const x = coordinate[0];
1507
+ const y = coordinate[1];
1508
+ if (Number.isFinite(x) && Number.isFinite(y)) {
1509
+ minimumX = Math.min(minimumX, x);
1510
+ minimumY = Math.min(minimumY, y);
1511
+ maximumX = Math.max(maximumX, x);
1512
+ maximumY = Math.max(maximumY, y);
1513
+ }
1514
+ return coordinate;
1515
+ });
1516
+ return Number.isFinite(minimumX) ? [minimumX, minimumY, maximumX, maximumY] : null;
1517
+ }
1518
+ function getGeoArrowRowBounds(column) {
1519
+ const rowCount = getGeoArrowRowCount(column);
1520
+ if (column.encoding === "geoarrow.box") {
1521
+ const result = [];
1522
+ for (const chunk of column.chunks) {
1523
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
1524
+ if (chunk.kind !== "struct" || !isGeoArrowValueValid(chunk.validity, rowIndex)) {
1525
+ result.push(null);
1526
+ continue;
1527
+ }
1528
+ const index = (chunk.offset || 0) + rowIndex;
1529
+ const xmin = readPrimitiveNumber(chunk.children["xmin"], index);
1530
+ const ymin = readPrimitiveNumber(chunk.children["ymin"], index);
1531
+ const xmax = readPrimitiveNumber(chunk.children["xmax"], index);
1532
+ const ymax = readPrimitiveNumber(chunk.children["ymax"], index);
1533
+ result.push([xmin, ymin, xmax, ymax].every(Number.isFinite) ? [xmin, ymin, xmax, ymax] : null);
1534
+ }
1535
+ }
1536
+ return result;
1537
+ }
1538
+ const minimumX = new Float64Array(rowCount).fill(Number.POSITIVE_INFINITY);
1539
+ const minimumY = new Float64Array(rowCount).fill(Number.POSITIVE_INFINITY);
1540
+ const maximumX = new Float64Array(rowCount).fill(Number.NEGATIVE_INFINITY);
1541
+ const maximumY = new Float64Array(rowCount).fill(Number.NEGATIVE_INFINITY);
1542
+ visitGeoArrowCoordinates(column, (coordinate, sourceRowIndex) => {
1543
+ const [x, y] = coordinate;
1544
+ if (Number.isFinite(x) && Number.isFinite(y)) {
1545
+ minimumX[sourceRowIndex] = Math.min(minimumX[sourceRowIndex], x);
1546
+ minimumY[sourceRowIndex] = Math.min(minimumY[sourceRowIndex], y);
1547
+ maximumX[sourceRowIndex] = Math.max(maximumX[sourceRowIndex], x);
1548
+ maximumY[sourceRowIndex] = Math.max(maximumY[sourceRowIndex], y);
1549
+ }
1550
+ return coordinate;
1551
+ });
1552
+ const bounds = [];
1553
+ for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {
1554
+ bounds.push(Number.isFinite(minimumX[rowIndex]) ? [minimumX[rowIndex], minimumY[rowIndex], maximumX[rowIndex], maximumY[rowIndex]] : null);
1555
+ }
1556
+ return bounds;
1557
+ }
1558
+ function getGeoArrowBoxBounds(column) {
1559
+ let minimumX = Number.POSITIVE_INFINITY;
1560
+ let minimumY = Number.POSITIVE_INFINITY;
1561
+ let maximumX = Number.NEGATIVE_INFINITY;
1562
+ let maximumY = Number.NEGATIVE_INFINITY;
1563
+ for (const chunk of column.chunks) {
1564
+ if (chunk.kind !== "struct")
1565
+ continue;
1566
+ const xmin = chunk.children["xmin"];
1567
+ const ymin = chunk.children["ymin"];
1568
+ const xmax = chunk.children["xmax"];
1569
+ const ymax = chunk.children["ymax"];
1570
+ if (!xmin || !ymin || !xmax || !ymax)
1571
+ continue;
1572
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
1573
+ if (!isGeoArrowValueValid(chunk.validity, rowIndex))
1574
+ continue;
1575
+ const structIndex = (chunk.offset || 0) + rowIndex;
1576
+ const bounds = [
1577
+ readPrimitiveNumber(xmin, structIndex),
1578
+ readPrimitiveNumber(ymin, structIndex),
1579
+ readPrimitiveNumber(xmax, structIndex),
1580
+ readPrimitiveNumber(ymax, structIndex)
1581
+ ];
1582
+ if (bounds.every(Number.isFinite)) {
1583
+ minimumX = Math.min(minimumX, bounds[0]);
1584
+ minimumY = Math.min(minimumY, bounds[1]);
1585
+ maximumX = Math.max(maximumX, bounds[2]);
1586
+ maximumY = Math.max(maximumY, bounds[3]);
1587
+ }
1588
+ }
1589
+ }
1590
+ return Number.isFinite(minimumX) ? [minimumX, minimumY, maximumX, maximumY] : null;
1591
+ }
1592
+ function readPrimitiveNumber(array, index) {
1593
+ if (array.kind !== "primitive" || !isGeoArrowValueValid(array.validity, index))
1594
+ return Number.NaN;
1595
+ const valueIndex = (array.offset || 0) + index * (array.stride || 1);
1596
+ return Number(array.values[valueIndex]);
1597
+ }
1598
+ function mapGeoArrowCoordinates(column, mapper, options = {}, sourceDimension) {
1599
+ assertGeoArrowResourceLimits(column, options.limits);
1600
+ if (column.encoding === "geoarrow.wkb" || column.encoding === "geoarrow.wkt") {
1601
+ throw new Error("Coordinate mapping requires native GeoArrow storage");
1602
+ }
1603
+ const dimension = options.dimension || column.dimension;
1604
+ const layout = options.coordinateLayout || column.coordinateLayout || "interleaved";
1605
+ let rowOffset = 0;
1606
+ const chunks = column.chunks.map((chunk) => {
1607
+ const mapped = mapArrayCoordinates(chunk, column.encoding, rowOffset, dimension, layout, mapper, options.coordinateType || "preserve", options.dimension !== void 0, options.coordinateLayout !== void 0, sourceDimension);
1608
+ rowOffset += chunk.length;
1609
+ return mapped;
1610
+ });
1611
+ return { ...column, dimension, coordinateLayout: layout, chunks };
1612
+ }
1613
+ function mapGeoArrowCoordinatesInto(target, source, mapper, options = {}) {
1614
+ const mapped = mapGeoArrowCoordinates(source, mapper, {
1615
+ ...options,
1616
+ coordinateLayout: target.coordinateLayout || void 0
1617
+ });
1618
+ const sourceLeaves = collectCoordinateLeaves(mapped);
1619
+ const targetLeaves = collectCoordinateLeaves(target);
1620
+ if (sourceLeaves.length !== targetLeaves.length) {
1621
+ throw new Error("GeoArrow destination has different coordinate topology");
1622
+ }
1623
+ for (let index = 0; index < sourceLeaves.length; index++) {
1624
+ const sourceLeaf = sourceLeaves[index];
1625
+ const targetLeaf = targetLeaves[index];
1626
+ if (sourceLeaf.length !== targetLeaf.length) {
1627
+ throw new Error("GeoArrow destination coordinate buffer has a different length");
1628
+ }
1629
+ targetLeaf.set(sourceLeaf);
1630
+ }
1631
+ return target;
1632
+ }
1633
+ function interleaveGeoArrowCoordinates(column) {
1634
+ if (column.coordinateLayout === "interleaved")
1635
+ return column;
1636
+ if (!column.coordinateLayout)
1637
+ return column;
1638
+ return mapGeoArrowCoordinates(column, (coordinate) => coordinate, {
1639
+ coordinateLayout: "interleaved"
1640
+ });
1641
+ }
1642
+ function normalizeGeoArrowUnion(column) {
1643
+ if (column.encoding !== "geoarrow.geometry")
1644
+ return column;
1645
+ let changed = false;
1646
+ const chunks = column.chunks.map((chunk) => {
1647
+ if (chunk.kind !== "dense-union")
1648
+ return chunk;
1649
+ const children = [...chunk.children].sort((left, right) => left.typeId - right.typeId);
1650
+ changed || (changed = children.some((child, index) => child !== chunk.children[index]));
1651
+ return children.every((child, index) => child === chunk.children[index]) ? chunk : { ...chunk, children };
1652
+ });
1653
+ return changed ? { ...column, chunks } : column;
1654
+ }
1655
+ function convertGeoArrowColumn(column, options = {}) {
1656
+ const encoding = options.encoding === "native" || !options.encoding ? column.encoding : options.encoding;
1657
+ const dimension = options.dimension || column.dimension;
1658
+ const coordinateLayout = options.coordinateLayout === "preserve" || !options.coordinateLayout ? column.coordinateLayout : options.coordinateLayout;
1659
+ const requestedOffsetType = options.offsetType || "preserve";
1660
+ const currentOffsetType = getColumnOffsetType(column);
1661
+ if (encoding === column.encoding && dimension === column.dimension && coordinateLayout === column.coordinateLayout && (requestedOffsetType === "preserve" || requestedOffsetType === currentOffsetType) && (!options.coordinateType || options.coordinateType === "preserve")) {
1662
+ return column;
1663
+ }
1664
+ if (encoding === "geoarrow.wkb" || encoding === "geoarrow.wkt") {
1665
+ throw new Error("Use encodeGeoArrowWKB or encodeGeoArrowWKT for serialized output");
1666
+ }
1667
+ assertGeoArrowResourceLimits(column, options.limits);
1668
+ const needsCoordinateMap = dimension !== column.dimension || coordinateLayout !== column.coordinateLayout || options.coordinateType && options.coordinateType !== "preserve";
1669
+ const mapped = needsCoordinateMap ? mapGeoArrowCoordinates(column, (coordinate) => coordinate, {
1670
+ dimension,
1671
+ coordinateLayout: coordinateLayout || void 0,
1672
+ coordinateType: options.coordinateType,
1673
+ limits: options.limits
1674
+ }, column.dimension) : column;
1675
+ const offsetConverted = requestedOffsetType === "preserve" ? mapped : {
1676
+ ...mapped,
1677
+ chunks: mapped.chunks.map((chunk) => convertArrayOffsets(chunk, requestedOffsetType))
1678
+ };
1679
+ if (encoding === column.encoding)
1680
+ return offsetConverted;
1681
+ if (encoding === "geoarrow.geometry")
1682
+ return promoteToDenseUnion(offsetConverted);
1683
+ const promoted = promoteSingleFamily(offsetConverted, encoding, requestedOffsetType);
1684
+ if (promoted)
1685
+ return promoted;
1686
+ if (column.encoding === "geoarrow.geometry")
1687
+ return demoteDenseUnion(offsetConverted, encoding);
1688
+ throw new Error(`Rows cannot be represented as ${encoding}`);
1689
+ }
1690
+ function promoteSingleFamily(column, encoding, offsetType) {
1691
+ const sourceEncoding = column.encoding;
1692
+ const validPair = sourceEncoding === "geoarrow.point" && encoding === "geoarrow.multipoint" || sourceEncoding === "geoarrow.linestring" && encoding === "geoarrow.multilinestring" || sourceEncoding === "geoarrow.polygon" && encoding === "geoarrow.multipolygon";
1693
+ if (!validPair)
1694
+ return null;
1695
+ const chunks = column.chunks.map((chunk) => {
1696
+ const OffsetArray = offsetType === "int64" || offsetType === "preserve" && findOffsetType(chunk) === "int64" ? BigInt64Array : Int32Array;
1697
+ const offsets = new OffsetArray(chunk.length + 1);
1698
+ for (let index = 0; index <= chunk.length; index++) {
1699
+ if (offsets instanceof BigInt64Array)
1700
+ offsets[index] = BigInt(index);
1701
+ else
1702
+ offsets[index] = index;
1703
+ }
1704
+ return {
1705
+ kind: "list",
1706
+ length: chunk.length,
1707
+ offsets,
1708
+ child: chunk,
1709
+ validity: chunk.validity
1710
+ };
1711
+ });
1712
+ return { ...column, encoding, chunks };
1713
+ }
1714
+ function resizeCoordinate(coordinate, sourceDimension, targetDimension) {
1715
+ const sourceNames = getDimensionNames2(sourceDimension);
1716
+ return getDimensionNames2(targetDimension).map((name) => {
1717
+ const sourceIndex = sourceNames.indexOf(name);
1718
+ return sourceIndex >= 0 ? coordinate[sourceIndex] ?? 0 : 0;
1719
+ });
1720
+ }
1721
+ function rewindGeoArrow(column, options = {}) {
1722
+ assertGeoArrowResourceLimits(column, options.limits);
1723
+ if (column.encoding === "geoarrow.wkb" || column.encoding === "geoarrow.wkt") {
1724
+ throw new Error("Rewinding requires native GeoArrow storage");
1725
+ }
1726
+ const outerClockwise = (options.outer || "counter-clockwise") === "clockwise";
1727
+ let changed = false;
1728
+ const chunks = column.chunks.map((chunk) => {
1729
+ const clone = mapArrayCoordinates(chunk, column.encoding, 0, column.dimension, column.coordinateLayout || "interleaved", (coordinate) => coordinate, "preserve");
1730
+ changed || (changed = rewindArrayRings(clone, column.encoding, outerClockwise));
1731
+ return clone;
1732
+ });
1733
+ return changed ? { ...column, chunks } : column;
1734
+ }
1735
+ function assertGeoArrowResourceLimits(column, options = {}) {
1736
+ const rows = getGeoArrowRowCount(column);
1737
+ if (rows > (options.maximumRows ?? Number.POSITIVE_INFINITY)) {
1738
+ throw new Error(`GeoArrow row count ${rows} exceeds maximumRows`);
1739
+ }
1740
+ if (column.chunks.length > (options.maximumChunks ?? Number.POSITIVE_INFINITY)) {
1741
+ throw new Error(`GeoArrow chunk count ${column.chunks.length} exceeds maximumChunks`);
1742
+ }
1743
+ const coordinates = getGeoArrowVertexCount(column);
1744
+ if (coordinates > (options.maximumCoordinates ?? Number.POSITIVE_INFINITY)) {
1745
+ throw new Error(`GeoArrow coordinate count ${coordinates} exceeds maximumCoordinates`);
1746
+ }
1747
+ if (options.maximumNestingDepth !== void 0) {
1748
+ const depth = Math.max(0, ...column.chunks.map(getArrayDepth));
1749
+ if (depth > options.maximumNestingDepth) {
1750
+ throw new Error(`GeoArrow nesting depth ${depth} exceeds maximumNestingDepth`);
1751
+ }
1752
+ }
1753
+ if (options.maximumOutputBytes !== void 0) {
1754
+ const estimatedBytes = coordinates * getGeoArrowDimensionSize(column.dimension) * 8;
1755
+ if (estimatedBytes > options.maximumOutputBytes) {
1756
+ throw new Error(`GeoArrow estimated output ${estimatedBytes} exceeds maximumOutputBytes`);
1757
+ }
1758
+ }
1759
+ }
1760
+ function mapArrayCoordinates(array, encoding, rowOffset, targetDimension, targetLayout, mapper, coordinateType, forceDimension = false, forceLayout = false, sourceDimension, rowIndicesOverride) {
1761
+ if (encoding === "geoarrow.geometry" && array.kind === "dense-union") {
1762
+ const childRowIndices = collectUnionRowIndices(array, rowOffset);
1763
+ return {
1764
+ ...array,
1765
+ children: array.children.map((child, childIndex) => {
1766
+ const childEncoding = child.encoding || getEncodingFromChildName2(child.name);
1767
+ const childDimension = forceDimension ? targetDimension : child.dimension || targetDimension;
1768
+ const childLayout = forceLayout ? targetLayout : child.coordinateLayout || targetLayout;
1769
+ return {
1770
+ ...child,
1771
+ data: mapArrayCoordinates(child.data, childEncoding, rowOffset, childDimension, childLayout, mapper, coordinateType, forceDimension, forceLayout, childDimension, childRowIndices[childIndex]),
1772
+ dimension: childDimension,
1773
+ coordinateLayout: childLayout,
1774
+ encoding: childEncoding
1775
+ };
1776
+ })
1777
+ };
1778
+ }
1779
+ if (encoding === "geoarrow.geometrycollection" && array.kind === "list") {
1780
+ return {
1781
+ ...array,
1782
+ child: mapArrayCoordinates(array.child, "geoarrow.geometry", rowOffset, targetDimension, targetLayout, mapper, coordinateType, forceDimension, forceLayout, sourceDimension, rowIndicesOverride)
1783
+ };
1784
+ }
1785
+ const depth = getEncodingDepth2(encoding);
1786
+ const rowIndices = rowIndicesOverride || collectLeafRowIndices(array, depth, rowOffset);
1787
+ return mapNestedArray(array, depth, rowOffset, targetDimension, targetLayout, mapper, coordinateType, rowIndices, sourceDimension);
1788
+ }
1789
+ function mapNestedArray(array, depth, rowOffset, targetDimension, targetLayout, mapper, coordinateType, rowIndices, sourceDimension) {
1790
+ if (depth === 0) {
1791
+ return mapCoordinateLeaf(array, rowOffset, targetDimension, targetLayout, mapper, coordinateType, rowIndices, sourceDimension);
1792
+ }
1793
+ if (array.kind !== "list")
1794
+ return array;
1795
+ return {
1796
+ ...array,
1797
+ child: mapNestedArray(array.child, depth - 1, rowOffset, targetDimension, targetLayout, mapper, coordinateType, rowIndices, sourceDimension)
1798
+ };
1799
+ }
1800
+ function mapCoordinateLeaf(array, rowOffset, targetDimension, targetLayout, mapper, coordinateType, rowIndices, sourceDimension) {
1801
+ const count = array.length;
1802
+ const targetSize = getGeoArrowDimensionSize(targetDimension);
1803
+ const sourceValues = new Array(count);
1804
+ for (let index = 0; index < count; index++) {
1805
+ const coordinate = readCoordinateAt(array, index);
1806
+ const mapped = coordinate ? mapper(sourceDimension ? resizeCoordinate(coordinate, sourceDimension, targetDimension) : coordinate, (rowIndices == null ? void 0 : rowIndices[index]) ?? rowOffset) : new Array(targetSize).fill(0);
1807
+ if (mapped.length !== targetSize) {
1808
+ throw new Error(`Coordinate mapper returned ${mapped.length} values; expected ${targetSize}`);
1809
+ }
1810
+ sourceValues[index] = [...mapped];
1811
+ }
1812
+ const FloatArray = resolveCoordinateConstructor(array, coordinateType);
1813
+ return makeCoordinateLeaf(sourceValues, targetDimension, targetLayout, FloatArray, array.validity);
1814
+ }
1815
+ function collectLeafRowIndices(array, depth, rowOffset) {
1816
+ const output = new Array(getLeafLength(array, depth)).fill(rowOffset);
1817
+ for (let rowIndex = 0; rowIndex < array.length; rowIndex++) {
1818
+ if (isGeoArrowValueValid(array.validity, rowIndex)) {
1819
+ assignNestedRowIndices(array, rowIndex, depth, rowOffset + rowIndex, output);
1820
+ }
1821
+ }
1822
+ return output;
1823
+ }
1824
+ function assignNestedRowIndices(array, index, depth, rowIndex, output) {
1825
+ if (depth === 0) {
1826
+ if (index >= 0 && index < output.length)
1827
+ output[index] = rowIndex;
1828
+ return;
1829
+ }
1830
+ if (array.kind !== "list")
1831
+ return;
1832
+ const [first, last] = getListRange(array, index);
1833
+ for (let childIndex = first; childIndex < last; childIndex++) {
1834
+ assignNestedRowIndices(array.child, childIndex, depth - 1, rowIndex, output);
1835
+ }
1836
+ }
1837
+ function collectUnionRowIndices(union, rowOffset) {
1838
+ if (union.kind !== "dense-union")
1839
+ return [];
1840
+ const output = union.children.map((child) => {
1841
+ const encoding = child.encoding || getEncodingFromChildName2(child.name);
1842
+ return new Array(getLeafLength(child.data, getEncodingDepth2(encoding))).fill(rowOffset);
1843
+ });
1844
+ for (let rowIndex = 0; rowIndex < union.length; rowIndex++) {
1845
+ if (!isGeoArrowValueValid(union.validity, rowIndex))
1846
+ continue;
1847
+ const physical = (union.offset || 0) + rowIndex;
1848
+ const childIndex = union.children.findIndex((child2) => child2.typeId === union.typeIds[physical]);
1849
+ if (childIndex < 0)
1850
+ continue;
1851
+ const child = union.children[childIndex];
1852
+ assignUnionRowIndices(child.data, child.encoding || getEncodingFromChildName2(child.name), union.valueOffsets[physical], rowOffset + rowIndex, output[childIndex]);
1853
+ }
1854
+ return output;
1855
+ }
1856
+ function assignUnionRowIndices(array, encoding, index, rowIndex, output) {
1857
+ if (encoding === "geoarrow.geometry" && array.kind === "dense-union") {
1858
+ const physical = (array.offset || 0) + index;
1859
+ const childIndex = array.children.findIndex((child) => child.typeId === array.typeIds[physical]);
1860
+ if (childIndex >= 0) {
1861
+ const child = array.children[childIndex];
1862
+ assignUnionRowIndices(child.data, child.encoding || getEncodingFromChildName2(child.name), array.valueOffsets[physical], rowIndex, output);
1863
+ }
1864
+ return;
1865
+ }
1866
+ if (encoding === "geoarrow.geometrycollection" && array.kind === "list") {
1867
+ const [first, last] = getListRange(array, index);
1868
+ if (array.child.kind === "dense-union") {
1869
+ for (let childIndex = first; childIndex < last; childIndex++) {
1870
+ assignUnionRowIndices(array.child, "geoarrow.geometry", childIndex, rowIndex, output);
1871
+ }
1872
+ }
1873
+ return;
1874
+ }
1875
+ assignNestedRowIndices(array, index, getEncodingDepth2(encoding), rowIndex, output);
1876
+ }
1877
+ function getLeafLength(array, depth) {
1878
+ let current = array;
1879
+ for (let level = 0; level < depth; level++) {
1880
+ if (current.kind !== "list")
1881
+ return 0;
1882
+ current = current.child;
1883
+ }
1884
+ return current.length;
1885
+ }
1886
+ function resolveCoordinateConstructor(array, coordinateType) {
1887
+ if (coordinateType === "float32")
1888
+ return Float32Array;
1889
+ if (coordinateType === "float64")
1890
+ return Float64Array;
1891
+ if (array.kind === "fixed-size-list" && array.child.kind === "primitive") {
1892
+ return array.child.values instanceof Float32Array ? Float32Array : Float64Array;
1893
+ }
1894
+ if (array.kind === "struct") {
1895
+ const child = array.children["x"];
1896
+ if ((child == null ? void 0 : child.kind) === "primitive" && child.values instanceof Float32Array)
1897
+ return Float32Array;
1898
+ }
1899
+ return Float64Array;
1900
+ }
1901
+ function makeCoordinateLeaf(coordinates, dimension, layout, FloatArray, validity) {
1902
+ const size = getGeoArrowDimensionSize(dimension);
1903
+ if (layout === "interleaved") {
1904
+ const values = new FloatArray(coordinates.length * size);
1905
+ for (let index = 0; index < coordinates.length; index++) {
1906
+ values.set(coordinates[index], index * size);
1907
+ }
1908
+ return {
1909
+ kind: "fixed-size-list",
1910
+ length: coordinates.length,
1911
+ size,
1912
+ child: { kind: "primitive", length: values.length, values },
1913
+ validity
1914
+ };
1915
+ }
1916
+ const children = {
1917
+ x: { kind: "primitive", length: coordinates.length, values: new FloatArray(coordinates.length) },
1918
+ y: { kind: "primitive", length: coordinates.length, values: new FloatArray(coordinates.length) }
1919
+ };
1920
+ const names = getDimensionNames2(dimension);
1921
+ for (let component = 2; component < names.length; component++) {
1922
+ children[names[component]] = {
1923
+ kind: "primitive",
1924
+ length: coordinates.length,
1925
+ values: new FloatArray(coordinates.length)
1926
+ };
1927
+ }
1928
+ for (let index = 0; index < coordinates.length; index++) {
1929
+ const coordinate = coordinates[index];
1930
+ for (let component = 0; component < names.length; component++) {
1931
+ const child = children[names[component]];
1932
+ if (child.kind === "primitive")
1933
+ child.values[index] = coordinate[component];
1934
+ }
1935
+ }
1936
+ return { kind: "struct", length: coordinates.length, children, validity };
1937
+ }
1938
+ function readCoordinateAt(array, index) {
1939
+ if (!isGeoArrowValueValid(array.validity, index))
1940
+ return null;
1941
+ if (array.kind === "fixed-size-list") {
1942
+ const logicalIndex = (array.offset || 0) + index;
1943
+ if (array.child.kind !== "primitive")
1944
+ return null;
1945
+ const values = [];
1946
+ for (let component = 0; component < array.size; component++) {
1947
+ const scalarIndex = logicalIndex * array.size + component;
1948
+ values.push(Number(array.child.values[(array.child.offset || 0) + scalarIndex * (array.child.stride || 1)]));
1949
+ }
1950
+ return values;
1951
+ }
1952
+ if (array.kind === "struct") {
1953
+ const logicalIndex = (array.offset || 0) + index;
1954
+ const values = [];
1955
+ for (const name of ["x", "y", "z", "m"]) {
1956
+ const child = array.children[name];
1957
+ if ((child == null ? void 0 : child.kind) === "primitive") {
1958
+ values.push(Number(child.values[(child.offset || 0) + logicalIndex * (child.stride || 1)]));
1959
+ }
1960
+ }
1961
+ return values.length >= 2 ? values : null;
1962
+ }
1963
+ return null;
1964
+ }
1965
+ function getDimensionNames2(dimension) {
1966
+ switch (dimension) {
1967
+ case "xy":
1968
+ return ["x", "y"];
1969
+ case "xyz":
1970
+ return ["x", "y", "z"];
1971
+ case "xym":
1972
+ return ["x", "y", "m"];
1973
+ case "xyzm":
1974
+ return ["x", "y", "z", "m"];
1975
+ }
1976
+ }
1977
+ function getEncodingFromChildName2(name) {
1978
+ const normalized = name.replace(/[^a-z]/gi, "").toLowerCase();
1979
+ const encoding = `geoarrow.${normalized}`;
1980
+ if (encoding === "geoarrow.point" || encoding === "geoarrow.linestring" || encoding === "geoarrow.polygon" || encoding === "geoarrow.multipoint" || encoding === "geoarrow.multilinestring" || encoding === "geoarrow.multipolygon" || encoding === "geoarrow.geometrycollection") {
1981
+ return encoding;
1982
+ }
1983
+ throw new Error(`Unknown GeoArrow dense-union child ${name}`);
1984
+ }
1985
+ function getEncodingDepth2(encoding) {
1986
+ switch (encoding) {
1987
+ case "geoarrow.point":
1988
+ return 0;
1989
+ case "geoarrow.linestring":
1990
+ case "geoarrow.multipoint":
1991
+ return 1;
1992
+ case "geoarrow.polygon":
1993
+ case "geoarrow.multilinestring":
1994
+ return 2;
1995
+ case "geoarrow.multipolygon":
1996
+ return 3;
1997
+ default:
1998
+ return 0;
1999
+ }
2000
+ }
2001
+ function promoteToDenseUnion(column) {
2002
+ if (column.encoding === "geoarrow.geometry")
2003
+ return column;
2004
+ const chunks = column.chunks.map((chunk) => {
2005
+ const typeId = getCanonicalTypeId(column.encoding, column.dimension);
2006
+ const typeIds = new Int8Array(chunk.length);
2007
+ typeIds.fill(typeId);
2008
+ const valueOffsets = new Int32Array(chunk.length);
2009
+ for (let index = 0; index < chunk.length; index++)
2010
+ valueOffsets[index] = index;
2011
+ return {
2012
+ kind: "dense-union",
2013
+ length: chunk.length,
2014
+ typeIds,
2015
+ valueOffsets,
2016
+ children: [
2017
+ {
2018
+ name: getGeoArrowGeometryTypeName(column.encoding),
2019
+ typeId,
2020
+ encoding: column.encoding,
2021
+ dimension: column.dimension,
2022
+ coordinateLayout: column.coordinateLayout,
2023
+ data: chunk
2024
+ }
2025
+ ]
2026
+ };
2027
+ });
2028
+ return { ...column, encoding: "geoarrow.geometry", chunks };
2029
+ }
2030
+ function demoteDenseUnion(column, encoding) {
2031
+ if (encoding === "geoarrow.geometry" || encoding === "geoarrow.geometrycollection")
2032
+ return column;
2033
+ if (!isConcreteEncoding(encoding))
2034
+ throw new Error(`Rows cannot be represented as ${encoding}`);
2035
+ const builderOptions = {
2036
+ encoding,
2037
+ dimension: column.dimension,
2038
+ coordinateLayout: column.coordinateLayout || "interleaved",
2039
+ offsetType: getColumnOffsetType(column)
2040
+ };
2041
+ const chunks = column.chunks.map((chunk) => {
2042
+ if (chunk.kind !== "dense-union")
2043
+ throw new Error("Expected dense-union storage");
2044
+ const replay = (builder) => {
2045
+ for (let index = 0; index < chunk.length; index++) {
2046
+ if (!isGeoArrowValueValid(chunk.validity, index)) {
2047
+ builder.append(null);
2048
+ continue;
2049
+ }
2050
+ const physical = (chunk.offset || 0) + index;
2051
+ const child = chunk.children.find((candidate) => candidate.typeId === chunk.typeIds[physical]);
2052
+ const childEncoding = child && (child.encoding || getEncodingFromChildName2(child.name));
2053
+ const childIndex = chunk.valueOffsets[physical];
2054
+ if (!child || !childEncoding || !isGeoArrowValueValid(child.data.validity, childIndex)) {
2055
+ builder.append(null);
2056
+ continue;
2057
+ }
2058
+ if (!isConcreteEncoding(childEncoding) || !canPromoteEncoding(childEncoding, encoding)) {
2059
+ throw new Error(`Rows cannot be represented as ${encoding}`);
2060
+ }
2061
+ replayPhysicalGeometryIntoBuilder(builder, child.data, childIndex, childEncoding, child.dimension || column.dimension, encoding);
2062
+ }
2063
+ };
2064
+ const measure = new GeoArrowBuilder({ ...builderOptions, mode: "measure" });
2065
+ replay(measure);
2066
+ const write = new GeoArrowBuilder({
2067
+ ...builderOptions,
2068
+ mode: "write",
2069
+ target: measure.allocateTarget()
2070
+ });
2071
+ replay(write);
2072
+ return write.finish().chunks[0];
2073
+ });
2074
+ return { ...column, encoding, coordinateLayout: builderOptions.coordinateLayout, chunks };
2075
+ }
2076
+ function replayPhysicalGeometryIntoBuilder(builder, array, rowIndex, sourceEncoding, sourceDimension, targetEncoding) {
2077
+ const targetType = getGeoArrowGeometryTypeName(targetEncoding);
2078
+ builder.beginGeometry(targetType, sourceDimension);
2079
+ if (sourceEncoding === "geoarrow.point") {
2080
+ writePhysicalCoordinateIntoBuilder(builder, array, rowIndex, sourceDimension);
2081
+ } else if (sourceEncoding === "geoarrow.linestring" || sourceEncoding === "geoarrow.multipoint") {
2082
+ const [first, last] = requireListRange(array, rowIndex);
2083
+ if (targetEncoding === "geoarrow.multilinestring")
2084
+ builder.beginRing(last - first);
2085
+ const leaf = array.child;
2086
+ for (let index = first; index < last; index++) {
2087
+ writePhysicalCoordinateIntoBuilder(builder, leaf, index, sourceDimension);
2088
+ }
2089
+ } else if (sourceEncoding === "geoarrow.polygon" || sourceEncoding === "geoarrow.multilinestring") {
2090
+ const [first, last] = requireListRange(array, rowIndex);
2091
+ if (targetEncoding === "geoarrow.multipolygon")
2092
+ builder.beginPolygon();
2093
+ const parts = array.child;
2094
+ for (let partIndex = first; partIndex < last; partIndex++) {
2095
+ const [partFirst, partLast] = requireListRange(parts, partIndex);
2096
+ builder.beginRing(partLast - partFirst);
2097
+ const leaf = parts.child;
2098
+ for (let index = partFirst; index < partLast; index++) {
2099
+ writePhysicalCoordinateIntoBuilder(builder, leaf, index, sourceDimension);
2100
+ }
2101
+ }
2102
+ } else {
2103
+ const [first, last] = requireListRange(array, rowIndex);
2104
+ const polygons = array.child;
2105
+ for (let polygonIndex = first; polygonIndex < last; polygonIndex++) {
2106
+ builder.beginPolygon();
2107
+ const [partFirst, partLast] = requireListRange(polygons, polygonIndex);
2108
+ const parts = polygons.child;
2109
+ for (let partIndex = partFirst; partIndex < partLast; partIndex++) {
2110
+ const [ringFirst, ringLast] = requireListRange(parts, partIndex);
2111
+ builder.beginRing(ringLast - ringFirst);
2112
+ const leaf = parts.child;
2113
+ for (let index = ringFirst; index < ringLast; index++) {
2114
+ writePhysicalCoordinateIntoBuilder(builder, leaf, index, sourceDimension);
2115
+ }
2116
+ }
2117
+ }
2118
+ }
2119
+ builder.endGeometry();
2120
+ }
2121
+ function writePhysicalCoordinateIntoBuilder(builder, array, index, dimension) {
2122
+ if (array.kind === "fixed-size-list" && array.child.kind === "primitive") {
2123
+ const logical = (array.offset || 0) + index;
2124
+ const stride = array.child.stride || 1;
2125
+ const scalarOffset = (array.child.offset || 0) + logical * array.size * stride;
2126
+ const x = Number(array.child.values[scalarOffset]);
2127
+ const y = Number(array.child.values[scalarOffset + stride]);
2128
+ const third = array.size > 2 ? Number(array.child.values[scalarOffset + 2 * stride]) : void 0;
2129
+ const fourth = array.size > 3 ? Number(array.child.values[scalarOffset + 3 * stride]) : void 0;
2130
+ builder.writeCoordinateFromDimension(x, y, dimension === "xyz" || dimension === "xyzm" ? third : void 0, dimension === "xym" ? third : fourth, dimension);
2131
+ return;
2132
+ }
2133
+ if (array.kind === "struct") {
2134
+ const logical = (array.offset || 0) + index;
2135
+ const read = (name) => {
2136
+ const child = array.children[name];
2137
+ return (child == null ? void 0 : child.kind) === "primitive" ? Number(child.values[(child.offset || 0) + logical * (child.stride || 1)]) : void 0;
2138
+ };
2139
+ builder.writeCoordinateFromDimension(read("x"), read("y"), read("z"), read("m"), dimension);
2140
+ return;
2141
+ }
2142
+ throw new Error("Invalid GeoArrow coordinate storage");
2143
+ }
2144
+ function requireListRange(array, index) {
2145
+ if (array.kind !== "list")
2146
+ throw new Error("Invalid GeoArrow list storage");
2147
+ return getListRange(array, index);
2148
+ }
2149
+ function canPromoteEncoding(source, target) {
2150
+ return source === target || source === "geoarrow.point" && target === "geoarrow.multipoint" || source === "geoarrow.linestring" && target === "geoarrow.multilinestring" || source === "geoarrow.polygon" && target === "geoarrow.multipolygon";
2151
+ }
2152
+ function isConcreteEncoding(encoding) {
2153
+ return encoding === "geoarrow.point" || encoding === "geoarrow.linestring" || encoding === "geoarrow.polygon" || encoding === "geoarrow.multipoint" || encoding === "geoarrow.multilinestring" || encoding === "geoarrow.multipolygon";
2154
+ }
2155
+ function getCanonicalTypeId(encoding, dimension) {
2156
+ const families = [
2157
+ "point",
2158
+ "linestring",
2159
+ "polygon",
2160
+ "multipoint",
2161
+ "multilinestring",
2162
+ "multipolygon",
2163
+ "geometrycollection"
2164
+ ];
2165
+ const dimensions = ["xy", "xyz", "xym", "xyzm"];
2166
+ const family = encoding.replace("geoarrow.", "");
2167
+ const familyIndex = families.indexOf(family);
2168
+ const dimensionIndex = dimensions.indexOf(dimension);
2169
+ return familyIndex < 0 || dimensionIndex < 0 ? 1 : familyIndex * 4 + dimensionIndex + 1;
2170
+ }
2171
+ function getColumnOffsetType(column) {
2172
+ for (const chunk of column.chunks) {
2173
+ const found = findOffsetType(chunk);
2174
+ if (found)
2175
+ return found;
2176
+ }
2177
+ return "int32";
2178
+ }
2179
+ function findOffsetType(array) {
2180
+ switch (array.kind) {
2181
+ case "list":
2182
+ case "serialized":
2183
+ return array.offsets instanceof BigInt64Array ? "int64" : "int32";
2184
+ case "fixed-size-list":
2185
+ return findOffsetType(array.child);
2186
+ case "struct": {
2187
+ for (const child of Object.values(array.children)) {
2188
+ const found = findOffsetType(child);
2189
+ if (found)
2190
+ return found;
2191
+ }
2192
+ return null;
2193
+ }
2194
+ case "dense-union":
2195
+ for (const child of array.children) {
2196
+ const found = findOffsetType(child.data);
2197
+ if (found)
2198
+ return found;
2199
+ }
2200
+ return null;
2201
+ default:
2202
+ return null;
2203
+ }
2204
+ }
2205
+ function convertArrayOffsets(array, offsetType) {
2206
+ const toOffsets = (offsets, offsetBase) => {
2207
+ if (offsetType === "int64") {
2208
+ const result2 = new BigInt64Array(offsets.length);
2209
+ for (let index = 0; index < offsets.length; index++)
2210
+ result2[index] = BigInt(offsets[index]);
2211
+ return { offsets: result2, ...offsetBase === void 0 ? {} : { offsetBase } };
2212
+ }
2213
+ const result = new Int32Array(offsets.length);
2214
+ const base = BigInt(offsetBase ?? 0);
2215
+ for (let index = 0; index < offsets.length; index++) {
2216
+ const value = BigInt(offsets[index]) - base;
2217
+ if (value < -2147483648n || value > 2147483647n) {
2218
+ throw new Error("GeoArrow offset cannot be represented as Int32");
2219
+ }
2220
+ result[index] = Number(value);
2221
+ }
2222
+ return { offsets: result, offsetBase: 0 };
2223
+ };
2224
+ switch (array.kind) {
2225
+ case "list":
2226
+ if (array.offsets instanceof (offsetType === "int64" ? BigInt64Array : Int32Array)) {
2227
+ return { ...array, child: convertArrayOffsets(array.child, offsetType) };
2228
+ }
2229
+ return {
2230
+ ...array,
2231
+ ...toOffsets(array.offsets, array.offsetBase),
2232
+ child: convertArrayOffsets(array.child, offsetType)
2233
+ };
2234
+ case "serialized":
2235
+ if (array.offsets instanceof (offsetType === "int64" ? BigInt64Array : Int32Array))
2236
+ return array;
2237
+ return { ...array, ...toOffsets(array.offsets, array.offsetBase) };
2238
+ case "fixed-size-list":
2239
+ return { ...array, child: convertArrayOffsets(array.child, offsetType) };
2240
+ case "struct":
2241
+ return {
2242
+ ...array,
2243
+ children: Object.fromEntries(Object.entries(array.children).map(([name, child]) => [
2244
+ name,
2245
+ convertArrayOffsets(child, offsetType)
2246
+ ]))
2247
+ };
2248
+ case "dense-union":
2249
+ return {
2250
+ ...array,
2251
+ children: array.children.map((child) => ({
2252
+ ...child,
2253
+ data: convertArrayOffsets(child.data, offsetType)
2254
+ }))
2255
+ };
2256
+ default:
2257
+ return array;
2258
+ }
2259
+ }
2260
+ function getGeoArrowGeometryTypeName(encoding) {
2261
+ return getGeoArrowGeometryType(encoding) || encoding.replace("geoarrow.", "");
2262
+ }
2263
+ function rewindArrayRings(array, encoding, outerClockwise) {
2264
+ if (encoding === "geoarrow.geometry" && array.kind === "dense-union") {
2265
+ let changed2 = false;
2266
+ for (const child of array.children) {
2267
+ if (rewindArrayRings(child.data, child.encoding || getEncodingFromChildName2(child.name), outerClockwise))
2268
+ changed2 = true;
2269
+ }
2270
+ return changed2;
2271
+ }
2272
+ if (encoding === "geoarrow.geometrycollection" && array.kind === "list") {
2273
+ if (array.child.kind !== "dense-union")
2274
+ return false;
2275
+ let changed2 = false;
2276
+ for (const child of array.child.children) {
2277
+ if (rewindArrayRings(child.data, child.encoding || getEncodingFromChildName2(child.name), outerClockwise))
2278
+ changed2 = true;
2279
+ }
2280
+ return changed2;
2281
+ }
2282
+ if (encoding !== "geoarrow.polygon" && encoding !== "geoarrow.multipolygon")
2283
+ return false;
2284
+ if (array.kind !== "list" || array.child.kind !== "list")
2285
+ return false;
2286
+ let changed = false;
2287
+ for (let rowIndex = 0; rowIndex < array.length; rowIndex++) {
2288
+ if (!isGeoArrowValueValid(array.validity, rowIndex))
2289
+ continue;
2290
+ const [, rowEnd] = getListRange(array, rowIndex);
2291
+ const rowStart = getListRange(array, rowIndex)[0];
2292
+ if (encoding === "geoarrow.polygon") {
2293
+ const rings = array.child;
2294
+ if (rewindRingGroup(rings, rowStart, rowEnd, outerClockwise))
2295
+ changed = true;
2296
+ } else {
2297
+ const polygons = array.child;
2298
+ for (let polygonIndex = rowStart; polygonIndex < rowEnd; polygonIndex++) {
2299
+ const [ringStart, ringEnd] = getListRange(polygons, polygonIndex);
2300
+ if (rewindRingGroup(polygons.child, ringStart, ringEnd, outerClockwise))
2301
+ changed = true;
2302
+ }
2303
+ }
2304
+ }
2305
+ return changed;
2306
+ }
2307
+ function rewindRingGroup(rings, firstRing, lastRing, outerClockwise) {
2308
+ if (rings.kind !== "list")
2309
+ return false;
2310
+ const leaf = rings.child;
2311
+ if (leaf.kind !== "fixed-size-list" && leaf.kind !== "struct")
2312
+ return false;
2313
+ let changed = false;
2314
+ for (let ringIndex = firstRing; ringIndex < lastRing; ringIndex++) {
2315
+ const [first, last] = getListRange(rings, ringIndex);
2316
+ const area = getRingArea(leaf, first, last);
2317
+ if (!Number.isFinite(area) || area === 0)
2318
+ continue;
2319
+ const shouldClockwise = ringIndex === firstRing ? outerClockwise : !outerClockwise;
2320
+ if (area < 0 !== shouldClockwise) {
2321
+ reverseCoordinateRange(leaf, first, last);
2322
+ changed = true;
2323
+ }
2324
+ }
2325
+ return changed;
2326
+ }
2327
+ function getRingArea(leaf, first, last) {
2328
+ let area = 0;
2329
+ for (let index = first; index < last; index++) {
2330
+ const current = readCoordinateAt(leaf, index);
2331
+ const next = readCoordinateAt(leaf, index + 1 < last ? index + 1 : first);
2332
+ if (!current || !next)
2333
+ return Number.NaN;
2334
+ area += current[0] * next[1] - next[0] * current[1];
2335
+ }
2336
+ return area / 2;
2337
+ }
2338
+ function reverseCoordinateRange(leaf, first, last) {
2339
+ const values = [];
2340
+ for (let index = first; index < last; index++)
2341
+ values.push(readCoordinateAt(leaf, index));
2342
+ values.reverse();
2343
+ for (let index = first; index < last; index++)
2344
+ writeCoordinateAt(leaf, index, values[index - first]);
2345
+ }
2346
+ function writeCoordinateAt(array, index, coordinate) {
2347
+ if (array.kind === "fixed-size-list" && array.child.kind === "primitive") {
2348
+ const logical = (array.offset || 0) + index;
2349
+ for (let component = 0; component < array.size; component++) {
2350
+ const scalar = (array.child.offset || 0) + logical * array.size + component;
2351
+ array.child.values[scalar] = coordinate[component];
2352
+ }
2353
+ } else if (array.kind === "struct") {
2354
+ const logical = (array.offset || 0) + index;
2355
+ const names = ["x", "y", "z", "m"];
2356
+ for (let component = 0; component < names.length; component++) {
2357
+ const child = array.children[names[component]];
2358
+ if ((child == null ? void 0 : child.kind) === "primitive")
2359
+ child.values[(child.offset || 0) + logical * (child.stride || 1)] = coordinate[component];
2360
+ }
2361
+ }
2362
+ }
2363
+ function collectCoordinateLeaves(column) {
2364
+ const leaves = [];
2365
+ for (const chunk of column.chunks)
2366
+ collectArrayCoordinateLeaves(chunk, leaves);
2367
+ return leaves;
2368
+ }
2369
+ function collectArrayCoordinateLeaves(array, leaves) {
2370
+ switch (array.kind) {
2371
+ case "primitive":
2372
+ if (array.values instanceof Float32Array || array.values instanceof Float64Array) {
2373
+ leaves.push(array.values);
2374
+ }
2375
+ break;
2376
+ case "fixed-size-list":
2377
+ case "list":
2378
+ collectArrayCoordinateLeaves(array.child, leaves);
2379
+ break;
2380
+ case "struct":
2381
+ for (const name of ["x", "y", "z", "m"]) {
2382
+ const child = array.children[name];
2383
+ if (child)
2384
+ collectArrayCoordinateLeaves(child, leaves);
2385
+ }
2386
+ break;
2387
+ case "dense-union":
2388
+ for (const child of array.children)
2389
+ collectArrayCoordinateLeaves(child.data, leaves);
2390
+ break;
2391
+ default:
2392
+ break;
2393
+ }
2394
+ }
2395
+ function getArrayDepth(array) {
2396
+ switch (array.kind) {
2397
+ case "list":
2398
+ case "fixed-size-list":
2399
+ return 1 + getArrayDepth(array.child);
2400
+ case "struct":
2401
+ return 1 + Math.max(0, ...Object.values(array.children).map(getArrayDepth));
2402
+ case "dense-union":
2403
+ return 1 + Math.max(0, ...array.children.map((child) => getArrayDepth(child.data)));
2404
+ default:
2405
+ return 1;
2406
+ }
2407
+ }
2408
+
2409
+ // dist/wkb/types.js
2410
+ function getWellKnownDimensionSize(dimension) {
2411
+ switch (dimension) {
2412
+ case "xy":
2413
+ return 2;
2414
+ case "xyz":
2415
+ case "xym":
2416
+ return 3;
2417
+ case "xyzm":
2418
+ return 4;
2419
+ }
2420
+ }
2421
+ function inferWellKnownGeometryDimension(geometry) {
2422
+ const size = getGeometryDimensionSize(geometry);
2423
+ return size >= 4 ? "xyzm" : size === 3 ? "xyz" : "xy";
2424
+ }
2425
+ function getGeometryDimensionSize(geometry) {
2426
+ if (geometry.type === "GeometryCollection") {
2427
+ return Math.max(2, ...geometry.geometries.map(getGeometryDimensionSize));
2428
+ }
2429
+ return getCoordinateDimension(geometry.coordinates);
2430
+ }
2431
+ function getCoordinateDimension(value) {
2432
+ if (value.length === 0)
2433
+ return 2;
2434
+ if (typeof value[0] === "number")
2435
+ return value.length;
2436
+ return Math.max(2, ...value.map((child) => getCoordinateDimension(child)));
2437
+ }
2438
+
2439
+ // dist/wkb/wkb-reader.js
2440
+ var GEOMETRY_TYPES = [
2441
+ "Point",
2442
+ "LineString",
2443
+ "Polygon",
2444
+ "MultiPoint",
2445
+ "MultiLineString",
2446
+ "MultiPolygon",
2447
+ "GeometryCollection"
2448
+ ];
2449
+ function inspectWKBHeader(input, byteOffset = 0) {
2450
+ return inspectWKBHeaderView(getDataView(input), byteOffset);
2451
+ }
2452
+ function visitWKB(input, visitor, options = {}) {
2453
+ const view = getDataView(input);
2454
+ const state = {
2455
+ maximumDepth: validateLimit(options.maximumDepth, 64, "maximumDepth"),
2456
+ maximumElements: validateLimit(options.maximumElements, 1e8, "maximumElements"),
2457
+ elementCount: 0,
2458
+ visitor
2459
+ };
2460
+ const byteLength = visitGeometry(view, 0, state, 0).byteOffset;
2461
+ if (byteLength !== view.byteLength)
2462
+ throw new Error("WKB contains trailing bytes");
2463
+ return byteLength;
2464
+ }
2465
+ function visitGeometry(view, byteOffset, state, depth, expectedType) {
2466
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
2467
+ if (depth > state.maximumDepth)
2468
+ throw new Error("WKB geometry nesting exceeds maximumDepth");
2469
+ const header = inspectWKBHeaderView(view, byteOffset);
2470
+ if (expectedType && header.geometryType !== expectedType) {
2471
+ throw new Error(`WKB ${expectedType} collection contains a ${header.geometryType} child`);
2472
+ }
2473
+ byteOffset = header.bodyByteOffset;
2474
+ switch (header.geometryType) {
2475
+ case "Point":
2476
+ (_b = (_a = state.visitor).geometry) == null ? void 0 : _b.call(_a, header, void 0, depth);
2477
+ byteOffset = visitCoordinate(view, byteOffset, header, state.visitor, depth);
2478
+ break;
2479
+ case "LineString": {
2480
+ const pointCount = readCount(view, byteOffset, header.littleEndian, state);
2481
+ byteOffset += 4;
2482
+ (_d = (_c = state.visitor).geometry) == null ? void 0 : _d.call(_c, header, pointCount, depth);
2483
+ byteOffset = visitCoordinateSequence(view, byteOffset, pointCount, header, state, depth);
2484
+ break;
2485
+ }
2486
+ case "Polygon": {
2487
+ const ringCount = readCount(view, byteOffset, header.littleEndian, state);
2488
+ byteOffset += 4;
2489
+ (_f = (_e = state.visitor).geometry) == null ? void 0 : _f.call(_e, header, ringCount, depth);
2490
+ for (let ringIndex = 0; ringIndex < ringCount; ringIndex++) {
2491
+ const pointCount = readCount(view, byteOffset, header.littleEndian, state);
2492
+ byteOffset += 4;
2493
+ (_h = (_g = state.visitor).ring) == null ? void 0 : _h.call(_g, pointCount, ringIndex, depth);
2494
+ byteOffset = visitCoordinateSequence(view, byteOffset, pointCount, header, state, depth);
2495
+ }
2496
+ break;
2497
+ }
2498
+ case "MultiPoint":
2499
+ case "MultiLineString":
2500
+ case "MultiPolygon":
2501
+ case "GeometryCollection": {
2502
+ const childCount = readCount(view, byteOffset, header.littleEndian, state);
2503
+ byteOffset += 4;
2504
+ (_j = (_i = state.visitor).geometry) == null ? void 0 : _j.call(_i, header, childCount, depth);
2505
+ const childType = header.geometryType === "MultiPoint" ? "Point" : header.geometryType === "MultiLineString" ? "LineString" : header.geometryType === "MultiPolygon" ? "Polygon" : void 0;
2506
+ for (let childIndex = 0; childIndex < childCount; childIndex++) {
2507
+ byteOffset = visitGeometry(view, byteOffset, state, depth + 1, childType).byteOffset;
2508
+ }
2509
+ break;
2510
+ }
2511
+ }
2512
+ return { byteOffset, header };
2513
+ }
2514
+ function visitCoordinateSequence(view, byteOffset, pointCount, header, state, depth) {
2515
+ for (let pointIndex = 0; pointIndex < pointCount; pointIndex++) {
2516
+ byteOffset = visitCoordinate(view, byteOffset, header, state.visitor, depth);
2517
+ }
2518
+ return byteOffset;
2519
+ }
2520
+ function visitCoordinate(view, byteOffset, header, visitor, depth) {
2521
+ var _a;
2522
+ const coordinateByteLength = getWellKnownDimensionSize(header.dimension) * 8;
2523
+ assertRemaining(view, byteOffset, coordinateByteLength);
2524
+ if (!visitor.coordinate)
2525
+ return byteOffset + coordinateByteLength;
2526
+ const x = view.getFloat64(byteOffset, header.littleEndian);
2527
+ const y = view.getFloat64(byteOffset + 8, header.littleEndian);
2528
+ const third = header.dimension === "xy" ? void 0 : view.getFloat64(byteOffset + 16, header.littleEndian);
2529
+ const fourth = header.dimension === "xyzm" ? view.getFloat64(byteOffset + 24, header.littleEndian) : void 0;
2530
+ const z = header.dimension === "xyz" || header.dimension === "xyzm" ? third : void 0;
2531
+ const m = header.dimension === "xym" ? third : fourth;
2532
+ (_a = visitor.coordinate) == null ? void 0 : _a.call(visitor, x, y, z, m, header.dimension, byteOffset, depth);
2533
+ return byteOffset + coordinateByteLength;
2534
+ }
2535
+ function inspectWKBHeaderView(view, byteOffset) {
2536
+ const startByteOffset = byteOffset;
2537
+ assertRemaining(view, byteOffset, 5);
2538
+ const byteOrder = view.getUint8(byteOffset++);
2539
+ if (byteOrder !== 0 && byteOrder !== 1)
2540
+ throw new Error("Invalid WKB byte order");
2541
+ const littleEndian = byteOrder === 1;
2542
+ const typeCode = view.getUint32(byteOffset, littleEndian);
2543
+ byteOffset += 4;
2544
+ const hasZ = Boolean(typeCode & 2147483648);
2545
+ const hasM = Boolean(typeCode & 1073741824);
2546
+ const hasSrid = Boolean(typeCode & 536870912);
2547
+ let geometryCode = typeCode & 536870911;
2548
+ let dimension;
2549
+ if (geometryCode >= 3e3 && geometryCode < 4e3) {
2550
+ dimension = "xyzm";
2551
+ geometryCode -= 3e3;
2552
+ } else if (geometryCode >= 2e3 && geometryCode < 3e3) {
2553
+ dimension = "xym";
2554
+ geometryCode -= 2e3;
2555
+ } else if (geometryCode >= 1e3 && geometryCode < 2e3) {
2556
+ dimension = "xyz";
2557
+ geometryCode -= 1e3;
2558
+ } else {
2559
+ dimension = hasZ && hasM ? "xyzm" : hasZ ? "xyz" : hasM ? "xym" : "xy";
2560
+ }
2561
+ const geometryType = GEOMETRY_TYPES[geometryCode - 1];
2562
+ if (!geometryType)
2563
+ throw new Error(`Unsupported WKB geometry type ${geometryCode}`);
2564
+ let srid;
2565
+ if (hasSrid) {
2566
+ assertRemaining(view, byteOffset, 4);
2567
+ srid = view.getUint32(byteOffset, littleEndian);
2568
+ byteOffset += 4;
2569
+ }
2570
+ const dialect = hasZ || hasM || hasSrid ? "ewkb" : dimension === "xy" ? "wkb" : "iso-wkb";
2571
+ return {
2572
+ geometryType,
2573
+ dimension,
2574
+ dialect,
2575
+ littleEndian,
2576
+ byteOffset: startByteOffset,
2577
+ bodyByteOffset: byteOffset,
2578
+ byteLength: byteOffset - startByteOffset,
2579
+ ...srid === void 0 ? {} : { srid }
2580
+ };
2581
+ }
2582
+ function readCount(view, byteOffset, littleEndian, state) {
2583
+ assertRemaining(view, byteOffset, 4);
2584
+ const count = view.getUint32(byteOffset, littleEndian);
2585
+ state.elementCount += count;
2586
+ if (state.elementCount > state.maximumElements) {
2587
+ throw new Error("WKB element count exceeds maximumElements");
2588
+ }
2589
+ return count;
2590
+ }
2591
+ function getDataView(input) {
2592
+ return ArrayBuffer.isView(input) ? new DataView(input.buffer, input.byteOffset, input.byteLength) : new DataView(input);
2593
+ }
2594
+ function assertRemaining(view, byteOffset, byteLength) {
2595
+ if (byteOffset < 0 || byteOffset + byteLength > view.byteLength) {
2596
+ throw new Error("Unexpected end of WKB");
2597
+ }
2598
+ }
2599
+ function validateLimit(value, fallback, name) {
2600
+ const limit = value ?? fallback;
2601
+ if (!Number.isSafeInteger(limit) || limit < 0) {
2602
+ throw new Error(`${name} must be a non-negative safe integer`);
2603
+ }
2604
+ return limit;
2605
+ }
2606
+
2607
+ // dist/wkb/wkb-builder.js
2608
+ var GEOMETRY_TYPE_CODES = {
2609
+ Point: 1,
2610
+ LineString: 2,
2611
+ Polygon: 3,
2612
+ MultiPoint: 4,
2613
+ MultiLineString: 5,
2614
+ MultiPolygon: 6,
2615
+ GeometryCollection: 7
2616
+ };
2617
+ var WKBBuilder = class _WKBBuilder {
2618
+ constructor(options) {
2619
+ this.mode = options.mode;
2620
+ this.dimension = options.dimension ?? "xy";
2621
+ this.littleEndian = options.byteOrder !== "big-endian";
2622
+ this.srid = options.srid;
2623
+ this.transform = options.transform;
2624
+ validateSrid(this.srid);
2625
+ if (options.mode === "write") {
2626
+ const dataView = getTargetDataView(options.target);
2627
+ const byteOffset = options.byteOffset ?? 0;
2628
+ if (!Number.isSafeInteger(byteOffset) || byteOffset < 0 || byteOffset > dataView.byteLength) {
2629
+ throw new Error("WKBBuilder byteOffset is outside the target");
2630
+ }
2631
+ this.dataView = dataView;
2632
+ this.startByteOffset = byteOffset;
2633
+ this.endByteOffset = dataView.byteLength;
2634
+ this.byteOffset = byteOffset;
2635
+ } else {
2636
+ this.dataView = null;
2637
+ this.startByteOffset = 0;
2638
+ this.endByteOffset = Number.POSITIVE_INFINITY;
2639
+ this.byteOffset = 0;
2640
+ }
2641
+ }
2642
+ /** Begins a geometry and writes its count field when required. */
2643
+ beginGeometry(type, count) {
2644
+ switch (type) {
2645
+ case "Point":
2646
+ this.beginPoint();
2647
+ break;
2648
+ case "LineString":
2649
+ this.beginLineString(count ?? 0);
2650
+ break;
2651
+ case "Polygon":
2652
+ this.beginPolygon(count ?? 0);
2653
+ break;
2654
+ case "MultiPoint":
2655
+ this.beginMultiPoint(count ?? 0);
2656
+ break;
2657
+ case "MultiLineString":
2658
+ this.beginMultiLineString(count ?? 0);
2659
+ break;
2660
+ case "MultiPolygon":
2661
+ this.beginMultiPolygon(count ?? 0);
2662
+ break;
2663
+ case "GeometryCollection":
2664
+ this.writeHeader("GeometryCollection");
2665
+ this.writeUint32(count ?? 0);
2666
+ break;
2667
+ }
2668
+ }
2669
+ /** Begins one point geometry. */
2670
+ beginPoint() {
2671
+ this.writeHeader("Point");
2672
+ }
2673
+ /** Begins one linestring geometry. */
2674
+ beginLineString(pointCount) {
2675
+ this.writeHeader("LineString");
2676
+ this.writeUint32(pointCount);
2677
+ }
2678
+ /** Begins one polygon geometry. */
2679
+ beginPolygon(ringCount) {
2680
+ this.writeHeader("Polygon");
2681
+ this.writeUint32(ringCount);
2682
+ }
2683
+ /** Begins one linear ring inside a polygon. */
2684
+ beginLinearRing(pointCount) {
2685
+ this.writeUint32(pointCount);
2686
+ }
2687
+ /** Begins one multipoint geometry. */
2688
+ beginMultiPoint(pointCount) {
2689
+ this.writeHeader("MultiPoint");
2690
+ this.writeUint32(pointCount);
2691
+ }
2692
+ /** Begins one multilinestring geometry. */
2693
+ beginMultiLineString(lineCount) {
2694
+ this.writeHeader("MultiLineString");
2695
+ this.writeUint32(lineCount);
2696
+ }
2697
+ /** Begins one multipolygon geometry. */
2698
+ beginMultiPolygon(polygonCount) {
2699
+ this.writeHeader("MultiPolygon");
2700
+ this.writeUint32(polygonCount);
2701
+ }
2702
+ /** Writes one coordinate using the builder's semantic dimension. */
2703
+ writeCoordinate(x, y, z, m) {
2704
+ let coordinate = makeCoordinate(this.dimension, x, y, z, m);
2705
+ if (this.transform)
2706
+ coordinate = this.transform(coordinate, this.dimension);
2707
+ const coordinateSize = getDimensionSize(this.dimension);
2708
+ for (let index = 0; index < coordinateSize; index++) {
2709
+ this.writeFloat64(coordinate[index] ?? Number.NaN);
2710
+ }
2711
+ }
2712
+ /** Temporarily changes the semantic dimension for a nested geometry. */
2713
+ withDimension(dimension, callback) {
2714
+ const previous = this.dimension;
2715
+ this.dimension = dimension;
2716
+ try {
2717
+ return callback();
2718
+ } finally {
2719
+ this.dimension = previous;
2720
+ }
2721
+ }
2722
+ /** Returns the number of bytes measured or written. */
2723
+ finishGeometry() {
2724
+ return this.byteOffset - this.startByteOffset;
2725
+ }
2726
+ /** Measures geometry callbacks and returns contiguous Binary offsets. */
2727
+ static measureGeometryArray(geometryWriters, options = {}) {
2728
+ var _a;
2729
+ const valueOffsets = new Int32Array(geometryWriters.length + 1);
2730
+ for (let geometryIndex = 0; geometryIndex < geometryWriters.length; geometryIndex++) {
2731
+ const geometryWriter = geometryWriters[geometryIndex];
2732
+ const byteLength = geometryWriter ? measureGeometry(geometryWriter, {
2733
+ ...options,
2734
+ dimension: ((_a = options.dimensionResolver) == null ? void 0 : _a.call(options, geometryIndex)) ?? options.dimension
2735
+ }) : 0;
2736
+ const nextOffset = valueOffsets[geometryIndex] + byteLength;
2737
+ if (nextOffset > 2147483647)
2738
+ throw new Error("WKB geometry array exceeds Int32 offsets");
2739
+ valueOffsets[geometryIndex + 1] = nextOffset;
2740
+ }
2741
+ return valueOffsets;
2742
+ }
2743
+ /** Writes geometry callbacks into an existing contiguous values buffer. */
2744
+ static writeGeometryArray(geometryWriters, valueOffsets, values, options = {}) {
2745
+ var _a;
2746
+ if (valueOffsets.length !== geometryWriters.length + 1) {
2747
+ throw new Error("WKB valueOffsets length must equal geometry count plus one");
2748
+ }
2749
+ for (let i = 0; i < valueOffsets.length; i++) {
2750
+ if (!Number.isInteger(valueOffsets[i]) || valueOffsets[i] < 0 || i > 0 && valueOffsets[i] < valueOffsets[i - 1]) {
2751
+ throw new Error("WKB valueOffsets must be nonnegative and nondecreasing");
2752
+ }
2753
+ }
2754
+ if (valueOffsets[valueOffsets.length - 1] > values.byteLength) {
2755
+ throw new Error("WKB values buffer is smaller than its final offset");
2756
+ }
2757
+ for (let geometryIndex = 0; geometryIndex < geometryWriters.length; geometryIndex++) {
2758
+ const geometryWriter = geometryWriters[geometryIndex];
2759
+ if (!geometryWriter)
2760
+ continue;
2761
+ const builder = new _WKBBuilder({
2762
+ ...options,
2763
+ mode: "write",
2764
+ target: values,
2765
+ byteOffset: valueOffsets[geometryIndex],
2766
+ dimension: ((_a = options.dimensionResolver) == null ? void 0 : _a.call(options, geometryIndex)) ?? options.dimension
2767
+ });
2768
+ geometryWriter(builder);
2769
+ const byteLength = builder.finishGeometry();
2770
+ if (valueOffsets[geometryIndex] + byteLength !== valueOffsets[geometryIndex + 1]) {
2771
+ throw new Error("WKB measure and write passes produced different byte lengths");
2772
+ }
2773
+ }
2774
+ return values;
2775
+ }
2776
+ /** Builds plain offsets, values, and validity buffers in two passes. */
2777
+ static buildGeometryArray(geometryWriters, options = {}) {
2778
+ const valueOffsets = _WKBBuilder.measureGeometryArray(geometryWriters, options);
2779
+ const values = new Uint8Array(valueOffsets[valueOffsets.length - 1]);
2780
+ _WKBBuilder.writeGeometryArray(geometryWriters, valueOffsets, values, options);
2781
+ const { nullBitmap, nullCount } = makeNullBitmap(geometryWriters);
2782
+ return {
2783
+ valueOffsets,
2784
+ values,
2785
+ ...nullCount > 0 ? { nullBitmap } : {},
2786
+ nullCount
2787
+ };
2788
+ }
2789
+ writeHeader(geometryType) {
2790
+ this.writeUint8(this.littleEndian ? 1 : 0);
2791
+ this.writeUint32(getWKBTypeCode(geometryType, this.dimension, this.srid !== void 0));
2792
+ if (this.srid !== void 0)
2793
+ this.writeUint32(this.srid);
2794
+ }
2795
+ writeUint8(value) {
2796
+ var _a;
2797
+ this.ensureSize(1);
2798
+ (_a = this.dataView) == null ? void 0 : _a.setUint8(this.byteOffset, value);
2799
+ this.byteOffset++;
2800
+ }
2801
+ writeUint32(value) {
2802
+ var _a;
2803
+ if (!Number.isSafeInteger(value) || value < 0 || value > 4294967295) {
2804
+ throw new Error("WKB count must be an unsigned 32-bit integer");
2805
+ }
2806
+ this.ensureSize(4);
2807
+ (_a = this.dataView) == null ? void 0 : _a.setUint32(this.byteOffset, value, this.littleEndian);
2808
+ this.byteOffset += 4;
2809
+ }
2810
+ writeFloat64(value) {
2811
+ var _a;
2812
+ this.ensureSize(8);
2813
+ (_a = this.dataView) == null ? void 0 : _a.setFloat64(this.byteOffset, value, this.littleEndian);
2814
+ this.byteOffset += 8;
2815
+ }
2816
+ ensureSize(byteLength) {
2817
+ if (this.byteOffset + byteLength > this.endByteOffset) {
2818
+ throw new Error("WKBBuilder target buffer overflow");
2819
+ }
2820
+ }
2821
+ };
2822
+ function measureGeometry(geometryWriter, options) {
2823
+ const builder = new WKBBuilder({ ...options, mode: "measure" });
2824
+ geometryWriter(builder);
2825
+ return builder.finishGeometry();
2826
+ }
2827
+ function getTargetDataView(target) {
2828
+ return ArrayBuffer.isView(target) ? new DataView(target.buffer, target.byteOffset, target.byteLength) : new DataView(target);
2829
+ }
2830
+ function getWKBTypeCode(geometryType, dimension, hasSrid) {
2831
+ const geometryCode = GEOMETRY_TYPE_CODES[geometryType];
2832
+ if (hasSrid) {
2833
+ const dimensionFlags = dimension === "xyz" ? 2147483648 : dimension === "xym" ? 1073741824 : dimension === "xyzm" ? 3221225472 : 0;
2834
+ return (geometryCode | dimensionFlags | 536870912) >>> 0;
2835
+ }
2836
+ const dimensionOffset = dimension === "xyz" ? 1e3 : dimension === "xym" ? 2e3 : dimension === "xyzm" ? 3e3 : 0;
2837
+ return geometryCode + dimensionOffset;
2838
+ }
2839
+ function makeCoordinate(dimension, x, y, z, m) {
2840
+ switch (dimension) {
2841
+ case "xy":
2842
+ return [x, y];
2843
+ case "xyz":
2844
+ return [x, y, z ?? Number.NaN];
2845
+ case "xym":
2846
+ return [x, y, m ?? Number.NaN];
2847
+ case "xyzm":
2848
+ return [x, y, z ?? Number.NaN, m ?? Number.NaN];
2849
+ }
2850
+ }
2851
+ function getDimensionSize(dimension) {
2852
+ return dimension === "xy" ? 2 : dimension === "xyzm" ? 4 : 3;
2853
+ }
2854
+ function validateSrid(srid) {
2855
+ if (srid !== void 0 && (!Number.isSafeInteger(srid) || srid < 0 || srid > 4294967295)) {
2856
+ throw new Error("WKBBuilder srid must be an unsigned 32-bit integer");
2857
+ }
2858
+ }
2859
+ function makeNullBitmap(geometryWriters) {
2860
+ const nullBitmap = new Uint8Array(Math.ceil(geometryWriters.length / 8));
2861
+ let nullCount = 0;
2862
+ for (let geometryIndex = 0; geometryIndex < geometryWriters.length; geometryIndex++) {
2863
+ if (geometryWriters[geometryIndex]) {
2864
+ nullBitmap[geometryIndex >> 3] |= 1 << (geometryIndex & 7);
2865
+ } else {
2866
+ nullCount++;
2867
+ }
2868
+ }
2869
+ return { nullBitmap, nullCount };
2870
+ }
2871
+
2872
+ // dist/wkb/wkt.js
2873
+ function parseWKT(text, options) {
2874
+ const parser = new WKTParser(text);
2875
+ const result = parser.parseGeometry("xy", options ?? {}, false);
2876
+ parser.assertComplete();
2877
+ return result.geometry;
2878
+ }
2879
+ function formatWKT(geometry, dimension) {
2880
+ if (isWKTParseResult(geometry)) {
2881
+ return dimension === void 0 ? formatWKTResult(geometry) : formatWKTGeometry(geometry.geometry, dimension);
2882
+ }
2883
+ return formatWKTGeometry(geometry, dimension ?? inferWellKnownGeometryDimension(geometry));
2884
+ }
2885
+ function formatWKTResult(result) {
2886
+ return formatWKTGeometry(result.geometry, result.dimension, result.children);
2887
+ }
2888
+ function formatWKTGeometry(geometry, dimension, children) {
2889
+ const dimensionToken = dimension === "xy" ? "" : " " + dimension.slice(2).toUpperCase();
2890
+ if (geometry.type === "GeometryCollection") {
2891
+ if (geometry.geometries.length === 0)
2892
+ return "GEOMETRYCOLLECTION" + dimensionToken + " EMPTY";
2893
+ const formattedChildren = children ? children.map(formatWKTResult) : geometry.geometries.map((child) => formatWKTGeometry(child, dimension));
2894
+ return "GEOMETRYCOLLECTION" + dimensionToken + " (" + formattedChildren.join(", ") + ")";
2895
+ }
2896
+ const type = geometry.type.toUpperCase();
2897
+ const isEmpty = geometry.type === "MultiPoint" ? geometry.coordinates.length === 0 : isEmptyCoordinates(geometry.coordinates);
2898
+ if (isEmpty)
2899
+ return type + dimensionToken + " EMPTY";
2900
+ return type + dimensionToken + " " + formatCoordinateNesting(geometry.coordinates, getGeometryDepth(geometry.type), geometry.type === "MultiPoint");
2901
+ }
2902
+ function isWKTParseResult(value) {
2903
+ return "geometry" in value && "dimension" in value;
2904
+ }
2905
+ var WKTParser = class {
2906
+ constructor(text) {
2907
+ this.index = 0;
2908
+ this.tokens = tokenizeWKT(text);
2909
+ }
2910
+ parseGeometry(inheritedDimension, options, validateInheritedDimensions) {
2911
+ const type = this.takeWord().toUpperCase();
2912
+ let dimension = inheritedDimension;
2913
+ let hasExplicitDimension = false;
2914
+ if (["Z", "M", "ZM"].includes(this.peek().toUpperCase())) {
2915
+ const token = this.take().toUpperCase();
2916
+ dimension = token === "Z" ? "xyz" : token === "M" ? "xym" : "xyzm";
2917
+ hasExplicitDimension = true;
2918
+ }
2919
+ const dimensionSize = getWellKnownDimensionSize(dimension);
2920
+ if (this.peek().toUpperCase() === "EMPTY") {
2921
+ this.take();
2922
+ return { geometry: makeEmptyGeometry(type, dimensionSize), dimension };
2923
+ }
2924
+ if (type === "GEOMETRYCOLLECTION") {
2925
+ this.expect("(");
2926
+ const children = [];
2927
+ if (this.peek() !== ")") {
2928
+ do
2929
+ children.push(this.parseGeometry(dimension, options, validateInheritedDimensions));
2930
+ while (this.takeIf(","));
2931
+ }
2932
+ this.expect(")");
2933
+ return {
2934
+ geometry: { type: "GeometryCollection", geometries: children.map((child) => child.geometry) },
2935
+ dimension,
2936
+ children
2937
+ };
2938
+ }
2939
+ const inferDimension = Boolean(options.inferDimensions && !hasExplicitDimension && inheritedDimension === "xy");
2940
+ const coordinates = this.parseCoordinateNesting(getWKTDepth(type), inferDimension ? null : dimensionSize, type === "MULTIPOINT");
2941
+ const coordinateValues = coordinates;
2942
+ if (inferDimension) {
2943
+ const inferredSize = inferCoordinateSize(coordinateValues);
2944
+ if (inferredSize !== null)
2945
+ dimension = getDimensionForSize(inferredSize);
2946
+ } else if (hasExplicitDimension || validateInheritedDimensions) {
2947
+ assertCoordinateSize(coordinateValues, dimensionSize);
2948
+ }
2949
+ return { geometry: makeGeometry(type, coordinates), dimension };
2950
+ }
2951
+ assertComplete() {
2952
+ if (this.index !== this.tokens.length)
2953
+ throw new Error(`Unexpected WKT token ${this.peek()}`);
2954
+ }
2955
+ parseCoordinateNesting(depth, dimensionSize, allowEmptyPoints = false) {
2956
+ this.expect("(");
2957
+ if (depth === 0) {
2958
+ const coordinate = this.readCoordinate(dimensionSize);
2959
+ this.expect(")");
2960
+ return coordinate;
2961
+ }
2962
+ const values = [];
2963
+ if (this.peek() !== ")") {
2964
+ do {
2965
+ if (allowEmptyPoints && depth === 1 && this.peek().toUpperCase() === "EMPTY") {
2966
+ this.take();
2967
+ values.push([]);
2968
+ } else if (depth === 1 && this.peek() !== "(") {
2969
+ values.push(this.readCoordinate(dimensionSize));
2970
+ } else {
2971
+ values.push(this.parseCoordinateNesting(depth - 1, dimensionSize));
2972
+ }
2973
+ } while (this.takeIf(","));
2974
+ }
2975
+ this.expect(")");
2976
+ return values;
2977
+ }
2978
+ readCoordinate(dimensionSize) {
2979
+ const values = [];
2980
+ while ((dimensionSize === null || values.length < dimensionSize) && isNumberToken(this.peek())) {
2981
+ values.push(Number(this.take()));
2982
+ }
2983
+ if (values.length < 2)
2984
+ throw new Error("WKT coordinate requires at least two numbers");
2985
+ if (values.length > 4)
2986
+ throw new Error("WKT coordinates cannot contain more than four numbers");
2987
+ return values;
2988
+ }
2989
+ peek() {
2990
+ return this.tokens[this.index] || "";
2991
+ }
2992
+ take() {
2993
+ if (this.index >= this.tokens.length)
2994
+ throw new Error("Unexpected end of WKT");
2995
+ return this.tokens[this.index++];
2996
+ }
2997
+ takeWord() {
2998
+ const token = this.take();
2999
+ if (!/^[A-Za-z_]+$/.test(token))
3000
+ throw new Error(`Expected WKT geometry type, found ${token}`);
3001
+ return token;
3002
+ }
3003
+ takeIf(token) {
3004
+ if (this.peek() !== token)
3005
+ return false;
3006
+ this.index++;
3007
+ return true;
3008
+ }
3009
+ expect(token) {
3010
+ const actual = this.take();
3011
+ if (actual !== token)
3012
+ throw new Error(`Expected WKT token ${token}, found ${actual}`);
3013
+ }
3014
+ };
3015
+ function inferCoordinateSize(value) {
3016
+ let coordinateSize = null;
3017
+ const visit = (coordinates) => {
3018
+ if (coordinates.length === 0)
3019
+ return;
3020
+ if (typeof coordinates[0] === "number") {
3021
+ if (coordinates.length < 2 || coordinates.length > 4) {
3022
+ throw new Error("WKT coordinates must contain between two and four numbers");
3023
+ }
3024
+ if (coordinateSize !== null && coordinateSize !== coordinates.length) {
3025
+ throw new Error("WKT geometry contains inconsistent coordinate dimensions");
3026
+ }
3027
+ coordinateSize = coordinates.length;
3028
+ return;
3029
+ }
3030
+ for (const child of coordinates)
3031
+ visit(child);
3032
+ };
3033
+ visit(value);
3034
+ return coordinateSize;
3035
+ }
3036
+ function assertCoordinateSize(value, expectedSize) {
3037
+ const actualSize = inferCoordinateSize(value);
3038
+ if (actualSize !== null && actualSize !== expectedSize) {
3039
+ throw new Error("WKT coordinate dimension does not match declared dimension " + expectedSize);
3040
+ }
3041
+ }
3042
+ function getDimensionForSize(size) {
3043
+ switch (size) {
3044
+ case 2:
3045
+ return "xy";
3046
+ case 3:
3047
+ return "xyz";
3048
+ case 4:
3049
+ return "xyzm";
3050
+ default:
3051
+ throw new Error("Unsupported WKT coordinate dimension " + size);
3052
+ }
3053
+ }
3054
+ function tokenizeWKT(text) {
3055
+ const tokens = [];
3056
+ const tokenPattern = /[A-Za-z_]+|[(),]|[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?/gy;
3057
+ let index = 0;
3058
+ while (index < text.length) {
3059
+ while (index < text.length && /\s/.test(text[index]))
3060
+ index++;
3061
+ if (index === text.length)
3062
+ break;
3063
+ tokenPattern.lastIndex = index;
3064
+ const match = tokenPattern.exec(text);
3065
+ if (!match) {
3066
+ throw new Error(`Unexpected WKT character ${JSON.stringify(text[index])} at ${index}`);
3067
+ }
3068
+ tokens.push(match[0]);
3069
+ index = tokenPattern.lastIndex;
3070
+ }
3071
+ return tokens;
3072
+ }
3073
+ function formatCoordinateNesting(value, depth, allowEmptyPoints = false) {
3074
+ if (depth === 0)
3075
+ return `(${value.map(formatNumber).join(" ")})`;
3076
+ return `(${value.map((child) => {
3077
+ if (depth === 1) {
3078
+ const coordinate = child;
3079
+ if (allowEmptyPoints && isEmptyCoordinates(coordinate))
3080
+ return "EMPTY";
3081
+ return coordinate.map(formatNumber).join(" ");
3082
+ }
3083
+ return formatCoordinateNesting(child, depth - 1);
3084
+ }).join(", ")})`;
3085
+ }
3086
+ function formatNumber(value) {
3087
+ if (!Number.isFinite(value))
3088
+ return "NaN";
3089
+ return String(value);
3090
+ }
3091
+ function getGeometryDepth(type) {
3092
+ switch (type) {
3093
+ case "Point":
3094
+ return 0;
3095
+ case "LineString":
3096
+ case "MultiPoint":
3097
+ return 1;
3098
+ case "Polygon":
3099
+ case "MultiLineString":
3100
+ return 2;
3101
+ case "MultiPolygon":
3102
+ return 3;
3103
+ }
3104
+ }
3105
+ function getWKTDepth(type) {
3106
+ switch (type) {
3107
+ case "POINT":
3108
+ return 0;
3109
+ case "LINESTRING":
3110
+ return 1;
3111
+ case "POLYGON":
3112
+ return 2;
3113
+ case "MULTIPOINT":
3114
+ return 1;
3115
+ case "MULTILINESTRING":
3116
+ return 2;
3117
+ case "MULTIPOLYGON":
3118
+ return 3;
3119
+ default:
3120
+ throw new Error(`Unsupported WKT geometry type ${type}`);
3121
+ }
3122
+ }
3123
+ function makeGeometry(type, coordinates) {
3124
+ const canonical = type[0] + type.slice(1).toLowerCase();
3125
+ const names = {
3126
+ Point: "Point",
3127
+ Linestring: "LineString",
3128
+ Polygon: "Polygon",
3129
+ Multipoint: "MultiPoint",
3130
+ Multilinestring: "MultiLineString",
3131
+ Multipolygon: "MultiPolygon"
3132
+ };
3133
+ const geometryType = names[canonical];
3134
+ if (!geometryType)
3135
+ throw new Error(`Unsupported WKT geometry type ${type}`);
3136
+ return { type: geometryType, coordinates };
3137
+ }
3138
+ function makeEmptyGeometry(type, dimensionSize) {
3139
+ if (type === "GEOMETRYCOLLECTION")
3140
+ return { type: "GeometryCollection", geometries: [] };
3141
+ if (type === "POINT") {
3142
+ return {
3143
+ type: "Point",
3144
+ coordinates: new Array(getValidDimensionSize(dimensionSize)).fill(Number.NaN)
3145
+ };
3146
+ }
3147
+ return makeGeometry(type, []);
3148
+ }
3149
+ function getValidDimensionSize(size) {
3150
+ if (size === 2 || size === 3 || size === 4)
3151
+ return size;
3152
+ return getWellKnownDimensionSize("xy");
3153
+ }
3154
+ function isEmptyCoordinates(value) {
3155
+ if (value.length === 0)
3156
+ return true;
3157
+ if (typeof value[0] === "number") {
3158
+ return value.every((component) => !Number.isFinite(component));
3159
+ }
3160
+ return value.every((child) => isEmptyCoordinates(child));
3161
+ }
3162
+ function isNumberToken(token) {
3163
+ return token !== "" && Number.isFinite(Number(token));
3164
+ }
3165
+
3166
+ // dist/geoarrow/codecs.js
3167
+ var textEncoder = new TextEncoder();
3168
+ var textDecoder = new TextDecoder();
3169
+ var NULL_FAMILY = 255;
3170
+ function decodeGeoArrowWKB(column, options = {}) {
3171
+ if (column.encoding !== "geoarrow.wkb")
3172
+ throw new Error("Expected a geoarrow.wkb column");
3173
+ const classifications = [];
3174
+ const schemaKeys = /* @__PURE__ */ new Set();
3175
+ const collectionSchemas = [];
3176
+ const rootFamilies = /* @__PURE__ */ new Set();
3177
+ let hasNulls = false;
3178
+ let inferredDimension = "xy";
3179
+ for (const chunk of column.chunks) {
3180
+ if (chunk.kind !== "serialized")
3181
+ throw new Error("Serialized column contains native storage");
3182
+ const families = new Uint8Array(chunk.length).fill(NULL_FAMILY);
3183
+ const dimensions = new Uint8Array(chunk.length);
3184
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3185
+ if (!isGeoArrowValueValid(chunk.validity, rowIndex)) {
3186
+ hasNulls = true;
3187
+ continue;
3188
+ }
3189
+ const bytes = getSerializedBytes(chunk, rowIndex);
3190
+ const rootHeader = inspectWKBHeader(bytes);
3191
+ const rootFamily = getGeometryFamilyIndex(rootHeader.geometryType);
3192
+ let rowDimension = rootHeader.dimension;
3193
+ if (rootHeader.geometryType === "GeometryCollection") {
3194
+ const collectionStack = [];
3195
+ let concreteRootDepth = -1;
3196
+ visitWKB(bytes, {
3197
+ geometry: (header, _count, depth) => {
3198
+ var _a;
3199
+ rowDimension = mergeGeoArrowDimensions(rowDimension, header.dimension);
3200
+ if (concreteRootDepth >= 0 && depth > concreteRootDepth)
3201
+ return;
3202
+ concreteRootDepth = -1;
3203
+ while (collectionStack.length && depth <= collectionStack[collectionStack.length - 1].depth) {
3204
+ collectionStack.pop();
3205
+ }
3206
+ const parent = collectionStack[collectionStack.length - 1];
3207
+ if (parent) {
3208
+ collectionSchemas[_a = parent.level] || (collectionSchemas[_a] = /* @__PURE__ */ new Set());
3209
+ collectionSchemas[parent.level].add(getGeometryTypeId2(header.geometryType, header.dimension));
3210
+ }
3211
+ if (header.geometryType === "GeometryCollection") {
3212
+ collectionStack.push({ depth, level: parent ? parent.level + 1 : 0 });
3213
+ } else if (parent) {
3214
+ concreteRootDepth = depth;
3215
+ }
3216
+ }
3217
+ }, options.traversal);
3218
+ }
3219
+ families[rowIndex] = rootFamily;
3220
+ dimensions[rowIndex] = getDimensionIndex(rowDimension);
3221
+ rootFamilies.add(rootFamily);
3222
+ schemaKeys.add(getGeometryTypeIdFromIndices(rootFamily, dimensions[rowIndex]));
3223
+ inferredDimension = mergeGeoArrowDimensions(inferredDimension, rowDimension);
3224
+ }
3225
+ classifications.push({ families, dimensions });
3226
+ }
3227
+ const dimension = resolveDecodeDimension(options.dimension, column.dimension, inferredDimension);
3228
+ const forceDimension = Boolean(options.dimension && options.dimension !== "infer");
3229
+ if (forceDimension) {
3230
+ schemaKeys.clear();
3231
+ for (const classification of classifications) {
3232
+ for (let rowIndex = 0; rowIndex < classification.families.length; rowIndex++) {
3233
+ const family = classification.families[rowIndex];
3234
+ if (family === NULL_FAMILY)
3235
+ continue;
3236
+ classification.dimensions[rowIndex] = getDimensionIndex(dimension);
3237
+ schemaKeys.add(getGeometryTypeIdFromIndices(family, getDimensionIndex(dimension)));
3238
+ }
3239
+ }
3240
+ }
3241
+ const encoding = resolveDecodeEncoding(options.encoding, rootFamilies);
3242
+ validateDecodeEncoding(encoding, rootFamilies);
3243
+ const builderOptions = {
3244
+ dimension,
3245
+ coordinateLayout: options.coordinateLayout || "interleaved",
3246
+ coordinateType: options.coordinateType || "float64",
3247
+ offsetType: options.offsetType || "int32"
3248
+ };
3249
+ if (encoding !== "geoarrow.geometry" && encoding !== "geoarrow.geometrycollection") {
3250
+ const chunks2 = column.chunks.map((chunk, chunkIndex) => decodeConcreteWKBChunk(chunk, classifications[chunkIndex], encoding, builderOptions, options.traversal));
3251
+ return copyMetadata(column, {
3252
+ encoding,
3253
+ dimension,
3254
+ coordinateLayout: builderOptions.coordinateLayout,
3255
+ chunks: chunks2
3256
+ });
3257
+ }
3258
+ if (encoding === "geoarrow.geometrycollection") {
3259
+ const stableCollectionSchemas = normalizeCollectionSchemas(collectionSchemas, dimension, forceDimension);
3260
+ const chunks2 = column.chunks.map((chunk, chunkIndex) => decodeGeometryCollectionWKBChunk(chunk, classifications[chunkIndex], void 0, stableCollectionSchemas, builderOptions, options.traversal, forceDimension ? dimension : void 0));
3261
+ return copyMetadata(column, {
3262
+ encoding,
3263
+ dimension,
3264
+ coordinateLayout: builderOptions.coordinateLayout,
3265
+ chunks: chunks2
3266
+ });
3267
+ }
3268
+ if (schemaKeys.size === 0)
3269
+ schemaKeys.add(getGeometryTypeId2("Point", dimension));
3270
+ if (hasNulls)
3271
+ schemaKeys.add(getGeometryTypeId2("Point", dimension));
3272
+ const stableSchema = [...schemaKeys].sort((left, right) => left - right);
3273
+ const chunks = column.chunks.map((chunk, chunkIndex) => decodeUnionWKBChunk(chunk, classifications[chunkIndex], stableSchema, normalizeCollectionSchemas(collectionSchemas, dimension, forceDimension), builderOptions, options.traversal, forceDimension ? dimension : void 0));
3274
+ return copyMetadata(column, {
3275
+ encoding: "geoarrow.geometry",
3276
+ dimension,
3277
+ coordinateLayout: builderOptions.coordinateLayout,
3278
+ chunks
3279
+ });
3280
+ }
3281
+ function getGeoArrowWKBVertexCount(column, traversal) {
3282
+ if (column.encoding !== "geoarrow.wkb")
3283
+ throw new Error("Expected a geoarrow.wkb column");
3284
+ let vertexCount = 0;
3285
+ for (const chunk of column.chunks) {
3286
+ if (chunk.kind !== "serialized")
3287
+ throw new Error("Serialized column contains native storage");
3288
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3289
+ if (!isGeoArrowValueValid(chunk.validity, rowIndex))
3290
+ continue;
3291
+ visitWKB(getSerializedBytes(chunk, rowIndex), {
3292
+ geometry: (header, count) => {
3293
+ if (header.geometryType === "Point")
3294
+ vertexCount++;
3295
+ else if (header.geometryType === "LineString")
3296
+ vertexCount += count || 0;
3297
+ },
3298
+ ring: (pointCount) => {
3299
+ vertexCount += pointCount;
3300
+ }
3301
+ }, traversal);
3302
+ }
3303
+ }
3304
+ return vertexCount;
3305
+ }
3306
+ function decodeConcreteWKBChunk(chunk, classification, encoding, options, traversal) {
3307
+ const measure = new GeoArrowBuilder({ ...options, encoding, mode: "measure" });
3308
+ replaySerializedChunk(chunk, classification, encoding, measure, traversal);
3309
+ const write = new GeoArrowBuilder({
3310
+ ...options,
3311
+ encoding,
3312
+ mode: "write",
3313
+ target: measure.allocateTarget()
3314
+ });
3315
+ replaySerializedChunk(chunk, classification, encoding, write, traversal);
3316
+ return write.finish().chunks[0];
3317
+ }
3318
+ function replaySerializedChunk(chunk, classification, encoding, builder, traversal) {
3319
+ const targetType = geometryTypeFromEncoding(encoding);
3320
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3321
+ if (classification.families[rowIndex] === NULL_FAMILY)
3322
+ builder.append(null);
3323
+ else
3324
+ visitWKBIntoBuilder(getSerializedBytes(chunk, rowIndex), builder, targetType, traversal);
3325
+ }
3326
+ }
3327
+ function decodeUnionWKBChunk(chunk, classification, stableSchema, collectionSchemas, options, traversal, childDimensionOverride) {
3328
+ const measureBuilders = /* @__PURE__ */ new Map();
3329
+ for (const key of stableSchema) {
3330
+ const type = getGeometryTypeFromId(key);
3331
+ if (type !== "GeometryCollection") {
3332
+ const encoding = encodingFromGeometryType(type);
3333
+ measureBuilders.set(key, new GeoArrowBuilder({
3334
+ ...options,
3335
+ encoding,
3336
+ dimension: getDimensionFromId(key),
3337
+ mode: "measure"
3338
+ }));
3339
+ }
3340
+ }
3341
+ const typeIds = new Int8Array(chunk.length);
3342
+ const valueOffsets = new Int32Array(chunk.length);
3343
+ const childCounts = /* @__PURE__ */ new Map();
3344
+ const nullKey = stableSchema[0];
3345
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3346
+ const family = classification.families[rowIndex];
3347
+ const key = family === NULL_FAMILY ? nullKey : getGeometryTypeIdFromIndices(family, classification.dimensions[rowIndex]);
3348
+ typeIds[rowIndex] = key;
3349
+ valueOffsets[rowIndex] = childCounts.get(key) || 0;
3350
+ childCounts.set(key, valueOffsets[rowIndex] + 1);
3351
+ const builder = measureBuilders.get(key);
3352
+ if (builder) {
3353
+ if (family === NULL_FAMILY)
3354
+ builder.append(null);
3355
+ else
3356
+ visitWKBIntoBuilder(getSerializedBytes(chunk, rowIndex), builder, getConcreteGeometryTypeFromId(key), traversal);
3357
+ }
3358
+ }
3359
+ const writeBuilders = /* @__PURE__ */ new Map();
3360
+ for (const key of stableSchema) {
3361
+ if (getGeometryTypeFromId(key) === "GeometryCollection")
3362
+ continue;
3363
+ const measure = measureBuilders.get(key);
3364
+ writeBuilders.set(key, new GeoArrowBuilder({
3365
+ ...options,
3366
+ encoding: encodingFromGeometryType(getConcreteGeometryTypeFromId(key)),
3367
+ dimension: getDimensionFromId(key),
3368
+ mode: "write",
3369
+ target: measure.allocateTarget()
3370
+ }));
3371
+ }
3372
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3373
+ const family = classification.families[rowIndex];
3374
+ const key = family === NULL_FAMILY ? nullKey : getGeometryTypeIdFromIndices(family, classification.dimensions[rowIndex]);
3375
+ const builder = writeBuilders.get(key);
3376
+ if (builder) {
3377
+ if (family === NULL_FAMILY)
3378
+ builder.append(null);
3379
+ else
3380
+ visitWKBIntoBuilder(getSerializedBytes(chunk, rowIndex), builder, getConcreteGeometryTypeFromId(key), traversal);
3381
+ }
3382
+ }
3383
+ const children = stableSchema.map((key) => {
3384
+ const type = getGeometryTypeFromId(key);
3385
+ if (type === "GeometryCollection") {
3386
+ return {
3387
+ name: type,
3388
+ typeId: key,
3389
+ encoding: "geoarrow.geometrycollection",
3390
+ dimension: getDimensionFromId(key),
3391
+ coordinateLayout: options.coordinateLayout,
3392
+ data: decodeGeometryCollectionWKBChunk(chunk, classification, key, collectionSchemas, { ...options, dimension: getDimensionFromId(key) }, traversal, childDimensionOverride)
3393
+ };
3394
+ }
3395
+ const built = writeBuilders.get(key).finish();
3396
+ return {
3397
+ name: getGeometryTypeFromId(key),
3398
+ typeId: key,
3399
+ encoding: built.encoding,
3400
+ dimension: built.dimension,
3401
+ coordinateLayout: built.coordinateLayout,
3402
+ data: built.chunks[0]
3403
+ };
3404
+ });
3405
+ return { kind: "dense-union", length: chunk.length, typeIds, valueOffsets, children };
3406
+ }
3407
+ function decodeGeometryCollectionWKBChunk(chunk, classification, selectorKey, schemas, options, traversal, childDimensionOverride) {
3408
+ const measureLevels = schemas.map((schema) => makeCollectionMeasureLevel(schema, options));
3409
+ if (measureLevels.length === 0)
3410
+ measureLevels.push(makeCollectionMeasureLevel([], options));
3411
+ forEachSelectedCollectionRow(chunk, classification, selectorKey, (bytes, valid) => {
3412
+ if (!valid) {
3413
+ measureLevels[0].rowCount++;
3414
+ return;
3415
+ }
3416
+ replayWKBCollection(bytes, measureLevels, void 0, options.dimension, traversal, childDimensionOverride);
3417
+ });
3418
+ const writeLevels = measureLevels.map((level) => makeCollectionWriteLevel(level, options));
3419
+ forEachSelectedCollectionRow(chunk, classification, selectorKey, (bytes, valid) => {
3420
+ if (!valid) {
3421
+ writeCollectionRow(writeLevels[0], 0);
3422
+ return;
3423
+ }
3424
+ replayWKBCollection(bytes, measureLevels, writeLevels, options.dimension, traversal, childDimensionOverride);
3425
+ });
3426
+ const root = makeCollectionLevelArray(0, measureLevels, writeLevels, options);
3427
+ if (selectorKey !== void 0)
3428
+ return root;
3429
+ const validity = new Uint8Array(Math.ceil(root.length / 8));
3430
+ for (let rowIndex = 0; rowIndex < classification.families.length; rowIndex++) {
3431
+ if (classification.families[rowIndex] === getGeometryFamilyIndex("GeometryCollection")) {
3432
+ validity[rowIndex >> 3] |= 1 << (rowIndex & 7);
3433
+ }
3434
+ }
3435
+ return { ...root, validity: { values: validity } };
3436
+ }
3437
+ function forEachSelectedCollectionRow(chunk, classification, selectorKey, visitor) {
3438
+ const collectionFamily = getGeometryFamilyIndex("GeometryCollection");
3439
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3440
+ const family = classification.families[rowIndex];
3441
+ if (selectorKey === void 0) {
3442
+ if (family === NULL_FAMILY)
3443
+ visitor(void 0, false);
3444
+ else if (family === collectionFamily)
3445
+ visitor(getSerializedBytes(chunk, rowIndex), true);
3446
+ else
3447
+ throw new Error("Rows cannot be represented as geoarrow.geometrycollection");
3448
+ } else if (family === collectionFamily && getGeometryTypeIdFromIndices(family, classification.dimensions[rowIndex]) === selectorKey) {
3449
+ visitor(getSerializedBytes(chunk, rowIndex), true);
3450
+ }
3451
+ }
3452
+ }
3453
+ function makeCollectionMeasureLevel(schema, options) {
3454
+ const builders = /* @__PURE__ */ new Map();
3455
+ for (const key of schema) {
3456
+ const type = getGeometryTypeFromId(key);
3457
+ if (type !== "GeometryCollection") {
3458
+ builders.set(key, new GeoArrowBuilder({
3459
+ ...options,
3460
+ encoding: encodingFromGeometryType(type),
3461
+ dimension: getDimensionFromId(key),
3462
+ mode: "measure"
3463
+ }));
3464
+ }
3465
+ }
3466
+ return { schema, rowCount: 0, childCount: 0, builders };
3467
+ }
3468
+ function makeCollectionWriteLevel(measure, options) {
3469
+ const OffsetArray = options.offsetType === "int64" ? BigInt64Array : Int32Array;
3470
+ const builders = /* @__PURE__ */ new Map();
3471
+ for (const [key, builder] of measure.builders) {
3472
+ builders.set(key, new GeoArrowBuilder({
3473
+ ...options,
3474
+ encoding: encodingFromGeometryType(getConcreteGeometryTypeFromId(key)),
3475
+ dimension: getDimensionFromId(key),
3476
+ mode: "write",
3477
+ target: builder.allocateTarget()
3478
+ }));
3479
+ }
3480
+ return {
3481
+ schema: measure.schema,
3482
+ rowCursor: 0,
3483
+ childCursor: 0,
3484
+ offsets: new OffsetArray(measure.rowCount + 1),
3485
+ typeIds: new Int8Array(measure.childCount),
3486
+ valueOffsets: new Int32Array(measure.childCount),
3487
+ childCounts: /* @__PURE__ */ new Map(),
3488
+ builders
3489
+ };
3490
+ }
3491
+ function replayWKBCollection(bytes, measureLevels, writeLevels, collectionDimension, traversal, childDimensionOverride) {
3492
+ const collectionStack = [];
3493
+ let active;
3494
+ const finishActive = () => {
3495
+ active == null ? void 0 : active.builder.endGeometry();
3496
+ active = void 0;
3497
+ };
3498
+ visitWKB(bytes, {
3499
+ geometry: (header, count, depth) => {
3500
+ if (active && depth > active.rootDepth) {
3501
+ if (active.rootType === "MultiLineString" && header.geometryType === "LineString") {
3502
+ active.builder.beginRing(count);
3503
+ } else if (active.rootType === "MultiPolygon" && header.geometryType === "Polygon") {
3504
+ active.builder.beginPolygon();
3505
+ }
3506
+ return;
3507
+ }
3508
+ finishActive();
3509
+ while (collectionStack.length && depth <= collectionStack[collectionStack.length - 1].depth) {
3510
+ collectionStack.pop();
3511
+ }
3512
+ const parent = collectionStack[collectionStack.length - 1];
3513
+ if (header.geometryType === "GeometryCollection") {
3514
+ if (parent) {
3515
+ addCollectionChild(measureLevels[parent.level], writeLevels == null ? void 0 : writeLevels[parent.level], getGeometryTypeId2("GeometryCollection", collectionDimension));
3516
+ }
3517
+ const level = parent ? parent.level + 1 : 0;
3518
+ if (!measureLevels[level]) {
3519
+ measureLevels[level] = makeCollectionMeasureLevel([], {
3520
+ dimension: collectionDimension,
3521
+ coordinateLayout: "interleaved",
3522
+ coordinateType: "float64",
3523
+ offsetType: "int32"
3524
+ });
3525
+ }
3526
+ if (writeLevels)
3527
+ writeCollectionRow(writeLevels[level], count || 0);
3528
+ else
3529
+ measureLevels[level].rowCount++;
3530
+ collectionStack.push({ depth, level });
3531
+ return;
3532
+ }
3533
+ if (!parent)
3534
+ throw new Error("Expected a GeometryCollection root");
3535
+ const key = getGeometryTypeId2(header.geometryType, childDimensionOverride || header.dimension);
3536
+ addCollectionChild(measureLevels[parent.level], writeLevels == null ? void 0 : writeLevels[parent.level], key);
3537
+ const builder = writeLevels ? writeLevels[parent.level].builders.get(key) : measureLevels[parent.level].builders.get(key);
3538
+ if (!builder)
3539
+ throw new Error(`Missing GeometryCollection child schema for type ID ${key}`);
3540
+ builder.beginGeometry(header.geometryType, header.dimension, count);
3541
+ active = { builder, rootDepth: depth, rootType: header.geometryType };
3542
+ },
3543
+ ring: (pointCount) => active == null ? void 0 : active.builder.beginRing(pointCount),
3544
+ coordinate: (x, y, z, m, dimension) => active == null ? void 0 : active.builder.writeCoordinateFromDimension(x, y, z, m, dimension)
3545
+ }, traversal);
3546
+ finishActive();
3547
+ }
3548
+ function addCollectionChild(measure, write, key) {
3549
+ if (!write) {
3550
+ measure.childCount++;
3551
+ return;
3552
+ }
3553
+ const index = write.childCursor++;
3554
+ write.typeIds[index] = key;
3555
+ write.valueOffsets[index] = write.childCounts.get(key) || 0;
3556
+ write.childCounts.set(key, write.valueOffsets[index] + 1);
3557
+ }
3558
+ function writeCollectionRow(level, childCount) {
3559
+ level.rowCursor++;
3560
+ setGeoArrowOffset(level.offsets, level.rowCursor, level.childCursor + childCount);
3561
+ }
3562
+ function makeCollectionLevelArray(levelIndex, measureLevels, writeLevels, options) {
3563
+ const measure = measureLevels[levelIndex];
3564
+ const write = writeLevels[levelIndex];
3565
+ const children = measure.schema.map((key) => {
3566
+ const type = getGeometryTypeFromId(key);
3567
+ if (type === "GeometryCollection") {
3568
+ return {
3569
+ name: type,
3570
+ typeId: key,
3571
+ encoding: "geoarrow.geometrycollection",
3572
+ dimension: getDimensionFromId(key),
3573
+ coordinateLayout: options.coordinateLayout,
3574
+ data: makeCollectionLevelArray(levelIndex + 1, measureLevels, writeLevels, options)
3575
+ };
3576
+ }
3577
+ const built = write.builders.get(key).finish();
3578
+ return {
3579
+ name: type,
3580
+ typeId: key,
3581
+ encoding: built.encoding,
3582
+ dimension: built.dimension,
3583
+ coordinateLayout: built.coordinateLayout,
3584
+ data: built.chunks[0]
3585
+ };
3586
+ });
3587
+ return {
3588
+ kind: "list",
3589
+ length: measure.rowCount,
3590
+ offsets: write.offsets,
3591
+ child: {
3592
+ kind: "dense-union",
3593
+ length: measure.childCount,
3594
+ typeIds: write.typeIds,
3595
+ valueOffsets: write.valueOffsets,
3596
+ children
3597
+ }
3598
+ };
3599
+ }
3600
+ function setGeoArrowOffset(offsets, index, value) {
3601
+ if (offsets instanceof BigInt64Array)
3602
+ offsets[index] = BigInt(value);
3603
+ else
3604
+ offsets[index] = value;
3605
+ }
3606
+ function normalizeCollectionSchemas(schemas, dimension, forceDimension) {
3607
+ return schemas.map((schema) => [...schema].map((key) => forceDimension || getGeometryTypeFromId(key) === "GeometryCollection" ? getGeometryTypeId2(getGeometryTypeFromId(key), dimension) : key).filter((key, index, values) => values.indexOf(key) === index).sort((left, right) => left - right));
3608
+ }
3609
+ function visitWKBIntoBuilder(bytes, builder, targetType, traversal) {
3610
+ let rootType;
3611
+ visitWKB(bytes, {
3612
+ geometry: (header, _count, depth) => {
3613
+ if (depth === 0) {
3614
+ rootType = header.geometryType;
3615
+ builder.beginGeometry(targetType, header.dimension, _count);
3616
+ if (rootType === "LineString" && targetType === "MultiLineString")
3617
+ builder.beginRing(_count);
3618
+ if (rootType === "Polygon" && targetType === "MultiPolygon")
3619
+ builder.beginPolygon();
3620
+ } else if (rootType === "MultiLineString" && header.geometryType === "LineString") {
3621
+ builder.beginRing(_count);
3622
+ } else if (rootType === "MultiPolygon" && header.geometryType === "Polygon") {
3623
+ builder.beginPolygon();
3624
+ }
3625
+ },
3626
+ ring: (pointCount) => {
3627
+ if (rootType === "Polygon" || rootType === "MultiPolygon")
3628
+ builder.beginRing(pointCount);
3629
+ },
3630
+ coordinate: (x, y, z, m, dimension) => {
3631
+ builder.writeCoordinateFromDimension(x, y, z, m, dimension);
3632
+ }
3633
+ }, traversal);
3634
+ builder.endGeometry();
3635
+ }
3636
+ function encodingFromGeometryType(type) {
3637
+ if (type === "GeometryCollection")
3638
+ throw new Error("GeometryCollection requires collection storage");
3639
+ return `geoarrow.${type.toLowerCase()}`;
3640
+ }
3641
+ function getGeometryTypeId2(type, dimension) {
3642
+ return getGeometryTypeIdFromIndices(getGeometryFamilyIndex(type), getDimensionIndex(dimension));
3643
+ }
3644
+ var GEOMETRY_TYPES2 = [
3645
+ "Point",
3646
+ "LineString",
3647
+ "Polygon",
3648
+ "MultiPoint",
3649
+ "MultiLineString",
3650
+ "MultiPolygon",
3651
+ "GeometryCollection"
3652
+ ];
3653
+ var DIMENSIONS = ["xy", "xyz", "xym", "xyzm"];
3654
+ function getGeometryFamilyIndex(type) {
3655
+ return GEOMETRY_TYPES2.indexOf(type);
3656
+ }
3657
+ function getDimensionIndex(dimension) {
3658
+ return DIMENSIONS.indexOf(dimension);
3659
+ }
3660
+ function getGeometryTypeIdFromIndices(family, dimension) {
3661
+ return family * 4 + dimension + 1;
3662
+ }
3663
+ function getGeometryTypeFromId(typeId) {
3664
+ return GEOMETRY_TYPES2[Math.floor((typeId - 1) / 4)];
3665
+ }
3666
+ function getConcreteGeometryTypeFromId(typeId) {
3667
+ const type = getGeometryTypeFromId(typeId);
3668
+ if (type === "GeometryCollection")
3669
+ throw new Error("GeometryCollection requires collection storage");
3670
+ return type;
3671
+ }
3672
+ function getDimensionFromId(typeId) {
3673
+ return DIMENSIONS[(typeId - 1) % 4];
3674
+ }
3675
+ function resolveDecodeDimension(requested, declared, inferred) {
3676
+ if (!requested || requested === "infer")
3677
+ return inferred;
3678
+ return requested === "preserve" ? declared : requested;
3679
+ }
3680
+ function resolveDecodeEncoding(requested, families) {
3681
+ if (requested && requested !== "native")
3682
+ return requested;
3683
+ if (families.size !== 1)
3684
+ return "geoarrow.geometry";
3685
+ const type = GEOMETRY_TYPES2[[...families][0]];
3686
+ return type === "GeometryCollection" ? "geoarrow.geometrycollection" : encodingFromGeometryType(type);
3687
+ }
3688
+ function validateDecodeEncoding(encoding, families) {
3689
+ if (encoding === "geoarrow.geometry")
3690
+ return;
3691
+ if (encoding === "geoarrow.geometrycollection") {
3692
+ const collectionFamily = getGeometryFamilyIndex("GeometryCollection");
3693
+ if ([...families].some((family) => family !== collectionFamily)) {
3694
+ throw new Error("Rows cannot be represented as geoarrow.geometrycollection");
3695
+ }
3696
+ return;
3697
+ }
3698
+ const targetType = geometryTypeFromEncoding(encoding);
3699
+ for (const family of families) {
3700
+ const sourceType = GEOMETRY_TYPES2[family];
3701
+ const promotable = sourceType === targetType || sourceType === "Point" && targetType === "MultiPoint" || sourceType === "LineString" && targetType === "MultiLineString" || sourceType === "Polygon" && targetType === "MultiPolygon";
3702
+ if (!promotable)
3703
+ throw new Error(`Rows cannot be represented as ${encoding}`);
3704
+ }
3705
+ }
3706
+ function geometryTypeFromEncoding(encoding) {
3707
+ const type = GEOMETRY_TYPES2.find((candidate) => `geoarrow.${candidate.toLowerCase()}` === encoding);
3708
+ if (!type || type === "GeometryCollection")
3709
+ throw new Error(`Unsupported target encoding ${encoding}`);
3710
+ return type;
3711
+ }
3712
+ function encodeGeoArrowWKB(column) {
3713
+ if (column.encoding === "geoarrow.wkb")
3714
+ return column;
3715
+ return copyMetadata(column, {
3716
+ encoding: "geoarrow.wkb",
3717
+ dimension: column.dimension,
3718
+ coordinateLayout: null,
3719
+ chunks: column.chunks.map((chunk) => encodeWKBChunk(column, chunk))
3720
+ });
3721
+ }
3722
+ function encodeWKBChunk(column, chunk) {
3723
+ const offsets = new Int32Array(chunk.length + 1);
3724
+ const validity = new Uint8Array(Math.ceil(chunk.length / 8));
3725
+ let nullCount = 0;
3726
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3727
+ let byteLength = 0;
3728
+ if (isPhysicalGeometryRowValid(chunk, rowIndex, column.encoding)) {
3729
+ const dimension = getPhysicalGeometryDimension(chunk, rowIndex, column.encoding, column.dimension);
3730
+ const builder = new WKBBuilder({ mode: "measure", dimension });
3731
+ writePhysicalGeometry(builder, chunk, rowIndex, column.encoding, dimension);
3732
+ byteLength = builder.finishGeometry();
3733
+ validity[rowIndex >> 3] |= 1 << (rowIndex & 7);
3734
+ } else {
3735
+ nullCount++;
3736
+ }
3737
+ const nextOffset = offsets[rowIndex] + byteLength;
3738
+ if (nextOffset > 2147483647)
3739
+ throw new Error("WKB geometry chunk exceeds Int32 offsets");
3740
+ offsets[rowIndex + 1] = nextOffset;
3741
+ }
3742
+ const values = new Uint8Array(offsets[offsets.length - 1]);
3743
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3744
+ if (!isPhysicalGeometryRowValid(chunk, rowIndex, column.encoding))
3745
+ continue;
3746
+ const dimension = getPhysicalGeometryDimension(chunk, rowIndex, column.encoding, column.dimension);
3747
+ const builder = new WKBBuilder({
3748
+ mode: "write",
3749
+ target: values,
3750
+ byteOffset: offsets[rowIndex],
3751
+ dimension
3752
+ });
3753
+ writePhysicalGeometry(builder, chunk, rowIndex, column.encoding, dimension);
3754
+ if (offsets[rowIndex] + builder.finishGeometry() !== offsets[rowIndex + 1]) {
3755
+ throw new Error("WKB measure and write passes produced different byte lengths");
3756
+ }
3757
+ }
3758
+ return {
3759
+ kind: "serialized",
3760
+ encoding: "binary",
3761
+ length: chunk.length,
3762
+ offsets,
3763
+ values,
3764
+ ...nullCount ? { validity: { values: validity } } : {}
3765
+ };
3766
+ }
3767
+ function isPhysicalGeometryRowValid(array, rowIndex, encoding) {
3768
+ if (!isGeoArrowValueValid(array.validity, rowIndex))
3769
+ return false;
3770
+ if (encoding !== "geoarrow.geometry" || array.kind !== "dense-union")
3771
+ return true;
3772
+ const physical = (array.offset || 0) + rowIndex;
3773
+ const child = array.children.find((candidate) => candidate.typeId === array.typeIds[physical]);
3774
+ const childIndex = array.valueOffsets[physical];
3775
+ return Boolean(child && childIndex >= 0 && childIndex < child.data.length && isGeoArrowValueValid(child.data.validity, childIndex));
3776
+ }
3777
+ function decodeGeoArrowWKT(column) {
3778
+ if (column.encoding !== "geoarrow.wkt")
3779
+ throw new Error("Expected a geoarrow.wkt column");
3780
+ const rows = normalizeRowsToDimension(decodeSerializedRows(column, (bytes) => parseWKT(textDecoder.decode(bytes))), column.dimension);
3781
+ return copyMetadata(column, makeGeoArrowColumnFromGeometryRows(rows, { dimension: column.dimension }));
3782
+ }
3783
+ function encodeGeoArrowWKT(column) {
3784
+ if (column.encoding === "geoarrow.wkt")
3785
+ return column;
3786
+ const values = [];
3787
+ for (const chunk of column.chunks) {
3788
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3789
+ const row = isGeoArrowValueValid(chunk.validity, rowIndex) ? materializeGeometryRow(chunk, rowIndex, column.encoding) : null;
3790
+ values.push(row ? textEncoder.encode(formatWKT(row, column.dimension)) : null);
3791
+ }
3792
+ }
3793
+ return copyMetadata(column, makeSerializedColumn(values, "geoarrow.wkt", column.dimension));
3794
+ }
3795
+ function writePhysicalGeometry(builder, array, rowIndex, encoding, dimension) {
3796
+ const depth = getEncodingDepth3(encoding);
3797
+ if (encoding === "geoarrow.geometry" && array.kind === "dense-union") {
3798
+ const physical = (array.offset || 0) + rowIndex;
3799
+ const typeId = array.typeIds[physical];
3800
+ const child = array.children.find((candidate) => candidate.typeId === typeId);
3801
+ if (!child)
3802
+ throw new Error("Dense-union row references an unknown child");
3803
+ const childDimension = child.dimension || dimension;
3804
+ builder.withDimension(childDimension, () => writePhysicalGeometry(builder, child.data, array.valueOffsets[physical], child.encoding || encodingFromName(child.name), childDimension));
3805
+ return;
3806
+ }
3807
+ if (encoding === "geoarrow.geometrycollection" && array.kind === "list") {
3808
+ const [first, last] = getListRange2(array, rowIndex);
3809
+ builder.beginGeometry("GeometryCollection", last - first);
3810
+ if (array.child.kind !== "dense-union")
3811
+ throw new Error("GeometryCollection requires dense union child");
3812
+ const union = array.child;
3813
+ for (let index = first; index < last; index++) {
3814
+ const physical = (union.offset || 0) + index;
3815
+ const child = union.children.find((candidate) => candidate.typeId === union.typeIds[physical]);
3816
+ if (child) {
3817
+ const childDimension = child.dimension || dimension;
3818
+ builder.withDimension(childDimension, () => writePhysicalGeometry(builder, child.data, union.valueOffsets[physical], child.encoding || encodingFromName(child.name), childDimension));
3819
+ }
3820
+ }
3821
+ return;
3822
+ }
3823
+ if (array.kind !== "list" && depth > 0)
3824
+ throw new Error(`Invalid ${encoding} storage`);
3825
+ const writeCoordinate2 = (leaf, index) => {
3826
+ const coordinate = readPhysicalCoordinate(leaf, index);
3827
+ if (!coordinate)
3828
+ throw new Error("Invalid GeoArrow coordinate storage");
3829
+ if (dimension === "xym")
3830
+ builder.writeCoordinate(coordinate[0], coordinate[1], void 0, coordinate[2]);
3831
+ else if (dimension === "xyzm")
3832
+ builder.writeCoordinate(coordinate[0], coordinate[1], coordinate[2], coordinate[3]);
3833
+ else
3834
+ builder.writeCoordinate(coordinate[0], coordinate[1], coordinate[2]);
3835
+ };
3836
+ const writeSequence = (leaf, first, last) => {
3837
+ for (let index = first; index < last; index++)
3838
+ writeCoordinate2(leaf, index);
3839
+ };
3840
+ if (encoding === "geoarrow.point") {
3841
+ builder.beginPoint();
3842
+ writeCoordinate2(array, rowIndex);
3843
+ } else if (encoding === "geoarrow.linestring" || encoding === "geoarrow.multipoint") {
3844
+ const [first, last] = getListRange2(array, rowIndex);
3845
+ if (encoding === "geoarrow.linestring") {
3846
+ builder.beginLineString(last - first);
3847
+ writeSequence(array.child, first, last);
3848
+ } else {
3849
+ builder.beginMultiPoint(last - first);
3850
+ const leaf = array.child;
3851
+ for (let index = first; index < last; index++) {
3852
+ builder.beginPoint();
3853
+ writeCoordinate2(leaf, index);
3854
+ }
3855
+ }
3856
+ } else if (encoding === "geoarrow.polygon" || encoding === "geoarrow.multilinestring") {
3857
+ const [first, last] = getListRange2(array, rowIndex);
3858
+ const parts = array.child;
3859
+ if (encoding === "geoarrow.polygon")
3860
+ builder.beginPolygon(last - first);
3861
+ else
3862
+ builder.beginMultiLineString(last - first);
3863
+ for (let partIndex = first; partIndex < last; partIndex++) {
3864
+ const [ringFirst, ringLast] = getListRange2(parts, partIndex);
3865
+ const leaf = parts.child;
3866
+ if (encoding === "geoarrow.polygon")
3867
+ builder.beginLinearRing(ringLast - ringFirst);
3868
+ else
3869
+ builder.beginLineString(ringLast - ringFirst);
3870
+ writeSequence(leaf, ringFirst, ringLast);
3871
+ }
3872
+ } else if (encoding === "geoarrow.multipolygon") {
3873
+ const [first, last] = getListRange2(array, rowIndex);
3874
+ const polygons = array.child;
3875
+ builder.beginMultiPolygon(last - first);
3876
+ for (let polygonIndex = first; polygonIndex < last; polygonIndex++) {
3877
+ const [partFirst, partLast] = getListRange2(polygons, polygonIndex);
3878
+ const parts = polygons.child;
3879
+ builder.beginPolygon(partLast - partFirst);
3880
+ for (let partIndex = partFirst; partIndex < partLast; partIndex++) {
3881
+ const [ringFirst, ringLast] = getListRange2(parts, partIndex);
3882
+ builder.beginLinearRing(ringLast - ringFirst);
3883
+ writeSequence(parts.child, ringFirst, ringLast);
3884
+ }
3885
+ }
3886
+ }
3887
+ }
3888
+ function getPhysicalGeometryDimension(array, rowIndex, encoding, dimension) {
3889
+ if (encoding !== "geoarrow.geometry" || array.kind !== "dense-union")
3890
+ return dimension;
3891
+ const physical = (array.offset || 0) + rowIndex;
3892
+ const child = array.children.find((candidate) => candidate.typeId === array.typeIds[physical]);
3893
+ return (child == null ? void 0 : child.dimension) || dimension;
3894
+ }
3895
+ function readPhysicalCoordinate(array, index) {
3896
+ if (array.kind === "fixed-size-list" && array.child.kind === "primitive") {
3897
+ const logical = (array.offset || 0) + index;
3898
+ const values = [];
3899
+ for (let component = 0; component < array.size; component++)
3900
+ values.push(Number(array.child.values[(array.child.offset || 0) + (logical * array.size + component) * (array.child.stride || 1)]));
3901
+ return values;
3902
+ }
3903
+ if (array.kind === "struct") {
3904
+ const logical = (array.offset || 0) + index;
3905
+ return ["x", "y", "z", "m"].flatMap((name) => {
3906
+ const child = array.children[name];
3907
+ return (child == null ? void 0 : child.kind) === "primitive" ? [Number(child.values[(child.offset || 0) + logical * (child.stride || 1)])] : [];
3908
+ });
3909
+ }
3910
+ return null;
3911
+ }
3912
+ function getListRange2(list, index) {
3913
+ const offset = (list.offset || 0) + index;
3914
+ const base = typeof (list.offsetBase ?? 0) === "bigint" ? Number(list.offsetBase) : Number(list.offsetBase ?? 0);
3915
+ return [
3916
+ getGeoArrowOffset(list.offsets, offset) - base,
3917
+ getGeoArrowOffset(list.offsets, offset + 1) - base
3918
+ ];
3919
+ }
3920
+ function getEncodingDepth3(encoding) {
3921
+ return encoding === "geoarrow.point" ? 0 : encoding === "geoarrow.linestring" || encoding === "geoarrow.multipoint" ? 1 : encoding === "geoarrow.polygon" || encoding === "geoarrow.multilinestring" ? 2 : 3;
3922
+ }
3923
+ function encodingFromName(name) {
3924
+ return `geoarrow.${name.toLowerCase()}`;
3925
+ }
3926
+ function normalizeRowsToDimension(rows, dimension) {
3927
+ const size = getGeoArrowDimensionSize(dimension);
3928
+ const normalizeGeometry = (geometry) => {
3929
+ if (geometry.type === "GeometryCollection") {
3930
+ return { ...geometry, geometries: geometry.geometries.map(normalizeGeometry) };
3931
+ }
3932
+ return {
3933
+ ...geometry,
3934
+ coordinates: normalizeCoordinateNesting(geometry.coordinates, size)
3935
+ };
3936
+ };
3937
+ return rows.map((row) => row ? normalizeGeometry(row) : null);
3938
+ }
3939
+ function normalizeCoordinateNesting(value, size) {
3940
+ if (value.length === 0)
3941
+ return [];
3942
+ if (typeof value[0] === "number") {
3943
+ const coordinate = value.slice(0, size);
3944
+ while (coordinate.length < size)
3945
+ coordinate.push(0);
3946
+ return coordinate;
3947
+ }
3948
+ return value.map((child) => normalizeCoordinateNesting(child, size));
3949
+ }
3950
+ function decodeSerializedRows(column, decoder) {
3951
+ const rows = [];
3952
+ for (const chunk of column.chunks) {
3953
+ if (chunk.kind !== "serialized")
3954
+ throw new Error("Serialized column contains native storage");
3955
+ for (let rowIndex = 0; rowIndex < chunk.length; rowIndex++) {
3956
+ if (!isGeoArrowValueValid(chunk.validity, rowIndex)) {
3957
+ rows.push(null);
3958
+ continue;
3959
+ }
3960
+ rows.push(decoder(getSerializedBytes(chunk, rowIndex)));
3961
+ }
3962
+ }
3963
+ return rows;
3964
+ }
3965
+ function getSerializedBytes(array, rowIndex) {
3966
+ var _a;
3967
+ if (array.views) {
3968
+ const viewIndex = ((array.offset || 0) + rowIndex) * 4;
3969
+ const length = array.views[viewIndex];
3970
+ if (length <= 12) {
3971
+ const byteOffset2 = array.views.byteOffset + viewIndex * 4 + 4;
3972
+ return new Uint8Array(array.views.buffer, byteOffset2, length);
3973
+ }
3974
+ const bufferIndex = array.views[viewIndex + 2];
3975
+ const byteOffset = array.views[viewIndex + 3];
3976
+ const data = (_a = array.dataBuffers) == null ? void 0 : _a[bufferIndex];
3977
+ if (!data)
3978
+ throw new Error(`Serialized view references missing data buffer ${bufferIndex}`);
3979
+ return data.subarray(byteOffset, byteOffset + length);
3980
+ }
3981
+ const offsetIndex = (array.offset || 0) + rowIndex;
3982
+ const baseValue = array.offsetBase ?? 0;
3983
+ const base = typeof baseValue === "bigint" ? Number(baseValue) : baseValue;
3984
+ const first = getGeoArrowOffset(array.offsets, offsetIndex) - base;
3985
+ const last = getGeoArrowOffset(array.offsets, offsetIndex + 1) - base;
3986
+ return array.values.subarray(first, last);
3987
+ }
3988
+ function makeSerializedColumn(rows, encoding, dimension) {
3989
+ let byteLength = 0;
3990
+ for (const row of rows)
3991
+ byteLength += (row == null ? void 0 : row.byteLength) || 0;
3992
+ const values = new Uint8Array(byteLength);
3993
+ const offsets = new Int32Array(rows.length + 1);
3994
+ const validity = new Uint8Array(Math.ceil(rows.length / 8));
3995
+ let byteOffset = 0;
3996
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
3997
+ const row = rows[rowIndex];
3998
+ if (row) {
3999
+ values.set(row, byteOffset);
4000
+ byteOffset += row.byteLength;
4001
+ validity[rowIndex >> 3] |= 1 << (rowIndex & 7);
4002
+ }
4003
+ offsets[rowIndex + 1] = byteOffset;
4004
+ }
4005
+ const chunk = {
4006
+ kind: "serialized",
4007
+ encoding: encoding === "geoarrow.wkb" ? "binary" : "utf8",
4008
+ length: rows.length,
4009
+ offsets,
4010
+ values,
4011
+ validity: { values: validity }
4012
+ };
4013
+ return { encoding, dimension, coordinateLayout: null, chunks: [chunk] };
4014
+ }
4015
+ function copyMetadata(source, target) {
4016
+ return {
4017
+ ...target,
4018
+ spatialReference: source.spatialReference,
4019
+ edges: source.edges,
4020
+ metadata: source.metadata
4021
+ };
4022
+ }
4023
+
4024
+ // dist/geoarrow/tessellate.js
4025
+ var import_polygon = require("@math.gl/geometry/polygon");
4026
+ function tessellateGeoArrowPolygons(column, options = {}) {
4027
+ assertGeoArrowResourceLimits(column, options.limits);
4028
+ const rows = materializeGeoArrowRows(column);
4029
+ const sourceDimension = getGeoArrowDimensionSize(column.dimension);
4030
+ const positionSize = options.positionSize || sourceDimension;
4031
+ const sourceRowOffset = options.sourceRowOffset || 0;
4032
+ const positions = [];
4033
+ const sourceRowIndices = [];
4034
+ const indices = [];
4035
+ let polygonCount = 0;
4036
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
4037
+ const row = rows[rowIndex];
4038
+ if (row) {
4039
+ visitPolygons(row, (polygon) => {
4040
+ const vertexOffset = positions.length / positionSize;
4041
+ const flatCoordinates = [];
4042
+ const holeIndices = [];
4043
+ let localVertexCount = 0;
4044
+ for (let ringIndex = 0; ringIndex < polygon.length; ringIndex++) {
4045
+ const ring = removeClosingCoordinate(polygon[ringIndex]);
4046
+ if (ring.length < 3)
4047
+ continue;
4048
+ if (localVertexCount > 0)
4049
+ holeIndices.push(localVertexCount);
4050
+ for (const coordinate of ring) {
4051
+ for (let component = 0; component < sourceDimension; component++) {
4052
+ flatCoordinates.push(coordinate[component] ?? 0);
4053
+ }
4054
+ for (let component = 0; component < positionSize; component++) {
4055
+ positions.push(coordinate[component] ?? 0);
4056
+ }
4057
+ sourceRowIndices.push(sourceRowOffset + rowIndex);
4058
+ localVertexCount++;
4059
+ }
4060
+ }
4061
+ if (localVertexCount >= 3) {
4062
+ const localIndices = (0, import_polygon.earcut)(flatCoordinates, holeIndices, sourceDimension);
4063
+ for (const index of localIndices)
4064
+ indices.push(vertexOffset + index);
4065
+ polygonCount++;
4066
+ }
4067
+ });
4068
+ }
4069
+ }
4070
+ const vertexCount = positions.length / positionSize;
4071
+ const IndexArray = vertexCount <= 65535 ? Uint16Array : Uint32Array;
4072
+ return {
4073
+ positions: Float32Array.from(positions),
4074
+ sourceRowIndices: Uint32Array.from(sourceRowIndices),
4075
+ indices: IndexArray.from(indices),
4076
+ sourceDimension,
4077
+ positionSize,
4078
+ rowCount: rows.length,
4079
+ polygonCount,
4080
+ vertexCount,
4081
+ triangleCount: indices.length / 3
4082
+ };
4083
+ }
4084
+ function visitPolygons(geometry, visitor) {
4085
+ switch (geometry.type) {
4086
+ case "Polygon":
4087
+ visitor(geometry.coordinates);
4088
+ break;
4089
+ case "MultiPolygon":
4090
+ for (const polygon of geometry.coordinates)
4091
+ visitor(polygon);
4092
+ break;
4093
+ case "GeometryCollection":
4094
+ for (const child of geometry.geometries)
4095
+ visitPolygons(child, visitor);
4096
+ break;
4097
+ default:
4098
+ break;
4099
+ }
4100
+ }
4101
+ function removeClosingCoordinate(ring) {
4102
+ if (ring.length < 2)
4103
+ return ring;
4104
+ const first = ring[0];
4105
+ const last = ring[ring.length - 1];
4106
+ if (first.length !== last.length)
4107
+ return ring;
4108
+ for (let index = 0; index < first.length; index++) {
4109
+ if (first[index] !== last[index])
4110
+ return ring;
4111
+ }
4112
+ return ring.slice(0, -1);
4113
+ }
4114
+ //# sourceMappingURL=index.cjs.map