@math.gl/projection 0.0.0-stage → 5.0.0-alpha.12

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 (1297) hide show
  1. package/APACHE-2.0-LICENSE.txt +55 -0
  2. package/PROJ-LICENSE.txt +37 -0
  3. package/PROJ4-LICENSE.md +29 -0
  4. package/README.md +27 -2
  5. package/THIRD-PARTY-NOTICES.md +163 -0
  6. package/dist/deformation.cjs +189 -0
  7. package/dist/deformation.cjs.map +6 -0
  8. package/dist/deformation.d.ts +3 -0
  9. package/dist/deformation.d.ts.map +1 -0
  10. package/dist/deformation.js +5 -0
  11. package/dist/deformation.js.map +1 -0
  12. package/dist/experimental/catalogue-kernel.d.ts +7 -0
  13. package/dist/experimental/catalogue-kernel.d.ts.map +1 -0
  14. package/dist/experimental/catalogue-kernel.js +36 -0
  15. package/dist/experimental/catalogue-kernel.js.map +1 -0
  16. package/dist/experimental/common/adjust_lat.d.ts +2 -0
  17. package/dist/experimental/common/adjust_lat.d.ts.map +1 -0
  18. package/dist/experimental/common/adjust_lat.js +10 -0
  19. package/dist/experimental/common/adjust_lat.js.map +1 -0
  20. package/dist/experimental/common/adjust_lon.d.ts +2 -0
  21. package/dist/experimental/common/adjust_lon.d.ts.map +1 -0
  22. package/dist/experimental/common/adjust_lon.js +13 -0
  23. package/dist/experimental/common/adjust_lon.js.map +1 -0
  24. package/dist/experimental/common/asinhy.d.ts +2 -0
  25. package/dist/experimental/common/asinhy.d.ts.map +1 -0
  26. package/dist/experimental/common/asinhy.js +12 -0
  27. package/dist/experimental/common/asinhy.js.map +1 -0
  28. package/dist/experimental/common/asinz.d.ts +2 -0
  29. package/dist/experimental/common/asinz.d.ts.map +1 -0
  30. package/dist/experimental/common/asinz.js +11 -0
  31. package/dist/experimental/common/asinz.js.map +1 -0
  32. package/dist/experimental/common/authlat.d.ts +2 -0
  33. package/dist/experimental/common/authlat.d.ts.map +1 -0
  34. package/dist/experimental/common/authlat.js +9 -0
  35. package/dist/experimental/common/authlat.js.map +1 -0
  36. package/dist/experimental/common/authset.d.ts +2 -0
  37. package/dist/experimental/common/authset.d.ts.map +1 -0
  38. package/dist/experimental/common/authset.js +24 -0
  39. package/dist/experimental/common/authset.js.map +1 -0
  40. package/dist/experimental/common/clens.d.ts +2 -0
  41. package/dist/experimental/common/clens.d.ts.map +1 -0
  42. package/dist/experimental/common/clens.js +18 -0
  43. package/dist/experimental/common/clens.js.map +1 -0
  44. package/dist/experimental/common/clens_cmplx.d.ts +5 -0
  45. package/dist/experimental/common/clens_cmplx.d.ts.map +1 -0
  46. package/dist/experimental/common/clens_cmplx.js +34 -0
  47. package/dist/experimental/common/clens_cmplx.js.map +1 -0
  48. package/dist/experimental/common/constants.d.ts +9 -0
  49. package/dist/experimental/common/constants.d.ts.map +1 -0
  50. package/dist/experimental/common/constants.js +14 -0
  51. package/dist/experimental/common/constants.js.map +1 -0
  52. package/dist/experimental/common/cosh.d.ts +2 -0
  53. package/dist/experimental/common/cosh.d.ts.map +1 -0
  54. package/dist/experimental/common/cosh.js +10 -0
  55. package/dist/experimental/common/cosh.js.map +1 -0
  56. package/dist/experimental/common/e0fn.d.ts +2 -0
  57. package/dist/experimental/common/e0fn.d.ts.map +1 -0
  58. package/dist/experimental/common/e0fn.js +8 -0
  59. package/dist/experimental/common/e0fn.js.map +1 -0
  60. package/dist/experimental/common/e1fn.d.ts +2 -0
  61. package/dist/experimental/common/e1fn.d.ts.map +1 -0
  62. package/dist/experimental/common/e1fn.js +8 -0
  63. package/dist/experimental/common/e1fn.js.map +1 -0
  64. package/dist/experimental/common/e2fn.d.ts +2 -0
  65. package/dist/experimental/common/e2fn.d.ts.map +1 -0
  66. package/dist/experimental/common/e2fn.js +8 -0
  67. package/dist/experimental/common/e2fn.js.map +1 -0
  68. package/dist/experimental/common/e3fn.d.ts +2 -0
  69. package/dist/experimental/common/e3fn.d.ts.map +1 -0
  70. package/dist/experimental/common/e3fn.js +8 -0
  71. package/dist/experimental/common/e3fn.js.map +1 -0
  72. package/dist/experimental/common/fL.d.ts +2 -0
  73. package/dist/experimental/common/fL.d.ts.map +1 -0
  74. package/dist/experimental/common/fL.js +9 -0
  75. package/dist/experimental/common/fL.js.map +1 -0
  76. package/dist/experimental/common/gN.d.ts +2 -0
  77. package/dist/experimental/common/gN.d.ts.map +1 -0
  78. package/dist/experimental/common/gN.js +9 -0
  79. package/dist/experimental/common/gN.js.map +1 -0
  80. package/dist/experimental/common/gatg.d.ts +2 -0
  81. package/dist/experimental/common/gatg.d.ts.map +1 -0
  82. package/dist/experimental/common/gatg.js +18 -0
  83. package/dist/experimental/common/gatg.js.map +1 -0
  84. package/dist/experimental/common/hypot.d.ts +2 -0
  85. package/dist/experimental/common/hypot.d.ts.map +1 -0
  86. package/dist/experimental/common/hypot.js +12 -0
  87. package/dist/experimental/common/hypot.js.map +1 -0
  88. package/dist/experimental/common/imlfn.d.ts +2 -0
  89. package/dist/experimental/common/imlfn.d.ts.map +1 -0
  90. package/dist/experimental/common/imlfn.js +21 -0
  91. package/dist/experimental/common/imlfn.js.map +1 -0
  92. package/dist/experimental/common/invlatiso.d.ts +2 -0
  93. package/dist/experimental/common/invlatiso.d.ts.map +1 -0
  94. package/dist/experimental/common/invlatiso.js +20 -0
  95. package/dist/experimental/common/invlatiso.js.map +1 -0
  96. package/dist/experimental/common/iqsfnz.d.ts +2 -0
  97. package/dist/experimental/common/iqsfnz.d.ts.map +1 -0
  98. package/dist/experimental/common/iqsfnz.js +44 -0
  99. package/dist/experimental/common/iqsfnz.js.map +1 -0
  100. package/dist/experimental/common/latiso.d.ts +2 -0
  101. package/dist/experimental/common/latiso.d.ts.map +1 -0
  102. package/dist/experimental/common/latiso.js +19 -0
  103. package/dist/experimental/common/latiso.js.map +1 -0
  104. package/dist/experimental/common/log1py.d.ts +2 -0
  105. package/dist/experimental/common/log1py.d.ts.map +1 -0
  106. package/dist/experimental/common/log1py.js +10 -0
  107. package/dist/experimental/common/log1py.js.map +1 -0
  108. package/dist/experimental/common/mlfn.d.ts +2 -0
  109. package/dist/experimental/common/mlfn.d.ts.map +1 -0
  110. package/dist/experimental/common/mlfn.js +8 -0
  111. package/dist/experimental/common/mlfn.js.map +1 -0
  112. package/dist/experimental/common/msfnz.d.ts +2 -0
  113. package/dist/experimental/common/msfnz.d.ts.map +1 -0
  114. package/dist/experimental/common/msfnz.js +9 -0
  115. package/dist/experimental/common/msfnz.js.map +1 -0
  116. package/dist/experimental/common/phi2z.d.ts +2 -0
  117. package/dist/experimental/common/phi2z.d.ts.map +1 -0
  118. package/dist/experimental/common/phi2z.js +21 -0
  119. package/dist/experimental/common/phi2z.js.map +1 -0
  120. package/dist/experimental/common/pj_enfn.d.ts +2 -0
  121. package/dist/experimental/common/pj_enfn.d.ts.map +1 -0
  122. package/dist/experimental/common/pj_enfn.js +28 -0
  123. package/dist/experimental/common/pj_enfn.js.map +1 -0
  124. package/dist/experimental/common/pj_inv_mlfn.d.ts +2 -0
  125. package/dist/experimental/common/pj_inv_mlfn.d.ts.map +1 -0
  126. package/dist/experimental/common/pj_inv_mlfn.js +26 -0
  127. package/dist/experimental/common/pj_inv_mlfn.js.map +1 -0
  128. package/dist/experimental/common/pj_mlfn.d.ts +2 -0
  129. package/dist/experimental/common/pj_mlfn.d.ts.map +1 -0
  130. package/dist/experimental/common/pj_mlfn.js +10 -0
  131. package/dist/experimental/common/pj_mlfn.js.map +1 -0
  132. package/dist/experimental/common/qsfnz.d.ts +2 -0
  133. package/dist/experimental/common/qsfnz.d.ts.map +1 -0
  134. package/dist/experimental/common/qsfnz.js +16 -0
  135. package/dist/experimental/common/qsfnz.js.map +1 -0
  136. package/dist/experimental/common/sign.d.ts +2 -0
  137. package/dist/experimental/common/sign.d.ts.map +1 -0
  138. package/dist/experimental/common/sign.js +8 -0
  139. package/dist/experimental/common/sign.js.map +1 -0
  140. package/dist/experimental/common/sinh.d.ts +2 -0
  141. package/dist/experimental/common/sinh.d.ts.map +1 -0
  142. package/dist/experimental/common/sinh.js +10 -0
  143. package/dist/experimental/common/sinh.js.map +1 -0
  144. package/dist/experimental/common/srat.d.ts +2 -0
  145. package/dist/experimental/common/srat.d.ts.map +1 -0
  146. package/dist/experimental/common/srat.js +8 -0
  147. package/dist/experimental/common/srat.js.map +1 -0
  148. package/dist/experimental/common/tsfnz.d.ts +2 -0
  149. package/dist/experimental/common/tsfnz.d.ts.map +1 -0
  150. package/dist/experimental/common/tsfnz.js +12 -0
  151. package/dist/experimental/common/tsfnz.js.map +1 -0
  152. package/dist/experimental/common/vincenty.d.ts +29 -0
  153. package/dist/experimental/common/vincenty.d.ts.map +1 -0
  154. package/dist/experimental/common/vincenty.js +134 -0
  155. package/dist/experimental/common/vincenty.js.map +1 -0
  156. package/dist/experimental/core.cjs +2868 -0
  157. package/dist/experimental/core.cjs.map +6 -0
  158. package/dist/experimental/core.d.ts +13 -0
  159. package/dist/experimental/core.d.ts.map +1 -0
  160. package/dist/experimental/core.js +9 -0
  161. package/dist/experimental/core.js.map +1 -0
  162. package/dist/experimental/crs/datum-table.d.ts +8 -0
  163. package/dist/experimental/crs/datum-table.d.ts.map +1 -0
  164. package/dist/experimental/crs/datum-table.js +1365 -0
  165. package/dist/experimental/crs/datum-table.js.map +1 -0
  166. package/dist/experimental/crs/ellipsoid-table.d.ts +8 -0
  167. package/dist/experimental/crs/ellipsoid-table.d.ts.map +1 -0
  168. package/dist/experimental/crs/ellipsoid-table.js +229 -0
  169. package/dist/experimental/crs/ellipsoid-table.js.map +1 -0
  170. package/dist/experimental/crs/normalize.d.ts +8 -0
  171. package/dist/experimental/crs/normalize.d.ts.map +1 -0
  172. package/dist/experimental/crs/normalize.js +277 -0
  173. package/dist/experimental/crs/normalize.js.map +1 -0
  174. package/dist/experimental/crs/primemeridian-table.d.ts +3 -0
  175. package/dist/experimental/crs/primemeridian-table.d.ts.map +1 -0
  176. package/dist/experimental/crs/primemeridian-table.js +20 -0
  177. package/dist/experimental/crs/primemeridian-table.js.map +1 -0
  178. package/dist/experimental/crs/projjson.cjs +1847 -0
  179. package/dist/experimental/crs/projjson.cjs.map +6 -0
  180. package/dist/experimental/crs/projjson.d.ts +4 -0
  181. package/dist/experimental/crs/projjson.d.ts.map +1 -0
  182. package/dist/experimental/crs/projjson.js +12 -0
  183. package/dist/experimental/crs/projjson.js.map +1 -0
  184. package/dist/experimental/crs/spatial-reference.d.ts +11 -0
  185. package/dist/experimental/crs/spatial-reference.d.ts.map +1 -0
  186. package/dist/experimental/crs/spatial-reference.js +91 -0
  187. package/dist/experimental/crs/spatial-reference.js.map +1 -0
  188. package/dist/experimental/crs/structured.d.ts +8 -0
  189. package/dist/experimental/crs/structured.d.ts.map +1 -0
  190. package/dist/experimental/crs/structured.js +481 -0
  191. package/dist/experimental/crs/structured.js.map +1 -0
  192. package/dist/experimental/crs/types.d.ts +58 -0
  193. package/dist/experimental/crs/types.d.ts.map +1 -0
  194. package/dist/experimental/crs/types.js +21 -0
  195. package/dist/experimental/crs/types.js.map +1 -0
  196. package/dist/experimental/crs/units-table.d.ts +64 -0
  197. package/dist/experimental/crs/units-table.d.ts.map +1 -0
  198. package/dist/experimental/crs/units-table.js +27 -0
  199. package/dist/experimental/crs/units-table.js.map +1 -0
  200. package/dist/experimental/crs/wkt.cjs +2507 -0
  201. package/dist/experimental/crs/wkt.cjs.map +6 -0
  202. package/dist/experimental/crs/wkt.d.ts +3 -0
  203. package/dist/experimental/crs/wkt.d.ts.map +1 -0
  204. package/dist/experimental/crs/wkt.js +181 -0
  205. package/dist/experimental/crs/wkt.js.map +1 -0
  206. package/dist/experimental/datum.d.ts +17 -0
  207. package/dist/experimental/datum.d.ts.map +1 -0
  208. package/dist/experimental/datum.js +160 -0
  209. package/dist/experimental/datum.js.map +1 -0
  210. package/dist/experimental/deformation.d.ts +25 -0
  211. package/dist/experimental/deformation.d.ts.map +1 -0
  212. package/dist/experimental/deformation.js +98 -0
  213. package/dist/experimental/deformation.js.map +1 -0
  214. package/dist/experimental/entries/projections/aea.cjs +367 -0
  215. package/dist/experimental/entries/projections/aea.cjs.map +6 -0
  216. package/dist/experimental/entries/projections/aea.d.ts +2 -0
  217. package/dist/experimental/entries/projections/aea.d.ts.map +1 -0
  218. package/dist/experimental/entries/projections/aea.js +5 -0
  219. package/dist/experimental/entries/projections/aea.js.map +1 -0
  220. package/dist/experimental/entries/projections/aeqd.cjs +461 -0
  221. package/dist/experimental/entries/projections/aeqd.cjs.map +6 -0
  222. package/dist/experimental/entries/projections/aeqd.d.ts +2 -0
  223. package/dist/experimental/entries/projections/aeqd.d.ts.map +1 -0
  224. package/dist/experimental/entries/projections/aeqd.js +5 -0
  225. package/dist/experimental/entries/projections/aeqd.js.map +1 -0
  226. package/dist/experimental/entries/projections/bonne.cjs +359 -0
  227. package/dist/experimental/entries/projections/bonne.cjs.map +6 -0
  228. package/dist/experimental/entries/projections/bonne.d.ts +2 -0
  229. package/dist/experimental/entries/projections/bonne.d.ts.map +1 -0
  230. package/dist/experimental/entries/projections/bonne.js +5 -0
  231. package/dist/experimental/entries/projections/bonne.js.map +1 -0
  232. package/dist/experimental/entries/projections/cass.cjs +347 -0
  233. package/dist/experimental/entries/projections/cass.cjs.map +6 -0
  234. package/dist/experimental/entries/projections/cass.d.ts +2 -0
  235. package/dist/experimental/entries/projections/cass.d.ts.map +1 -0
  236. package/dist/experimental/entries/projections/cass.js +5 -0
  237. package/dist/experimental/entries/projections/cass.js.map +1 -0
  238. package/dist/experimental/entries/projections/cea.cjs +283 -0
  239. package/dist/experimental/entries/projections/cea.cjs.map +6 -0
  240. package/dist/experimental/entries/projections/cea.d.ts +2 -0
  241. package/dist/experimental/entries/projections/cea.d.ts.map +1 -0
  242. package/dist/experimental/entries/projections/cea.js +5 -0
  243. package/dist/experimental/entries/projections/cea.js.map +1 -0
  244. package/dist/experimental/entries/projections/eck6.cjs +306 -0
  245. package/dist/experimental/entries/projections/eck6.cjs.map +6 -0
  246. package/dist/experimental/entries/projections/eck6.d.ts +2 -0
  247. package/dist/experimental/entries/projections/eck6.d.ts.map +1 -0
  248. package/dist/experimental/entries/projections/eck6.js +5 -0
  249. package/dist/experimental/entries/projections/eck6.js.map +1 -0
  250. package/dist/experimental/entries/projections/eqc.cjs +119 -0
  251. package/dist/experimental/entries/projections/eqc.cjs.map +6 -0
  252. package/dist/experimental/entries/projections/eqc.d.ts +2 -0
  253. package/dist/experimental/entries/projections/eqc.d.ts.map +1 -0
  254. package/dist/experimental/entries/projections/eqc.js +5 -0
  255. package/dist/experimental/entries/projections/eqc.js.map +1 -0
  256. package/dist/experimental/entries/projections/eqdc.cjs +377 -0
  257. package/dist/experimental/entries/projections/eqdc.cjs.map +6 -0
  258. package/dist/experimental/entries/projections/eqdc.d.ts +2 -0
  259. package/dist/experimental/entries/projections/eqdc.d.ts.map +1 -0
  260. package/dist/experimental/entries/projections/eqdc.js +5 -0
  261. package/dist/experimental/entries/projections/eqdc.js.map +1 -0
  262. package/dist/experimental/entries/projections/eqearth.cjs +292 -0
  263. package/dist/experimental/entries/projections/eqearth.cjs.map +6 -0
  264. package/dist/experimental/entries/projections/eqearth.d.ts +2 -0
  265. package/dist/experimental/entries/projections/eqearth.d.ts.map +1 -0
  266. package/dist/experimental/entries/projections/eqearth.js +5 -0
  267. package/dist/experimental/entries/projections/eqearth.js.map +1 -0
  268. package/dist/experimental/entries/projections/equi.cjs +222 -0
  269. package/dist/experimental/entries/projections/equi.cjs.map +6 -0
  270. package/dist/experimental/entries/projections/equi.d.ts +2 -0
  271. package/dist/experimental/entries/projections/equi.d.ts.map +1 -0
  272. package/dist/experimental/entries/projections/equi.js +5 -0
  273. package/dist/experimental/entries/projections/equi.js.map +1 -0
  274. package/dist/experimental/entries/projections/etmerc.cjs +618 -0
  275. package/dist/experimental/entries/projections/etmerc.cjs.map +6 -0
  276. package/dist/experimental/entries/projections/etmerc.d.ts +2 -0
  277. package/dist/experimental/entries/projections/etmerc.d.ts.map +1 -0
  278. package/dist/experimental/entries/projections/etmerc.js +5 -0
  279. package/dist/experimental/entries/projections/etmerc.js.map +1 -0
  280. package/dist/experimental/entries/projections/geocent.cjs +161 -0
  281. package/dist/experimental/entries/projections/geocent.cjs.map +6 -0
  282. package/dist/experimental/entries/projections/geocent.d.ts +2 -0
  283. package/dist/experimental/entries/projections/geocent.d.ts.map +1 -0
  284. package/dist/experimental/entries/projections/geocent.js +5 -0
  285. package/dist/experimental/entries/projections/geocent.js.map +1 -0
  286. package/dist/experimental/entries/projections/geos.cjs +328 -0
  287. package/dist/experimental/entries/projections/geos.cjs.map +6 -0
  288. package/dist/experimental/entries/projections/geos.d.ts +2 -0
  289. package/dist/experimental/entries/projections/geos.d.ts.map +1 -0
  290. package/dist/experimental/entries/projections/geos.js +5 -0
  291. package/dist/experimental/entries/projections/geos.js.map +1 -0
  292. package/dist/experimental/entries/projections/gnom.cjs +274 -0
  293. package/dist/experimental/entries/projections/gnom.cjs.map +6 -0
  294. package/dist/experimental/entries/projections/gnom.d.ts +2 -0
  295. package/dist/experimental/entries/projections/gnom.d.ts.map +1 -0
  296. package/dist/experimental/entries/projections/gnom.js +5 -0
  297. package/dist/experimental/entries/projections/gnom.js.map +1 -0
  298. package/dist/experimental/entries/projections/gstmerc.cjs +266 -0
  299. package/dist/experimental/entries/projections/gstmerc.cjs.map +6 -0
  300. package/dist/experimental/entries/projections/gstmerc.d.ts +2 -0
  301. package/dist/experimental/entries/projections/gstmerc.d.ts.map +1 -0
  302. package/dist/experimental/entries/projections/gstmerc.js +5 -0
  303. package/dist/experimental/entries/projections/gstmerc.js.map +1 -0
  304. package/dist/experimental/entries/projections/krovak.cjs +301 -0
  305. package/dist/experimental/entries/projections/krovak.cjs.map +6 -0
  306. package/dist/experimental/entries/projections/krovak.d.ts +2 -0
  307. package/dist/experimental/entries/projections/krovak.d.ts.map +1 -0
  308. package/dist/experimental/entries/projections/krovak.js +5 -0
  309. package/dist/experimental/entries/projections/krovak.js.map +1 -0
  310. package/dist/experimental/entries/projections/laea.cjs +477 -0
  311. package/dist/experimental/entries/projections/laea.cjs.map +6 -0
  312. package/dist/experimental/entries/projections/laea.d.ts +2 -0
  313. package/dist/experimental/entries/projections/laea.d.ts.map +1 -0
  314. package/dist/experimental/entries/projections/laea.js +5 -0
  315. package/dist/experimental/entries/projections/laea.js.map +1 -0
  316. package/dist/experimental/entries/projections/lcc.cjs +368 -0
  317. package/dist/experimental/entries/projections/lcc.cjs.map +6 -0
  318. package/dist/experimental/entries/projections/lcc.d.ts +2 -0
  319. package/dist/experimental/entries/projections/lcc.d.ts.map +1 -0
  320. package/dist/experimental/entries/projections/lcc.js +5 -0
  321. package/dist/experimental/entries/projections/lcc.js.map +1 -0
  322. package/dist/experimental/entries/projections/merc.cjs +201 -0
  323. package/dist/experimental/entries/projections/merc.cjs.map +6 -0
  324. package/dist/experimental/entries/projections/merc.d.ts +2 -0
  325. package/dist/experimental/entries/projections/merc.d.ts.map +1 -0
  326. package/dist/experimental/entries/projections/merc.js +5 -0
  327. package/dist/experimental/entries/projections/merc.js.map +1 -0
  328. package/dist/experimental/entries/projections/mill.cjs +217 -0
  329. package/dist/experimental/entries/projections/mill.cjs.map +6 -0
  330. package/dist/experimental/entries/projections/mill.d.ts +2 -0
  331. package/dist/experimental/entries/projections/mill.d.ts.map +1 -0
  332. package/dist/experimental/entries/projections/mill.js +5 -0
  333. package/dist/experimental/entries/projections/mill.js.map +1 -0
  334. package/dist/experimental/entries/projections/moll.cjs +257 -0
  335. package/dist/experimental/entries/projections/moll.cjs.map +6 -0
  336. package/dist/experimental/entries/projections/moll.d.ts +2 -0
  337. package/dist/experimental/entries/projections/moll.d.ts.map +1 -0
  338. package/dist/experimental/entries/projections/moll.js +5 -0
  339. package/dist/experimental/entries/projections/moll.js.map +1 -0
  340. package/dist/experimental/entries/projections/nzmg.cjs +346 -0
  341. package/dist/experimental/entries/projections/nzmg.cjs.map +6 -0
  342. package/dist/experimental/entries/projections/nzmg.d.ts +2 -0
  343. package/dist/experimental/entries/projections/nzmg.d.ts.map +1 -0
  344. package/dist/experimental/entries/projections/nzmg.js +5 -0
  345. package/dist/experimental/entries/projections/nzmg.js.map +1 -0
  346. package/dist/experimental/entries/projections/ob_tran.cjs +233 -0
  347. package/dist/experimental/entries/projections/ob_tran.cjs.map +6 -0
  348. package/dist/experimental/entries/projections/ob_tran.d.ts +2 -0
  349. package/dist/experimental/entries/projections/ob_tran.d.ts.map +1 -0
  350. package/dist/experimental/entries/projections/ob_tran.js +5 -0
  351. package/dist/experimental/entries/projections/ob_tran.js.map +1 -0
  352. package/dist/experimental/entries/projections/omerc.cjs +479 -0
  353. package/dist/experimental/entries/projections/omerc.cjs.map +6 -0
  354. package/dist/experimental/entries/projections/omerc.d.ts +2 -0
  355. package/dist/experimental/entries/projections/omerc.d.ts.map +1 -0
  356. package/dist/experimental/entries/projections/omerc.js +5 -0
  357. package/dist/experimental/entries/projections/omerc.js.map +1 -0
  358. package/dist/experimental/entries/projections/ortho.cjs +276 -0
  359. package/dist/experimental/entries/projections/ortho.cjs.map +6 -0
  360. package/dist/experimental/entries/projections/ortho.d.ts +2 -0
  361. package/dist/experimental/entries/projections/ortho.d.ts.map +1 -0
  362. package/dist/experimental/entries/projections/ortho.js +5 -0
  363. package/dist/experimental/entries/projections/ortho.js.map +1 -0
  364. package/dist/experimental/entries/projections/poly.cjs +326 -0
  365. package/dist/experimental/entries/projections/poly.cjs.map +6 -0
  366. package/dist/experimental/entries/projections/poly.d.ts +2 -0
  367. package/dist/experimental/entries/projections/poly.d.ts.map +1 -0
  368. package/dist/experimental/entries/projections/poly.js +5 -0
  369. package/dist/experimental/entries/projections/poly.js.map +1 -0
  370. package/dist/experimental/entries/projections/qsc.cjs +455 -0
  371. package/dist/experimental/entries/projections/qsc.cjs.map +6 -0
  372. package/dist/experimental/entries/projections/qsc.d.ts +2 -0
  373. package/dist/experimental/entries/projections/qsc.d.ts.map +1 -0
  374. package/dist/experimental/entries/projections/qsc.js +5 -0
  375. package/dist/experimental/entries/projections/qsc.js.map +1 -0
  376. package/dist/experimental/entries/projections/robin.cjs +331 -0
  377. package/dist/experimental/entries/projections/robin.cjs.map +6 -0
  378. package/dist/experimental/entries/projections/robin.d.ts +2 -0
  379. package/dist/experimental/entries/projections/robin.d.ts.map +1 -0
  380. package/dist/experimental/entries/projections/robin.js +5 -0
  381. package/dist/experimental/entries/projections/robin.js.map +1 -0
  382. package/dist/experimental/entries/projections/sinu.cjs +330 -0
  383. package/dist/experimental/entries/projections/sinu.cjs.map +6 -0
  384. package/dist/experimental/entries/projections/sinu.d.ts +2 -0
  385. package/dist/experimental/entries/projections/sinu.d.ts.map +1 -0
  386. package/dist/experimental/entries/projections/sinu.js +5 -0
  387. package/dist/experimental/entries/projections/sinu.js.map +1 -0
  388. package/dist/experimental/entries/projections/somerc.cjs +228 -0
  389. package/dist/experimental/entries/projections/somerc.cjs.map +6 -0
  390. package/dist/experimental/entries/projections/somerc.d.ts +2 -0
  391. package/dist/experimental/entries/projections/somerc.d.ts.map +1 -0
  392. package/dist/experimental/entries/projections/somerc.js +5 -0
  393. package/dist/experimental/entries/projections/somerc.js.map +1 -0
  394. package/dist/experimental/entries/projections/stere.cjs +379 -0
  395. package/dist/experimental/entries/projections/stere.cjs.map +6 -0
  396. package/dist/experimental/entries/projections/stere.d.ts +2 -0
  397. package/dist/experimental/entries/projections/stere.d.ts.map +1 -0
  398. package/dist/experimental/entries/projections/stere.js +5 -0
  399. package/dist/experimental/entries/projections/stere.js.map +1 -0
  400. package/dist/experimental/entries/projections/sterea.cjs +328 -0
  401. package/dist/experimental/entries/projections/sterea.cjs.map +6 -0
  402. package/dist/experimental/entries/projections/sterea.d.ts +2 -0
  403. package/dist/experimental/entries/projections/sterea.d.ts.map +1 -0
  404. package/dist/experimental/entries/projections/sterea.js +5 -0
  405. package/dist/experimental/entries/projections/sterea.js.map +1 -0
  406. package/dist/experimental/entries/projections/tmerc.cjs +618 -0
  407. package/dist/experimental/entries/projections/tmerc.cjs.map +6 -0
  408. package/dist/experimental/entries/projections/tmerc.d.ts +2 -0
  409. package/dist/experimental/entries/projections/tmerc.d.ts.map +1 -0
  410. package/dist/experimental/entries/projections/tmerc.js +5 -0
  411. package/dist/experimental/entries/projections/tmerc.js.map +1 -0
  412. package/dist/experimental/entries/projections/tpers.cjs +340 -0
  413. package/dist/experimental/entries/projections/tpers.cjs.map +6 -0
  414. package/dist/experimental/entries/projections/tpers.d.ts +2 -0
  415. package/dist/experimental/entries/projections/tpers.d.ts.map +1 -0
  416. package/dist/experimental/entries/projections/tpers.js +5 -0
  417. package/dist/experimental/entries/projections/tpers.js.map +1 -0
  418. package/dist/experimental/entries/projections/utm.cjs +644 -0
  419. package/dist/experimental/entries/projections/utm.cjs.map +6 -0
  420. package/dist/experimental/entries/projections/utm.d.ts +2 -0
  421. package/dist/experimental/entries/projections/utm.d.ts.map +1 -0
  422. package/dist/experimental/entries/projections/utm.js +5 -0
  423. package/dist/experimental/entries/projections/utm.js.map +1 -0
  424. package/dist/experimental/entries/projections/vandg.cjs +301 -0
  425. package/dist/experimental/entries/projections/vandg.cjs.map +6 -0
  426. package/dist/experimental/entries/projections/vandg.d.ts +2 -0
  427. package/dist/experimental/entries/projections/vandg.d.ts.map +1 -0
  428. package/dist/experimental/entries/projections/vandg.js +5 -0
  429. package/dist/experimental/entries/projections/vandg.js.map +1 -0
  430. package/dist/experimental/exact-helmert.d.ts +9 -0
  431. package/dist/experimental/exact-helmert.d.ts.map +1 -0
  432. package/dist/experimental/exact-helmert.js +32 -0
  433. package/dist/experimental/exact-helmert.js.map +1 -0
  434. package/dist/experimental/flat-projection.d.ts +13 -0
  435. package/dist/experimental/flat-projection.d.ts.map +1 -0
  436. package/dist/experimental/flat-projection.js +61 -0
  437. package/dist/experimental/flat-projection.js.map +1 -0
  438. package/dist/experimental/grids/geotiff.cjs +180 -0
  439. package/dist/experimental/grids/geotiff.cjs.map +6 -0
  440. package/dist/experimental/grids/geotiff.d.ts +23 -0
  441. package/dist/experimental/grids/geotiff.d.ts.map +1 -0
  442. package/dist/experimental/grids/geotiff.js +59 -0
  443. package/dist/experimental/grids/geotiff.js.map +1 -0
  444. package/dist/experimental/grids/grid.d.ts +4 -0
  445. package/dist/experimental/grids/grid.d.ts.map +1 -0
  446. package/dist/experimental/grids/grid.js +111 -0
  447. package/dist/experimental/grids/grid.js.map +1 -0
  448. package/dist/experimental/grids/gtx.cjs +91 -0
  449. package/dist/experimental/grids/gtx.cjs.map +6 -0
  450. package/dist/experimental/grids/gtx.d.ts +7 -0
  451. package/dist/experimental/grids/gtx.d.ts.map +1 -0
  452. package/dist/experimental/grids/gtx.js +30 -0
  453. package/dist/experimental/grids/gtx.js.map +1 -0
  454. package/dist/experimental/grids/ntv2.cjs +181 -0
  455. package/dist/experimental/grids/ntv2.cjs.map +6 -0
  456. package/dist/experimental/grids/ntv2.d.ts +8 -0
  457. package/dist/experimental/grids/ntv2.d.ts.map +1 -0
  458. package/dist/experimental/grids/ntv2.js +56 -0
  459. package/dist/experimental/grids/ntv2.js.map +1 -0
  460. package/dist/experimental/grids/scalar-geotiff.d.ts +58 -0
  461. package/dist/experimental/grids/scalar-geotiff.d.ts.map +1 -0
  462. package/dist/experimental/grids/scalar-geotiff.js +147 -0
  463. package/dist/experimental/grids/scalar-geotiff.js.map +1 -0
  464. package/dist/experimental/grids/types.d.ts +35 -0
  465. package/dist/experimental/grids/types.d.ts.map +1 -0
  466. package/dist/experimental/grids/types.js +2 -0
  467. package/dist/experimental/grids/types.js.map +1 -0
  468. package/dist/experimental/grids/velocity-geotiff.cjs +247 -0
  469. package/dist/experimental/grids/velocity-geotiff.cjs.map +6 -0
  470. package/dist/experimental/grids/velocity-geotiff.d.ts +11 -0
  471. package/dist/experimental/grids/velocity-geotiff.d.ts.map +1 -0
  472. package/dist/experimental/grids/velocity-geotiff.js +61 -0
  473. package/dist/experimental/grids/velocity-geotiff.js.map +1 -0
  474. package/dist/experimental/grids/velocity.d.ts +21 -0
  475. package/dist/experimental/grids/velocity.d.ts.map +1 -0
  476. package/dist/experimental/grids/velocity.js +29 -0
  477. package/dist/experimental/grids/velocity.js.map +1 -0
  478. package/dist/experimental/grids/vertical-geotiff.cjs +195 -0
  479. package/dist/experimental/grids/vertical-geotiff.cjs.map +6 -0
  480. package/dist/experimental/grids/vertical-geotiff.d.ts +6 -0
  481. package/dist/experimental/grids/vertical-geotiff.d.ts.map +1 -0
  482. package/dist/experimental/grids/vertical-geotiff.js +20 -0
  483. package/dist/experimental/grids/vertical-geotiff.js.map +1 -0
  484. package/dist/experimental/grids/vertical.cjs +80 -0
  485. package/dist/experimental/grids/vertical.cjs.map +6 -0
  486. package/dist/experimental/grids/vertical.d.ts +22 -0
  487. package/dist/experimental/grids/vertical.d.ts.map +1 -0
  488. package/dist/experimental/grids/vertical.js +73 -0
  489. package/dist/experimental/grids/vertical.js.map +1 -0
  490. package/dist/experimental/helmert-flat.d.ts +4 -0
  491. package/dist/experimental/helmert-flat.d.ts.map +1 -0
  492. package/dist/experimental/helmert-flat.js +53 -0
  493. package/dist/experimental/helmert-flat.js.map +1 -0
  494. package/dist/experimental/index.cjs +10062 -0
  495. package/dist/experimental/index.cjs.map +6 -0
  496. package/dist/experimental/index.d.ts +49 -0
  497. package/dist/experimental/index.d.ts.map +1 -0
  498. package/dist/experimental/index.js +48 -0
  499. package/dist/experimental/index.js.map +1 -0
  500. package/dist/experimental/kernel.d.ts +36 -0
  501. package/dist/experimental/kernel.d.ts.map +1 -0
  502. package/dist/experimental/kernel.js +80 -0
  503. package/dist/experimental/kernel.js.map +1 -0
  504. package/dist/experimental/kernels/aea.d.ts +25 -0
  505. package/dist/experimental/kernels/aea.d.ts.map +1 -0
  506. package/dist/experimental/kernels/aea.js +136 -0
  507. package/dist/experimental/kernels/aea.js.map +1 -0
  508. package/dist/experimental/kernels/aeqd.d.ts +10 -0
  509. package/dist/experimental/kernels/aeqd.d.ts.map +1 -0
  510. package/dist/experimental/kernels/aeqd.js +176 -0
  511. package/dist/experimental/kernels/aeqd.js.map +1 -0
  512. package/dist/experimental/kernels/bonne.d.ts +12 -0
  513. package/dist/experimental/kernels/bonne.d.ts.map +1 -0
  514. package/dist/experimental/kernels/bonne.js +128 -0
  515. package/dist/experimental/kernels/bonne.js.map +1 -0
  516. package/dist/experimental/kernels/cass.d.ts +10 -0
  517. package/dist/experimental/kernels/cass.d.ts.map +1 -0
  518. package/dist/experimental/kernels/cass.js +122 -0
  519. package/dist/experimental/kernels/cass.js.map +1 -0
  520. package/dist/experimental/kernels/cea.d.ts +6 -0
  521. package/dist/experimental/kernels/cea.d.ts.map +1 -0
  522. package/dist/experimental/kernels/cea.js +63 -0
  523. package/dist/experimental/kernels/cea.js.map +1 -0
  524. package/dist/experimental/kernels/eck6.d.ts +13 -0
  525. package/dist/experimental/kernels/eck6.d.ts.map +1 -0
  526. package/dist/experimental/kernels/eck6.js +23 -0
  527. package/dist/experimental/kernels/eck6.js.map +1 -0
  528. package/dist/experimental/kernels/eqdc.d.ts +19 -0
  529. package/dist/experimental/kernels/eqdc.d.ts.map +1 -0
  530. package/dist/experimental/kernels/eqdc.js +117 -0
  531. package/dist/experimental/kernels/eqdc.js.map +1 -0
  532. package/dist/experimental/kernels/eqearth.d.ts +10 -0
  533. package/dist/experimental/kernels/eqearth.d.ts.map +1 -0
  534. package/dist/experimental/kernels/eqearth.js +103 -0
  535. package/dist/experimental/kernels/eqearth.js.map +1 -0
  536. package/dist/experimental/kernels/equi.d.ts +9 -0
  537. package/dist/experimental/kernels/equi.d.ts.map +1 -0
  538. package/dist/experimental/kernels/equi.js +41 -0
  539. package/dist/experimental/kernels/equi.js.map +1 -0
  540. package/dist/experimental/kernels/etmerc.d.ts +13 -0
  541. package/dist/experimental/kernels/etmerc.d.ts.map +1 -0
  542. package/dist/experimental/kernels/etmerc.js +145 -0
  543. package/dist/experimental/kernels/etmerc.js.map +1 -0
  544. package/dist/experimental/kernels/gauss.d.ts +12 -0
  545. package/dist/experimental/kernels/gauss.d.ts.map +1 -0
  546. package/dist/experimental/kernels/gauss.js +64 -0
  547. package/dist/experimental/kernels/gauss.js.map +1 -0
  548. package/dist/experimental/kernels/geos.d.ts +17 -0
  549. package/dist/experimental/kernels/geos.d.ts.map +1 -0
  550. package/dist/experimental/kernels/geos.js +153 -0
  551. package/dist/experimental/kernels/geos.js.map +1 -0
  552. package/dist/experimental/kernels/gnom.d.ts +12 -0
  553. package/dist/experimental/kernels/gnom.d.ts.map +1 -0
  554. package/dist/experimental/kernels/gnom.js +95 -0
  555. package/dist/experimental/kernels/gnom.js.map +1 -0
  556. package/dist/experimental/kernels/gstmerc.d.ts +13 -0
  557. package/dist/experimental/kernels/gstmerc.d.ts.map +1 -0
  558. package/dist/experimental/kernels/gstmerc.js +57 -0
  559. package/dist/experimental/kernels/gstmerc.js.map +1 -0
  560. package/dist/experimental/kernels/krovak.d.ts +23 -0
  561. package/dist/experimental/kernels/krovak.d.ts.map +1 -0
  562. package/dist/experimental/kernels/krovak.js +128 -0
  563. package/dist/experimental/kernels/krovak.js.map +1 -0
  564. package/dist/experimental/kernels/laea.d.ts +23 -0
  565. package/dist/experimental/kernels/laea.d.ts.map +1 -0
  566. package/dist/experimental/kernels/laea.js +278 -0
  567. package/dist/experimental/kernels/laea.js.map +1 -0
  568. package/dist/experimental/kernels/lcc.d.ts +10 -0
  569. package/dist/experimental/kernels/lcc.d.ts.map +1 -0
  570. package/dist/experimental/kernels/lcc.js +131 -0
  571. package/dist/experimental/kernels/lcc.js.map +1 -0
  572. package/dist/experimental/kernels/mill.d.ts +6 -0
  573. package/dist/experimental/kernels/mill.d.ts.map +1 -0
  574. package/dist/experimental/kernels/mill.js +49 -0
  575. package/dist/experimental/kernels/mill.js.map +1 -0
  576. package/dist/experimental/kernels/moll.d.ts +6 -0
  577. package/dist/experimental/kernels/moll.d.ts.map +1 -0
  578. package/dist/experimental/kernels/moll.js +89 -0
  579. package/dist/experimental/kernels/moll.js.map +1 -0
  580. package/dist/experimental/kernels/nzmg.d.ts +28 -0
  581. package/dist/experimental/kernels/nzmg.d.ts.map +1 -0
  582. package/dist/experimental/kernels/nzmg.js +209 -0
  583. package/dist/experimental/kernels/nzmg.js.map +1 -0
  584. package/dist/experimental/kernels/omerc.d.ts +30 -0
  585. package/dist/experimental/kernels/omerc.d.ts.map +1 -0
  586. package/dist/experimental/kernels/omerc.js +260 -0
  587. package/dist/experimental/kernels/omerc.js.map +1 -0
  588. package/dist/experimental/kernels/ortho.d.ts +9 -0
  589. package/dist/experimental/kernels/ortho.d.ts.map +1 -0
  590. package/dist/experimental/kernels/ortho.js +91 -0
  591. package/dist/experimental/kernels/ortho.js.map +1 -0
  592. package/dist/experimental/kernels/poly.d.ts +13 -0
  593. package/dist/experimental/kernels/poly.d.ts.map +1 -0
  594. package/dist/experimental/kernels/poly.js +141 -0
  595. package/dist/experimental/kernels/poly.js.map +1 -0
  596. package/dist/experimental/kernels/qsc.d.ts +10 -0
  597. package/dist/experimental/kernels/qsc.d.ts.map +1 -0
  598. package/dist/experimental/kernels/qsc.js +379 -0
  599. package/dist/experimental/kernels/qsc.js.map +1 -0
  600. package/dist/experimental/kernels/robin.d.ts +6 -0
  601. package/dist/experimental/kernels/robin.d.ts.map +1 -0
  602. package/dist/experimental/kernels/robin.js +166 -0
  603. package/dist/experimental/kernels/robin.js.map +1 -0
  604. package/dist/experimental/kernels/sinu.d.ts +12 -0
  605. package/dist/experimental/kernels/sinu.d.ts.map +1 -0
  606. package/dist/experimental/kernels/sinu.js +104 -0
  607. package/dist/experimental/kernels/sinu.js.map +1 -0
  608. package/dist/experimental/kernels/somerc.d.ts +13 -0
  609. package/dist/experimental/kernels/somerc.d.ts.map +1 -0
  610. package/dist/experimental/kernels/somerc.js +81 -0
  611. package/dist/experimental/kernels/somerc.js.map +1 -0
  612. package/dist/experimental/kernels/stere.d.ts +15 -0
  613. package/dist/experimental/kernels/stere.d.ts.map +1 -0
  614. package/dist/experimental/kernels/stere.js +195 -0
  615. package/dist/experimental/kernels/stere.js.map +1 -0
  616. package/dist/experimental/kernels/sterea.d.ts +11 -0
  617. package/dist/experimental/kernels/sterea.d.ts.map +1 -0
  618. package/dist/experimental/kernels/sterea.js +65 -0
  619. package/dist/experimental/kernels/sterea.js.map +1 -0
  620. package/dist/experimental/kernels/tmerc.d.ts +9 -0
  621. package/dist/experimental/kernels/tmerc.d.ts.map +1 -0
  622. package/dist/experimental/kernels/tmerc.js +201 -0
  623. package/dist/experimental/kernels/tmerc.js.map +1 -0
  624. package/dist/experimental/kernels/tpers.d.ts +22 -0
  625. package/dist/experimental/kernels/tpers.d.ts.map +1 -0
  626. package/dist/experimental/kernels/tpers.js +156 -0
  627. package/dist/experimental/kernels/tpers.js.map +1 -0
  628. package/dist/experimental/kernels/vandg.d.ts +8 -0
  629. package/dist/experimental/kernels/vandg.d.ts.map +1 -0
  630. package/dist/experimental/kernels/vandg.js +132 -0
  631. package/dist/experimental/kernels/vandg.js.map +1 -0
  632. package/dist/experimental/kinematic-helmert-flat.d.ts +4 -0
  633. package/dist/experimental/kinematic-helmert-flat.d.ts.map +1 -0
  634. package/dist/experimental/kinematic-helmert-flat.js +60 -0
  635. package/dist/experimental/kinematic-helmert-flat.js.map +1 -0
  636. package/dist/experimental/kinematic-helmert.d.ts +11 -0
  637. package/dist/experimental/kinematic-helmert.d.ts.map +1 -0
  638. package/dist/experimental/kinematic-helmert.js +103 -0
  639. package/dist/experimental/kinematic-helmert.js.map +1 -0
  640. package/dist/experimental/lazy-projection.d.ts +11 -0
  641. package/dist/experimental/lazy-projection.d.ts.map +1 -0
  642. package/dist/experimental/lazy-projection.js +138 -0
  643. package/dist/experimental/lazy-projection.js.map +1 -0
  644. package/dist/experimental/lazy-projections/aea.cjs +79 -0
  645. package/dist/experimental/lazy-projections/aea.cjs.map +6 -0
  646. package/dist/experimental/lazy-projections/aea.d.ts +3 -0
  647. package/dist/experimental/lazy-projections/aea.d.ts.map +1 -0
  648. package/dist/experimental/lazy-projections/aea.js +7 -0
  649. package/dist/experimental/lazy-projections/aea.js.map +1 -0
  650. package/dist/experimental/lazy-projections/aeqd.cjs +79 -0
  651. package/dist/experimental/lazy-projections/aeqd.cjs.map +6 -0
  652. package/dist/experimental/lazy-projections/aeqd.d.ts +3 -0
  653. package/dist/experimental/lazy-projections/aeqd.d.ts.map +1 -0
  654. package/dist/experimental/lazy-projections/aeqd.js +8 -0
  655. package/dist/experimental/lazy-projections/aeqd.js.map +1 -0
  656. package/dist/experimental/lazy-projections/bonne.cjs +79 -0
  657. package/dist/experimental/lazy-projections/bonne.cjs.map +6 -0
  658. package/dist/experimental/lazy-projections/bonne.d.ts +3 -0
  659. package/dist/experimental/lazy-projections/bonne.d.ts.map +1 -0
  660. package/dist/experimental/lazy-projections/bonne.js +7 -0
  661. package/dist/experimental/lazy-projections/bonne.js.map +1 -0
  662. package/dist/experimental/lazy-projections/cass.cjs +79 -0
  663. package/dist/experimental/lazy-projections/cass.cjs.map +6 -0
  664. package/dist/experimental/lazy-projections/cass.d.ts +3 -0
  665. package/dist/experimental/lazy-projections/cass.d.ts.map +1 -0
  666. package/dist/experimental/lazy-projections/cass.js +7 -0
  667. package/dist/experimental/lazy-projections/cass.js.map +1 -0
  668. package/dist/experimental/lazy-projections/cea.cjs +79 -0
  669. package/dist/experimental/lazy-projections/cea.cjs.map +6 -0
  670. package/dist/experimental/lazy-projections/cea.d.ts +3 -0
  671. package/dist/experimental/lazy-projections/cea.d.ts.map +1 -0
  672. package/dist/experimental/lazy-projections/cea.js +8 -0
  673. package/dist/experimental/lazy-projections/cea.js.map +1 -0
  674. package/dist/experimental/lazy-projections/eck6.cjs +79 -0
  675. package/dist/experimental/lazy-projections/eck6.cjs.map +6 -0
  676. package/dist/experimental/lazy-projections/eck6.d.ts +3 -0
  677. package/dist/experimental/lazy-projections/eck6.d.ts.map +1 -0
  678. package/dist/experimental/lazy-projections/eck6.js +7 -0
  679. package/dist/experimental/lazy-projections/eck6.js.map +1 -0
  680. package/dist/experimental/lazy-projections/eqc.cjs +82 -0
  681. package/dist/experimental/lazy-projections/eqc.cjs.map +6 -0
  682. package/dist/experimental/lazy-projections/eqc.d.ts +3 -0
  683. package/dist/experimental/lazy-projections/eqc.d.ts.map +1 -0
  684. package/dist/experimental/lazy-projections/eqc.js +11 -0
  685. package/dist/experimental/lazy-projections/eqc.js.map +1 -0
  686. package/dist/experimental/lazy-projections/eqdc.cjs +79 -0
  687. package/dist/experimental/lazy-projections/eqdc.cjs.map +6 -0
  688. package/dist/experimental/lazy-projections/eqdc.d.ts +3 -0
  689. package/dist/experimental/lazy-projections/eqdc.d.ts.map +1 -0
  690. package/dist/experimental/lazy-projections/eqdc.js +8 -0
  691. package/dist/experimental/lazy-projections/eqdc.js.map +1 -0
  692. package/dist/experimental/lazy-projections/eqearth.cjs +79 -0
  693. package/dist/experimental/lazy-projections/eqearth.cjs.map +6 -0
  694. package/dist/experimental/lazy-projections/eqearth.d.ts +3 -0
  695. package/dist/experimental/lazy-projections/eqearth.d.ts.map +1 -0
  696. package/dist/experimental/lazy-projections/eqearth.js +7 -0
  697. package/dist/experimental/lazy-projections/eqearth.js.map +1 -0
  698. package/dist/experimental/lazy-projections/equi.cjs +79 -0
  699. package/dist/experimental/lazy-projections/equi.cjs.map +6 -0
  700. package/dist/experimental/lazy-projections/equi.d.ts +3 -0
  701. package/dist/experimental/lazy-projections/equi.d.ts.map +1 -0
  702. package/dist/experimental/lazy-projections/equi.js +7 -0
  703. package/dist/experimental/lazy-projections/equi.js.map +1 -0
  704. package/dist/experimental/lazy-projections/etmerc.cjs +79 -0
  705. package/dist/experimental/lazy-projections/etmerc.cjs.map +6 -0
  706. package/dist/experimental/lazy-projections/etmerc.d.ts +3 -0
  707. package/dist/experimental/lazy-projections/etmerc.d.ts.map +1 -0
  708. package/dist/experimental/lazy-projections/etmerc.js +8 -0
  709. package/dist/experimental/lazy-projections/etmerc.js.map +1 -0
  710. package/dist/experimental/lazy-projections/geocent.cjs +79 -0
  711. package/dist/experimental/lazy-projections/geocent.cjs.map +6 -0
  712. package/dist/experimental/lazy-projections/geocent.d.ts +3 -0
  713. package/dist/experimental/lazy-projections/geocent.d.ts.map +1 -0
  714. package/dist/experimental/lazy-projections/geocent.js +7 -0
  715. package/dist/experimental/lazy-projections/geocent.js.map +1 -0
  716. package/dist/experimental/lazy-projections/geos.cjs +79 -0
  717. package/dist/experimental/lazy-projections/geos.cjs.map +6 -0
  718. package/dist/experimental/lazy-projections/geos.d.ts +3 -0
  719. package/dist/experimental/lazy-projections/geos.d.ts.map +1 -0
  720. package/dist/experimental/lazy-projections/geos.js +7 -0
  721. package/dist/experimental/lazy-projections/geos.js.map +1 -0
  722. package/dist/experimental/lazy-projections/gnom.cjs +79 -0
  723. package/dist/experimental/lazy-projections/gnom.cjs.map +6 -0
  724. package/dist/experimental/lazy-projections/gnom.d.ts +3 -0
  725. package/dist/experimental/lazy-projections/gnom.d.ts.map +1 -0
  726. package/dist/experimental/lazy-projections/gnom.js +7 -0
  727. package/dist/experimental/lazy-projections/gnom.js.map +1 -0
  728. package/dist/experimental/lazy-projections/gstmerc.cjs +79 -0
  729. package/dist/experimental/lazy-projections/gstmerc.cjs.map +6 -0
  730. package/dist/experimental/lazy-projections/gstmerc.d.ts +3 -0
  731. package/dist/experimental/lazy-projections/gstmerc.d.ts.map +1 -0
  732. package/dist/experimental/lazy-projections/gstmerc.js +8 -0
  733. package/dist/experimental/lazy-projections/gstmerc.js.map +1 -0
  734. package/dist/experimental/lazy-projections/index.cjs +3177 -0
  735. package/dist/experimental/lazy-projections/index.cjs.map +6 -0
  736. package/dist/experimental/lazy-projections/index.d.ts +39 -0
  737. package/dist/experimental/lazy-projections/index.d.ts.map +1 -0
  738. package/dist/experimental/lazy-projections/index.js +41 -0
  739. package/dist/experimental/lazy-projections/index.js.map +1 -0
  740. package/dist/experimental/lazy-projections/krovak.cjs +87 -0
  741. package/dist/experimental/lazy-projections/krovak.cjs.map +6 -0
  742. package/dist/experimental/lazy-projections/krovak.d.ts +3 -0
  743. package/dist/experimental/lazy-projections/krovak.d.ts.map +1 -0
  744. package/dist/experimental/lazy-projections/krovak.js +15 -0
  745. package/dist/experimental/lazy-projections/krovak.js.map +1 -0
  746. package/dist/experimental/lazy-projections/laea.cjs +79 -0
  747. package/dist/experimental/lazy-projections/laea.cjs.map +6 -0
  748. package/dist/experimental/lazy-projections/laea.d.ts +3 -0
  749. package/dist/experimental/lazy-projections/laea.d.ts.map +1 -0
  750. package/dist/experimental/lazy-projections/laea.js +8 -0
  751. package/dist/experimental/lazy-projections/laea.js.map +1 -0
  752. package/dist/experimental/lazy-projections/lcc.cjs +89 -0
  753. package/dist/experimental/lazy-projections/lcc.cjs.map +6 -0
  754. package/dist/experimental/lazy-projections/lcc.d.ts +3 -0
  755. package/dist/experimental/lazy-projections/lcc.d.ts.map +1 -0
  756. package/dist/experimental/lazy-projections/lcc.js +18 -0
  757. package/dist/experimental/lazy-projections/lcc.js.map +1 -0
  758. package/dist/experimental/lazy-projections/merc.cjs +88 -0
  759. package/dist/experimental/lazy-projections/merc.cjs.map +6 -0
  760. package/dist/experimental/lazy-projections/merc.d.ts +3 -0
  761. package/dist/experimental/lazy-projections/merc.d.ts.map +1 -0
  762. package/dist/experimental/lazy-projections/merc.js +16 -0
  763. package/dist/experimental/lazy-projections/merc.js.map +1 -0
  764. package/dist/experimental/lazy-projections/mill.cjs +79 -0
  765. package/dist/experimental/lazy-projections/mill.cjs.map +6 -0
  766. package/dist/experimental/lazy-projections/mill.d.ts +3 -0
  767. package/dist/experimental/lazy-projections/mill.d.ts.map +1 -0
  768. package/dist/experimental/lazy-projections/mill.js +8 -0
  769. package/dist/experimental/lazy-projections/mill.js.map +1 -0
  770. package/dist/experimental/lazy-projections/moll.cjs +79 -0
  771. package/dist/experimental/lazy-projections/moll.cjs.map +6 -0
  772. package/dist/experimental/lazy-projections/moll.d.ts +3 -0
  773. package/dist/experimental/lazy-projections/moll.d.ts.map +1 -0
  774. package/dist/experimental/lazy-projections/moll.js +7 -0
  775. package/dist/experimental/lazy-projections/moll.js.map +1 -0
  776. package/dist/experimental/lazy-projections/nzmg.cjs +79 -0
  777. package/dist/experimental/lazy-projections/nzmg.cjs.map +6 -0
  778. package/dist/experimental/lazy-projections/nzmg.d.ts +3 -0
  779. package/dist/experimental/lazy-projections/nzmg.d.ts.map +1 -0
  780. package/dist/experimental/lazy-projections/nzmg.js +8 -0
  781. package/dist/experimental/lazy-projections/nzmg.js.map +1 -0
  782. package/dist/experimental/lazy-projections/ob_tran.cjs +90 -0
  783. package/dist/experimental/lazy-projections/ob_tran.cjs.map +6 -0
  784. package/dist/experimental/lazy-projections/ob_tran.d.ts +5 -0
  785. package/dist/experimental/lazy-projections/ob_tran.d.ts.map +1 -0
  786. package/dist/experimental/lazy-projections/ob_tran.js +18 -0
  787. package/dist/experimental/lazy-projections/ob_tran.js.map +1 -0
  788. package/dist/experimental/lazy-projections/omerc.cjs +91 -0
  789. package/dist/experimental/lazy-projections/omerc.cjs.map +6 -0
  790. package/dist/experimental/lazy-projections/omerc.d.ts +3 -0
  791. package/dist/experimental/lazy-projections/omerc.d.ts.map +1 -0
  792. package/dist/experimental/lazy-projections/omerc.js +19 -0
  793. package/dist/experimental/lazy-projections/omerc.js.map +1 -0
  794. package/dist/experimental/lazy-projections/ortho.cjs +79 -0
  795. package/dist/experimental/lazy-projections/ortho.cjs.map +6 -0
  796. package/dist/experimental/lazy-projections/ortho.d.ts +3 -0
  797. package/dist/experimental/lazy-projections/ortho.d.ts.map +1 -0
  798. package/dist/experimental/lazy-projections/ortho.js +7 -0
  799. package/dist/experimental/lazy-projections/ortho.js.map +1 -0
  800. package/dist/experimental/lazy-projections/poly.cjs +79 -0
  801. package/dist/experimental/lazy-projections/poly.cjs.map +6 -0
  802. package/dist/experimental/lazy-projections/poly.d.ts +3 -0
  803. package/dist/experimental/lazy-projections/poly.d.ts.map +1 -0
  804. package/dist/experimental/lazy-projections/poly.js +7 -0
  805. package/dist/experimental/lazy-projections/poly.js.map +1 -0
  806. package/dist/experimental/lazy-projections/qsc.cjs +82 -0
  807. package/dist/experimental/lazy-projections/qsc.cjs.map +6 -0
  808. package/dist/experimental/lazy-projections/qsc.d.ts +3 -0
  809. package/dist/experimental/lazy-projections/qsc.d.ts.map +1 -0
  810. package/dist/experimental/lazy-projections/qsc.js +11 -0
  811. package/dist/experimental/lazy-projections/qsc.js.map +1 -0
  812. package/dist/experimental/lazy-projections/robin.cjs +79 -0
  813. package/dist/experimental/lazy-projections/robin.cjs.map +6 -0
  814. package/dist/experimental/lazy-projections/robin.d.ts +3 -0
  815. package/dist/experimental/lazy-projections/robin.d.ts.map +1 -0
  816. package/dist/experimental/lazy-projections/robin.js +7 -0
  817. package/dist/experimental/lazy-projections/robin.js.map +1 -0
  818. package/dist/experimental/lazy-projections/sinu.cjs +79 -0
  819. package/dist/experimental/lazy-projections/sinu.cjs.map +6 -0
  820. package/dist/experimental/lazy-projections/sinu.d.ts +3 -0
  821. package/dist/experimental/lazy-projections/sinu.d.ts.map +1 -0
  822. package/dist/experimental/lazy-projections/sinu.js +7 -0
  823. package/dist/experimental/lazy-projections/sinu.js.map +1 -0
  824. package/dist/experimental/lazy-projections/somerc.cjs +79 -0
  825. package/dist/experimental/lazy-projections/somerc.cjs.map +6 -0
  826. package/dist/experimental/lazy-projections/somerc.d.ts +3 -0
  827. package/dist/experimental/lazy-projections/somerc.d.ts.map +1 -0
  828. package/dist/experimental/lazy-projections/somerc.js +8 -0
  829. package/dist/experimental/lazy-projections/somerc.js.map +1 -0
  830. package/dist/experimental/lazy-projections/stere.cjs +87 -0
  831. package/dist/experimental/lazy-projections/stere.cjs.map +6 -0
  832. package/dist/experimental/lazy-projections/stere.d.ts +3 -0
  833. package/dist/experimental/lazy-projections/stere.d.ts.map +1 -0
  834. package/dist/experimental/lazy-projections/stere.js +15 -0
  835. package/dist/experimental/lazy-projections/stere.js.map +1 -0
  836. package/dist/experimental/lazy-projections/sterea.cjs +87 -0
  837. package/dist/experimental/lazy-projections/sterea.cjs.map +6 -0
  838. package/dist/experimental/lazy-projections/sterea.d.ts +3 -0
  839. package/dist/experimental/lazy-projections/sterea.d.ts.map +1 -0
  840. package/dist/experimental/lazy-projections/sterea.js +16 -0
  841. package/dist/experimental/lazy-projections/sterea.js.map +1 -0
  842. package/dist/experimental/lazy-projections/tmerc.cjs +89 -0
  843. package/dist/experimental/lazy-projections/tmerc.cjs.map +6 -0
  844. package/dist/experimental/lazy-projections/tmerc.d.ts +3 -0
  845. package/dist/experimental/lazy-projections/tmerc.d.ts.map +1 -0
  846. package/dist/experimental/lazy-projections/tmerc.js +18 -0
  847. package/dist/experimental/lazy-projections/tmerc.js.map +1 -0
  848. package/dist/experimental/lazy-projections/tpers.cjs +79 -0
  849. package/dist/experimental/lazy-projections/tpers.cjs.map +6 -0
  850. package/dist/experimental/lazy-projections/tpers.d.ts +3 -0
  851. package/dist/experimental/lazy-projections/tpers.d.ts.map +1 -0
  852. package/dist/experimental/lazy-projections/tpers.js +8 -0
  853. package/dist/experimental/lazy-projections/tpers.js.map +1 -0
  854. package/dist/experimental/lazy-projections/utm.cjs +79 -0
  855. package/dist/experimental/lazy-projections/utm.cjs.map +6 -0
  856. package/dist/experimental/lazy-projections/utm.d.ts +3 -0
  857. package/dist/experimental/lazy-projections/utm.d.ts.map +1 -0
  858. package/dist/experimental/lazy-projections/utm.js +8 -0
  859. package/dist/experimental/lazy-projections/utm.js.map +1 -0
  860. package/dist/experimental/lazy-projections/vandg.cjs +79 -0
  861. package/dist/experimental/lazy-projections/vandg.cjs.map +6 -0
  862. package/dist/experimental/lazy-projections/vandg.d.ts +3 -0
  863. package/dist/experimental/lazy-projections/vandg.d.ts.map +1 -0
  864. package/dist/experimental/lazy-projections/vandg.js +7 -0
  865. package/dist/experimental/lazy-projections/vandg.js.map +1 -0
  866. package/dist/experimental/mutable-projection.d.ts +6 -0
  867. package/dist/experimental/mutable-projection.d.ts.map +1 -0
  868. package/dist/experimental/mutable-projection.js +53 -0
  869. package/dist/experimental/mutable-projection.js.map +1 -0
  870. package/dist/experimental/numeric-flat.d.ts +8 -0
  871. package/dist/experimental/numeric-flat.d.ts.map +1 -0
  872. package/dist/experimental/numeric-flat.js +54 -0
  873. package/dist/experimental/numeric-flat.js.map +1 -0
  874. package/dist/experimental/parameters.d.ts +7 -0
  875. package/dist/experimental/parameters.d.ts.map +1 -0
  876. package/dist/experimental/parameters.js +30 -0
  877. package/dist/experimental/parameters.js.map +1 -0
  878. package/dist/experimental/projection-descriptor.d.ts +13 -0
  879. package/dist/experimental/projection-descriptor.d.ts.map +1 -0
  880. package/dist/experimental/projection-descriptor.js +52 -0
  881. package/dist/experimental/projection-descriptor.js.map +1 -0
  882. package/dist/experimental/projection-pipeline.d.ts +142 -0
  883. package/dist/experimental/projection-pipeline.d.ts.map +1 -0
  884. package/dist/experimental/projection-pipeline.js +746 -0
  885. package/dist/experimental/projection-pipeline.js.map +1 -0
  886. package/dist/experimental/projection-scratch.d.ts +9 -0
  887. package/dist/experimental/projection-scratch.d.ts.map +1 -0
  888. package/dist/experimental/projection-scratch.js +18 -0
  889. package/dist/experimental/projection-scratch.js.map +1 -0
  890. package/dist/experimental/projections/aea.d.ts +3 -0
  891. package/dist/experimental/projections/aea.d.ts.map +1 -0
  892. package/dist/experimental/projections/aea.js +17 -0
  893. package/dist/experimental/projections/aea.js.map +1 -0
  894. package/dist/experimental/projections/aeqd.d.ts +3 -0
  895. package/dist/experimental/projections/aeqd.d.ts.map +1 -0
  896. package/dist/experimental/projections/aeqd.js +15 -0
  897. package/dist/experimental/projections/aeqd.js.map +1 -0
  898. package/dist/experimental/projections/bonne.d.ts +3 -0
  899. package/dist/experimental/projections/bonne.d.ts.map +1 -0
  900. package/dist/experimental/projections/bonne.js +16 -0
  901. package/dist/experimental/projections/bonne.js.map +1 -0
  902. package/dist/experimental/projections/cass.d.ts +3 -0
  903. package/dist/experimental/projections/cass.d.ts.map +1 -0
  904. package/dist/experimental/projections/cass.js +13 -0
  905. package/dist/experimental/projections/cass.js.map +1 -0
  906. package/dist/experimental/projections/cea.d.ts +3 -0
  907. package/dist/experimental/projections/cea.d.ts.map +1 -0
  908. package/dist/experimental/projections/cea.js +15 -0
  909. package/dist/experimental/projections/cea.js.map +1 -0
  910. package/dist/experimental/projections/eck6.d.ts +3 -0
  911. package/dist/experimental/projections/eck6.d.ts.map +1 -0
  912. package/dist/experimental/projections/eck6.js +13 -0
  913. package/dist/experimental/projections/eck6.js.map +1 -0
  914. package/dist/experimental/projections/eqdc.d.ts +3 -0
  915. package/dist/experimental/projections/eqdc.d.ts.map +1 -0
  916. package/dist/experimental/projections/eqdc.js +17 -0
  917. package/dist/experimental/projections/eqdc.js.map +1 -0
  918. package/dist/experimental/projections/eqearth.d.ts +3 -0
  919. package/dist/experimental/projections/eqearth.d.ts.map +1 -0
  920. package/dist/experimental/projections/eqearth.js +13 -0
  921. package/dist/experimental/projections/eqearth.js.map +1 -0
  922. package/dist/experimental/projections/equi.d.ts +3 -0
  923. package/dist/experimental/projections/equi.d.ts.map +1 -0
  924. package/dist/experimental/projections/equi.js +15 -0
  925. package/dist/experimental/projections/equi.js.map +1 -0
  926. package/dist/experimental/projections/equidistant-cylindrical.d.ts +4 -0
  927. package/dist/experimental/projections/equidistant-cylindrical.d.ts.map +1 -0
  928. package/dist/experimental/projections/equidistant-cylindrical.js +30 -0
  929. package/dist/experimental/projections/equidistant-cylindrical.js.map +1 -0
  930. package/dist/experimental/projections/geocentric.d.ts +3 -0
  931. package/dist/experimental/projections/geocentric.d.ts.map +1 -0
  932. package/dist/experimental/projections/geocentric.js +26 -0
  933. package/dist/experimental/projections/geocentric.js.map +1 -0
  934. package/dist/experimental/projections/geos.d.ts +3 -0
  935. package/dist/experimental/projections/geos.d.ts.map +1 -0
  936. package/dist/experimental/projections/geos.js +20 -0
  937. package/dist/experimental/projections/geos.js.map +1 -0
  938. package/dist/experimental/projections/gnom.d.ts +3 -0
  939. package/dist/experimental/projections/gnom.d.ts.map +1 -0
  940. package/dist/experimental/projections/gnom.js +13 -0
  941. package/dist/experimental/projections/gnom.js.map +1 -0
  942. package/dist/experimental/projections/gstmerc.d.ts +3 -0
  943. package/dist/experimental/projections/gstmerc.d.ts.map +1 -0
  944. package/dist/experimental/projections/gstmerc.js +13 -0
  945. package/dist/experimental/projections/gstmerc.js.map +1 -0
  946. package/dist/experimental/projections/krovak.d.ts +3 -0
  947. package/dist/experimental/projections/krovak.d.ts.map +1 -0
  948. package/dist/experimental/projections/krovak.js +32 -0
  949. package/dist/experimental/projections/krovak.js.map +1 -0
  950. package/dist/experimental/projections/laea.d.ts +3 -0
  951. package/dist/experimental/projections/laea.d.ts.map +1 -0
  952. package/dist/experimental/projections/laea.js +15 -0
  953. package/dist/experimental/projections/laea.js.map +1 -0
  954. package/dist/experimental/projections/lcc.d.ts +3 -0
  955. package/dist/experimental/projections/lcc.d.ts.map +1 -0
  956. package/dist/experimental/projections/lcc.js +32 -0
  957. package/dist/experimental/projections/lcc.js.map +1 -0
  958. package/dist/experimental/projections/mercator.d.ts +4 -0
  959. package/dist/experimental/projections/mercator.d.ts.map +1 -0
  960. package/dist/experimental/projections/mercator.js +71 -0
  961. package/dist/experimental/projections/mercator.js.map +1 -0
  962. package/dist/experimental/projections/mill.d.ts +3 -0
  963. package/dist/experimental/projections/mill.d.ts.map +1 -0
  964. package/dist/experimental/projections/mill.js +13 -0
  965. package/dist/experimental/projections/mill.js.map +1 -0
  966. package/dist/experimental/projections/moll.d.ts +3 -0
  967. package/dist/experimental/projections/moll.d.ts.map +1 -0
  968. package/dist/experimental/projections/moll.js +13 -0
  969. package/dist/experimental/projections/moll.js.map +1 -0
  970. package/dist/experimental/projections/nzmg.d.ts +3 -0
  971. package/dist/experimental/projections/nzmg.d.ts.map +1 -0
  972. package/dist/experimental/projections/nzmg.js +20 -0
  973. package/dist/experimental/projections/nzmg.js.map +1 -0
  974. package/dist/experimental/projections/ob-tran.d.ts +4 -0
  975. package/dist/experimental/projections/ob-tran.d.ts.map +1 -0
  976. package/dist/experimental/projections/ob-tran.js +119 -0
  977. package/dist/experimental/projections/ob-tran.js.map +1 -0
  978. package/dist/experimental/projections/omerc.d.ts +3 -0
  979. package/dist/experimental/projections/omerc.d.ts.map +1 -0
  980. package/dist/experimental/projections/omerc.js +60 -0
  981. package/dist/experimental/projections/omerc.js.map +1 -0
  982. package/dist/experimental/projections/ortho.d.ts +3 -0
  983. package/dist/experimental/projections/ortho.d.ts.map +1 -0
  984. package/dist/experimental/projections/ortho.js +13 -0
  985. package/dist/experimental/projections/ortho.js.map +1 -0
  986. package/dist/experimental/projections/poly.d.ts +3 -0
  987. package/dist/experimental/projections/poly.d.ts.map +1 -0
  988. package/dist/experimental/projections/poly.js +13 -0
  989. package/dist/experimental/projections/poly.js.map +1 -0
  990. package/dist/experimental/projections/qsc.d.ts +3 -0
  991. package/dist/experimental/projections/qsc.d.ts.map +1 -0
  992. package/dist/experimental/projections/qsc.js +13 -0
  993. package/dist/experimental/projections/qsc.js.map +1 -0
  994. package/dist/experimental/projections/robin.d.ts +3 -0
  995. package/dist/experimental/projections/robin.d.ts.map +1 -0
  996. package/dist/experimental/projections/robin.js +13 -0
  997. package/dist/experimental/projections/robin.js.map +1 -0
  998. package/dist/experimental/projections/sinu.d.ts +3 -0
  999. package/dist/experimental/projections/sinu.d.ts.map +1 -0
  1000. package/dist/experimental/projections/sinu.js +13 -0
  1001. package/dist/experimental/projections/sinu.js.map +1 -0
  1002. package/dist/experimental/projections/somerc.d.ts +3 -0
  1003. package/dist/experimental/projections/somerc.d.ts.map +1 -0
  1004. package/dist/experimental/projections/somerc.js +13 -0
  1005. package/dist/experimental/projections/somerc.js.map +1 -0
  1006. package/dist/experimental/projections/stere.d.ts +3 -0
  1007. package/dist/experimental/projections/stere.d.ts.map +1 -0
  1008. package/dist/experimental/projections/stere.js +20 -0
  1009. package/dist/experimental/projections/stere.js.map +1 -0
  1010. package/dist/experimental/projections/sterea.d.ts +3 -0
  1011. package/dist/experimental/projections/sterea.d.ts.map +1 -0
  1012. package/dist/experimental/projections/sterea.js +22 -0
  1013. package/dist/experimental/projections/sterea.js.map +1 -0
  1014. package/dist/experimental/projections/tpers.d.ts +3 -0
  1015. package/dist/experimental/projections/tpers.d.ts.map +1 -0
  1016. package/dist/experimental/projections/tpers.js +19 -0
  1017. package/dist/experimental/projections/tpers.js.map +1 -0
  1018. package/dist/experimental/projections/transverse-mercator.d.ts +6 -0
  1019. package/dist/experimental/projections/transverse-mercator.d.ts.map +1 -0
  1020. package/dist/experimental/projections/transverse-mercator.js +39 -0
  1021. package/dist/experimental/projections/transverse-mercator.js.map +1 -0
  1022. package/dist/experimental/projections/utm.d.ts +3 -0
  1023. package/dist/experimental/projections/utm.d.ts.map +1 -0
  1024. package/dist/experimental/projections/utm.js +31 -0
  1025. package/dist/experimental/projections/utm.js.map +1 -0
  1026. package/dist/experimental/projections/vandg.d.ts +3 -0
  1027. package/dist/experimental/projections/vandg.d.ts.map +1 -0
  1028. package/dist/experimental/projections/vandg.js +13 -0
  1029. package/dist/experimental/projections/vandg.js.map +1 -0
  1030. package/dist/experimental/scalar-output.d.ts +8 -0
  1031. package/dist/experimental/scalar-output.d.ts.map +1 -0
  1032. package/dist/experimental/scalar-output.js +46 -0
  1033. package/dist/experimental/scalar-output.js.map +1 -0
  1034. package/dist/experimental/types.d.ts +54 -0
  1035. package/dist/experimental/types.d.ts.map +1 -0
  1036. package/dist/experimental/types.js +5 -0
  1037. package/dist/experimental/types.js.map +1 -0
  1038. package/dist/experimental/typescript-projection.d.ts +67 -0
  1039. package/dist/experimental/typescript-projection.d.ts.map +1 -0
  1040. package/dist/experimental/typescript-projection.js +429 -0
  1041. package/dist/experimental/typescript-projection.js.map +1 -0
  1042. package/dist/experimental/vertical-datum.d.ts +4 -0
  1043. package/dist/experimental/vertical-datum.d.ts.map +1 -0
  1044. package/dist/experimental/vertical-datum.js +43 -0
  1045. package/dist/experimental/vertical-datum.js.map +1 -0
  1046. package/dist/grids/velocity.cjs +92 -0
  1047. package/dist/grids/velocity.cjs.map +6 -0
  1048. package/dist/grids/velocity.d.ts +3 -0
  1049. package/dist/grids/velocity.d.ts.map +1 -0
  1050. package/dist/grids/velocity.js +5 -0
  1051. package/dist/grids/velocity.js.map +1 -0
  1052. package/dist/index.cjs +10158 -0
  1053. package/dist/index.cjs.map +6 -0
  1054. package/dist/index.d.ts +4 -0
  1055. package/dist/index.d.ts.map +1 -0
  1056. package/dist/index.js +6 -0
  1057. package/dist/index.js.map +1 -0
  1058. package/dist/lib/projection.d.ts +24 -0
  1059. package/dist/lib/projection.d.ts.map +1 -0
  1060. package/dist/lib/projection.js +107 -0
  1061. package/dist/lib/projection.js.map +1 -0
  1062. package/dist/operations.cjs +255 -0
  1063. package/dist/operations.cjs.map +6 -0
  1064. package/dist/operations.d.ts +67 -0
  1065. package/dist/operations.d.ts.map +1 -0
  1066. package/dist/operations.js +272 -0
  1067. package/dist/operations.js.map +1 -0
  1068. package/dist/pipeline.cjs +3347 -0
  1069. package/dist/pipeline.cjs.map +6 -0
  1070. package/dist/pipeline.d.ts +2 -0
  1071. package/dist/pipeline.d.ts.map +1 -0
  1072. package/dist/pipeline.js +5 -0
  1073. package/dist/pipeline.js.map +1 -0
  1074. package/package.json +970 -3
  1075. package/src/deformation.ts +5 -0
  1076. package/src/experimental/catalogue-kernel.ts +54 -0
  1077. package/src/experimental/common/adjust_lat.ts +11 -0
  1078. package/src/experimental/common/adjust_lon.ts +14 -0
  1079. package/src/experimental/common/asinhy.ts +14 -0
  1080. package/src/experimental/common/asinz.ts +11 -0
  1081. package/src/experimental/common/authlat.ts +9 -0
  1082. package/src/experimental/common/authset.ts +25 -0
  1083. package/src/experimental/common/clens.ts +20 -0
  1084. package/src/experimental/common/clens_cmplx.ts +43 -0
  1085. package/src/experimental/common/constants.ts +15 -0
  1086. package/src/experimental/common/cosh.ts +10 -0
  1087. package/src/experimental/common/e0fn.ts +8 -0
  1088. package/src/experimental/common/e1fn.ts +8 -0
  1089. package/src/experimental/common/e2fn.ts +8 -0
  1090. package/src/experimental/common/e3fn.ts +8 -0
  1091. package/src/experimental/common/fL.ts +10 -0
  1092. package/src/experimental/common/gN.ts +9 -0
  1093. package/src/experimental/common/gatg.ts +20 -0
  1094. package/src/experimental/common/hypot.ts +13 -0
  1095. package/src/experimental/common/imlfn.ts +23 -0
  1096. package/src/experimental/common/invlatiso.ts +20 -0
  1097. package/src/experimental/common/iqsfnz.ts +45 -0
  1098. package/src/experimental/common/latiso.ts +21 -0
  1099. package/src/experimental/common/log1py.ts +11 -0
  1100. package/src/experimental/common/mlfn.ts +8 -0
  1101. package/src/experimental/common/msfnz.ts +9 -0
  1102. package/src/experimental/common/phi2z.ts +22 -0
  1103. package/src/experimental/common/pj_enfn.ts +29 -0
  1104. package/src/experimental/common/pj_inv_mlfn.ts +28 -0
  1105. package/src/experimental/common/pj_mlfn.ts +10 -0
  1106. package/src/experimental/common/qsfnz.ts +17 -0
  1107. package/src/experimental/common/sign.ts +8 -0
  1108. package/src/experimental/common/sinh.ts +10 -0
  1109. package/src/experimental/common/srat.ts +8 -0
  1110. package/src/experimental/common/tsfnz.ts +13 -0
  1111. package/src/experimental/common/vincenty.ts +180 -0
  1112. package/src/experimental/core.ts +48 -0
  1113. package/src/experimental/crs/datum-table.ts +1370 -0
  1114. package/src/experimental/crs/ellipsoid-table.ts +230 -0
  1115. package/src/experimental/crs/normalize.ts +303 -0
  1116. package/src/experimental/crs/primemeridian-table.ts +22 -0
  1117. package/src/experimental/crs/projjson.ts +12 -0
  1118. package/src/experimental/crs/spatial-reference.ts +115 -0
  1119. package/src/experimental/crs/structured.ts +521 -0
  1120. package/src/experimental/crs/types.ts +80 -0
  1121. package/src/experimental/crs/units-table.ts +27 -0
  1122. package/src/experimental/crs/wkt.ts +192 -0
  1123. package/src/experimental/datum.ts +185 -0
  1124. package/src/experimental/deformation.ts +134 -0
  1125. package/src/experimental/entries/projections/aea.ts +5 -0
  1126. package/src/experimental/entries/projections/aeqd.ts +5 -0
  1127. package/src/experimental/entries/projections/bonne.ts +5 -0
  1128. package/src/experimental/entries/projections/cass.ts +5 -0
  1129. package/src/experimental/entries/projections/cea.ts +5 -0
  1130. package/src/experimental/entries/projections/eck6.ts +5 -0
  1131. package/src/experimental/entries/projections/eqc.ts +5 -0
  1132. package/src/experimental/entries/projections/eqdc.ts +5 -0
  1133. package/src/experimental/entries/projections/eqearth.ts +5 -0
  1134. package/src/experimental/entries/projections/equi.ts +5 -0
  1135. package/src/experimental/entries/projections/etmerc.ts +5 -0
  1136. package/src/experimental/entries/projections/geocent.ts +5 -0
  1137. package/src/experimental/entries/projections/geos.ts +5 -0
  1138. package/src/experimental/entries/projections/gnom.ts +5 -0
  1139. package/src/experimental/entries/projections/gstmerc.ts +5 -0
  1140. package/src/experimental/entries/projections/krovak.ts +5 -0
  1141. package/src/experimental/entries/projections/laea.ts +5 -0
  1142. package/src/experimental/entries/projections/lcc.ts +5 -0
  1143. package/src/experimental/entries/projections/merc.ts +5 -0
  1144. package/src/experimental/entries/projections/mill.ts +5 -0
  1145. package/src/experimental/entries/projections/moll.ts +5 -0
  1146. package/src/experimental/entries/projections/nzmg.ts +5 -0
  1147. package/src/experimental/entries/projections/ob_tran.ts +5 -0
  1148. package/src/experimental/entries/projections/omerc.ts +5 -0
  1149. package/src/experimental/entries/projections/ortho.ts +5 -0
  1150. package/src/experimental/entries/projections/poly.ts +5 -0
  1151. package/src/experimental/entries/projections/qsc.ts +5 -0
  1152. package/src/experimental/entries/projections/robin.ts +5 -0
  1153. package/src/experimental/entries/projections/sinu.ts +5 -0
  1154. package/src/experimental/entries/projections/somerc.ts +5 -0
  1155. package/src/experimental/entries/projections/stere.ts +5 -0
  1156. package/src/experimental/entries/projections/sterea.ts +5 -0
  1157. package/src/experimental/entries/projections/tmerc.ts +5 -0
  1158. package/src/experimental/entries/projections/tpers.ts +5 -0
  1159. package/src/experimental/entries/projections/utm.ts +5 -0
  1160. package/src/experimental/entries/projections/vandg.ts +5 -0
  1161. package/src/experimental/exact-helmert.ts +58 -0
  1162. package/src/experimental/flat-projection.ts +70 -0
  1163. package/src/experimental/grids/geotiff.ts +88 -0
  1164. package/src/experimental/grids/grid.ts +141 -0
  1165. package/src/experimental/grids/gtx.ts +31 -0
  1166. package/src/experimental/grids/ntv2.ts +71 -0
  1167. package/src/experimental/grids/scalar-geotiff.ts +231 -0
  1168. package/src/experimental/grids/types.ts +35 -0
  1169. package/src/experimental/grids/velocity-geotiff.ts +82 -0
  1170. package/src/experimental/grids/velocity.ts +58 -0
  1171. package/src/experimental/grids/vertical-geotiff.ts +28 -0
  1172. package/src/experimental/grids/vertical.ts +99 -0
  1173. package/src/experimental/helmert-flat.ts +76 -0
  1174. package/src/experimental/index.ts +59 -0
  1175. package/src/experimental/kernel.ts +139 -0
  1176. package/src/experimental/kernels/aea.ts +170 -0
  1177. package/src/experimental/kernels/aeqd.ts +182 -0
  1178. package/src/experimental/kernels/bonne.ts +141 -0
  1179. package/src/experimental/kernels/cass.ts +140 -0
  1180. package/src/experimental/kernels/cea.ts +71 -0
  1181. package/src/experimental/kernels/eck6.ts +36 -0
  1182. package/src/experimental/kernels/eqdc.ts +137 -0
  1183. package/src/experimental/kernels/eqearth.ts +136 -0
  1184. package/src/experimental/kernels/equi.ts +53 -0
  1185. package/src/experimental/kernels/etmerc.ts +190 -0
  1186. package/src/experimental/kernels/gauss.ts +79 -0
  1187. package/src/experimental/kernels/geos.ts +183 -0
  1188. package/src/experimental/kernels/gnom.ts +113 -0
  1189. package/src/experimental/kernels/gstmerc.ts +74 -0
  1190. package/src/experimental/kernels/krovak.ts +166 -0
  1191. package/src/experimental/kernels/laea.ts +297 -0
  1192. package/src/experimental/kernels/lcc.ts +147 -0
  1193. package/src/experimental/kernels/mill.ts +60 -0
  1194. package/src/experimental/kernels/moll.ts +105 -0
  1195. package/src/experimental/kernels/nzmg.ts +249 -0
  1196. package/src/experimental/kernels/omerc.ts +343 -0
  1197. package/src/experimental/kernels/ortho.ts +106 -0
  1198. package/src/experimental/kernels/poly.ts +156 -0
  1199. package/src/experimental/kernels/qsc.ts +369 -0
  1200. package/src/experimental/kernels/robin.ts +189 -0
  1201. package/src/experimental/kernels/sinu.ts +116 -0
  1202. package/src/experimental/kernels/somerc.ts +112 -0
  1203. package/src/experimental/kernels/stere.ts +221 -0
  1204. package/src/experimental/kernels/sterea.ts +80 -0
  1205. package/src/experimental/kernels/tmerc.ts +227 -0
  1206. package/src/experimental/kernels/tpers.ts +187 -0
  1207. package/src/experimental/kernels/vandg.ts +147 -0
  1208. package/src/experimental/kinematic-helmert-flat.ts +85 -0
  1209. package/src/experimental/kinematic-helmert.ts +132 -0
  1210. package/src/experimental/lazy-projection.ts +146 -0
  1211. package/src/experimental/lazy-projections/aea.ts +10 -0
  1212. package/src/experimental/lazy-projections/aeqd.ts +11 -0
  1213. package/src/experimental/lazy-projections/bonne.ts +10 -0
  1214. package/src/experimental/lazy-projections/cass.ts +10 -0
  1215. package/src/experimental/lazy-projections/cea.ts +11 -0
  1216. package/src/experimental/lazy-projections/eck6.ts +10 -0
  1217. package/src/experimental/lazy-projections/eqc.ts +14 -0
  1218. package/src/experimental/lazy-projections/eqdc.ts +11 -0
  1219. package/src/experimental/lazy-projections/eqearth.ts +10 -0
  1220. package/src/experimental/lazy-projections/equi.ts +10 -0
  1221. package/src/experimental/lazy-projections/etmerc.ts +11 -0
  1222. package/src/experimental/lazy-projections/geocent.ts +10 -0
  1223. package/src/experimental/lazy-projections/geos.ts +10 -0
  1224. package/src/experimental/lazy-projections/gnom.ts +10 -0
  1225. package/src/experimental/lazy-projections/gstmerc.ts +12 -0
  1226. package/src/experimental/lazy-projections/index.ts +42 -0
  1227. package/src/experimental/lazy-projections/krovak.ts +18 -0
  1228. package/src/experimental/lazy-projections/laea.ts +11 -0
  1229. package/src/experimental/lazy-projections/lcc.ts +21 -0
  1230. package/src/experimental/lazy-projections/merc.ts +19 -0
  1231. package/src/experimental/lazy-projections/mill.ts +11 -0
  1232. package/src/experimental/lazy-projections/moll.ts +10 -0
  1233. package/src/experimental/lazy-projections/nzmg.ts +11 -0
  1234. package/src/experimental/lazy-projections/ob_tran.ts +25 -0
  1235. package/src/experimental/lazy-projections/omerc.ts +22 -0
  1236. package/src/experimental/lazy-projections/ortho.ts +10 -0
  1237. package/src/experimental/lazy-projections/poly.ts +10 -0
  1238. package/src/experimental/lazy-projections/qsc.ts +14 -0
  1239. package/src/experimental/lazy-projections/robin.ts +10 -0
  1240. package/src/experimental/lazy-projections/sinu.ts +10 -0
  1241. package/src/experimental/lazy-projections/somerc.ts +11 -0
  1242. package/src/experimental/lazy-projections/stere.ts +18 -0
  1243. package/src/experimental/lazy-projections/sterea.ts +19 -0
  1244. package/src/experimental/lazy-projections/tmerc.ts +21 -0
  1245. package/src/experimental/lazy-projections/tpers.ts +11 -0
  1246. package/src/experimental/lazy-projections/utm.ts +11 -0
  1247. package/src/experimental/lazy-projections/vandg.ts +10 -0
  1248. package/src/experimental/mutable-projection.ts +63 -0
  1249. package/src/experimental/numeric-flat.ts +73 -0
  1250. package/src/experimental/parameters.ts +35 -0
  1251. package/src/experimental/projection-descriptor.ts +79 -0
  1252. package/src/experimental/projection-pipeline.ts +1053 -0
  1253. package/src/experimental/projection-scratch.ts +19 -0
  1254. package/src/experimental/projections/aea.ts +19 -0
  1255. package/src/experimental/projections/aeqd.ts +18 -0
  1256. package/src/experimental/projections/bonne.ts +23 -0
  1257. package/src/experimental/projections/cass.ts +19 -0
  1258. package/src/experimental/projections/cea.ts +20 -0
  1259. package/src/experimental/projections/eck6.ts +19 -0
  1260. package/src/experimental/projections/eqdc.ts +19 -0
  1261. package/src/experimental/projections/eqearth.ts +19 -0
  1262. package/src/experimental/projections/equi.ts +20 -0
  1263. package/src/experimental/projections/equidistant-cylindrical.ts +35 -0
  1264. package/src/experimental/projections/geocentric.ts +34 -0
  1265. package/src/experimental/projections/geos.ts +31 -0
  1266. package/src/experimental/projections/gnom.ts +19 -0
  1267. package/src/experimental/projections/gstmerc.ts +19 -0
  1268. package/src/experimental/projections/krovak.ts +41 -0
  1269. package/src/experimental/projections/laea.ts +18 -0
  1270. package/src/experimental/projections/lcc.ts +40 -0
  1271. package/src/experimental/projections/mercator.ts +79 -0
  1272. package/src/experimental/projections/mill.ts +19 -0
  1273. package/src/experimental/projections/moll.ts +19 -0
  1274. package/src/experimental/projections/nzmg.ts +27 -0
  1275. package/src/experimental/projections/ob-tran.ts +161 -0
  1276. package/src/experimental/projections/omerc.ts +66 -0
  1277. package/src/experimental/projections/ortho.ts +26 -0
  1278. package/src/experimental/projections/poly.ts +19 -0
  1279. package/src/experimental/projections/qsc.ts +19 -0
  1280. package/src/experimental/projections/robin.ts +19 -0
  1281. package/src/experimental/projections/sinu.ts +19 -0
  1282. package/src/experimental/projections/somerc.ts +19 -0
  1283. package/src/experimental/projections/stere.ts +29 -0
  1284. package/src/experimental/projections/sterea.ts +30 -0
  1285. package/src/experimental/projections/tpers.ts +31 -0
  1286. package/src/experimental/projections/transverse-mercator.ts +68 -0
  1287. package/src/experimental/projections/utm.ts +33 -0
  1288. package/src/experimental/projections/vandg.ts +19 -0
  1289. package/src/experimental/scalar-output.ts +74 -0
  1290. package/src/experimental/types.ts +61 -0
  1291. package/src/experimental/typescript-projection.ts +545 -0
  1292. package/src/experimental/vertical-datum.ts +39 -0
  1293. package/src/grids/velocity.ts +5 -0
  1294. package/src/index.ts +7 -0
  1295. package/src/lib/projection.ts +167 -0
  1296. package/src/operations.ts +358 -0
  1297. package/src/pipeline.ts +4 -0
@@ -0,0 +1,3347 @@
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/pipeline.js
20
+ var pipeline_exports = {};
21
+ __export(pipeline_exports, {
22
+ ProjectionPipeline: () => ProjectionPipeline
23
+ });
24
+ module.exports = __toCommonJS(pipeline_exports);
25
+
26
+ // ../crs/src/spatial-reference.ts
27
+ function inferCRSRepresentation(definition2) {
28
+ if (typeof definition2 === "object") {
29
+ return "projjson";
30
+ }
31
+ const text = definition2.trim();
32
+ if (/^[A-Z][A-Z0-9_]*\s*[\[(]/i.test(text)) {
33
+ return "wkt";
34
+ }
35
+ if (/(?:^|\s)\+?proj=/i.test(text)) {
36
+ return "proj-string";
37
+ }
38
+ if (/^[A-Z][A-Z0-9._-]*(?::[A-Z0-9._-]+)+$/i.test(text) || /^urn:ogc:def:crs:/i.test(text) || /^https?:\/\//i.test(text) || /^[A-Z][A-Z0-9._-]*$/i.test(text)) {
39
+ return "identifier";
40
+ }
41
+ return "opaque";
42
+ }
43
+
44
+ // ../crs/src/proj-string.ts
45
+ var PROJStringSyntaxError = class extends SyntaxError {
46
+ /** Create a PROJ string syntax error at a source location. */
47
+ constructor(message, source, offset) {
48
+ const location = getSourceLocation(source, offset);
49
+ super(`${message} at ${location.line}:${location.column}`);
50
+ this.name = "PROJStringSyntaxError";
51
+ this.offset = offset;
52
+ this.line = location.line;
53
+ this.column = location.column;
54
+ }
55
+ };
56
+ function parsePROJString(text) {
57
+ const tokens = tokenizePROJString(text);
58
+ if (tokens.length === 0) {
59
+ throw new PROJStringSyntaxError("PROJ string is empty", text, 0);
60
+ }
61
+ const parameters = tokens.map((token) => parseParameter(token.raw, token.offset, text));
62
+ return { type: "proj-string", parameters };
63
+ }
64
+ var DMS_VALUE = /^[+-]?\d+(?:\.\d*)?d(?:\d+(?:\.\d*)?'(?:\d+(?:\.\d*)?")?)?[NSEW]?$/i;
65
+ function parseParameter(rawToken, offset, source) {
66
+ const token = rawToken.startsWith("+") ? rawToken.slice(1) : rawToken;
67
+ if (!token) {
68
+ throw new PROJStringSyntaxError("Expected a parameter after '+'", source, offset);
69
+ }
70
+ const equalsIndex = token.indexOf("=");
71
+ const name = equalsIndex < 0 ? token : token.slice(0, equalsIndex);
72
+ if (!name || /[\s+=]/.test(name)) {
73
+ throw new PROJStringSyntaxError(`Invalid PROJ parameter name '${name}'`, source, offset);
74
+ }
75
+ if (equalsIndex < 0) {
76
+ return { type: "parameter", name };
77
+ }
78
+ const rawValue = token.slice(equalsIndex + 1);
79
+ const value = decodeParameterValue(rawValue, source, offset + equalsIndex + 1);
80
+ return { type: "parameter", name, value, rawValue };
81
+ }
82
+ function tokenizePROJString(source) {
83
+ const tokens = [];
84
+ let offset = 0;
85
+ while (offset < source.length) {
86
+ while (offset < source.length && /\s/.test(source[offset])) {
87
+ offset++;
88
+ }
89
+ if (offset >= source.length) {
90
+ break;
91
+ }
92
+ const start = offset;
93
+ let quote = null;
94
+ let escaped = false;
95
+ while (offset < source.length) {
96
+ const character = source[offset];
97
+ if (escaped) {
98
+ escaped = false;
99
+ offset++;
100
+ continue;
101
+ }
102
+ if (character === "\\" && quote) {
103
+ escaped = true;
104
+ offset++;
105
+ continue;
106
+ }
107
+ if (quote) {
108
+ if (character === quote) {
109
+ quote = null;
110
+ }
111
+ offset++;
112
+ continue;
113
+ }
114
+ if ((character === '"' || character === "'") && source[offset - 1] === "=") {
115
+ quote = character;
116
+ offset++;
117
+ continue;
118
+ }
119
+ if (/\s/.test(character)) {
120
+ break;
121
+ }
122
+ offset++;
123
+ }
124
+ if (quote) {
125
+ throw new PROJStringSyntaxError("Unterminated quoted PROJ value", source, start);
126
+ }
127
+ tokens.push({ raw: source.slice(start, offset), offset: start });
128
+ }
129
+ return tokens;
130
+ }
131
+ function decodeParameterValue(rawValue, source, offset) {
132
+ if (!rawValue) {
133
+ return "";
134
+ }
135
+ const first = rawValue[0];
136
+ if (first !== '"' && first !== "'") {
137
+ if ((rawValue.includes('"') || rawValue.includes("'")) && !DMS_VALUE.test(rawValue)) {
138
+ throw new PROJStringSyntaxError("Quote must begin a PROJ parameter value", source, offset);
139
+ }
140
+ return rawValue;
141
+ }
142
+ if (rawValue[rawValue.length - 1] !== first) {
143
+ throw new PROJStringSyntaxError("Unterminated quoted PROJ value", source, offset);
144
+ }
145
+ let value = "";
146
+ for (let index = 1; index < rawValue.length - 1; index++) {
147
+ const character = rawValue[index];
148
+ if (character === "\\" && index + 1 < rawValue.length - 1) {
149
+ value += rawValue[++index];
150
+ } else {
151
+ value += character;
152
+ }
153
+ }
154
+ return value;
155
+ }
156
+ function getSourceLocation(source, offset) {
157
+ let line = 1;
158
+ let column = 1;
159
+ for (let index = 0; index < offset && index < source.length; index++) {
160
+ if (source[index] === "\n") {
161
+ line++;
162
+ column = 1;
163
+ } else {
164
+ column++;
165
+ }
166
+ }
167
+ return { line, column };
168
+ }
169
+
170
+ // dist/experimental/crs/types.js
171
+ var _a;
172
+ var CRS_ERROR = /* @__PURE__ */ Symbol.for("@math.gl/projection/TypeScriptCRSError");
173
+ var TypeScriptCRSError = class _TypeScriptCRSError extends Error {
174
+ static [(_a = CRS_ERROR, Symbol.hasInstance)](value) {
175
+ if (this !== _TypeScriptCRSError)
176
+ return Function.prototype[Symbol.hasInstance].call(this, value);
177
+ return value instanceof Error && value[CRS_ERROR] === true;
178
+ }
179
+ constructor(reason, message) {
180
+ super(message);
181
+ this.reason = reason;
182
+ this[_a] = true;
183
+ this.name = "TypeScriptCRSError";
184
+ }
185
+ };
186
+ function unsupportedStage(message) {
187
+ throw new TypeScriptCRSError("missing-transform-stage", message);
188
+ }
189
+
190
+ // dist/experimental/crs/spatial-reference.js
191
+ function resolveCRSInput(input, options) {
192
+ if (typeof input === "string" || "type" in input)
193
+ return { definition: input, lossy: false };
194
+ const metadata = input;
195
+ const spatialReference = "crs" in metadata ? metadata : void 0;
196
+ const reference = "crs" in metadata ? metadata.crs : metadata;
197
+ if (reference.state !== "explicit" && reference.state !== "default")
198
+ throw new TypeScriptCRSError("unknown-syntax", "Cannot transform an " + reference.state + " CRS reference");
199
+ let lossy = false;
200
+ if ((spatialReference == null ? void 0 : spatialReference.coordinateEpoch) !== void 0)
201
+ unsupportedStage("Coordinate epochs require a time-dependent transformation");
202
+ if ((spatialReference == null ? void 0 : spatialReference.vertical) && spatialReference.vertical.state !== "absent") {
203
+ if (options.mode !== "horizontal")
204
+ unsupportedStage("A separately declared vertical CRS requires explicit horizontal extraction");
205
+ lossy = true;
206
+ }
207
+ return { definition: reference.definition, spatialReference, lossy };
208
+ }
209
+ function applySpatialReference(crs, reference) {
210
+ var _a2;
211
+ if (!reference)
212
+ return crs;
213
+ if (reference.coordinateFrame !== "unknown" && reference.coordinateFrame !== crs.kind)
214
+ throw new Error("SpatialReference coordinate frame disagrees with its CRS");
215
+ const order = reference.coordinateOrder;
216
+ const names = crs.kind === "geocentric" ? { x: "e", y: "n", z: "u" } : {
217
+ longitude: "e",
218
+ lon: "e",
219
+ latitude: "n",
220
+ lat: "n",
221
+ easting: "e",
222
+ northing: "n",
223
+ height: "u",
224
+ altitude: "u",
225
+ x: "e",
226
+ y: "n",
227
+ z: "u"
228
+ };
229
+ let storedAxis;
230
+ if (order.length) {
231
+ storedAxis = order.slice(0, 3).map((name) => names[name.toLowerCase()] || "?").join("");
232
+ if (storedAxis.length === 2)
233
+ storedAxis += "u";
234
+ if (storedAxis.length !== 3 || !storedAxis.includes("e") || !storedAxis.includes("n") || !storedAxis.includes("u"))
235
+ unsupportedStage("Unsupported SpatialReference coordinate order");
236
+ if (order.length > 4 || order.length > 3 && !["m", "measure"].includes(order[3]))
237
+ unsupportedStage("Unsupported fourth coordinate component");
238
+ }
239
+ if ((_a2 = reference.units) == null ? void 0 : _a2.length) {
240
+ const units = {
241
+ m: 1,
242
+ meter: 1,
243
+ metre: 1,
244
+ meters: 1,
245
+ metres: 1,
246
+ km: 1e3,
247
+ ft: 0.3048,
248
+ "us-ft": 1200 / 3937,
249
+ degree: Math.PI / 180,
250
+ degrees: Math.PI / 180,
251
+ radian: 1,
252
+ radians: 1,
253
+ grad: Math.PI / 200
254
+ };
255
+ for (let i = 0; i < Math.min(reference.units.length, 3); i++) {
256
+ const vertical = (storedAxis || "enu")[i] === "u";
257
+ const expected = crs.kind === "geocentric" ? crs.toMeter : vertical ? crs.verticalUnit : crs.kind === "geographic" ? crs.angularUnit : crs.toMeter;
258
+ if (Math.abs((units[reference.units[i]] ?? NaN) - expected) > 1e-12 || units[reference.units[i]] === void 0)
259
+ unsupportedStage("SpatialReference units disagree with its CRS");
260
+ }
261
+ }
262
+ return Object.freeze({ ...crs, storedAxis });
263
+ }
264
+
265
+ // dist/experimental/parameters.js
266
+ var DEGREES_TO_RADIANS = Math.PI / 180;
267
+ function numberParameter(parameters, name, fallback) {
268
+ if (!Object.prototype.hasOwnProperty.call(parameters, name))
269
+ return fallback;
270
+ const value = parameters[name];
271
+ if (typeof value !== "string" || !/^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(value)) {
272
+ throw new Error(`Invalid numeric PROJ parameter: +${name}`);
273
+ }
274
+ const number = Number(value);
275
+ if (!Number.isFinite(number))
276
+ throw new Error(`Invalid numeric PROJ parameter: +${name}`);
277
+ return number;
278
+ }
279
+
280
+ // dist/experimental/crs/datum-table.js
281
+ var datums = {
282
+ wgs84: {
283
+ towgs84: "0,0,0",
284
+ ellipse: "WGS84",
285
+ datumName: "WGS84"
286
+ },
287
+ ch1903: {
288
+ towgs84: "674.374,15.056,405.346",
289
+ ellipse: "bessel",
290
+ datumName: "swiss"
291
+ },
292
+ ggrs87: {
293
+ towgs84: "-199.87,74.79,246.62",
294
+ ellipse: "GRS80",
295
+ datumName: "Greek_Geodetic_Reference_System_1987"
296
+ },
297
+ nad83: {
298
+ towgs84: "0,0,0",
299
+ ellipse: "GRS80",
300
+ datumName: "North_American_Datum_1983"
301
+ },
302
+ nad27: {
303
+ nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
304
+ ellipse: "clrk66",
305
+ datumName: "North_American_Datum_1927"
306
+ },
307
+ potsdam: {
308
+ towgs84: "598.1,73.7,418.2,0.202,0.045,-2.455,6.7",
309
+ ellipse: "bessel",
310
+ datumName: "Potsdam Rauenberg 1950 DHDN"
311
+ },
312
+ carthage: {
313
+ towgs84: "-263.0,6.0,431.0",
314
+ ellipse: "clrk80ign",
315
+ datumName: "Carthage 1934 Tunisia"
316
+ },
317
+ hermannskogel: {
318
+ towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
319
+ ellipse: "bessel",
320
+ datumName: "Hermannskogel"
321
+ },
322
+ mgi: {
323
+ towgs84: "577.326,90.129,463.919,5.137,1.474,5.297,2.4232",
324
+ ellipse: "bessel",
325
+ datumName: "Militar-Geographische Institut"
326
+ },
327
+ osni52: {
328
+ towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
329
+ ellipse: "airy",
330
+ datumName: "Irish National"
331
+ },
332
+ ire65: {
333
+ towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
334
+ ellipse: "mod_airy",
335
+ datumName: "Ireland 1965"
336
+ },
337
+ rassadiran: {
338
+ towgs84: "-133.63,-157.5,-158.62",
339
+ ellipse: "intl",
340
+ datumName: "Rassadiran"
341
+ },
342
+ nzgd49: {
343
+ towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
344
+ ellipse: "intl",
345
+ datumName: "New Zealand Geodetic Datum 1949"
346
+ },
347
+ osgb36: {
348
+ towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
349
+ ellipse: "airy",
350
+ datumName: "Ordnance Survey of Great Britain 1936"
351
+ },
352
+ s_jtsk: {
353
+ towgs84: "589,76,480",
354
+ ellipse: "bessel",
355
+ datumName: "S-JTSK (Ferro)"
356
+ },
357
+ beduaram: {
358
+ towgs84: "-106,-87,188",
359
+ ellipse: "clrk80",
360
+ datumName: "Beduaram"
361
+ },
362
+ gunung_segara: {
363
+ towgs84: "-403,684,41",
364
+ ellipse: "bessel",
365
+ datumName: "Gunung Segara Jakarta"
366
+ },
367
+ rnb72: {
368
+ towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
369
+ ellipse: "intl",
370
+ datumName: "Reseau National Belge 1972"
371
+ },
372
+ EPSG_5451: {
373
+ towgs84: "6.41,-49.05,-11.28,1.5657,0.5242,6.9718,-5.7649"
374
+ },
375
+ IGNF_LURESG: {
376
+ towgs84: "-192.986,13.673,-39.309,-0.4099,-2.9332,2.6881,0.43"
377
+ },
378
+ EPSG_4614: {
379
+ towgs84: "-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065"
380
+ },
381
+ EPSG_4615: {
382
+ towgs84: "-494.088,-312.129,279.877,-1.423,-1.013,1.59,-0.748"
383
+ },
384
+ ESRI_37241: {
385
+ towgs84: "-76.822,257.457,-12.817,2.136,-0.033,-2.392,-0.031"
386
+ },
387
+ ESRI_37249: {
388
+ towgs84: "-440.296,58.548,296.265,1.128,10.202,4.559,-0.438"
389
+ },
390
+ ESRI_37245: {
391
+ towgs84: "-511.151,-181.269,139.609,1.05,2.703,1.798,3.071"
392
+ },
393
+ EPSG_4178: {
394
+ towgs84: "24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01"
395
+ },
396
+ EPSG_4622: {
397
+ towgs84: "-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,1.8984"
398
+ },
399
+ EPSG_4625: {
400
+ towgs84: "126.93,547.94,130.41,-2.7867,5.1612,-0.8584,13.8227"
401
+ },
402
+ EPSG_5252: {
403
+ towgs84: "0.023,0.036,-0.068,0.00176,0.00912,-0.01136,0.00439"
404
+ },
405
+ EPSG_4314: {
406
+ towgs84: "597.1,71.4,412.1,0.894,0.068,-1.563,7.58"
407
+ },
408
+ EPSG_4282: {
409
+ towgs84: "-178.3,-316.7,-131.5,5.278,6.077,10.979,19.166"
410
+ },
411
+ EPSG_4231: {
412
+ towgs84: "-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218"
413
+ },
414
+ EPSG_4274: {
415
+ towgs84: "-230.994,102.591,25.199,0.633,-0.239,0.9,1.95"
416
+ },
417
+ EPSG_4134: {
418
+ towgs84: "-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006"
419
+ },
420
+ EPSG_4254: {
421
+ towgs84: "18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013"
422
+ },
423
+ EPSG_4159: {
424
+ towgs84: "-194.513,-63.978,-25.759,-3.4027,3.756,-3.352,-0.9175"
425
+ },
426
+ EPSG_4687: {
427
+ towgs84: "0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093"
428
+ },
429
+ EPSG_4227: {
430
+ towgs84: "-83.58,-397.54,458.78,-17.595,-2.847,4.256,3.225"
431
+ },
432
+ EPSG_4746: {
433
+ towgs84: "599.4,72.4,419.2,-0.062,-0.022,-2.723,6.46"
434
+ },
435
+ EPSG_4745: {
436
+ towgs84: "612.4,77,440.2,-0.054,0.057,-2.797,2.55"
437
+ },
438
+ EPSG_6311: {
439
+ towgs84: "8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926"
440
+ },
441
+ EPSG_4289: {
442
+ towgs84: "565.7381,50.4018,465.2904,-0.395026,0.330772,-1.876073,4.07244"
443
+ },
444
+ EPSG_4230: {
445
+ towgs84: "-68.863,-134.888,-111.49,-0.53,-0.14,0.57,-3.4"
446
+ },
447
+ EPSG_4154: {
448
+ towgs84: "-123.02,-158.95,-168.47"
449
+ },
450
+ EPSG_4156: {
451
+ towgs84: "570.8,85.7,462.8,4.998,1.587,5.261,3.56"
452
+ },
453
+ EPSG_4299: {
454
+ towgs84: "482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"
455
+ },
456
+ EPSG_4179: {
457
+ towgs84: "33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"
458
+ },
459
+ EPSG_4313: {
460
+ towgs84: "-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747"
461
+ },
462
+ EPSG_4194: {
463
+ towgs84: "163.511,127.533,-159.789"
464
+ },
465
+ EPSG_4195: {
466
+ towgs84: "105,326,-102.5"
467
+ },
468
+ EPSG_4196: {
469
+ towgs84: "-45,417,-3.5"
470
+ },
471
+ EPSG_4611: {
472
+ towgs84: "-162.619,-276.959,-161.764,0.067753,-2.243648,-1.158828,-1.094246"
473
+ },
474
+ EPSG_4633: {
475
+ towgs84: "137.092,131.66,91.475,-1.9436,-11.5993,-4.3321,-7.4824"
476
+ },
477
+ EPSG_4641: {
478
+ towgs84: "-408.809,366.856,-412.987,1.8842,-0.5308,2.1655,-121.0993"
479
+ },
480
+ EPSG_4643: {
481
+ towgs84: "-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002"
482
+ },
483
+ EPSG_4300: {
484
+ towgs84: "482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"
485
+ },
486
+ EPSG_4188: {
487
+ towgs84: "482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"
488
+ },
489
+ EPSG_4660: {
490
+ towgs84: "982.6087,552.753,-540.873,6.681627,-31.611492,-19.848161,16.805"
491
+ },
492
+ EPSG_4662: {
493
+ towgs84: "97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259"
494
+ },
495
+ EPSG_3906: {
496
+ towgs84: "577.88891,165.22205,391.18289,4.9145,-0.94729,-13.05098,7.78664"
497
+ },
498
+ EPSG_4307: {
499
+ towgs84: "-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547"
500
+ },
501
+ EPSG_6892: {
502
+ towgs84: "-76.269,-16.683,68.562,-6.275,10.536,-4.286,-13.686"
503
+ },
504
+ EPSG_4690: {
505
+ towgs84: "221.597,152.441,176.523,2.403,1.3893,0.884,11.4648"
506
+ },
507
+ EPSG_4691: {
508
+ towgs84: "218.769,150.75,176.75,3.5231,2.0037,1.288,10.9817"
509
+ },
510
+ EPSG_4629: {
511
+ towgs84: "72.51,345.411,79.241,-1.5862,-0.8826,-0.5495,1.3653"
512
+ },
513
+ EPSG_4630: {
514
+ towgs84: "165.804,216.213,180.26,-0.6251,-0.4515,-0.0721,7.4111"
515
+ },
516
+ EPSG_4692: {
517
+ towgs84: "217.109,86.452,23.711,0.0183,-0.0003,0.007,-0.0093"
518
+ },
519
+ EPSG_9333: {
520
+ towgs84: "0,0,0,-0.008393,0.000749,-0.010276,0"
521
+ },
522
+ EPSG_9059: {
523
+ towgs84: "0,0,0"
524
+ },
525
+ EPSG_4312: {
526
+ towgs84: "601.705,84.263,485.227,4.7354,1.3145,5.393,-2.3887"
527
+ },
528
+ EPSG_4123: {
529
+ towgs84: "-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496"
530
+ },
531
+ EPSG_4309: {
532
+ towgs84: "-124.45,183.74,44.64,-0.4384,0.5446,-0.9706,-2.1365"
533
+ },
534
+ ESRI_104106: {
535
+ towgs84: "-283.088,-70.693,117.445,-1.157,0.059,-0.652,-4.058"
536
+ },
537
+ EPSG_4281: {
538
+ towgs84: "-219.247,-73.802,269.529"
539
+ },
540
+ EPSG_4322: {
541
+ towgs84: "0,0,4.5"
542
+ },
543
+ EPSG_4324: {
544
+ towgs84: "0,0,1.9"
545
+ },
546
+ EPSG_4284: {
547
+ towgs84: "43.822,-108.842,-119.585,1.455,-0.761,0.737,0.549"
548
+ },
549
+ EPSG_4277: {
550
+ towgs84: "446.448,-125.157,542.06,0.15,0.247,0.842,-20.489"
551
+ },
552
+ EPSG_4207: {
553
+ towgs84: "-282.1,-72.2,120,-1.529,0.145,-0.89,-4.46"
554
+ },
555
+ EPSG_4688: {
556
+ towgs84: "347.175,1077.618,2623.677,33.9058,-70.6776,9.4013,186.0647"
557
+ },
558
+ EPSG_4689: {
559
+ towgs84: "410.793,54.542,80.501,-2.5596,-2.3517,-0.6594,17.3218"
560
+ },
561
+ EPSG_4720: {
562
+ towgs84: "0,0,4.5"
563
+ },
564
+ EPSG_4273: {
565
+ towgs84: "278.3,93,474.5,7.889,0.05,-6.61,6.21"
566
+ },
567
+ EPSG_4240: {
568
+ towgs84: "204.64,834.74,293.8"
569
+ },
570
+ EPSG_4817: {
571
+ towgs84: "278.3,93,474.5,7.889,0.05,-6.61,6.21"
572
+ },
573
+ ESRI_104131: {
574
+ towgs84: "426.62,142.62,460.09,4.98,4.49,-12.42,-17.1"
575
+ },
576
+ EPSG_4265: {
577
+ towgs84: "-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68"
578
+ },
579
+ EPSG_4263: {
580
+ towgs84: "-111.92,-87.85,114.5,1.875,0.202,0.219,0.032"
581
+ },
582
+ EPSG_4298: {
583
+ towgs84: "-689.5937,623.84046,-65.93566,-0.02331,1.17094,-0.80054,5.88536"
584
+ },
585
+ EPSG_4270: {
586
+ towgs84: "-253.4392,-148.452,386.5267,0.15605,0.43,-0.1013,-0.0424"
587
+ },
588
+ EPSG_4229: {
589
+ towgs84: "-121.8,98.1,-10.7"
590
+ },
591
+ EPSG_4220: {
592
+ towgs84: "-55.5,-348,-229.2"
593
+ },
594
+ EPSG_4214: {
595
+ towgs84: "12.646,-155.176,-80.863"
596
+ },
597
+ EPSG_4232: {
598
+ towgs84: "-345,3,223"
599
+ },
600
+ EPSG_4238: {
601
+ towgs84: "-1.977,-13.06,-9.993,0.364,0.254,0.689,-1.037"
602
+ },
603
+ EPSG_4168: {
604
+ towgs84: "-170,33,326"
605
+ },
606
+ EPSG_4131: {
607
+ towgs84: "199,931,318.9"
608
+ },
609
+ EPSG_4152: {
610
+ towgs84: "-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"
611
+ },
612
+ EPSG_5228: {
613
+ towgs84: "572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378"
614
+ },
615
+ EPSG_8351: {
616
+ towgs84: "485.021,169.465,483.839,7.786342,4.397554,4.102655,0"
617
+ },
618
+ EPSG_4683: {
619
+ towgs84: "-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"
620
+ },
621
+ EPSG_4133: {
622
+ towgs84: "0,0,0"
623
+ },
624
+ EPSG_7373: {
625
+ towgs84: "0.819,-0.5762,-1.6446,-0.00378,-0.03317,0.00318,0.0693"
626
+ },
627
+ EPSG_9075: {
628
+ towgs84: "-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"
629
+ },
630
+ EPSG_9072: {
631
+ towgs84: "-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"
632
+ },
633
+ EPSG_9294: {
634
+ towgs84: "1.16835,-1.42001,-2.24431,-0.00822,-0.05508,0.01818,0.23388"
635
+ },
636
+ EPSG_4212: {
637
+ towgs84: "-267.434,173.496,181.814,-13.4704,8.7154,7.3926,14.7492"
638
+ },
639
+ EPSG_4191: {
640
+ towgs84: "-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703"
641
+ },
642
+ EPSG_4237: {
643
+ towgs84: "52.684,-71.194,-13.975,-0.312,-0.1063,-0.3729,1.0191"
644
+ },
645
+ EPSG_4740: {
646
+ towgs84: "-1.08,-0.27,-0.9"
647
+ },
648
+ EPSG_4124: {
649
+ towgs84: "419.3836,99.3335,591.3451,0.850389,1.817277,-7.862238,-0.99496"
650
+ },
651
+ EPSG_5681: {
652
+ towgs84: "584.9636,107.7175,413.8067,1.1155,0.2824,-3.1384,7.9922"
653
+ },
654
+ EPSG_4141: {
655
+ towgs84: "23.772,17.49,17.859,-0.3132,-1.85274,1.67299,-5.4262"
656
+ },
657
+ EPSG_4204: {
658
+ towgs84: "-85.645,-273.077,-79.708,2.289,-1.421,2.532,3.194"
659
+ },
660
+ EPSG_4319: {
661
+ towgs84: "226.702,-193.337,-35.371,-2.229,-4.391,9.238,0.9798"
662
+ },
663
+ EPSG_4200: {
664
+ towgs84: "24.82,-131.21,-82.66"
665
+ },
666
+ EPSG_4130: {
667
+ towgs84: "0,0,0"
668
+ },
669
+ EPSG_4127: {
670
+ towgs84: "-82.875,-57.097,-156.768,-2.158,1.524,-0.982,-0.359"
671
+ },
672
+ EPSG_4149: {
673
+ towgs84: "674.374,15.056,405.346"
674
+ },
675
+ EPSG_4617: {
676
+ towgs84: "-0.991,1.9072,0.5129,0.02579,0.00965,0.01166,0"
677
+ },
678
+ EPSG_4663: {
679
+ towgs84: "-210.502,-66.902,-48.476,2.094,-15.067,-5.817,0.485"
680
+ },
681
+ EPSG_4664: {
682
+ towgs84: "-211.939,137.626,58.3,-0.089,0.251,0.079,0.384"
683
+ },
684
+ EPSG_4665: {
685
+ towgs84: "-105.854,165.589,-38.312,-0.003,-0.026,0.024,-0.048"
686
+ },
687
+ EPSG_4666: {
688
+ towgs84: "631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"
689
+ },
690
+ EPSG_4756: {
691
+ towgs84: "-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188"
692
+ },
693
+ EPSG_4723: {
694
+ towgs84: "-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925"
695
+ },
696
+ EPSG_4726: {
697
+ towgs84: "8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081"
698
+ },
699
+ EPSG_4267: {
700
+ towgs84: "-8.0,160.0,176.0"
701
+ },
702
+ EPSG_5365: {
703
+ towgs84: "-0.16959,0.35312,0.51846,0.03385,-0.16325,0.03446,0.03693"
704
+ },
705
+ EPSG_4218: {
706
+ towgs84: "304.5,306.5,-318.1"
707
+ },
708
+ EPSG_4242: {
709
+ towgs84: "-33.722,153.789,94.959,-8.581,-4.478,4.54,8.95"
710
+ },
711
+ EPSG_4216: {
712
+ towgs84: "-292.295,248.758,429.447,4.9971,2.99,6.6906,1.0289"
713
+ },
714
+ ESRI_104105: {
715
+ towgs84: "631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"
716
+ },
717
+ ESRI_104129: {
718
+ towgs84: "0,0,0"
719
+ },
720
+ EPSG_4673: {
721
+ towgs84: "174.05,-25.49,112.57"
722
+ },
723
+ EPSG_4202: {
724
+ towgs84: "-124,-60,154"
725
+ },
726
+ EPSG_4203: {
727
+ towgs84: "-117.763,-51.51,139.061,0.292,0.443,0.277,-0.191"
728
+ },
729
+ EPSG_3819: {
730
+ towgs84: "595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408"
731
+ },
732
+ EPSG_8694: {
733
+ towgs84: "-93.799,-132.737,-219.073,-1.844,0.648,-6.37,-0.169"
734
+ },
735
+ EPSG_4145: {
736
+ towgs84: "275.57,676.78,229.6"
737
+ },
738
+ EPSG_4283: {
739
+ towgs84: "0.06155,-0.01087,-0.04019,0.039492,0.032722,0.032898,-0.009994"
740
+ },
741
+ EPSG_4317: {
742
+ towgs84: "2.3287,-147.0425,-92.0802,-0.309248,0.324822,0.497299,5.689063"
743
+ },
744
+ EPSG_4272: {
745
+ towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993"
746
+ },
747
+ EPSG_4248: {
748
+ towgs84: "-307.7,265.3,-363.5"
749
+ },
750
+ EPSG_5561: {
751
+ towgs84: "24,-121,-76"
752
+ },
753
+ EPSG_5233: {
754
+ towgs84: "-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338"
755
+ },
756
+ ESRI_104130: {
757
+ towgs84: "-86,-98,-119"
758
+ },
759
+ ESRI_104102: {
760
+ towgs84: "682,-203,480"
761
+ },
762
+ ESRI_37207: {
763
+ towgs84: "7,-10,-26"
764
+ },
765
+ EPSG_4675: {
766
+ towgs84: "59.935,118.4,-10.871"
767
+ },
768
+ ESRI_104109: {
769
+ towgs84: "-89.121,-348.182,260.871"
770
+ },
771
+ ESRI_104112: {
772
+ towgs84: "-185.583,-230.096,281.361"
773
+ },
774
+ ESRI_104113: {
775
+ towgs84: "25.1,-275.6,222.6"
776
+ },
777
+ IGNF_WGS72G: {
778
+ towgs84: "0,12,6"
779
+ },
780
+ IGNF_NTFG: {
781
+ towgs84: "-168,-60,320"
782
+ },
783
+ IGNF_EFATE57G: {
784
+ towgs84: "-127,-769,472"
785
+ },
786
+ IGNF_PGP50G: {
787
+ towgs84: "324.8,153.6,172.1"
788
+ },
789
+ IGNF_REUN47G: {
790
+ towgs84: "94,-948,-1262"
791
+ },
792
+ IGNF_CSG67G: {
793
+ towgs84: "-186,230,110"
794
+ },
795
+ IGNF_GUAD48G: {
796
+ towgs84: "-467,-16,-300"
797
+ },
798
+ IGNF_TAHI51G: {
799
+ towgs84: "162,117,154"
800
+ },
801
+ IGNF_TAHAAG: {
802
+ towgs84: "65,342,77"
803
+ },
804
+ IGNF_NUKU72G: {
805
+ towgs84: "84,274,65"
806
+ },
807
+ IGNF_PETRELS72G: {
808
+ towgs84: "365,194,166"
809
+ },
810
+ IGNF_WALL78G: {
811
+ towgs84: "253,-133,-127"
812
+ },
813
+ IGNF_MAYO50G: {
814
+ towgs84: "-382,-59,-262"
815
+ },
816
+ IGNF_TANNAG: {
817
+ towgs84: "-139,-967,436"
818
+ },
819
+ IGNF_IGN72G: {
820
+ towgs84: "-13,-348,292"
821
+ },
822
+ IGNF_ATIGG: {
823
+ towgs84: "1118,23,66"
824
+ },
825
+ IGNF_FANGA84G: {
826
+ towgs84: "150.57,158.33,118.32"
827
+ },
828
+ IGNF_RUSAT84G: {
829
+ towgs84: "202.13,174.6,-15.74"
830
+ },
831
+ IGNF_KAUE70G: {
832
+ towgs84: "126.74,300.1,-75.49"
833
+ },
834
+ IGNF_MOP90G: {
835
+ towgs84: "-10.8,-1.8,12.77"
836
+ },
837
+ IGNF_MHPF67G: {
838
+ towgs84: "338.08,212.58,-296.17"
839
+ },
840
+ IGNF_TAHI79G: {
841
+ towgs84: "160.61,116.05,153.69"
842
+ },
843
+ IGNF_ANAA92G: {
844
+ towgs84: "1.5,3.84,4.81"
845
+ },
846
+ IGNF_MARQUI72G: {
847
+ towgs84: "330.91,-13.92,58.56"
848
+ },
849
+ IGNF_APAT86G: {
850
+ towgs84: "143.6,197.82,74.05"
851
+ },
852
+ IGNF_TUBU69G: {
853
+ towgs84: "237.17,171.61,-77.84"
854
+ },
855
+ IGNF_STPM50G: {
856
+ towgs84: "11.363,424.148,373.13"
857
+ },
858
+ EPSG_4150: {
859
+ towgs84: "674.374,15.056,405.346"
860
+ },
861
+ EPSG_4754: {
862
+ towgs84: "-208.4058,-109.8777,-2.5764"
863
+ },
864
+ ESRI_104101: {
865
+ towgs84: "372.87,149.23,585.29"
866
+ },
867
+ EPSG_4693: {
868
+ towgs84: "0,-0.15,0.68"
869
+ },
870
+ EPSG_6207: {
871
+ towgs84: "293.17,726.18,245.36"
872
+ },
873
+ EPSG_4153: {
874
+ towgs84: "-133.63,-157.5,-158.62"
875
+ },
876
+ EPSG_4132: {
877
+ towgs84: "-241.54,-163.64,396.06"
878
+ },
879
+ EPSG_4221: {
880
+ towgs84: "-154.5,150.7,100.4"
881
+ },
882
+ EPSG_4266: {
883
+ towgs84: "-80.7,-132.5,41.1"
884
+ },
885
+ EPSG_4193: {
886
+ towgs84: "-70.9,-151.8,-41.4"
887
+ },
888
+ EPSG_5340: {
889
+ towgs84: "-0.41,0.46,-0.35"
890
+ },
891
+ EPSG_4246: {
892
+ towgs84: "-294.7,-200.1,525.5"
893
+ },
894
+ EPSG_4318: {
895
+ towgs84: "-3.2,-5.7,2.8"
896
+ },
897
+ EPSG_4121: {
898
+ towgs84: "-199.87,74.79,246.62"
899
+ },
900
+ EPSG_4223: {
901
+ towgs84: "-260.1,5.5,432.2"
902
+ },
903
+ EPSG_4158: {
904
+ towgs84: "-0.465,372.095,171.736"
905
+ },
906
+ EPSG_4285: {
907
+ towgs84: "-128.16,-282.42,21.93"
908
+ },
909
+ EPSG_4613: {
910
+ towgs84: "-404.78,685.68,45.47"
911
+ },
912
+ EPSG_4607: {
913
+ towgs84: "195.671,332.517,274.607"
914
+ },
915
+ EPSG_4475: {
916
+ towgs84: "-381.788,-57.501,-256.673"
917
+ },
918
+ EPSG_4208: {
919
+ towgs84: "-157.84,308.54,-146.6"
920
+ },
921
+ EPSG_4743: {
922
+ towgs84: "70.995,-335.916,262.898"
923
+ },
924
+ EPSG_4710: {
925
+ towgs84: "-323.65,551.39,-491.22"
926
+ },
927
+ EPSG_7881: {
928
+ towgs84: "-0.077,0.079,0.086"
929
+ },
930
+ EPSG_4682: {
931
+ towgs84: "283.729,735.942,261.143"
932
+ },
933
+ EPSG_4739: {
934
+ towgs84: "-156,-271,-189"
935
+ },
936
+ EPSG_4679: {
937
+ towgs84: "-80.01,253.26,291.19"
938
+ },
939
+ EPSG_4750: {
940
+ towgs84: "-56.263,16.136,-22.856"
941
+ },
942
+ EPSG_4644: {
943
+ towgs84: "-10.18,-350.43,291.37"
944
+ },
945
+ EPSG_4695: {
946
+ towgs84: "-103.746,-9.614,-255.95"
947
+ },
948
+ EPSG_4292: {
949
+ towgs84: "-355,21,72"
950
+ },
951
+ EPSG_4302: {
952
+ towgs84: "-61.702,284.488,472.052"
953
+ },
954
+ EPSG_4143: {
955
+ towgs84: "-124.76,53,466.79"
956
+ },
957
+ EPSG_4606: {
958
+ towgs84: "-153,153,307"
959
+ },
960
+ EPSG_4699: {
961
+ towgs84: "-770.1,158.4,-498.2"
962
+ },
963
+ EPSG_4247: {
964
+ towgs84: "-273.5,110.6,-357.9"
965
+ },
966
+ EPSG_4160: {
967
+ towgs84: "8.88,184.86,106.69"
968
+ },
969
+ EPSG_4161: {
970
+ towgs84: "-233.43,6.65,173.64"
971
+ },
972
+ EPSG_9251: {
973
+ towgs84: "-9.5,122.9,138.2"
974
+ },
975
+ EPSG_9253: {
976
+ towgs84: "-78.1,101.6,133.3"
977
+ },
978
+ EPSG_4297: {
979
+ towgs84: "-198.383,-240.517,-107.909"
980
+ },
981
+ EPSG_4269: {
982
+ towgs84: "0,0,0"
983
+ },
984
+ EPSG_4301: {
985
+ towgs84: "-147,506,687"
986
+ },
987
+ EPSG_4618: {
988
+ towgs84: "-59,-11,-52"
989
+ },
990
+ EPSG_4612: {
991
+ towgs84: "0,0,0"
992
+ },
993
+ EPSG_4678: {
994
+ towgs84: "44.585,-131.212,-39.544"
995
+ },
996
+ EPSG_4250: {
997
+ towgs84: "-130,29,364"
998
+ },
999
+ EPSG_4144: {
1000
+ towgs84: "214,804,268"
1001
+ },
1002
+ EPSG_4147: {
1003
+ towgs84: "-17.51,-108.32,-62.39"
1004
+ },
1005
+ EPSG_4259: {
1006
+ towgs84: "-254.1,-5.36,-100.29"
1007
+ },
1008
+ EPSG_4164: {
1009
+ towgs84: "-76,-138,67"
1010
+ },
1011
+ EPSG_4211: {
1012
+ towgs84: "-378.873,676.002,-46.255"
1013
+ },
1014
+ EPSG_4182: {
1015
+ towgs84: "-422.651,-172.995,84.02"
1016
+ },
1017
+ EPSG_4224: {
1018
+ towgs84: "-143.87,243.37,-33.52"
1019
+ },
1020
+ EPSG_4225: {
1021
+ towgs84: "-205.57,168.77,-4.12"
1022
+ },
1023
+ EPSG_5527: {
1024
+ towgs84: "-67.35,3.88,-38.22"
1025
+ },
1026
+ EPSG_4752: {
1027
+ towgs84: "98,390,-22"
1028
+ },
1029
+ EPSG_4310: {
1030
+ towgs84: "-30,190,89"
1031
+ },
1032
+ EPSG_9248: {
1033
+ towgs84: "-192.26,65.72,132.08"
1034
+ },
1035
+ EPSG_4680: {
1036
+ towgs84: "124.5,-63.5,-281"
1037
+ },
1038
+ EPSG_4701: {
1039
+ towgs84: "-79.9,-158,-168.9"
1040
+ },
1041
+ EPSG_4706: {
1042
+ towgs84: "-146.21,112.63,4.05"
1043
+ },
1044
+ EPSG_4805: {
1045
+ towgs84: "682,-203,480"
1046
+ },
1047
+ EPSG_4201: {
1048
+ towgs84: "-165,-11,206"
1049
+ },
1050
+ EPSG_4210: {
1051
+ towgs84: "-157,-2,-299"
1052
+ },
1053
+ EPSG_4183: {
1054
+ towgs84: "-104,167,-38"
1055
+ },
1056
+ EPSG_4139: {
1057
+ towgs84: "11,72,-101"
1058
+ },
1059
+ EPSG_4668: {
1060
+ towgs84: "-86,-98,-119"
1061
+ },
1062
+ EPSG_4717: {
1063
+ towgs84: "-2,151,181"
1064
+ },
1065
+ EPSG_4732: {
1066
+ towgs84: "102,52,-38"
1067
+ },
1068
+ EPSG_4280: {
1069
+ towgs84: "-377,681,-50"
1070
+ },
1071
+ EPSG_4209: {
1072
+ towgs84: "-138,-105,-289"
1073
+ },
1074
+ EPSG_4261: {
1075
+ towgs84: "31,146,47"
1076
+ },
1077
+ EPSG_4658: {
1078
+ towgs84: "-73,46,-86"
1079
+ },
1080
+ EPSG_4721: {
1081
+ towgs84: "265.025,384.929,-194.046"
1082
+ },
1083
+ EPSG_4222: {
1084
+ towgs84: "-136,-108,-292"
1085
+ },
1086
+ EPSG_4601: {
1087
+ towgs84: "-255,-15,71"
1088
+ },
1089
+ EPSG_4602: {
1090
+ towgs84: "725,685,536"
1091
+ },
1092
+ EPSG_4603: {
1093
+ towgs84: "72,213.7,93"
1094
+ },
1095
+ EPSG_4605: {
1096
+ towgs84: "9,183,236"
1097
+ },
1098
+ EPSG_4621: {
1099
+ towgs84: "137,248,-430"
1100
+ },
1101
+ EPSG_4657: {
1102
+ towgs84: "-28,199,5"
1103
+ },
1104
+ EPSG_4316: {
1105
+ towgs84: "103.25,-100.4,-307.19"
1106
+ },
1107
+ EPSG_4642: {
1108
+ towgs84: "-13,-348,292"
1109
+ },
1110
+ EPSG_4698: {
1111
+ towgs84: "145,-187,103"
1112
+ },
1113
+ EPSG_4192: {
1114
+ towgs84: "-206.1,-174.7,-87.7"
1115
+ },
1116
+ EPSG_4311: {
1117
+ towgs84: "-265,120,-358"
1118
+ },
1119
+ EPSG_4135: {
1120
+ towgs84: "58,-283,-182"
1121
+ },
1122
+ ESRI_104138: {
1123
+ towgs84: "198,-226,-347"
1124
+ },
1125
+ EPSG_4245: {
1126
+ towgs84: "-11,851,5"
1127
+ },
1128
+ EPSG_4142: {
1129
+ towgs84: "-125,53,467"
1130
+ },
1131
+ EPSG_4213: {
1132
+ towgs84: "-106,-87,188"
1133
+ },
1134
+ EPSG_4253: {
1135
+ towgs84: "-133,-77,-51"
1136
+ },
1137
+ EPSG_4129: {
1138
+ towgs84: "-132,-110,-335"
1139
+ },
1140
+ EPSG_4713: {
1141
+ towgs84: "-77,-128,142"
1142
+ },
1143
+ EPSG_4239: {
1144
+ towgs84: "217,823,299"
1145
+ },
1146
+ EPSG_4146: {
1147
+ towgs84: "295,736,257"
1148
+ },
1149
+ EPSG_4155: {
1150
+ towgs84: "-83,37,124"
1151
+ },
1152
+ EPSG_4165: {
1153
+ towgs84: "-173,253,27"
1154
+ },
1155
+ EPSG_4672: {
1156
+ towgs84: "175,-38,113"
1157
+ },
1158
+ EPSG_4236: {
1159
+ towgs84: "-637,-549,-203"
1160
+ },
1161
+ EPSG_4251: {
1162
+ towgs84: "-90,40,88"
1163
+ },
1164
+ EPSG_4271: {
1165
+ towgs84: "-2,374,172"
1166
+ },
1167
+ EPSG_4175: {
1168
+ towgs84: "-88,4,101"
1169
+ },
1170
+ EPSG_4716: {
1171
+ towgs84: "298,-304,-375"
1172
+ },
1173
+ EPSG_4315: {
1174
+ towgs84: "-23,259,-9"
1175
+ },
1176
+ EPSG_4744: {
1177
+ towgs84: "-242.2,-144.9,370.3"
1178
+ },
1179
+ EPSG_4244: {
1180
+ towgs84: "-97,787,86"
1181
+ },
1182
+ EPSG_4293: {
1183
+ towgs84: "616,97,-251"
1184
+ },
1185
+ EPSG_4714: {
1186
+ towgs84: "-127,-769,472"
1187
+ },
1188
+ EPSG_4736: {
1189
+ towgs84: "260,12,-147"
1190
+ },
1191
+ EPSG_6883: {
1192
+ towgs84: "-235,-110,393"
1193
+ },
1194
+ EPSG_6894: {
1195
+ towgs84: "-63,176,185"
1196
+ },
1197
+ EPSG_4205: {
1198
+ towgs84: "-43,-163,45"
1199
+ },
1200
+ EPSG_4256: {
1201
+ towgs84: "41,-220,-134"
1202
+ },
1203
+ EPSG_4262: {
1204
+ towgs84: "639,405,60"
1205
+ },
1206
+ EPSG_4604: {
1207
+ towgs84: "174,359,365"
1208
+ },
1209
+ EPSG_4169: {
1210
+ towgs84: "-115,118,426"
1211
+ },
1212
+ EPSG_4620: {
1213
+ towgs84: "-106,-129,165"
1214
+ },
1215
+ EPSG_4184: {
1216
+ towgs84: "-203,141,53"
1217
+ },
1218
+ EPSG_4616: {
1219
+ towgs84: "-289,-124,60"
1220
+ },
1221
+ EPSG_9403: {
1222
+ towgs84: "-307,-92,127"
1223
+ },
1224
+ EPSG_4684: {
1225
+ towgs84: "-133,-321,50"
1226
+ },
1227
+ EPSG_4708: {
1228
+ towgs84: "-491,-22,435"
1229
+ },
1230
+ EPSG_4707: {
1231
+ towgs84: "114,-116,-333"
1232
+ },
1233
+ EPSG_4709: {
1234
+ towgs84: "145,75,-272"
1235
+ },
1236
+ EPSG_4712: {
1237
+ towgs84: "-205,107,53"
1238
+ },
1239
+ EPSG_4711: {
1240
+ towgs84: "124,-234,-25"
1241
+ },
1242
+ EPSG_4718: {
1243
+ towgs84: "230,-199,-752"
1244
+ },
1245
+ EPSG_4719: {
1246
+ towgs84: "211,147,111"
1247
+ },
1248
+ EPSG_4724: {
1249
+ towgs84: "208,-435,-229"
1250
+ },
1251
+ EPSG_4725: {
1252
+ towgs84: "189,-79,-202"
1253
+ },
1254
+ EPSG_4735: {
1255
+ towgs84: "647,1777,-1124"
1256
+ },
1257
+ EPSG_4722: {
1258
+ towgs84: "-794,119,-298"
1259
+ },
1260
+ EPSG_4728: {
1261
+ towgs84: "-307,-92,127"
1262
+ },
1263
+ EPSG_4734: {
1264
+ towgs84: "-632,438,-609"
1265
+ },
1266
+ EPSG_4727: {
1267
+ towgs84: "912,-58,1227"
1268
+ },
1269
+ EPSG_4729: {
1270
+ towgs84: "185,165,42"
1271
+ },
1272
+ EPSG_4730: {
1273
+ towgs84: "170,42,84"
1274
+ },
1275
+ EPSG_4733: {
1276
+ towgs84: "276,-57,149"
1277
+ },
1278
+ ESRI_37218: {
1279
+ towgs84: "230,-199,-752"
1280
+ },
1281
+ ESRI_37240: {
1282
+ towgs84: "-7,215,225"
1283
+ },
1284
+ ESRI_37221: {
1285
+ towgs84: "252,-209,-751"
1286
+ },
1287
+ ESRI_4305: {
1288
+ towgs84: "-123,-206,219"
1289
+ },
1290
+ ESRI_104139: {
1291
+ towgs84: "-73,-247,227"
1292
+ },
1293
+ EPSG_4748: {
1294
+ towgs84: "51,391,-36"
1295
+ },
1296
+ EPSG_4219: {
1297
+ towgs84: "-384,664,-48"
1298
+ },
1299
+ EPSG_4255: {
1300
+ towgs84: "-333,-222,114"
1301
+ },
1302
+ EPSG_4257: {
1303
+ towgs84: "-587.8,519.75,145.76"
1304
+ },
1305
+ EPSG_4646: {
1306
+ towgs84: "-963,510,-359"
1307
+ },
1308
+ EPSG_6881: {
1309
+ towgs84: "-24,-203,268"
1310
+ },
1311
+ EPSG_6882: {
1312
+ towgs84: "-183,-15,273"
1313
+ },
1314
+ EPSG_4715: {
1315
+ towgs84: "-104,-129,239"
1316
+ },
1317
+ IGNF_RGF93GDD: {
1318
+ towgs84: "0,0,0"
1319
+ },
1320
+ IGNF_RGM04GDD: {
1321
+ towgs84: "0,0,0"
1322
+ },
1323
+ IGNF_RGSPM06GDD: {
1324
+ towgs84: "0,0,0"
1325
+ },
1326
+ IGNF_RGTAAF07GDD: {
1327
+ towgs84: "0,0,0"
1328
+ },
1329
+ IGNF_RGFG95GDD: {
1330
+ towgs84: "0,0,0"
1331
+ },
1332
+ IGNF_RGNCG: {
1333
+ towgs84: "0,0,0"
1334
+ },
1335
+ IGNF_RGPFGDD: {
1336
+ towgs84: "0,0,0"
1337
+ },
1338
+ IGNF_ETRS89G: {
1339
+ towgs84: "0,0,0"
1340
+ },
1341
+ IGNF_RGR92GDD: {
1342
+ towgs84: "0,0,0"
1343
+ },
1344
+ EPSG_4173: {
1345
+ towgs84: "0,0,0"
1346
+ },
1347
+ EPSG_4180: {
1348
+ towgs84: "0,0,0"
1349
+ },
1350
+ EPSG_4619: {
1351
+ towgs84: "0,0,0"
1352
+ },
1353
+ EPSG_4667: {
1354
+ towgs84: "0,0,0"
1355
+ },
1356
+ EPSG_4075: {
1357
+ towgs84: "0,0,0"
1358
+ },
1359
+ EPSG_6706: {
1360
+ towgs84: "0,0,0"
1361
+ },
1362
+ EPSG_7798: {
1363
+ towgs84: "0,0,0"
1364
+ },
1365
+ EPSG_4661: {
1366
+ towgs84: "0,0,0"
1367
+ },
1368
+ EPSG_4669: {
1369
+ towgs84: "0,0,0"
1370
+ },
1371
+ EPSG_8685: {
1372
+ towgs84: "0,0,0"
1373
+ },
1374
+ EPSG_4151: {
1375
+ towgs84: "0,0,0"
1376
+ },
1377
+ EPSG_9702: {
1378
+ towgs84: "0,0,0"
1379
+ },
1380
+ EPSG_4758: {
1381
+ towgs84: "0,0,0"
1382
+ },
1383
+ EPSG_4761: {
1384
+ towgs84: "0,0,0"
1385
+ },
1386
+ EPSG_4765: {
1387
+ towgs84: "0,0,0"
1388
+ },
1389
+ EPSG_8997: {
1390
+ towgs84: "0,0,0"
1391
+ },
1392
+ EPSG_4023: {
1393
+ towgs84: "0,0,0"
1394
+ },
1395
+ EPSG_4670: {
1396
+ towgs84: "0,0,0"
1397
+ },
1398
+ EPSG_4694: {
1399
+ towgs84: "0,0,0"
1400
+ },
1401
+ EPSG_4148: {
1402
+ towgs84: "0,0,0"
1403
+ },
1404
+ EPSG_4163: {
1405
+ towgs84: "0,0,0"
1406
+ },
1407
+ EPSG_4167: {
1408
+ towgs84: "0,0,0"
1409
+ },
1410
+ EPSG_4189: {
1411
+ towgs84: "0,0,0"
1412
+ },
1413
+ EPSG_4190: {
1414
+ towgs84: "0,0,0"
1415
+ },
1416
+ EPSG_4176: {
1417
+ towgs84: "0,0,0"
1418
+ },
1419
+ EPSG_4659: {
1420
+ towgs84: "0,0,0"
1421
+ },
1422
+ EPSG_3824: {
1423
+ towgs84: "0,0,0"
1424
+ },
1425
+ EPSG_3889: {
1426
+ towgs84: "0,0,0"
1427
+ },
1428
+ EPSG_4046: {
1429
+ towgs84: "0,0,0"
1430
+ },
1431
+ EPSG_4081: {
1432
+ towgs84: "0,0,0"
1433
+ },
1434
+ EPSG_4558: {
1435
+ towgs84: "0,0,0"
1436
+ },
1437
+ EPSG_4483: {
1438
+ towgs84: "0,0,0"
1439
+ },
1440
+ EPSG_5013: {
1441
+ towgs84: "0,0,0"
1442
+ },
1443
+ EPSG_5264: {
1444
+ towgs84: "0,0,0"
1445
+ },
1446
+ EPSG_5324: {
1447
+ towgs84: "0,0,0"
1448
+ },
1449
+ EPSG_5354: {
1450
+ towgs84: "0,0,0"
1451
+ },
1452
+ EPSG_5371: {
1453
+ towgs84: "0,0,0"
1454
+ },
1455
+ EPSG_5373: {
1456
+ towgs84: "0,0,0"
1457
+ },
1458
+ EPSG_5381: {
1459
+ towgs84: "0,0,0"
1460
+ },
1461
+ EPSG_5393: {
1462
+ towgs84: "0,0,0"
1463
+ },
1464
+ EPSG_5489: {
1465
+ towgs84: "0,0,0"
1466
+ },
1467
+ EPSG_5593: {
1468
+ towgs84: "0,0,0"
1469
+ },
1470
+ EPSG_6135: {
1471
+ towgs84: "0,0,0"
1472
+ },
1473
+ EPSG_6365: {
1474
+ towgs84: "0,0,0"
1475
+ },
1476
+ EPSG_5246: {
1477
+ towgs84: "0,0,0"
1478
+ },
1479
+ EPSG_7886: {
1480
+ towgs84: "0,0,0"
1481
+ },
1482
+ EPSG_8431: {
1483
+ towgs84: "0,0,0"
1484
+ },
1485
+ EPSG_8427: {
1486
+ towgs84: "0,0,0"
1487
+ },
1488
+ EPSG_8699: {
1489
+ towgs84: "0,0,0"
1490
+ },
1491
+ EPSG_8818: {
1492
+ towgs84: "0,0,0"
1493
+ },
1494
+ EPSG_4757: {
1495
+ towgs84: "0,0,0"
1496
+ },
1497
+ EPSG_9140: {
1498
+ towgs84: "0,0,0"
1499
+ },
1500
+ EPSG_8086: {
1501
+ towgs84: "0,0,0"
1502
+ },
1503
+ EPSG_4686: {
1504
+ towgs84: "0,0,0"
1505
+ },
1506
+ EPSG_4737: {
1507
+ towgs84: "0,0,0"
1508
+ },
1509
+ EPSG_4702: {
1510
+ towgs84: "0,0,0"
1511
+ },
1512
+ EPSG_4747: {
1513
+ towgs84: "0,0,0"
1514
+ },
1515
+ EPSG_4749: {
1516
+ towgs84: "0,0,0"
1517
+ },
1518
+ EPSG_4674: {
1519
+ towgs84: "0,0,0"
1520
+ },
1521
+ EPSG_4755: {
1522
+ towgs84: "0,0,0"
1523
+ },
1524
+ EPSG_4759: {
1525
+ towgs84: "0,0,0"
1526
+ },
1527
+ EPSG_4762: {
1528
+ towgs84: "0,0,0"
1529
+ },
1530
+ EPSG_4763: {
1531
+ towgs84: "0,0,0"
1532
+ },
1533
+ EPSG_4764: {
1534
+ towgs84: "0,0,0"
1535
+ },
1536
+ EPSG_4166: {
1537
+ towgs84: "0,0,0"
1538
+ },
1539
+ EPSG_4170: {
1540
+ towgs84: "0,0,0"
1541
+ },
1542
+ EPSG_5546: {
1543
+ towgs84: "0,0,0"
1544
+ },
1545
+ EPSG_7844: {
1546
+ towgs84: "0,0,0"
1547
+ },
1548
+ EPSG_4818: {
1549
+ towgs84: "589,76,480"
1550
+ },
1551
+ EPSG_10328: {
1552
+ towgs84: "0,0,0"
1553
+ },
1554
+ EPSG_9782: {
1555
+ towgs84: "0,0,0"
1556
+ },
1557
+ EPSG_9777: {
1558
+ towgs84: "0,0,0"
1559
+ },
1560
+ EPSG_10690: {
1561
+ towgs84: "0,0,0"
1562
+ },
1563
+ EPSG_10639: {
1564
+ towgs84: "0,0,0"
1565
+ },
1566
+ EPSG_10739: {
1567
+ towgs84: "0,0,0"
1568
+ },
1569
+ EPSG_7686: {
1570
+ towgs84: "0,0,0"
1571
+ },
1572
+ EPSG_8900: {
1573
+ towgs84: "0,0,0"
1574
+ },
1575
+ EPSG_5886: {
1576
+ towgs84: "0,0,0"
1577
+ },
1578
+ EPSG_7683: {
1579
+ towgs84: "0,0,0"
1580
+ },
1581
+ EPSG_6668: {
1582
+ towgs84: "0,0,0"
1583
+ },
1584
+ EPSG_20046: {
1585
+ towgs84: "0,0,0"
1586
+ },
1587
+ EPSG_10299: {
1588
+ towgs84: "0,0,0"
1589
+ },
1590
+ EPSG_10310: {
1591
+ towgs84: "0,0,0"
1592
+ },
1593
+ EPSG_10475: {
1594
+ towgs84: "0,0,0"
1595
+ },
1596
+ EPSG_4742: {
1597
+ towgs84: "0,0,0"
1598
+ },
1599
+ EPSG_10671: {
1600
+ towgs84: "0,0,0"
1601
+ },
1602
+ EPSG_10762: {
1603
+ towgs84: "0,0,0"
1604
+ },
1605
+ EPSG_10725: {
1606
+ towgs84: "0,0,0"
1607
+ },
1608
+ EPSG_10791: {
1609
+ towgs84: "0,0,0"
1610
+ },
1611
+ EPSG_10800: {
1612
+ towgs84: "0,0,0"
1613
+ },
1614
+ EPSG_10305: {
1615
+ towgs84: "0,0,0"
1616
+ },
1617
+ EPSG_10941: {
1618
+ towgs84: "0,0,0"
1619
+ },
1620
+ EPSG_10968: {
1621
+ towgs84: "0,0,0"
1622
+ },
1623
+ EPSG_10875: {
1624
+ towgs84: "0,0,0"
1625
+ },
1626
+ EPSG_6318: {
1627
+ towgs84: "0,0,0"
1628
+ },
1629
+ EPSG_10910: {
1630
+ towgs84: "0,0,0"
1631
+ }
1632
+ };
1633
+ for (const key in datums) {
1634
+ const datum = datums[key];
1635
+ if (!datum.datumName) {
1636
+ continue;
1637
+ }
1638
+ datums[datum.datumName] = datum;
1639
+ }
1640
+ var datum_table_default = datums;
1641
+
1642
+ // dist/experimental/crs/ellipsoid-table.js
1643
+ var ellipsoids = {
1644
+ MERIT: {
1645
+ a: 6378137,
1646
+ rf: 298.257,
1647
+ ellipseName: "MERIT 1983"
1648
+ },
1649
+ SGS85: {
1650
+ a: 6378136,
1651
+ rf: 298.257,
1652
+ ellipseName: "Soviet Geodetic System 85"
1653
+ },
1654
+ GRS80: {
1655
+ a: 6378137,
1656
+ rf: 298.257222101,
1657
+ ellipseName: "GRS 1980(IUGG, 1980)"
1658
+ },
1659
+ IAU76: {
1660
+ a: 6378140,
1661
+ rf: 298.257,
1662
+ ellipseName: "IAU 1976"
1663
+ },
1664
+ airy: {
1665
+ a: 6377563396e-3,
1666
+ b: 635625691e-2,
1667
+ ellipseName: "Airy 1830"
1668
+ },
1669
+ APL4: {
1670
+ a: 6378137,
1671
+ rf: 298.25,
1672
+ ellipseName: "Appl. Physics. 1965"
1673
+ },
1674
+ NWL9D: {
1675
+ a: 6378145,
1676
+ rf: 298.25,
1677
+ ellipseName: "Naval Weapons Lab., 1965"
1678
+ },
1679
+ mod_airy: {
1680
+ a: 6377340189e-3,
1681
+ b: 6356034446e-3,
1682
+ ellipseName: "Modified Airy"
1683
+ },
1684
+ andrae: {
1685
+ a: 637710443e-2,
1686
+ rf: 300,
1687
+ ellipseName: "Andrae 1876 (Den., Iclnd.)"
1688
+ },
1689
+ aust_SA: {
1690
+ a: 6378160,
1691
+ rf: 298.25,
1692
+ ellipseName: "Australian Natl & S. Amer. 1969"
1693
+ },
1694
+ GRS67: {
1695
+ a: 6378160,
1696
+ rf: 298.247167427,
1697
+ ellipseName: "GRS 67(IUGG 1967)"
1698
+ },
1699
+ bessel: {
1700
+ a: 6377397155e-3,
1701
+ rf: 299.1528128,
1702
+ ellipseName: "Bessel 1841"
1703
+ },
1704
+ bess_nam: {
1705
+ a: 6377483865e-3,
1706
+ rf: 299.1528128,
1707
+ ellipseName: "Bessel 1841 (Namibia)"
1708
+ },
1709
+ clrk66: {
1710
+ a: 63782064e-1,
1711
+ b: 63565838e-1,
1712
+ ellipseName: "Clarke 1866"
1713
+ },
1714
+ clrk80: {
1715
+ a: 6378249145e-3,
1716
+ rf: 293.4663,
1717
+ ellipseName: "Clarke 1880 mod."
1718
+ },
1719
+ clrk80ign: {
1720
+ a: 63782492e-1,
1721
+ b: 6356515,
1722
+ rf: 293.4660213,
1723
+ ellipseName: "Clarke 1880 (IGN)"
1724
+ },
1725
+ clrk58: {
1726
+ a: 6378293645208759e-9,
1727
+ rf: 294.2606763692654,
1728
+ ellipseName: "Clarke 1858"
1729
+ },
1730
+ CPM: {
1731
+ a: 63757387e-1,
1732
+ rf: 334.29,
1733
+ ellipseName: "Comm. des Poids et Mesures 1799"
1734
+ },
1735
+ delmbr: {
1736
+ a: 6376428,
1737
+ rf: 311.5,
1738
+ ellipseName: "Delambre 1810 (Belgium)"
1739
+ },
1740
+ engelis: {
1741
+ a: 637813605e-2,
1742
+ rf: 298.2566,
1743
+ ellipseName: "Engelis 1985"
1744
+ },
1745
+ evrst30: {
1746
+ a: 6377276345e-3,
1747
+ rf: 300.8017,
1748
+ ellipseName: "Everest 1830"
1749
+ },
1750
+ evrst48: {
1751
+ a: 6377304063e-3,
1752
+ rf: 300.8017,
1753
+ ellipseName: "Everest 1948"
1754
+ },
1755
+ evrst56: {
1756
+ a: 6377301243e-3,
1757
+ rf: 300.8017,
1758
+ ellipseName: "Everest 1956"
1759
+ },
1760
+ evrst69: {
1761
+ a: 6377295664e-3,
1762
+ rf: 300.8017,
1763
+ ellipseName: "Everest 1969"
1764
+ },
1765
+ evrstSS: {
1766
+ a: 6377298556e-3,
1767
+ rf: 300.8017,
1768
+ ellipseName: "Everest (Sabah & Sarawak)"
1769
+ },
1770
+ fschr60: {
1771
+ a: 6378166,
1772
+ rf: 298.3,
1773
+ ellipseName: "Fischer (Mercury Datum) 1960"
1774
+ },
1775
+ fschr60m: {
1776
+ a: 6378155,
1777
+ rf: 298.3,
1778
+ ellipseName: "Fischer 1960"
1779
+ },
1780
+ fschr68: {
1781
+ a: 6378150,
1782
+ rf: 298.3,
1783
+ ellipseName: "Fischer 1968"
1784
+ },
1785
+ helmert: {
1786
+ a: 6378200,
1787
+ rf: 298.3,
1788
+ ellipseName: "Helmert 1906"
1789
+ },
1790
+ hough: {
1791
+ a: 6378270,
1792
+ rf: 297,
1793
+ ellipseName: "Hough"
1794
+ },
1795
+ intl: {
1796
+ a: 6378388,
1797
+ rf: 297,
1798
+ ellipseName: "International 1909 (Hayford)"
1799
+ },
1800
+ kaula: {
1801
+ a: 6378163,
1802
+ rf: 298.24,
1803
+ ellipseName: "Kaula 1961"
1804
+ },
1805
+ lerch: {
1806
+ a: 6378139,
1807
+ rf: 298.257,
1808
+ ellipseName: "Lerch 1979"
1809
+ },
1810
+ mprts: {
1811
+ a: 6397300,
1812
+ rf: 191,
1813
+ ellipseName: "Maupertius 1738"
1814
+ },
1815
+ new_intl: {
1816
+ a: 63781575e-1,
1817
+ b: 63567722e-1,
1818
+ ellipseName: "New International 1967"
1819
+ },
1820
+ plessis: {
1821
+ a: 6376523,
1822
+ b: 6355863,
1823
+ ellipseName: "Plessis 1817 (France)"
1824
+ },
1825
+ krass: {
1826
+ a: 6378245,
1827
+ rf: 298.3,
1828
+ ellipseName: "Krassovsky, 1942"
1829
+ },
1830
+ SEasia: {
1831
+ a: 6378155,
1832
+ b: 63567733205e-4,
1833
+ ellipseName: "Southeast Asia"
1834
+ },
1835
+ walbeck: {
1836
+ a: 6376896,
1837
+ b: 63558348467e-4,
1838
+ ellipseName: "Walbeck"
1839
+ },
1840
+ WGS60: {
1841
+ a: 6378165,
1842
+ rf: 298.3,
1843
+ ellipseName: "WGS 60"
1844
+ },
1845
+ WGS66: {
1846
+ a: 6378145,
1847
+ rf: 298.25,
1848
+ ellipseName: "WGS 66"
1849
+ },
1850
+ WGS72: {
1851
+ a: 6378135,
1852
+ rf: 298.26,
1853
+ ellipseName: "WGS 72"
1854
+ },
1855
+ WGS84: {
1856
+ a: 6378137,
1857
+ rf: 298.257223563,
1858
+ ellipseName: "WGS 84"
1859
+ },
1860
+ sphere: {
1861
+ a: 6370997,
1862
+ b: 6370997,
1863
+ ellipseName: "Normal Sphere (r=6370997)"
1864
+ }
1865
+ };
1866
+ var ellipsoid_table_default = ellipsoids;
1867
+
1868
+ // dist/experimental/crs/primemeridian-table.js
1869
+ var primeMeridian = {};
1870
+ primeMeridian["greenwich"] = 0;
1871
+ primeMeridian["lisbon"] = -9.131906111111;
1872
+ primeMeridian["paris"] = 2.337229166667;
1873
+ primeMeridian["bogota"] = -74.080916666667;
1874
+ primeMeridian["madrid"] = -3.687938888889;
1875
+ primeMeridian["rome"] = 12.452333333333;
1876
+ primeMeridian["bern"] = 7.439583333333;
1877
+ primeMeridian["jakarta"] = 106.807719444444;
1878
+ primeMeridian["ferro"] = -17.666666666667;
1879
+ primeMeridian["brussels"] = 4.367975;
1880
+ primeMeridian["stockholm"] = 18.058277777778;
1881
+ primeMeridian["athens"] = 23.7163375;
1882
+ primeMeridian["oslo"] = 10.722916666667;
1883
+ var primemeridian_table_default = primeMeridian;
1884
+
1885
+ // dist/experimental/crs/units-table.js
1886
+ var units_table_default = {
1887
+ mm: { to_meter: 1e-3 },
1888
+ cm: { to_meter: 0.01 },
1889
+ ft: { to_meter: 0.3048 },
1890
+ "us-ft": { to_meter: 1200 / 3937 },
1891
+ fath: { to_meter: 1.8288 },
1892
+ kmi: { to_meter: 1852 },
1893
+ "us-ch": { to_meter: 20.1168402336805 },
1894
+ "us-mi": { to_meter: 1609.34721869444 },
1895
+ km: { to_meter: 1e3 },
1896
+ "ind-ft": { to_meter: 0.30479841 },
1897
+ "ind-yd": { to_meter: 0.91439523 },
1898
+ mi: { to_meter: 1609.344 },
1899
+ yd: { to_meter: 0.9144 },
1900
+ ch: { to_meter: 20.1168 },
1901
+ link: { to_meter: 0.201168 },
1902
+ dm: { to_meter: 0.1 },
1903
+ in: { to_meter: 0.0254 },
1904
+ "ind-ch": { to_meter: 20.11669506 },
1905
+ "us-in": { to_meter: 0.025400050800101 },
1906
+ "us-yd": { to_meter: 0.914401828803658 }
1907
+ };
1908
+
1909
+ // dist/experimental/crs/normalize.js
1910
+ var ALIASES = {
1911
+ WGS84: "+proj=longlat +datum=WGS84",
1912
+ "EPSG:4326": "+proj=longlat +datum=WGS84",
1913
+ "EPSG:4269": "+proj=longlat +datum=NAD83",
1914
+ "EPSG:4978": "+proj=geocent +datum=WGS84",
1915
+ "EPSG:4979": "+proj=longlat +datum=WGS84",
1916
+ "EPSG:3857": "+proj=merc +a=6378137 +b=6378137 +nadgrids=@null +units=m",
1917
+ "EPSG:3785": "EPSG:3857",
1918
+ GOOGLE: "EPSG:3857",
1919
+ "EPSG:900913": "EPSG:3857",
1920
+ "EPSG:102113": "EPSG:3857"
1921
+ };
1922
+ var CORE_PARAMETERS = [
1923
+ "proj",
1924
+ "datum",
1925
+ "ellps",
1926
+ "a",
1927
+ "b",
1928
+ "rf",
1929
+ "f",
1930
+ "R",
1931
+ "units",
1932
+ "to_meter",
1933
+ "vunits",
1934
+ "vto_meter",
1935
+ "no_defs",
1936
+ "type",
1937
+ "title",
1938
+ "towgs84",
1939
+ "nadgrids",
1940
+ "geoidgrids",
1941
+ "axis",
1942
+ "pm",
1943
+ "over",
1944
+ "lon_wrap"
1945
+ ];
1946
+ var own = (object, key) => Object.prototype.hasOwnProperty.call(object, key);
1947
+ var keyOf = (value) => value.toLowerCase().replace(/[\s_-]/g, "");
1948
+ function lookup(table, name) {
1949
+ const key = Object.keys(table).find((key2) => keyOf(key2) === keyOf(name));
1950
+ return key === void 0 ? void 0 : table[key];
1951
+ }
1952
+ function parseAngle(text) {
1953
+ if (/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i.test(text)) {
1954
+ const value = Number(text);
1955
+ if (Number.isFinite(value))
1956
+ return value;
1957
+ }
1958
+ if (/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?r$/i.test(text)) {
1959
+ const value = Number(text.slice(0, -1)) / DEGREES_TO_RADIANS;
1960
+ if (Number.isFinite(value))
1961
+ return value;
1962
+ }
1963
+ const dms = /^([+-]?)(\d+(?:\.\d*)?)(?:d(?:(\d+(?:\.\d*)?)'(?:(\d+(?:\.\d*)?)")?)?)?([NSEW])?$/i.exec(text);
1964
+ if (dms && (/d/i.test(text) || dms[5])) {
1965
+ const minutes = Number(dms[3] || 0), seconds = Number(dms[4] || 0);
1966
+ if (minutes < 60 && seconds < 60) {
1967
+ const sign = dms[1] === "-" ? -1 : 1;
1968
+ const direction = /[SW]/i.test(dms[5] || "") ? -1 : 1;
1969
+ const value = sign * direction * (Number(dms[2]) + minutes / 60 + seconds / 3600);
1970
+ if (Number.isFinite(value))
1971
+ return value;
1972
+ }
1973
+ }
1974
+ throw new Error("Invalid angular parameter: " + text);
1975
+ }
1976
+ function normalizeCRS(input, options = {}) {
1977
+ var _a2;
1978
+ const resolved = resolveCRSInput(input, options);
1979
+ let definition2 = resolved.definition;
1980
+ const aliases = options.aliases || {};
1981
+ const visited = /* @__PURE__ */ new Set();
1982
+ while (typeof definition2 === "string" && (own(aliases, definition2) || own(ALIASES, definition2))) {
1983
+ if (visited.has(definition2))
1984
+ throw new Error("Circular CRS alias: " + definition2);
1985
+ visited.add(definition2);
1986
+ definition2 = own(aliases, definition2) ? aliases[definition2] : ALIASES[definition2];
1987
+ }
1988
+ if (typeof definition2 === "string") {
1989
+ const utm = /^EPSG:(326|327)(\d{2})$/.exec(definition2);
1990
+ if (utm && Number(utm[2]) >= 1 && Number(utm[2]) <= 60) {
1991
+ definition2 = "+proj=utm +datum=WGS84 +zone=" + Number(utm[2]) + (utm[1] === "327" ? " +south" : "");
1992
+ }
1993
+ if (definition2 === "EPSG:5041" || definition2 === "EPSG:5042") {
1994
+ definition2 = "+proj=stere +datum=WGS84 +lat_0=" + (definition2 === "EPSG:5041" ? 90 : -90) + " +k_0=0.994 +x_0=2000000 +y_0=2000000";
1995
+ }
1996
+ }
1997
+ let parsed;
1998
+ if (inferCRSRepresentation(definition2) === "proj-string" && typeof definition2 === "string") {
1999
+ const parameters2 = /* @__PURE__ */ Object.create(null);
2000
+ for (const parameter of parsePROJString(definition2).parameters) {
2001
+ if (own(parameters2, parameter.name))
2002
+ throw new Error("Duplicate PROJ parameter: +" + parameter.name);
2003
+ parameters2[parameter.name] = parameter.value;
2004
+ }
2005
+ parsed = { parameters: parameters2 };
2006
+ } else {
2007
+ const parser = (_a2 = options.parsers) == null ? void 0 : _a2.find((candidate) => candidate.canParse(definition2));
2008
+ if (!parser) {
2009
+ const serialized = ["wkt", "projjson"].includes(inferCRSRepresentation(definition2));
2010
+ throw new TypeScriptCRSError(serialized ? "missing-parser" : "unknown-syntax", "Unsupported CRS definition; register a WKT or PROJJSON parser for structured definitions");
2011
+ }
2012
+ parsed = parser.parse(definition2, options);
2013
+ }
2014
+ const parameters = { ...parsed.parameters };
2015
+ for (const name2 of [
2016
+ "lon_0",
2017
+ "lat_0",
2018
+ "lat_1",
2019
+ "lat_2",
2020
+ "lat_ts",
2021
+ "lon_wrap",
2022
+ "lon_1",
2023
+ "lon_2",
2024
+ "lonc",
2025
+ "alpha",
2026
+ "gamma",
2027
+ "tilt",
2028
+ "azi",
2029
+ "o_alpha",
2030
+ "o_lon_c",
2031
+ "o_lat_c",
2032
+ "o_lon_p",
2033
+ "o_lat_p",
2034
+ "o_lon_1",
2035
+ "o_lat_1",
2036
+ "o_lon_2",
2037
+ "o_lat_2"
2038
+ ]) {
2039
+ if (parameters[name2] !== void 0)
2040
+ parameters[name2] = String(parseAngle(parameters[name2]));
2041
+ }
2042
+ const suppliedName = parameters["proj"];
2043
+ const lowerName = suppliedName == null ? void 0 : suppliedName.toLowerCase();
2044
+ const name = lowerName === "geocentric" ? "geocent" : ["longlat", "latlong", "latlon", "lonlat", "identity", "geocent"].includes(lowerName) ? lowerName : suppliedName;
2045
+ if (!name)
2046
+ throw new Error("CRS requires +proj");
2047
+ const kind = ["longlat", "latlong", "latlon", "lonlat"].includes(name) ? "geographic" : name === "geocent" ? "geocentric" : name === "identity" ? "identity" : "projected";
2048
+ const datumName = parameters["datum"];
2049
+ const datum = datumName && datumName !== "none" ? lookup(datum_table_default, datumName) : void 0;
2050
+ if (datumName && datumName !== "none" && !datum)
2051
+ unsupportedStage("Unknown datum: " + datumName);
2052
+ const ellipsoid = getEllipsoid(parameters, datum == null ? void 0 : datum.ellipse);
2053
+ const grids = parameters["nadgrids"] ?? (datum == null ? void 0 : datum.nadgrids);
2054
+ const gridReferences = grids === void 0 ? void 0 : grids.split(",").map((entry) => {
2055
+ const optional = entry.startsWith("@");
2056
+ const name2 = optional ? entry.slice(1) : entry;
2057
+ if (!name2 || /\s/.test(name2))
2058
+ throw new Error("Invalid datum grid name");
2059
+ return Object.freeze({ name: name2, optional });
2060
+ });
2061
+ const rawShift = parameters["towgs84"] ?? (datum == null ? void 0 : datum.towgs84);
2062
+ let shift;
2063
+ if (rawShift !== void 0) {
2064
+ shift = rawShift.split(",").map((value) => numberParameter({ value }, "value", NaN));
2065
+ if (![3, 7].includes(shift.length) || shift.some((value) => !Number.isFinite(value)) || shift.length === 7 && shift[6] <= -1e6) {
2066
+ throw new Error("+towgs84 requires three or seven finite values and positive scale");
2067
+ }
2068
+ }
2069
+ if (datumName === "none")
2070
+ shift = void 0;
2071
+ if (gridReferences && datumName !== "none")
2072
+ shift = [0, 0, 0];
2073
+ const datumEllipsoid = grids === "@null" || grids === "null" ? getEllipsoid({ ellps: "WGS84" }) : ellipsoid;
2074
+ const axis = parameters["axis"] || "enu";
2075
+ if (axis.length !== 3 || !/[ew]/.test(axis) || !/[ns]/.test(axis) || !/[ud]/.test(axis))
2076
+ throw new Error("Invalid axis: " + axis);
2077
+ const angularUnit = parsed.angularUnit ?? DEGREES_TO_RADIANS;
2078
+ if (kind === "geographic" && (parameters["units"] && parameters["units"] !== "degrees" || own(parameters, "to_meter")))
2079
+ throw new Error("Geographic coordinates must use angular units");
2080
+ if (kind !== "geographic" && parameters["units"] === "degrees")
2081
+ throw new Error("Linear coordinates require linear units");
2082
+ const toMeter = unitFactor(parameters, "units", "to_meter");
2083
+ const verticalUnit = parsed.verticalUnit ?? unitFactor(parameters, "vunits", "vto_meter");
2084
+ if (!(verticalUnit > 0) || !Number.isFinite(verticalUnit))
2085
+ throw new Error("Invalid vertical unit");
2086
+ if (!(angularUnit > 0) || !Number.isFinite(angularUnit))
2087
+ throw new Error("Invalid angular unit");
2088
+ const pm = parameters["pm"];
2089
+ const primeMeridian2 = pm === void 0 ? 0 : (lookup(primemeridian_table_default, pm) ?? parseAngle(pm)) * DEGREES_TO_RADIANS;
2090
+ return applySpatialReference(Object.freeze({
2091
+ kind,
2092
+ projection: name,
2093
+ parameters: Object.freeze(parameters),
2094
+ ellipsoid,
2095
+ datum: Object.freeze({
2096
+ ellipsoid: datumEllipsoid,
2097
+ towgs84: shift && Object.freeze(shift),
2098
+ grids: datumName === "none" || grids === "@null" || grids === "null" ? void 0 : gridReferences && Object.freeze(gridReferences)
2099
+ }),
2100
+ angularUnit,
2101
+ toMeter,
2102
+ verticalUnit,
2103
+ primeMeridian: primeMeridian2,
2104
+ axis,
2105
+ longitudeWrap: parameters["lon_wrap"] === void 0 ? void 0 : Number(parameters["lon_wrap"]) * DEGREES_TO_RADIANS,
2106
+ lossy: Boolean(parsed.lossy || resolved.lossy)
2107
+ }), resolved.spatialReference);
2108
+ }
2109
+ function unitFactor(parameters, unitKey, factorKey) {
2110
+ const unit = parameters[unitKey];
2111
+ const table = units_table_default;
2112
+ if (unitKey === "vunits" && unit === "degrees")
2113
+ throw new Error("Height requires linear units");
2114
+ if (unit && !["m", "degrees"].includes(unit) && !own(table, unit))
2115
+ throw new Error("Unsupported units: " + unit);
2116
+ const factor = numberParameter(parameters, factorKey, unit && table[unit] ? table[unit].to_meter : 1);
2117
+ if (!(factor > 0))
2118
+ throw new Error("+" + factorKey + " must be positive");
2119
+ return factor;
2120
+ }
2121
+ function getEllipsoid(parameters, datumEllipsoid) {
2122
+ const name = datumEllipsoid || parameters["ellps"] || "WGS84";
2123
+ const definition2 = lookup(ellipsoid_table_default, name);
2124
+ if (!definition2)
2125
+ throw new Error("Unsupported ellipsoid: " + name);
2126
+ const a = numberParameter(parameters, "a", definition2.a);
2127
+ const f = numberParameter(parameters, "f", NaN);
2128
+ const rf = numberParameter(parameters, "rf", Number.isNaN(f) ? definition2.rf || 0 : f === 0 ? 0 : 1 / f);
2129
+ const b = numberParameter(parameters, "b", rf ? a * (1 - 1 / rf) : own(parameters, "f") || own(parameters, "rf") || own(parameters, "a") ? a : definition2.b || a);
2130
+ const radius = numberParameter(parameters, "R", 0);
2131
+ if (a <= 0 || b <= 0 || b > a || rf < 0 || rf > 0 && rf <= 1 || own(parameters, "R") && radius <= 0 || !Number.isNaN(f) && (f < 0 || f >= 1))
2132
+ throw new Error("Invalid ellipsoid dimensions");
2133
+ return Object.freeze({
2134
+ semiMajorAxis: radius || a,
2135
+ semiMinorAxis: radius || b,
2136
+ eccentricitySquared: radius ? 0 : 1 - (b / a) ** 2
2137
+ });
2138
+ }
2139
+
2140
+ // ../core/src/spheroid.ts
2141
+ function spheroidToCartesian(point, geometry, result = point) {
2142
+ const longitude = point.x, latitude = point.y, height = point.z;
2143
+ const { semiMajorAxis: a, semiMinorAxis: b, eccentricitySquared: es } = geometry;
2144
+ const sin = Math.sin(latitude), cos = Math.cos(latitude);
2145
+ const ratio = b / a;
2146
+ const radius = es < 0.9 ? a / Math.sqrt(1 - es * sin * sin) : a / Math.hypot(cos, ratio * sin);
2147
+ const x = (radius + height) * cos * Math.cos(longitude);
2148
+ const y = (radius + height) * cos * Math.sin(longitude);
2149
+ const z = (radius * (es < 0.9 ? 1 - es : ratio * ratio) + height) * sin;
2150
+ return commit(result, x, y, z);
2151
+ }
2152
+ function cartesianToSpheroid(point, geometry, result = point) {
2153
+ const x = point.x, y = point.y, z = point.z;
2154
+ const { semiMajorAxis: a, semiMinorAxis: b, eccentricitySquared: es } = geometry;
2155
+ const p = Math.hypot(x, y), rr = Math.hypot(x, y, z);
2156
+ if (!(rr > 0) || !Number.isFinite(rr)) return false;
2157
+ if (es === 0) return commit(result, p === 0 ? 0 : Math.atan2(y, x), Math.atan2(z, p), rr - a);
2158
+ if (p === 0) return commit(result, 0, Math.sign(z) * Math.PI / 2, Math.abs(z) - b);
2159
+ if (es >= 0.9) return exteriorInverse(x, y, z, p, a, b, result);
2160
+ const ct = z / rr, st = p / rr;
2161
+ let rx = 1 / Math.sqrt(1 - es * (2 - es) * st * st);
2162
+ let cos = st * (1 - es) * rx, sin = ct * rx;
2163
+ for (let i = 0; i < 30; i++) {
2164
+ const rn = a / Math.sqrt(1 - es * sin * sin);
2165
+ const height = p * cos + z * sin - rn * (1 - es * sin * sin);
2166
+ const rk = es * rn / (rn + height);
2167
+ rx = 1 / Math.sqrt(1 - rk * (2 - rk) * st * st);
2168
+ const nextCos = st * (1 - rk) * rx, nextSin = ct * rx;
2169
+ if (Math.abs(nextSin * cos - nextCos * sin) <= 1e-12) {
2170
+ if (!Number.isFinite(height) || !Number.isFinite(nextSin) || !Number.isFinite(nextCos)) break;
2171
+ return commit(result, Math.atan2(y, x), Math.atan2(nextSin, Math.abs(nextCos)), height);
2172
+ }
2173
+ cos = nextCos;
2174
+ sin = nextSin;
2175
+ }
2176
+ return exteriorInverse(x, y, z, p, a, b, result);
2177
+ }
2178
+ function exteriorInverse(x, y, z, p, a, b, result) {
2179
+ const ratio = b / a, ratio2 = ratio * ratio, horizontal = p / a, vertical = z / a;
2180
+ const norm = Math.hypot(horizontal, z / b);
2181
+ if (!Number.isFinite(norm) || norm < 1 - 8 * Number.EPSILON || !(ratio2 > 0)) return false;
2182
+ let lower = 0, upper = Math.hypot(horizontal, vertical * ratio);
2183
+ if (!Number.isFinite(upper)) return false;
2184
+ let multiplier = norm <= 1 + 8 * Number.EPSILON ? 0 : upper / 2;
2185
+ for (let i = 0; i < 96; i++) {
2186
+ const equatorial = 1 + multiplier, polar = ratio2 + multiplier;
2187
+ const u = horizontal / equatorial, v = vertical * ratio / polar;
2188
+ const length = Math.hypot(u, v);
2189
+ const residual = length - 1;
2190
+ if (Math.abs(residual) <= 4 * Number.EPSILON) {
2191
+ const latitude = Math.atan2(vertical / polar, horizontal / equatorial);
2192
+ const sin = Math.sin(latitude), cos = Math.cos(latitude);
2193
+ const height = p * cos + z * sin - a * Math.hypot(cos, ratio * sin);
2194
+ return commit(result, Math.atan2(y, x), latitude, height);
2195
+ }
2196
+ if (residual > 0) lower = multiplier;
2197
+ else upper = multiplier;
2198
+ const derivative = -(u * u / equatorial + v * v / polar) / length;
2199
+ const next = multiplier - residual / derivative;
2200
+ multiplier = Number.isFinite(next) && next > lower && next < upper ? next : (lower + upper) / 2;
2201
+ }
2202
+ return false;
2203
+ }
2204
+ function commit(result, x, y, z) {
2205
+ if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z)) return false;
2206
+ result.x = x;
2207
+ result.y = y;
2208
+ result.z = z;
2209
+ return true;
2210
+ }
2211
+
2212
+ // dist/experimental/datum.js
2213
+ var ARC_SECOND = Math.PI / (180 * 3600);
2214
+ function geodeticToGeocentricInPlace(point, ellipsoid) {
2215
+ if (Math.abs(point.y) > Math.PI / 2)
2216
+ throw new Error("Latitude outside geocentric domain");
2217
+ if (!spheroidToCartesian(point, ellipsoid))
2218
+ throw new Error("Geocentric coordinate must be finite");
2219
+ }
2220
+ function geocentricToGeodeticInPlace(point, ellipsoid) {
2221
+ const x = point.x, y = point.y, z = point.z;
2222
+ const { semiMajorAxis: a, semiMinorAxis: b, eccentricitySquared: es } = ellipsoid;
2223
+ if (x === 0 && y === 0 && z === 0)
2224
+ throw new Error("Geodetic coordinates are undefined at the Earth center");
2225
+ if (es !== 0 && Math.abs(x) < 1e-12 * a && Math.abs(y) < 1e-12 * a && Math.hypot(x, y) < 1e-12 * a) {
2226
+ if (!Number.isFinite(Math.hypot(x, y, z)))
2227
+ throw new Error("Geocentric radius must be finite");
2228
+ point.x = 0;
2229
+ point.y = Math.sign(z) * Math.PI / 2;
2230
+ point.z = Math.abs(z) - b;
2231
+ return;
2232
+ }
2233
+ if (!cartesianToSpheroid(point, ellipsoid)) {
2234
+ if (!Number.isFinite(Math.hypot(x, y, z)))
2235
+ throw new Error("Geocentric radius must be finite");
2236
+ throw new Error("Geocentric inverse did not converge");
2237
+ }
2238
+ }
2239
+ function createHelmert(values, inverse) {
2240
+ const dx = values[0], dy = values[1], dz = values[2];
2241
+ const rx = (values[3] || 0) * ARC_SECOND, ry = (values[4] || 0) * ARC_SECOND, rz = (values[5] || 0) * ARC_SECOND;
2242
+ const scale = 1 + (values[6] || 0) / 1e6;
2243
+ return inverse ? (point) => {
2244
+ const x = (point.x - dx) / scale, y = (point.y - dy) / scale, z = (point.z - dz) / scale;
2245
+ point.x = x + rz * y - ry * z;
2246
+ point.y = -rz * x + y + rx * z;
2247
+ point.z = ry * x - rx * y + z;
2248
+ } : (point) => {
2249
+ const x = point.x, y = point.y, z = point.z;
2250
+ point.x = scale * (x - rz * y + ry * z) + dx;
2251
+ point.y = scale * (rz * x + y - rx * z) + dy;
2252
+ point.z = scale * (-ry * x + rx * y + z) + dz;
2253
+ };
2254
+ }
2255
+ function applyDatumGrids(point, datum, inverse) {
2256
+ for (const reference of datum.grids) {
2257
+ if (reference.name === "null")
2258
+ return;
2259
+ if (!reference.grid) {
2260
+ if (reference.optional)
2261
+ continue;
2262
+ throw new Error("Required datum grid is not registered: " + reference.name);
2263
+ }
2264
+ let found = false;
2265
+ if (reference.grid.shiftInPlace)
2266
+ found = reference.grid.shiftInPlace(point, inverse);
2267
+ else {
2268
+ const output = reference.grid.shift(point.x, point.y, inverse);
2269
+ if (output) {
2270
+ point.x = output[0];
2271
+ point.y = output[1];
2272
+ found = true;
2273
+ }
2274
+ }
2275
+ if (found) {
2276
+ if (!Number.isFinite(point.x) || !Number.isFinite(point.y) || Math.abs(point.y) > Math.PI / 2)
2277
+ throw new Error("Datum grid produced a coordinate outside the geographic domain");
2278
+ return;
2279
+ }
2280
+ }
2281
+ throw new Error("No datum grid covers coordinate: " + datum.grids.map((grid) => grid.name).join(","));
2282
+ }
2283
+
2284
+ // dist/experimental/projection-scratch.js
2285
+ var ProjectionScratch = class {
2286
+ constructor() {
2287
+ this.point = { x: 0, y: 0, z: 0 };
2288
+ this.busy = false;
2289
+ }
2290
+ acquire() {
2291
+ if (this.busy)
2292
+ return { x: 0, y: 0, z: 0 };
2293
+ this.busy = true;
2294
+ return this.point;
2295
+ }
2296
+ release(point) {
2297
+ if (point === this.point)
2298
+ this.busy = false;
2299
+ }
2300
+ };
2301
+
2302
+ // dist/experimental/mutable-projection.js
2303
+ function projectionOperation(implementation, inverse, geocentric = false) {
2304
+ const mutable = inverse ? implementation.inverseInPlace : implementation.forwardInPlace;
2305
+ if (mutable)
2306
+ return mutable.bind(implementation);
2307
+ if (geocentric) {
2308
+ const operation2 = inverse ? implementation.inverse3D : implementation.forward3D;
2309
+ return (point) => {
2310
+ const output = operation2.call(implementation, [point.x, point.y, point.z]);
2311
+ point.x = output[0];
2312
+ point.y = output[1];
2313
+ point.z = output[2];
2314
+ };
2315
+ }
2316
+ const operation = inverse ? implementation.inverse : implementation.forward;
2317
+ return (point) => {
2318
+ const output = operation.call(implementation, point.x, point.y);
2319
+ point.x = output[0];
2320
+ point.y = output[1];
2321
+ };
2322
+ }
2323
+
2324
+ // dist/experimental/numeric-flat.js
2325
+ function createNumericFlat(steps) {
2326
+ const program = new Float64Array(steps.length * 7);
2327
+ for (let i = 0; i < steps.length; i++) {
2328
+ const step = steps[i], offset = i * 7;
2329
+ program.set(step, offset);
2330
+ if (step[0] === 2) {
2331
+ for (let axis = 1; axis <= 3; axis++) {
2332
+ program[offset + axis] = Math.abs(step[axis]);
2333
+ program[offset + axis + 3] = Math.sign(step[axis]);
2334
+ }
2335
+ }
2336
+ }
2337
+ return (coordinates, dimension, epochs) => {
2338
+ const float32 = coordinates instanceof Float32Array;
2339
+ const epochBuffer = typeof epochs === "number" ? void 0 : epochs;
2340
+ for (let offset = 0, record = 0; offset < coordinates.length; offset += dimension, record++) {
2341
+ let x = coordinates[offset], y = coordinates[offset + 1], z = dimension >= 3 ? coordinates[offset + 2] : 0;
2342
+ if (epochBuffer && !Number.isFinite(epochBuffer[record]))
2343
+ throw new Error("Coordinate epoch must be a finite decimal year");
2344
+ if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z))
2345
+ throw new Error("Pipeline coordinate must be finite");
2346
+ for (let step = 0; step < program.length; step += 7) {
2347
+ const kind = program[step], a = program[step + 1], b = program[step + 2], c = program[step + 3];
2348
+ if (kind === 0) {
2349
+ x *= a;
2350
+ y *= b;
2351
+ z *= c;
2352
+ } else if (kind === 1) {
2353
+ x /= a;
2354
+ y /= b;
2355
+ z /= c;
2356
+ } else {
2357
+ const oldX = x, oldY = y, oldZ = z;
2358
+ x = program[step + 4] * (a === 1 ? oldX : a === 2 ? oldY : oldZ);
2359
+ y = program[step + 5] * (b === 1 ? oldX : b === 2 ? oldY : oldZ);
2360
+ z = program[step + 6] * (c === 1 ? oldX : c === 2 ? oldY : oldZ);
2361
+ }
2362
+ if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z))
2363
+ throw new Error("Pipeline coordinate must be finite");
2364
+ }
2365
+ if (float32 && Math.max(Math.abs(x), Math.abs(y), Math.abs(z)) > 34028234663852886e22)
2366
+ throw new Error("Pipeline output exceeds Float32 range");
2367
+ coordinates[offset] = x;
2368
+ coordinates[offset + 1] = y;
2369
+ if (dimension >= 3)
2370
+ coordinates[offset + 2] = z;
2371
+ }
2372
+ };
2373
+ }
2374
+
2375
+ // dist/experimental/scalar-output.js
2376
+ var FLOAT32_MAX = 34028234663852886e22;
2377
+ function validateScalarOutput(coordinate, output, length) {
2378
+ if (!(Array.isArray(coordinate) || coordinate instanceof Float32Array || coordinate instanceof Float64Array))
2379
+ throw new Error("Scalar input requires a number array, Float32Array or Float64Array");
2380
+ if (!(Array.isArray(output) || output instanceof Float32Array || output instanceof Float64Array) || output.length < length)
2381
+ throw new Error("Scalar output requires a preallocated number array, Float32Array or Float64Array with sufficient capacity");
2382
+ if (coordinate === output || Array.isArray(coordinate) || Array.isArray(output))
2383
+ return;
2384
+ const input = coordinate;
2385
+ const result = output;
2386
+ const shared = typeof SharedArrayBuffer !== "undefined" && input.buffer instanceof SharedArrayBuffer && result.buffer instanceof SharedArrayBuffer;
2387
+ if ((input.buffer === result.buffer || shared) && input.byteOffset < result.byteOffset + length * result.BYTES_PER_ELEMENT && result.byteOffset < input.byteOffset + input.byteLength)
2388
+ throw new Error("Scalar input/output views overlap; use the same view for in-place projection");
2389
+ }
2390
+ function writeScalarOutput(coordinate, output, point, length) {
2391
+ if (output instanceof Float32Array) {
2392
+ if (Math.abs(point.x) > FLOAT32_MAX || Math.abs(point.y) > FLOAT32_MAX || length >= 3 && Math.abs(point.z) > FLOAT32_MAX)
2393
+ throw new Error("Projected coordinate exceeds Float32 range");
2394
+ for (let i = 3; i < coordinate.length; i++) {
2395
+ const value = coordinate[i];
2396
+ if (Number.isFinite(value) && Math.abs(value) > FLOAT32_MAX)
2397
+ throw new Error("Trailing ordinate exceeds Float32 range");
2398
+ }
2399
+ }
2400
+ for (let i = 3; i < coordinate.length; i++)
2401
+ output[i] = coordinate[i];
2402
+ output[0] = point.x;
2403
+ output[1] = point.y;
2404
+ if (length >= 3)
2405
+ output[2] = point.z;
2406
+ return output;
2407
+ }
2408
+
2409
+ // dist/experimental/helmert-flat.js
2410
+ function createHelmertFlat(coefficients, inverse, exact) {
2411
+ const dx = coefficients[9], dy = coefficients[10], dz = coefficients[11], scale = coefficients[12];
2412
+ const a = coefficients[0], b = coefficients[1], c = coefficients[2], d = coefficients[3], e = coefficients[4], f = coefficients[5], g = coefficients[6], h = coefficients[7], j = coefficients[8];
2413
+ return (coordinates, dimension, epochs) => {
2414
+ const float32 = coordinates instanceof Float32Array;
2415
+ const epochBuffer = typeof epochs === "number" ? void 0 : epochs;
2416
+ for (let offset = 0, record = 0; offset < coordinates.length; offset += dimension, record++) {
2417
+ let x = coordinates[offset], y = coordinates[offset + 1], z = coordinates[offset + 2];
2418
+ if (epochBuffer && !Number.isFinite(epochBuffer[record]))
2419
+ throw new Error("Coordinate epoch must be a finite decimal year");
2420
+ if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z))
2421
+ throw new Error("Pipeline coordinate must be finite");
2422
+ if (inverse) {
2423
+ x = (x - dx) / scale;
2424
+ y = (y - dy) / scale;
2425
+ z = (z - dz) / scale;
2426
+ }
2427
+ let outX, outY, outZ;
2428
+ if (exact) {
2429
+ if (inverse) {
2430
+ outX = a * x + d * y + g * z;
2431
+ outY = b * x + e * y + h * z;
2432
+ outZ = c * x + f * y + j * z;
2433
+ } else {
2434
+ outX = scale * (a * x + b * y + c * z) + dx;
2435
+ outY = scale * (d * x + e * y + f * z) + dy;
2436
+ outZ = scale * (g * x + h * y + j * z) + dz;
2437
+ }
2438
+ } else if (inverse) {
2439
+ outX = x + c * y - b * z;
2440
+ outY = -c * x + y + a * z;
2441
+ outZ = b * x - a * y + z;
2442
+ } else {
2443
+ outX = scale * (x - c * y + b * z) + dx;
2444
+ outY = scale * (c * x + y - a * z) + dy;
2445
+ outZ = scale * (-b * x + a * y + z) + dz;
2446
+ }
2447
+ if (!Number.isFinite(outX) || !Number.isFinite(outY) || !Number.isFinite(outZ))
2448
+ throw new Error("Pipeline coordinate must be finite");
2449
+ if (float32 && Math.max(Math.abs(outX), Math.abs(outY), Math.abs(outZ)) > 34028234663852886e22)
2450
+ throw new Error("Pipeline output exceeds Float32 range");
2451
+ coordinates[offset] = outX;
2452
+ coordinates[offset + 1] = outY;
2453
+ coordinates[offset + 2] = outZ;
2454
+ }
2455
+ };
2456
+ }
2457
+
2458
+ // dist/experimental/exact-helmert.js
2459
+ function createExactHelmert(translation, rotation, scalePPM, coordinateFrame) {
2460
+ const radians = Math.PI / (180 * 3600);
2461
+ const [rx, ry, rz] = rotation.map((angle) => angle * radians);
2462
+ const cx = Math.cos(rx), sx = Math.sin(rx), cy = Math.cos(ry), sy = Math.sin(ry), cz = Math.cos(rz), sz = Math.sin(rz);
2463
+ let r01 = cx * sz + sx * sy * cz, r02 = sx * sz - cx * sy * cz, r10 = -cy * sz, r12 = sx * cz + cx * sy * sz, r20 = sy, r21 = -sx * cy;
2464
+ const r00 = cy * cz, r11 = cx * cz - sx * sy * sz, r22 = cx * cy;
2465
+ if (!coordinateFrame) {
2466
+ [r01, r10] = [r10, r01];
2467
+ [r02, r20] = [r20, r02];
2468
+ [r12, r21] = [r21, r12];
2469
+ }
2470
+ const scale = 1 + scalePPM / 1e6;
2471
+ const [dx, dy, dz] = translation;
2472
+ return {
2473
+ coefficients: [r00, r01, r02, r10, r11, r12, r20, r21, r22, dx, dy, dz, scale],
2474
+ forward(point) {
2475
+ const { x, y, z } = point;
2476
+ point.x = scale * (r00 * x + r01 * y + r02 * z) + dx;
2477
+ point.y = scale * (r10 * x + r11 * y + r12 * z) + dy;
2478
+ point.z = scale * (r20 * x + r21 * y + r22 * z) + dz;
2479
+ },
2480
+ inverse(point) {
2481
+ const x = (point.x - dx) / scale, y = (point.y - dy) / scale, z = (point.z - dz) / scale;
2482
+ point.x = r00 * x + r10 * y + r20 * z;
2483
+ point.y = r01 * x + r11 * y + r21 * z;
2484
+ point.z = r02 * x + r12 * y + r22 * z;
2485
+ }
2486
+ };
2487
+ }
2488
+
2489
+ // dist/experimental/kinematic-helmert-flat.js
2490
+ function createKinematicHelmertFlat(coefficients, prepare, inverse) {
2491
+ return (coordinates, dimension, epochs) => {
2492
+ const float32 = coordinates instanceof Float32Array;
2493
+ const epochBuffer = typeof epochs === "number" ? void 0 : epochs;
2494
+ const batchEpoch = typeof epochs === "number" ? epochs : void 0;
2495
+ let a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0;
2496
+ let dx = 0, dy = 0, dz = 0, scale = 1;
2497
+ for (let offset = 0, record = 0; offset < coordinates.length; offset += dimension, record++) {
2498
+ let x = coordinates[offset], y = coordinates[offset + 1], z = coordinates[offset + 2];
2499
+ const epoch = epochBuffer ? epochBuffer[record] : batchEpoch;
2500
+ if (epochBuffer && !Number.isFinite(epoch))
2501
+ throw new Error("Coordinate epoch must be a finite decimal year");
2502
+ if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z))
2503
+ throw new Error("Pipeline coordinate must be finite");
2504
+ if (epochBuffer || offset === 0) {
2505
+ prepare(epoch);
2506
+ a = coefficients[0];
2507
+ b = coefficients[1];
2508
+ c = coefficients[2];
2509
+ d = coefficients[3];
2510
+ e = coefficients[4];
2511
+ f = coefficients[5];
2512
+ g = coefficients[6];
2513
+ h = coefficients[7];
2514
+ j = coefficients[8];
2515
+ dx = coefficients[9];
2516
+ dy = coefficients[10];
2517
+ dz = coefficients[11];
2518
+ scale = coefficients[12];
2519
+ }
2520
+ let outX, outY, outZ;
2521
+ if (inverse) {
2522
+ x = (x - dx) / scale;
2523
+ y = (y - dy) / scale;
2524
+ z = (z - dz) / scale;
2525
+ outX = a * x + d * y + g * z;
2526
+ outY = b * x + e * y + h * z;
2527
+ outZ = c * x + f * y + j * z;
2528
+ } else {
2529
+ outX = scale * (a * x + b * y + c * z) + dx;
2530
+ outY = scale * (d * x + e * y + f * z) + dy;
2531
+ outZ = scale * (g * x + h * y + j * z) + dz;
2532
+ }
2533
+ if (!Number.isFinite(outX) || !Number.isFinite(outY) || !Number.isFinite(outZ))
2534
+ throw new Error("Pipeline coordinate must be finite");
2535
+ if (float32 && Math.max(Math.abs(outX), Math.abs(outY), Math.abs(outZ)) > 34028234663852886e22)
2536
+ throw new Error("Pipeline output exceeds Float32 range");
2537
+ coordinates[offset] = outX;
2538
+ coordinates[offset + 1] = outY;
2539
+ coordinates[offset + 2] = outZ;
2540
+ }
2541
+ };
2542
+ }
2543
+
2544
+ // dist/experimental/kinematic-helmert.js
2545
+ function createKinematicHelmert(translation, rotation, scalePPM, rates, referenceEpoch, coordinateFrame, exact) {
2546
+ const base = [...translation, ...rotation, scalePPM];
2547
+ const velocity = [
2548
+ ...rates.translation || [0, 0, 0],
2549
+ ...rates.rotation || [0, 0, 0],
2550
+ rates.scalePPM || 0
2551
+ ];
2552
+ const arcsecond = Math.PI / (180 * 3600);
2553
+ const coefficients = new Float64Array(14);
2554
+ coefficients[0] = coefficients[4] = coefficients[8] = coefficients[12] = 1;
2555
+ coefficients[13] = NaN;
2556
+ function prepare(epoch) {
2557
+ if (typeof epoch !== "number" || !Number.isFinite(epoch))
2558
+ throw new Error("Kinematic Helmert requires a finite coordinate epoch");
2559
+ if (epoch === coefficients[13])
2560
+ return;
2561
+ const elapsed = epoch - referenceEpoch;
2562
+ const x = base[0] + velocity[0] * elapsed, y = base[1] + velocity[1] * elapsed, z = base[2] + velocity[2] * elapsed, rx = (base[3] + velocity[3] * elapsed) * arcsecond, ry = (base[4] + velocity[4] * elapsed) * arcsecond, rz = (base[5] + velocity[5] * elapsed) * arcsecond, nextScale = 1 + (base[6] + velocity[6] * elapsed) / 1e6;
2563
+ if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(z) || !Number.isFinite(rx) || !Number.isFinite(ry) || !Number.isFinite(rz) || !Number.isFinite(nextScale) || nextScale <= 0)
2564
+ throw new Error("Invalid epoch-adjusted Helmert parameters or scale");
2565
+ if (exact) {
2566
+ const cx = Math.cos(rx), sx = Math.sin(rx), cy = Math.cos(ry), sy = Math.sin(ry), cz = Math.cos(rz), sz = Math.sin(rz);
2567
+ coefficients[0] = cy * cz;
2568
+ coefficients[1] = cx * sz + sx * sy * cz;
2569
+ coefficients[2] = sx * sz - cx * sy * cz;
2570
+ coefficients[3] = -cy * sz;
2571
+ coefficients[4] = cx * cz - sx * sy * sz;
2572
+ coefficients[5] = sx * cz + cx * sy * sz;
2573
+ coefficients[6] = sy;
2574
+ coefficients[7] = -sx * cy;
2575
+ coefficients[8] = cx * cy;
2576
+ if (!coordinateFrame) {
2577
+ let saved = coefficients[1];
2578
+ coefficients[1] = coefficients[3];
2579
+ coefficients[3] = saved;
2580
+ saved = coefficients[2];
2581
+ coefficients[2] = coefficients[6];
2582
+ coefficients[6] = saved;
2583
+ saved = coefficients[5];
2584
+ coefficients[5] = coefficients[7];
2585
+ coefficients[7] = saved;
2586
+ }
2587
+ } else {
2588
+ const sign = coordinateFrame ? -1 : 1;
2589
+ coefficients[1] = -sign * rz;
2590
+ coefficients[2] = sign * ry;
2591
+ coefficients[3] = sign * rz;
2592
+ coefficients[5] = -sign * rx;
2593
+ coefficients[6] = -sign * ry;
2594
+ coefficients[7] = sign * rx;
2595
+ }
2596
+ coefficients[9] = x;
2597
+ coefficients[10] = y;
2598
+ coefficients[11] = z;
2599
+ coefficients[12] = nextScale;
2600
+ coefficients[13] = epoch;
2601
+ }
2602
+ return {
2603
+ forwardFlat: createKinematicHelmertFlat(coefficients, prepare, false),
2604
+ inverseFlat: createKinematicHelmertFlat(coefficients, prepare, true),
2605
+ forward(point, epoch) {
2606
+ prepare(epoch);
2607
+ const { x, y, z } = point;
2608
+ point.x = coefficients[12] * (coefficients[0] * x + coefficients[1] * y + coefficients[2] * z) + coefficients[9];
2609
+ point.y = coefficients[12] * (coefficients[3] * x + coefficients[4] * y + coefficients[5] * z) + coefficients[10];
2610
+ point.z = coefficients[12] * (coefficients[6] * x + coefficients[7] * y + coefficients[8] * z) + coefficients[11];
2611
+ },
2612
+ inverse(point, epoch) {
2613
+ prepare(epoch);
2614
+ const x = (point.x - coefficients[9]) / coefficients[12], y = (point.y - coefficients[10]) / coefficients[12], z = (point.z - coefficients[11]) / coefficients[12];
2615
+ point.x = coefficients[0] * x + coefficients[3] * y + coefficients[6] * z;
2616
+ point.y = coefficients[1] * x + coefficients[4] * y + coefficients[7] * z;
2617
+ point.z = coefficients[2] * x + coefficients[5] * y + coefficients[8] * z;
2618
+ }
2619
+ };
2620
+ }
2621
+
2622
+ // dist/experimental/projection-descriptor.js
2623
+ var CACHE_KEY = /* @__PURE__ */ Symbol.for("@math.gl/projection/projection-implementations");
2624
+ function cache() {
2625
+ const scope = globalThis;
2626
+ scope[CACHE_KEY] || (scope[CACHE_KEY] = /* @__PURE__ */ new WeakMap());
2627
+ return scope[CACHE_KEY];
2628
+ }
2629
+ function getLoadedProjection(projection) {
2630
+ var _a2;
2631
+ return "create" in projection ? projection : (_a2 = cache().get(projection)) == null ? void 0 : _a2.implementation;
2632
+ }
2633
+ function preloadProjection(projection) {
2634
+ if ("create" in projection)
2635
+ return Promise.resolve(projection);
2636
+ let state = cache().get(projection);
2637
+ if (!state) {
2638
+ state = { load: () => projection.preload() };
2639
+ cache().set(projection, state);
2640
+ }
2641
+ if (state.implementation)
2642
+ return Promise.resolve(state.implementation);
2643
+ const entry = state;
2644
+ entry.pending || (entry.pending = Promise.resolve().then(entry.load).then((plugin) => {
2645
+ const key = (value) => value.toLowerCase().replace(/[\s_-]/g, "");
2646
+ const supported = new Set([plugin.name, ...plugin.aliases || []].map(key));
2647
+ if (typeof plugin.create !== "function" || ![projection.name, ...projection.aliases || []].every((name) => supported.has(key(name))))
2648
+ throw new Error("Loaded projection does not match descriptor: " + projection.name);
2649
+ entry.implementation = plugin;
2650
+ return plugin;
2651
+ }).catch((error) => {
2652
+ entry.pending = void 0;
2653
+ throw error;
2654
+ }));
2655
+ return entry.pending;
2656
+ }
2657
+
2658
+ // dist/experimental/vertical-datum.js
2659
+ function compileVerticalGrid(names, grids = {}) {
2660
+ if (names === void 0)
2661
+ return void 0;
2662
+ const entries = [];
2663
+ for (const entry of names.split(",")) {
2664
+ const optional = entry.startsWith("@");
2665
+ const name = optional ? entry.slice(1) : entry;
2666
+ if (!name || /\s/.test(name))
2667
+ throw new Error("Invalid vertical grid name");
2668
+ if (name === "null") {
2669
+ entries.push(null);
2670
+ break;
2671
+ }
2672
+ const grid = Object.prototype.hasOwnProperty.call(grids, name) ? grids[name] : void 0;
2673
+ if (grid) {
2674
+ if (typeof grid.getOffset !== "function")
2675
+ throw new Error("Invalid vertical grid: " + name);
2676
+ entries.push(grid.getOffset.bind(grid));
2677
+ } else if (!optional)
2678
+ unsupportedStage("Required vertical grid is not registered: " + name);
2679
+ }
2680
+ return (longitude, latitude) => {
2681
+ for (const sample of entries) {
2682
+ if (!sample)
2683
+ return 0;
2684
+ const offset = sample(longitude, latitude);
2685
+ if (offset === void 0)
2686
+ continue;
2687
+ if (!Number.isFinite(offset))
2688
+ throw new Error("Vertical grid returned a non-finite offset");
2689
+ return offset;
2690
+ }
2691
+ throw new Error("No vertical grid covers this coordinate");
2692
+ };
2693
+ }
2694
+
2695
+ // dist/experimental/projection-pipeline.js
2696
+ var EMPTY_STACK = new Float64Array(0);
2697
+ var ordinaryByteLength = Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
2698
+ function sharedBuffer(buffer) {
2699
+ try {
2700
+ ordinaryByteLength.call(buffer);
2701
+ return false;
2702
+ } catch {
2703
+ return true;
2704
+ }
2705
+ }
2706
+ function compileFlat(pairs) {
2707
+ if (pairs.length === 1 && pairs[0].forwardFlat)
2708
+ return pairs[0].forwardFlat;
2709
+ return pairs.every((pair) => pair.forwardNumeric) && pairs.some((pair) => pair.forwardNumeric[0] !== 2) ? createNumericFlat(pairs.map((pair) => pair.forwardNumeric)) : void 0;
2710
+ }
2711
+ var factors = {
2712
+ deg: Math.PI / 180,
2713
+ rad: 1,
2714
+ m: 1,
2715
+ ft: 0.3048,
2716
+ "us-ft": 1200 / 3937
2717
+ };
2718
+ var geometryKeys = ["ellps", "a", "b", "rf", "f", "R"];
2719
+ var angular = (unit) => unit === "deg" || unit === "rad";
2720
+ var own2 = (value, name) => Object.prototype.hasOwnProperty.call(value, name);
2721
+ function keys(value, allowed) {
2722
+ if (!value || typeof value !== "object" || Array.isArray(value))
2723
+ throw new Error("Expected operation object");
2724
+ for (const name of Object.keys(value))
2725
+ if (!allowed.includes(name))
2726
+ unsupportedStage("Unsupported pipeline parameter: " + name);
2727
+ }
2728
+ function definition(name, parameters = {}) {
2729
+ if (!/^[a-z][a-z0-9_]*$/i.test(name))
2730
+ throw new Error("Invalid projection name");
2731
+ return "+proj=" + name + Object.entries(parameters).map(([key, value]) => {
2732
+ if (!/^[a-z][a-z0-9_]*$/i.test(key) || value !== void 0 && (typeof value !== "string" || !value || /[\s=]/.test(value) || /\+/.test(value.slice(1).replace(/[eE]\+/g, ""))))
2733
+ throw new Error("Invalid pipeline projection parameter: " + key);
2734
+ return " +" + key + (value === void 0 ? "" : "=" + value);
2735
+ }).join("");
2736
+ }
2737
+ function finite(point) {
2738
+ if (!Number.isFinite(point.x) || !Number.isFinite(point.y) || !Number.isFinite(point.z))
2739
+ throw new Error("Pipeline coordinate must be finite");
2740
+ }
2741
+ function triple(values) {
2742
+ if (!Array.isArray(values) || values.length !== 3 || !values.every(Number.isFinite))
2743
+ throw new Error("Expected three finite Helmert parameters");
2744
+ }
2745
+ var ProjectionPipeline = class {
2746
+ constructor(options) {
2747
+ this.forwardFactories = [];
2748
+ this.inverseFactories = [];
2749
+ this.stackSize = 0;
2750
+ this.coordinateScratch = new ProjectionScratch();
2751
+ this.required = [];
2752
+ this.requiresZ = false;
2753
+ this.requiresEpoch = false;
2754
+ keys(options, ["input", "steps", "projections", "datumGrids", "verticalGrids"]);
2755
+ keys(options.input, ["space", "units"]);
2756
+ const { space, units } = options.input;
2757
+ if (!["geographic", "projected", "geocentric"].includes(space) || !Array.isArray(units) || units.length !== 3 || units.some((unit) => !own2(factors, unit)) || angular(units[2]) || (space === "geographic" ? !angular(units[0]) || !angular(units[1]) : angular(units[0]) || angular(units[1])))
2758
+ throw new Error("Invalid pipeline input space/units");
2759
+ if (!Array.isArray(options.steps) || options.steps.length === 0)
2760
+ throw new Error("Pipeline requires at least one step");
2761
+ this.requiresZ = space === "geocentric";
2762
+ this.input = Object.freeze({
2763
+ space,
2764
+ units: Object.freeze([...units])
2765
+ });
2766
+ const state = { space, units: [...units], stacks: [[], [], []] };
2767
+ const projections = [...options.projections || []];
2768
+ this.deferred = projections.some((projection) => !("create" in projection));
2769
+ const caches = options.steps.map(() => ({}));
2770
+ for (const [index, step] of options.steps.entries()) {
2771
+ for (const name of ["inverse", "omitForward", "omitInverse"])
2772
+ if ((step == null ? void 0 : step[name]) !== void 0 && typeof step[name] !== "boolean")
2773
+ throw new Error("Invalid pipeline " + name + " flag");
2774
+ if ((step == null ? void 0 : step.omitForward) && step.omitInverse)
2775
+ throw new Error("A pipeline step cannot omit both directions");
2776
+ if (!(step == null ? void 0 : step.omitForward))
2777
+ this.forwardFactories.push(this.prepare(step, state, { ...options, projections }, caches[index]));
2778
+ }
2779
+ this.balanced(state);
2780
+ this.output = Object.freeze({
2781
+ space: state.space,
2782
+ units: Object.freeze([...state.units])
2783
+ });
2784
+ const reverse = { space: state.space, units: [...state.units], stacks: [[], [], []] };
2785
+ for (let index = options.steps.length - 1; index >= 0; index--) {
2786
+ const step = options.steps[index];
2787
+ if (!step.omitInverse)
2788
+ this.inverseFactories.push(this.prepare({ ...step, inverse: !step.inverse }, reverse, { ...options, projections }, caches[index]));
2789
+ }
2790
+ this.balanced(reverse);
2791
+ if (reverse.space !== space || reverse.units.some((unit, index) => unit !== units[index]))
2792
+ throw new Error("Inverse pipeline output does not match declared input space/units");
2793
+ if (this.required.every((projection) => getLoadedProjection(projection)))
2794
+ this.compile();
2795
+ this.project = this.project.bind(this);
2796
+ this.unproject = this.unproject.bind(this);
2797
+ this.projectSync = this.projectSync.bind(this);
2798
+ this.unprojectSync = this.unprojectSync.bind(this);
2799
+ this.projectTo = this.projectTo.bind(this);
2800
+ this.unprojectTo = this.unprojectTo.bind(this);
2801
+ this.projectToSync = this.projectToSync.bind(this);
2802
+ this.unprojectToSync = this.unprojectToSync.bind(this);
2803
+ this.projectFlat = this.projectFlat.bind(this);
2804
+ this.unprojectFlat = this.unprojectFlat.bind(this);
2805
+ this.projectFlatSync = this.projectFlatSync.bind(this);
2806
+ this.unprojectFlatSync = this.unprojectFlatSync.bind(this);
2807
+ }
2808
+ /** Load only implementations named by pipeline steps; failures can be retried. */
2809
+ preload() {
2810
+ if (this.compiled)
2811
+ return Promise.resolve(this);
2812
+ this.pending || (this.pending = Promise.all(this.required.map(preloadProjection)).then(() => {
2813
+ this.compile();
2814
+ return this;
2815
+ }).catch((error) => {
2816
+ this.pending = void 0;
2817
+ throw error;
2818
+ }));
2819
+ return this.pending;
2820
+ }
2821
+ project(coordinate, epoch) {
2822
+ return this.deferred ? this.preload().then(() => this.projectSync(coordinate, epoch)) : this.projectSync(coordinate, epoch);
2823
+ }
2824
+ unproject(coordinate, epoch) {
2825
+ return this.deferred ? this.preload().then(() => this.unprojectSync(coordinate, epoch)) : this.unprojectSync(coordinate, epoch);
2826
+ }
2827
+ /** Reuse a scalar output; the epoch remains separate from all coordinate ordinates. */
2828
+ projectTo(coordinate, output, epoch) {
2829
+ return this.deferred ? this.scalarToLoaded(coordinate, output, false, epoch) : this.projectToSync(coordinate, output, epoch);
2830
+ }
2831
+ unprojectTo(coordinate, output, epoch) {
2832
+ return this.deferred ? this.scalarToLoaded(coordinate, output, true, epoch) : this.unprojectToSync(coordinate, output, epoch);
2833
+ }
2834
+ projectToSync(coordinate, output, epoch) {
2835
+ validateScalarOutput(coordinate, output, coordinate.length);
2836
+ return this.scalar(coordinate, false, epoch, output);
2837
+ }
2838
+ unprojectToSync(coordinate, output, epoch) {
2839
+ validateScalarOutput(coordinate, output, coordinate.length);
2840
+ return this.scalar(coordinate, true, epoch, output);
2841
+ }
2842
+ scalarToLoaded(coordinate, output, inverse, epoch) {
2843
+ validateScalarOutput(coordinate, output, coordinate.length);
2844
+ const input = coordinate.slice();
2845
+ return this.preload().then(() => inverse ? this.unprojectToSync(input, output, epoch) : this.projectToSync(input, output, epoch));
2846
+ }
2847
+ projectFlat(coordinates, dimension = 2, epochs) {
2848
+ return this.deferred ? this.preload().then(() => this.projectFlatSync(coordinates, dimension, epochs)) : this.projectFlatSync(coordinates, dimension, epochs);
2849
+ }
2850
+ unprojectFlat(coordinates, dimension = 2, epochs) {
2851
+ return this.deferred ? this.preload().then(() => this.unprojectFlatSync(coordinates, dimension, epochs)) : this.unprojectFlatSync(coordinates, dimension, epochs);
2852
+ }
2853
+ projectSync(coordinate, epoch) {
2854
+ return this.scalar(coordinate, false, epoch);
2855
+ }
2856
+ unprojectSync(coordinate, epoch) {
2857
+ return this.scalar(coordinate, true, epoch);
2858
+ }
2859
+ projectFlatSync(coordinates, dimension = 2, epochs) {
2860
+ return this.flat(coordinates, dimension, false, epochs);
2861
+ }
2862
+ unprojectFlatSync(coordinates, dimension = 2, epochs) {
2863
+ return this.flat(coordinates, dimension, true, epochs);
2864
+ }
2865
+ compile() {
2866
+ if (this.compiled)
2867
+ return;
2868
+ for (const registration of this.required)
2869
+ if (!getLoadedProjection(registration))
2870
+ unsupportedStage("Pipeline projection requires preload(): " + registration.name);
2871
+ const forward = this.forwardFactories.map((factory) => factory()), inverse = this.inverseFactories.map((factory) => factory());
2872
+ this.compiled = {
2873
+ forward: forward.map((pair) => pair.forward),
2874
+ inverse: inverse.map((pair) => pair.forward),
2875
+ forwardFlat: compileFlat(forward),
2876
+ inverseFlat: compileFlat(inverse)
2877
+ };
2878
+ }
2879
+ operations(inverse) {
2880
+ this.compile();
2881
+ return inverse ? this.compiled.inverse : this.compiled.forward;
2882
+ }
2883
+ scalar(coordinate, inverse, epoch, output) {
2884
+ this.coordinateEpoch(epoch);
2885
+ if (coordinate.length < (this.requiresZ ? 3 : 2))
2886
+ throw new Error("Pipeline requires " + (this.requiresZ ? "XYZ" : "XY") + " coordinates");
2887
+ const operations = this.operations(inverse);
2888
+ const point = this.coordinateScratch.acquire();
2889
+ try {
2890
+ point.x = coordinate[0];
2891
+ point.y = coordinate[1];
2892
+ point.z = coordinate.length >= 3 ? coordinate[2] : 0;
2893
+ let stack = EMPTY_STACK;
2894
+ if (this.stackSize) {
2895
+ if (point === this.coordinateScratch.point) {
2896
+ this.coordinateStack || (this.coordinateStack = new Float64Array(this.stackSize));
2897
+ stack = this.coordinateStack;
2898
+ } else {
2899
+ stack = new Float64Array(this.stackSize);
2900
+ }
2901
+ }
2902
+ this.run(point, operations, stack, epoch);
2903
+ if (output)
2904
+ return writeScalarOutput(coordinate, output, point, coordinate.length);
2905
+ const result = [...coordinate];
2906
+ result[0] = point.x;
2907
+ result[1] = point.y;
2908
+ if (coordinate.length >= 3)
2909
+ result[2] = point.z;
2910
+ return result;
2911
+ } finally {
2912
+ this.coordinateScratch.release(point);
2913
+ }
2914
+ }
2915
+ flat(coordinates, dimension, inverse, epochs) {
2916
+ if (!(coordinates instanceof Float32Array || coordinates instanceof Float64Array) || !Number.isSafeInteger(dimension) || dimension < (this.requiresZ ? 3 : 2) || coordinates.length % dimension)
2917
+ throw new Error("Pipeline requires Float32Array/Float64Array and a valid XY/XYZ stride");
2918
+ if (epochs === void 0)
2919
+ this.coordinateEpoch(void 0);
2920
+ else if (typeof epochs === "number")
2921
+ this.coordinateEpoch(epochs);
2922
+ else {
2923
+ if (!(epochs instanceof Float32Array || epochs instanceof Float64Array) || epochs.length !== coordinates.length / dimension)
2924
+ throw new Error("Epoch buffer requires one Float32/Float64 value per coordinate record");
2925
+ if (epochs.byteOffset < coordinates.byteOffset + coordinates.byteLength && coordinates.byteOffset < epochs.byteOffset + epochs.byteLength && (epochs.buffer === coordinates.buffer || sharedBuffer(epochs.buffer) && sharedBuffer(coordinates.buffer)))
2926
+ throw new Error("Epoch and coordinate buffers must not overlap or alias shared storage");
2927
+ }
2928
+ const operations = this.operations(inverse);
2929
+ const specialized = inverse ? this.compiled.inverseFlat : this.compiled.forwardFlat;
2930
+ if (specialized) {
2931
+ specialized(coordinates, dimension, epochs);
2932
+ return coordinates;
2933
+ }
2934
+ const point = this.coordinateScratch.acquire();
2935
+ try {
2936
+ const float32 = coordinates instanceof Float32Array;
2937
+ let stack = EMPTY_STACK;
2938
+ if (this.stackSize) {
2939
+ if (point === this.coordinateScratch.point) {
2940
+ this.coordinateStack || (this.coordinateStack = new Float64Array(this.stackSize));
2941
+ stack = this.coordinateStack;
2942
+ } else
2943
+ stack = new Float64Array(this.stackSize);
2944
+ }
2945
+ const epochBuffer = typeof epochs === "number" ? void 0 : epochs;
2946
+ let epoch = typeof epochs === "number" ? epochs : void 0;
2947
+ for (let i = 0; i < coordinates.length; i += dimension) {
2948
+ point.x = coordinates[i];
2949
+ point.y = coordinates[i + 1];
2950
+ point.z = dimension >= 3 ? coordinates[i + 2] : 0;
2951
+ if (epochBuffer) {
2952
+ epoch = epochBuffer[i / dimension];
2953
+ this.coordinateEpoch(epoch);
2954
+ }
2955
+ this.run(point, operations, stack, epoch);
2956
+ if (float32 && Math.max(Math.abs(point.x), Math.abs(point.y), Math.abs(point.z)) > 34028234663852886e22)
2957
+ throw new Error("Pipeline output exceeds Float32 range");
2958
+ coordinates[i] = point.x;
2959
+ coordinates[i + 1] = point.y;
2960
+ if (dimension >= 3)
2961
+ coordinates[i + 2] = point.z;
2962
+ }
2963
+ return coordinates;
2964
+ } finally {
2965
+ this.coordinateScratch.release(point);
2966
+ }
2967
+ }
2968
+ coordinateEpoch(epoch) {
2969
+ if (epoch === void 0) {
2970
+ if (this.requiresEpoch)
2971
+ throw new Error("Pipeline requires an explicit coordinate epoch");
2972
+ } else if (typeof epoch !== "number" || !Number.isFinite(epoch))
2973
+ throw new Error("Coordinate epoch must be a finite decimal year");
2974
+ }
2975
+ run(point, operations, stack, epoch) {
2976
+ finite(point);
2977
+ for (const operation of operations) {
2978
+ operation(point, stack, epoch);
2979
+ finite(point);
2980
+ }
2981
+ }
2982
+ balanced(state) {
2983
+ if (state.stacks.some((stack) => stack.length))
2984
+ throw new Error("Pipeline stack has unbalanced push/pop operations");
2985
+ }
2986
+ prepare(step, state, options, cache2) {
2987
+ var _a2, _b, _c;
2988
+ const allowed = {
2989
+ unitconvert: ["xy", "z"],
2990
+ axisswap: ["order"],
2991
+ projection: ["name", "parameters", "output"],
2992
+ cart: ["ellipsoid"],
2993
+ helmert: [
2994
+ "translation",
2995
+ "rotation",
2996
+ "scalePPM",
2997
+ "convention",
2998
+ "exact",
2999
+ "referenceEpoch",
3000
+ "rates"
3001
+ ],
3002
+ deformation: ["model", "sourceEpoch", "targetEpoch"],
3003
+ push: ["components"],
3004
+ pop: ["components"],
3005
+ hgridshift: ["grids"],
3006
+ vgridshift: ["grids", "multiplier"]
3007
+ };
3008
+ if (!step || !own2(allowed, step.type))
3009
+ unsupportedStage("Unsupported pipeline operation: " + (step == null ? void 0 : step.type));
3010
+ keys(step, ["type", "inverse", "omitForward", "omitInverse", ...allowed[step.type]]);
3011
+ if (step.inverse !== void 0 && typeof step.inverse !== "boolean")
3012
+ throw new Error("Invalid pipeline inverse flag");
3013
+ const inverse = Boolean(step.inverse);
3014
+ const orient = (pair2) => inverse ? {
3015
+ forward: pair2.inverse,
3016
+ inverse: pair2.forward,
3017
+ forwardNumeric: pair2.inverseNumeric,
3018
+ inverseNumeric: pair2.forwardNumeric,
3019
+ forwardFlat: pair2.inverseFlat,
3020
+ inverseFlat: pair2.forwardFlat
3021
+ } : pair2;
3022
+ const pair = (forward, backward, forwardNumeric, inverseNumeric, forwardFlat, inverseFlat) => () => {
3023
+ cache2.pair || (cache2.pair = {
3024
+ forward,
3025
+ inverse: backward,
3026
+ forwardNumeric,
3027
+ inverseNumeric,
3028
+ forwardFlat,
3029
+ inverseFlat
3030
+ });
3031
+ return orient(cache2.pair);
3032
+ };
3033
+ const requireState = (space, expected) => {
3034
+ if (state.space !== space || expected.some((unit, index) => state.units[index] !== unit))
3035
+ throw new Error("Pipeline step " + step.type + " requires " + space + " " + expected.join("/"));
3036
+ };
3037
+ switch (step.type) {
3038
+ case "unitconvert": {
3039
+ if (!step.xy && !step.z)
3040
+ throw new Error("Empty unit conversion");
3041
+ const scale = [1, 1, 1];
3042
+ for (const [conversion, indices] of [
3043
+ [step.xy, [0, 1]],
3044
+ [step.z, [2]]
3045
+ ]) {
3046
+ if (!conversion)
3047
+ continue;
3048
+ keys(conversion, ["from", "to"]);
3049
+ const { from, to } = conversion;
3050
+ if (!own2(factors, from) || !own2(factors, to) || angular(from) !== angular(to))
3051
+ throw new Error("Incompatible pipeline units");
3052
+ for (const index of indices) {
3053
+ if (state.units[index] !== (inverse ? to : from))
3054
+ throw new Error("Pipeline unit mismatch");
3055
+ state.units[index] = inverse ? from : to;
3056
+ scale[index] = factors[from] / factors[to];
3057
+ }
3058
+ }
3059
+ this.requiresZ || (this.requiresZ = Boolean(step.z));
3060
+ const [xScale, yScale, zScale] = scale;
3061
+ return pair((p) => {
3062
+ p.x *= xScale;
3063
+ p.y *= yScale;
3064
+ p.z *= zScale;
3065
+ }, (p) => {
3066
+ p.x /= xScale;
3067
+ p.y /= yScale;
3068
+ p.z /= zScale;
3069
+ }, [0, xScale, yScale, zScale], [1, xScale, yScale, zScale]);
3070
+ }
3071
+ case "axisswap": {
3072
+ const order = [...step.order];
3073
+ if (![2, 3].includes(order.length) || order.some((index) => !Number.isInteger(index) || Math.abs(index) < 1 || Math.abs(index) > order.length) || new Set(order.map(Math.abs)).size !== order.length)
3074
+ throw new Error("Axis order must be a signed permutation");
3075
+ if (order.length === 2)
3076
+ order.push(3);
3077
+ this.requiresZ || (this.requiresZ = step.order.length === 3);
3078
+ const reverse = [0, 0, 0];
3079
+ order.forEach((index, target) => {
3080
+ reverse[Math.abs(index) - 1] = Math.sign(index) * (target + 1);
3081
+ });
3082
+ const selected = inverse ? reverse : order;
3083
+ state.units = selected.map((index) => state.units[Math.abs(index) - 1]);
3084
+ const operation = (indices) => {
3085
+ const [a, b, c] = indices.map(Math.abs);
3086
+ const [sx, sy, sz] = indices.map(Math.sign);
3087
+ return (p) => {
3088
+ const { x, y, z } = p;
3089
+ p.x = sx * (a === 1 ? x : a === 2 ? y : z);
3090
+ p.y = sy * (b === 1 ? x : b === 2 ? y : z);
3091
+ p.z = sz * (c === 1 ? x : c === 2 ? y : z);
3092
+ };
3093
+ };
3094
+ return pair(operation(order), operation(reverse), [2, order[0], order[1], order[2]], [2, reverse[0], reverse[1], reverse[2]]);
3095
+ }
3096
+ case "projection": {
3097
+ const output = step.output === void 0 ? { space: "projected", unit: "m" } : { ...step.output };
3098
+ keys(output, ["space", "unit"]);
3099
+ if (output.space === "geographic" ? !["rad", "deg"].includes(output.unit) : output.space !== "projected" || output.unit !== "m")
3100
+ throw new Error("Invalid projection output space/unit contract");
3101
+ requireState(inverse ? output.space : "geographic", inverse ? [output.unit, output.unit] : ["rad", "rad"]);
3102
+ state.space = inverse ? "geographic" : output.space;
3103
+ state.units[0] = state.units[1] = inverse ? "rad" : output.unit;
3104
+ const key = (name) => name.toLowerCase().replace(/[\s_-]/g, "");
3105
+ if (typeof step.name !== "string")
3106
+ throw new Error("Invalid projection name");
3107
+ const registration = (_a2 = options.projections) == null ? void 0 : _a2.find((p) => [p.name, ...p.aliases || []].some((name) => key(name) === key(step.name)));
3108
+ if (!registration)
3109
+ unsupportedStage("Pipeline projection is not registered: " + step.name);
3110
+ if (!this.required.includes(registration))
3111
+ this.required.push(registration);
3112
+ const parameters = { ...step.parameters };
3113
+ for (const name of Object.keys(parameters))
3114
+ if (CORE_PARAMETERS.includes(name) && !geometryKeys.includes(name) && name !== "over")
3115
+ unsupportedStage("Unsupported pipeline parameter: " + name);
3116
+ const oblique = key(registration.name) === "obtran";
3117
+ const geographicChild = ["longlat", "latlong", "latlon", "lonlat", "identity"].includes(key(parameters["o_proj"] || ""));
3118
+ if (oblique && (!step.output || !parameters["o_proj"]))
3119
+ unsupportedStage("Oblique helper pipelines require an explicit output-unit contract and o_proj");
3120
+ if ((oblique && geographicChild) !== (output.space === "geographic"))
3121
+ throw new Error("Projection output contract does not match its algorithm");
3122
+ const scale = geographicChild && output.unit === "rad" ? Math.PI / 180 : 1;
3123
+ const normalized = normalizeCRS(definition(registration.name, parameters));
3124
+ if (normalized.kind !== "projected")
3125
+ unsupportedStage("Use a cart step for geocentric conversion");
3126
+ return () => {
3127
+ var _a3;
3128
+ if (cache2.pair)
3129
+ return orient(cache2.pair);
3130
+ const plugin = getLoadedProjection(registration);
3131
+ if (!plugin)
3132
+ unsupportedStage("Pipeline projection requires preload(): " + registration.name);
3133
+ if (key(plugin.name) === "obtran" !== oblique)
3134
+ unsupportedStage("Pipeline projection requires a matching projected-metre output contract: " + plugin.name);
3135
+ if ([
3136
+ "geocent",
3137
+ "geocentric",
3138
+ "identity",
3139
+ "longlat",
3140
+ "latlong",
3141
+ "latlon",
3142
+ "lonlat"
3143
+ ].includes(key(plugin.name)))
3144
+ unsupportedStage("Pipeline projection requires a projected-metre output contract: " + plugin.name);
3145
+ keys(parameters, [...geometryKeys, "over", ...plugin.parameters]);
3146
+ for (const [name, value] of Object.entries(parameters)) {
3147
+ const flag = name === "over" || ((_a3 = plugin.flags) == null ? void 0 : _a3.includes(name));
3148
+ if (flag && value !== void 0)
3149
+ throw new Error("Expected a flag without a value: " + name);
3150
+ if (!flag && value === void 0)
3151
+ throw new Error("Pipeline parameter requires a value: " + name);
3152
+ }
3153
+ const implementation = plugin.create({
3154
+ parameters: { ...normalized.parameters, proj: plugin.name },
3155
+ semiMajorAxis: normalized.ellipsoid.semiMajorAxis,
3156
+ semiMinorAxis: normalized.ellipsoid.semiMinorAxis,
3157
+ eccentricitySquared: normalized.ellipsoid.eccentricitySquared
3158
+ });
3159
+ const forward = projectionOperation(implementation, false), backward = projectionOperation(implementation, true);
3160
+ cache2.pair = oblique ? {
3161
+ forward: (p) => {
3162
+ if (Math.abs(p.y) > Math.PI / 2)
3163
+ throw new Error("Invalid geographic latitude");
3164
+ forward(p);
3165
+ p.x *= scale;
3166
+ p.y *= scale;
3167
+ },
3168
+ inverse: (p) => {
3169
+ if (geographicChild && Math.abs(p.y) > (output.unit === "deg" ? 90 : Math.PI / 2))
3170
+ throw new Error("Invalid rotated geographic latitude");
3171
+ p.x /= scale;
3172
+ p.y /= scale;
3173
+ backward(p);
3174
+ }
3175
+ } : { forward, inverse: backward };
3176
+ return orient(cache2.pair);
3177
+ };
3178
+ }
3179
+ case "cart": {
3180
+ requireState(inverse ? "geocentric" : "geographic", inverse ? ["m", "m", "m"] : ["rad", "rad", "m"]);
3181
+ state.space = inverse ? "geographic" : "geocentric";
3182
+ state.units = inverse ? ["rad", "rad", "m"] : ["m", "m", "m"];
3183
+ this.requiresZ = true;
3184
+ keys(step.ellipsoid || {}, geometryKeys);
3185
+ const ellipsoid = normalizeCRS(definition("longlat", step.ellipsoid)).ellipsoid;
3186
+ return pair((p) => geodeticToGeocentricInPlace(p, ellipsoid), (p) => geocentricToGeodeticInPlace(p, ellipsoid));
3187
+ }
3188
+ case "helmert": {
3189
+ requireState("geocentric", ["m", "m", "m"]);
3190
+ this.requiresZ = true;
3191
+ triple(step.translation);
3192
+ if (step.rotation)
3193
+ triple(step.rotation);
3194
+ if ((step.rotation || ((_b = step.rates) == null ? void 0 : _b.rotation)) && !step.convention)
3195
+ throw new Error("Helmert rotation requires a convention");
3196
+ if (step.convention !== void 0 && !["position_vector", "coordinate_frame"].includes(step.convention))
3197
+ throw new Error("Invalid Helmert convention");
3198
+ const scale = step.scalePPM ?? 0;
3199
+ if (!Number.isFinite(scale) || scale <= -1e6)
3200
+ throw new Error("Helmert requires positive finite scale");
3201
+ if (step.exact !== void 0 && typeof step.exact !== "boolean")
3202
+ throw new Error("Invalid exact Helmert flag");
3203
+ if (step.rates !== void 0) {
3204
+ keys(step.rates, ["translation", "rotation", "scalePPM"]);
3205
+ if (step.rates.translation === void 0 && step.rates.rotation === void 0 && step.rates.scalePPM === void 0)
3206
+ throw new Error("Helmert rates require at least one parameter");
3207
+ if (step.rates.translation !== void 0)
3208
+ triple(step.rates.translation);
3209
+ if (step.rates.rotation !== void 0)
3210
+ triple(step.rates.rotation);
3211
+ if (step.rates.scalePPM !== void 0 && !Number.isFinite(step.rates.scalePPM))
3212
+ throw new Error("Helmert scale rate must be finite");
3213
+ if (typeof step.referenceEpoch !== "number" || !Number.isFinite(step.referenceEpoch))
3214
+ throw new Error("Helmert rates require a finite referenceEpoch");
3215
+ this.requiresEpoch = true;
3216
+ const operation = createKinematicHelmert(step.translation, step.rotation || [0, 0, 0], scale, step.rates, step.referenceEpoch, step.convention === "coordinate_frame", Boolean(step.exact));
3217
+ return pair((p, _stack, epoch) => operation.forward(p, epoch), (p, _stack, epoch) => operation.inverse(p, epoch), void 0, void 0, operation.forwardFlat, operation.inverseFlat);
3218
+ }
3219
+ if (step.referenceEpoch !== void 0)
3220
+ throw new Error("Helmert referenceEpoch requires rates");
3221
+ if (step.exact) {
3222
+ const exact = createExactHelmert(step.translation, step.rotation || [0, 0, 0], scale, step.convention === "coordinate_frame");
3223
+ return pair(exact.forward, exact.inverse, void 0, void 0, createHelmertFlat(exact.coefficients, false, true), createHelmertFlat(exact.coefficients, true, true));
3224
+ }
3225
+ const sign = step.convention === "coordinate_frame" ? -1 : 1;
3226
+ const values = [
3227
+ ...step.translation,
3228
+ ...(step.rotation || [0, 0, 0]).map((value) => sign * value),
3229
+ scale
3230
+ ];
3231
+ const radians = Math.PI / (180 * 3600);
3232
+ const coefficients = [
3233
+ (values[3] || 0) * radians,
3234
+ (values[4] || 0) * radians,
3235
+ (values[5] || 0) * radians,
3236
+ 0,
3237
+ 0,
3238
+ 0,
3239
+ 0,
3240
+ 0,
3241
+ 0,
3242
+ values[0],
3243
+ values[1],
3244
+ values[2],
3245
+ 1 + (values[6] || 0) / 1e6
3246
+ ];
3247
+ return pair(createHelmert(values, false), createHelmert(values, true), void 0, void 0, createHelmertFlat(coefficients, false, false), createHelmertFlat(coefficients, true, false));
3248
+ }
3249
+ case "deformation": {
3250
+ requireState("geocentric", ["m", "m", "m"]);
3251
+ this.requiresZ = true;
3252
+ const source = step.sourceEpoch, target = step.targetEpoch;
3253
+ if (source !== "coordinate" && (typeof source !== "number" || !Number.isFinite(source)) || typeof target !== "number" || !Number.isFinite(target))
3254
+ throw new Error("Explicit finite deformation source/target epochs required");
3255
+ if (!step.model || typeof step.model.forward !== "function" || typeof step.model.inverse !== "function")
3256
+ throw new Error("Prepared deformation model required");
3257
+ this.requiresEpoch || (this.requiresEpoch = source === "coordinate");
3258
+ const forward = step.model.forward.bind(step.model), backward = step.model.inverse.bind(step.model);
3259
+ return pair((p, _stack, epoch) => forward(p, source === "coordinate" ? epoch : source, target), (p, _stack, epoch) => backward(p, source === "coordinate" ? epoch : source, target));
3260
+ }
3261
+ case "push":
3262
+ case "pop": {
3263
+ if (!Array.isArray(step.components) || !step.components.length || step.components.some((component) => !Number.isInteger(component) || component < 1 || component > 3) || new Set(step.components).size !== step.components.length)
3264
+ throw new Error("Stack components must be distinct ordinates 1, 2 or 3");
3265
+ const components = [...step.components];
3266
+ this.requiresZ || (this.requiresZ = components.includes(3));
3267
+ const pushing = step.type === "push" !== inverse;
3268
+ const entries = components.map((component) => {
3269
+ const index = component - 1;
3270
+ if (pushing) {
3271
+ const entry2 = { unit: state.units[index], space: state.space, slot: this.stackSize++ };
3272
+ state.stacks[index].push(entry2);
3273
+ return entry2;
3274
+ }
3275
+ const entry = state.stacks[index].pop();
3276
+ if (!entry)
3277
+ throw new Error("Pipeline stack underflow for ordinate " + component);
3278
+ return entry;
3279
+ });
3280
+ if (!pushing) {
3281
+ const horizontal = components.map((component, index) => ({ component, entry: entries[index] })).filter(({ component }) => component < 3);
3282
+ const space = ((_c = horizontal[0]) == null ? void 0 : _c.entry.space) || state.space;
3283
+ if (horizontal.some(({ entry }) => entry.space !== space) || horizontal.length === 1 && space !== state.space)
3284
+ throw new Error("Stack restore would mix horizontal coordinate spaces");
3285
+ state.space = space;
3286
+ components.forEach((component, index) => {
3287
+ state.units[component - 1] = entries[index].unit;
3288
+ });
3289
+ }
3290
+ const save = (p, stack) => {
3291
+ for (let index = 0; index < components.length; index++)
3292
+ stack[entries[index].slot] = components[index] === 1 ? p.x : components[index] === 2 ? p.y : p.z;
3293
+ };
3294
+ const restore = (p, stack) => {
3295
+ for (let index = 0; index < components.length; index++) {
3296
+ const value = stack[entries[index].slot];
3297
+ if (components[index] === 1)
3298
+ p.x = value;
3299
+ else if (components[index] === 2)
3300
+ p.y = value;
3301
+ else
3302
+ p.z = value;
3303
+ }
3304
+ };
3305
+ return () => pushing ? { forward: save, inverse: restore } : { forward: restore, inverse: save };
3306
+ }
3307
+ case "hgridshift": {
3308
+ requireState("geographic", ["rad", "rad"]);
3309
+ if (typeof step.grids !== "string")
3310
+ throw new Error("Horizontal grid names required");
3311
+ const crs = normalizeCRS(definition("longlat", { nadgrids: step.grids }));
3312
+ if (!crs.datum.grids)
3313
+ return pair(() => {
3314
+ }, () => {
3315
+ });
3316
+ const grids = crs.datum.grids.map((reference) => {
3317
+ const grid = own2(options.datumGrids || {}, reference.name) ? options.datumGrids[reference.name] : void 0;
3318
+ if (reference.name !== "null" && !grid && !reference.optional)
3319
+ unsupportedStage("Required datum grid is not registered: " + reference.name);
3320
+ if (grid && typeof grid.shift !== "function")
3321
+ throw new Error("Invalid datum grid: " + reference.name);
3322
+ return { ...reference, grid };
3323
+ });
3324
+ const datum = { ...crs.datum, grids };
3325
+ return pair((p) => applyDatumGrids(p, datum, false), (p) => applyDatumGrids(p, datum, true));
3326
+ }
3327
+ case "vgridshift": {
3328
+ requireState("geographic", ["rad", "rad", "m"]);
3329
+ this.requiresZ = true;
3330
+ if (typeof step.grids !== "string")
3331
+ throw new Error("Vertical grid names required");
3332
+ const offset = compileVerticalGrid(step.grids, options.verticalGrids);
3333
+ const multiplier = step.multiplier ?? -1;
3334
+ if (!Number.isFinite(multiplier))
3335
+ throw new Error("Vertical grid multiplier must be finite");
3336
+ return pair((p) => {
3337
+ p.z += multiplier * offset(p.x, p.y);
3338
+ }, (p) => {
3339
+ p.z -= multiplier * offset(p.x, p.y);
3340
+ });
3341
+ }
3342
+ default:
3343
+ throw new Error("Unsupported pipeline step");
3344
+ }
3345
+ }
3346
+ };
3347
+ //# sourceMappingURL=pipeline.cjs.map