@loaders.gl/gis 4.3.1 → 4.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/index.cjs +2411 -469
  2. package/dist/index.cjs.map +4 -4
  3. package/dist/index.d.ts +31 -12
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +38 -15
  6. package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts +21 -0
  7. package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts.map +1 -0
  8. package/dist/lib/binary-geometry-api/binary-geometry-info.js +48 -0
  9. package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts +5 -0
  10. package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts.map +1 -0
  11. package/dist/lib/binary-geometry-api/concat-binary-geometry.js +50 -0
  12. package/dist/lib/{binary-features/transform.d.ts → binary-geometry-api/transform-coordinates.d.ts} +1 -2
  13. package/dist/lib/binary-geometry-api/transform-coordinates.d.ts.map +1 -0
  14. package/dist/lib/{binary-features/transform.js → binary-geometry-api/transform-coordinates.js} +0 -1
  15. package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts +16 -0
  16. package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts.map +1 -0
  17. package/dist/lib/{binary-features/binary-to-geojson.js → feature-collection-converters/convert-binary-features-to-geojson.js} +3 -90
  18. package/dist/lib/{binary-features/flat-geojson-to-binary.d.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts} +6 -9
  19. package/dist/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts.map +1 -0
  20. package/dist/lib/{binary-features/flat-geojson-to-binary.js → feature-collection-converters/convert-flat-geojson-to-binary-features.js} +5 -5
  21. package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts +74 -0
  22. package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts.map +1 -0
  23. package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.js +377 -0
  24. package/dist/lib/{binary-features/geojson-to-binary.d.ts → feature-collection-converters/convert-geojson-to-binary-features.d.ts} +2 -2
  25. package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.d.ts.map +1 -0
  26. package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.js +24 -0
  27. package/dist/lib/{binary-features/geojson-to-flat-geojson.d.ts → feature-collection-converters/convert-geojson-to-flat-geojson.d.ts} +2 -2
  28. package/dist/lib/feature-collection-converters/convert-geojson-to-flat-geojson.d.ts.map +1 -0
  29. package/dist/lib/{binary-features/geojson-to-flat-geojson.js → feature-collection-converters/convert-geojson-to-flat-geojson.js} +4 -1
  30. package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.d.ts.map +1 -0
  31. package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.js +4 -0
  32. package/dist/lib/geometry-api/geometry-info.d.ts +21 -0
  33. package/dist/lib/geometry-api/geometry-info.d.ts.map +1 -0
  34. package/dist/lib/{binary-features/extract-geometry-info.js → geometry-api/geometry-info.js} +4 -1
  35. package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts +4 -0
  36. package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts.map +1 -0
  37. package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.js +91 -0
  38. package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts +13 -0
  39. package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts.map +1 -0
  40. package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.js +164 -0
  41. package/dist/lib/geometry-converters/convert-to-geojson.d.ts +6 -0
  42. package/dist/lib/geometry-converters/convert-to-geojson.d.ts.map +1 -0
  43. package/dist/lib/geometry-converters/convert-to-geojson.js +39 -0
  44. package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts +6 -0
  45. package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts.map +1 -0
  46. package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.js +195 -0
  47. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts +9 -0
  48. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts.map +1 -0
  49. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.js +273 -0
  50. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts +8 -0
  51. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts.map +1 -0
  52. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.js +44 -0
  53. package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts +10 -0
  54. package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts.map +1 -0
  55. package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.js +254 -0
  56. package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts +3 -0
  57. package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts.map +1 -0
  58. package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js +164 -0
  59. package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts +11 -0
  60. package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts.map +1 -0
  61. package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.js +9 -0
  62. package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts +16 -0
  63. package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts.map +1 -0
  64. package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.js +258 -0
  65. package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts +43 -0
  66. package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts.map +1 -0
  67. package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.js +174 -0
  68. package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts +64 -0
  69. package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts.map +1 -0
  70. package/dist/lib/geometry-converters/wkb/helpers/wkb-types.js +46 -0
  71. package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts +21 -0
  72. package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts.map +1 -0
  73. package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.js +64 -0
  74. package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts +8 -0
  75. package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts.map +1 -0
  76. package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.js +33 -0
  77. package/dist/lib/table-converters/convert-geoarrow-table.d.ts +27 -0
  78. package/dist/lib/table-converters/convert-geoarrow-table.d.ts.map +1 -0
  79. package/dist/lib/table-converters/convert-geoarrow-table.js +154 -0
  80. package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts +4 -0
  81. package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts.map +1 -0
  82. package/dist/lib/{tables/convert-table-to-geojson.js → table-converters/convert-wkb-table-to-geojson.js} +10 -16
  83. package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts +6 -0
  84. package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts.map +1 -0
  85. package/dist/lib/table-converters/make-arrow-batch-iterator.js +35 -0
  86. package/dist/lib/utils/base64-encoder.d.ts +5 -0
  87. package/dist/lib/utils/base64-encoder.d.ts.map +1 -0
  88. package/dist/lib/utils/base64-encoder.js +153 -0
  89. package/dist/lib/utils/binary-reader.d.ts +18 -0
  90. package/dist/lib/utils/binary-reader.d.ts.map +1 -0
  91. package/dist/lib/utils/binary-reader.js +69 -0
  92. package/dist/lib/utils/binary-writer.d.ts +30 -0
  93. package/dist/lib/utils/binary-writer.d.ts.map +1 -0
  94. package/dist/lib/utils/binary-writer.js +127 -0
  95. package/dist/lib/utils/concat-typed-arrays.d.ts +3 -0
  96. package/dist/lib/utils/concat-typed-arrays.d.ts.map +1 -0
  97. package/dist/lib/utils/concat-typed-arrays.js +18 -0
  98. package/dist/lib/utils/hex-encoder.d.ts +15 -0
  99. package/dist/lib/utils/hex-encoder.d.ts.map +1 -0
  100. package/dist/lib/utils/hex-encoder.js +54 -0
  101. package/dist/lib/utils/hex-transcoder.d.ts +15 -0
  102. package/dist/lib/utils/hex-transcoder.d.ts.map +1 -0
  103. package/dist/lib/utils/hex-transcoder.js +50 -0
  104. package/dist/lib/wkt-crs/encode-wkt-crs.d.ts +10 -0
  105. package/dist/lib/wkt-crs/encode-wkt-crs.d.ts.map +1 -0
  106. package/dist/lib/wkt-crs/encode-wkt-crs.js +35 -0
  107. package/dist/lib/wkt-crs/parse-wkt-crs.d.ts +15 -0
  108. package/dist/lib/wkt-crs/parse-wkt-crs.d.ts.map +1 -0
  109. package/dist/lib/wkt-crs/parse-wkt-crs.js +120 -0
  110. package/package.json +7 -5
  111. package/src/index.ts +87 -14
  112. package/src/lib/binary-geometry-api/binary-geometry-info.ts +75 -0
  113. package/src/lib/binary-geometry-api/concat-binary-geometry.ts +78 -0
  114. package/src/lib/{binary-features/transform.ts → binary-geometry-api/transform-coordinates.ts} +0 -1
  115. package/src/lib/{binary-features/binary-to-geojson.ts → feature-collection-converters/convert-binary-features-to-geojson.ts} +5 -142
  116. package/src/lib/{binary-features/flat-geojson-to-binary.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.ts} +14 -9
  117. package/src/lib/feature-collection-converters/convert-geoarrow-to-binary-features.ts +496 -0
  118. package/src/lib/{binary-features/geojson-to-binary.ts → feature-collection-converters/convert-geojson-to-binary-features.ts} +11 -7
  119. package/src/lib/{binary-features/geojson-to-flat-geojson.ts → feature-collection-converters/convert-geojson-to-flat-geojson.ts} +5 -1
  120. package/src/lib/{binary-features → feature-collection-converters/helpers}/flat-geojson-to-binary-types.ts +4 -0
  121. package/src/lib/{binary-features/extract-geometry-info.ts → geometry-api/geometry-info.ts} +20 -2
  122. package/src/lib/geometry-converters/convert-binary-geometry-to-geojson.ts +148 -0
  123. package/src/lib/geometry-converters/convert-geoarrow-to-geojson.ts +193 -0
  124. package/src/lib/geometry-converters/convert-to-geojson.ts +52 -0
  125. package/src/lib/geometry-converters/wkb/convert-geometry-to-twkb.ts +308 -0
  126. package/src/lib/geometry-converters/wkb/convert-geometry-to-wkb.ts +365 -0
  127. package/src/lib/geometry-converters/wkb/convert-geometry-to-wkt.ts +54 -0
  128. package/src/lib/geometry-converters/wkb/convert-twkb-to-geometry.ts +366 -0
  129. package/src/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.ts +238 -0
  130. package/src/lib/geometry-converters/wkb/convert-wkb-to-geometry.ts +23 -0
  131. package/src/lib/geometry-converters/wkb/convert-wkt-to-geometry.ts +294 -0
  132. package/src/lib/geometry-converters/wkb/helpers/parse-wkb-header.ts +213 -0
  133. package/src/lib/geometry-converters/wkb/helpers/wkb-types.ts +82 -0
  134. package/src/lib/geometry-converters/wkb/helpers/wkb-utils.ts +85 -0
  135. package/src/lib/geometry-converters/wkb/helpers/write-wkb-header.ts +41 -0
  136. package/src/lib/table-converters/convert-geoarrow-table.ts +218 -0
  137. package/src/lib/{tables/convert-table-to-geojson.ts → table-converters/convert-wkb-table-to-geojson.ts} +10 -23
  138. package/src/lib/table-converters/make-arrow-batch-iterator.ts +53 -0
  139. package/src/lib/utils/base64-encoder.ts +157 -0
  140. package/src/lib/utils/binary-reader.ts +76 -0
  141. package/src/lib/utils/binary-writer.ts +136 -0
  142. package/src/lib/utils/concat-typed-arrays.ts +24 -0
  143. package/src/lib/utils/hex-encoder.ts +60 -0
  144. package/src/lib/utils/hex-transcoder.ts +54 -0
  145. package/src/lib/wkt-crs/encode-wkt-crs.ts +41 -0
  146. package/src/lib/wkt-crs/parse-wkt-crs.ts +149 -0
  147. package/dist/lib/binary-features/binary-to-geojson.d.ts +0 -18
  148. package/dist/lib/binary-features/binary-to-geojson.d.ts.map +0 -1
  149. package/dist/lib/binary-features/extract-geometry-info.d.ts +0 -8
  150. package/dist/lib/binary-features/extract-geometry-info.d.ts.map +0 -1
  151. package/dist/lib/binary-features/flat-geojson-to-binary-types.d.ts.map +0 -1
  152. package/dist/lib/binary-features/flat-geojson-to-binary-types.js +0 -1
  153. package/dist/lib/binary-features/flat-geojson-to-binary.d.ts.map +0 -1
  154. package/dist/lib/binary-features/geojson-to-binary.d.ts.map +0 -1
  155. package/dist/lib/binary-features/geojson-to-binary.js +0 -21
  156. package/dist/lib/binary-features/geojson-to-flat-geojson.d.ts.map +0 -1
  157. package/dist/lib/binary-features/transform.d.ts.map +0 -1
  158. package/dist/lib/geo/geoarrow-metadata.d.ts +0 -27
  159. package/dist/lib/geo/geoarrow-metadata.d.ts.map +0 -1
  160. package/dist/lib/geo/geoarrow-metadata.js +0 -70
  161. package/dist/lib/geo/geoparquet-metadata-schema.d.ts +0 -79
  162. package/dist/lib/geo/geoparquet-metadata-schema.d.ts.map +0 -1
  163. package/dist/lib/geo/geoparquet-metadata-schema.js +0 -69
  164. package/dist/lib/geo/geoparquet-metadata.d.ts +0 -45
  165. package/dist/lib/geo/geoparquet-metadata.d.ts.map +0 -1
  166. package/dist/lib/geo/geoparquet-metadata.js +0 -117
  167. package/dist/lib/tables/convert-table-to-geojson.d.ts +0 -5
  168. package/dist/lib/tables/convert-table-to-geojson.d.ts.map +0 -1
  169. package/src/lib/geo/geoarrow-metadata.ts +0 -100
  170. package/src/lib/geo/geoparquet-metadata-schema.json +0 -60
  171. package/src/lib/geo/geoparquet-metadata-schema.ts +0 -71
  172. package/src/lib/geo/geoparquet-metadata.ts +0 -191
  173. /package/dist/lib/{binary-features → feature-collection-converters/helpers}/flat-geojson-to-binary-types.d.ts +0 -0
package/dist/index.d.ts CHANGED
@@ -1,13 +1,32 @@
1
- export { GEOPARQUET_METADATA_JSON_SCHEMA } from "./lib/geo/geoparquet-metadata-schema.js";
2
- export type { GeoMetadata } from "./lib/geo/geoparquet-metadata.js";
3
- export { getGeoMetadata, setGeoMetadata, unpackGeoMetadata } from "./lib/geo/geoparquet-metadata.js";
4
- export { unpackJSONStringMetadata } from "./lib/geo/geoparquet-metadata.js";
5
- export type { GeoArrowEncoding, GeoArrowMetadata } from "./lib/geo/geoarrow-metadata.js";
6
- export { getGeometryColumnsFromSchema } from "./lib/geo/geoarrow-metadata.js";
7
- export { convertWKBTableToGeoJSON } from "./lib/tables/convert-table-to-geojson.js";
8
- export { flatGeojsonToBinary } from "./lib/binary-features/flat-geojson-to-binary.js";
9
- export { geojsonToBinary } from "./lib/binary-features/geojson-to-binary.js";
10
- export { geojsonToFlatGeojson } from "./lib/binary-features/geojson-to-flat-geojson.js";
11
- export { binaryToGeojson, binaryToGeometry } from "./lib/binary-features/binary-to-geojson.js";
12
- export { transformBinaryCoords, transformGeoJsonCoords } from "./lib/binary-features/transform.js";
1
+ export type { GeojsonGeometryInfo } from "./lib/geometry-api/geometry-info.js";
2
+ export { getGeometryInfo } from "./lib/geometry-api/geometry-info.js";
3
+ export type { BinaryGeometryInfo } from "./lib/binary-geometry-api/binary-geometry-info.js";
4
+ export { getBinaryGeometryInfo } from "./lib/binary-geometry-api/binary-geometry-info.js";
5
+ export { transformBinaryCoords, transformGeoJsonCoords } from "./lib/binary-geometry-api/transform-coordinates.js";
6
+ export { convertGeoArrowToTable } from "./lib/table-converters/convert-geoarrow-table.js";
7
+ export { convertWKBTableToGeoJSON } from "./lib/table-converters/convert-wkb-table-to-geojson.js";
8
+ export { convertFlatGeojsonToBinaryFeatureCollection, convertFlatGeojsonToBinaryFeatureCollection as flatGeojsonToBinary } from "./lib/feature-collection-converters/convert-flat-geojson-to-binary-features.js";
9
+ export { convertGeojsonToBinaryFeatureCollection, convertGeojsonToBinaryFeatureCollection as geojsonToBinary } from "./lib/feature-collection-converters/convert-geojson-to-binary-features.js";
10
+ export { convertGeojsonToFlatGeojson, convertGeojsonToFlatGeojson as geojsonToFlatGeojson } from "./lib/feature-collection-converters/convert-geojson-to-flat-geojson.js";
11
+ export { convertBinaryFeatureCollectionToGeojson, convertBinaryFeatureCollectionToGeojson as binaryToGeojson } from "./lib/feature-collection-converters/convert-binary-features-to-geojson.js";
12
+ export { isWKB, isTWKB, isWKT } from "./lib/geometry-converters/wkb/helpers/parse-wkb-header.js";
13
+ export type { WKBHeader } from "./lib/geometry-converters/wkb/helpers/wkb-types.js";
14
+ export { WKT_MAGIC_STRINGS } from "./lib/geometry-converters/wkb/helpers/wkb-types.js";
15
+ export { convertBinaryGeometryToGeometry } from "./lib/geometry-converters/convert-binary-geometry-to-geojson.js";
16
+ export { convertWKTToGeometry } from "./lib/geometry-converters/wkb/convert-wkt-to-geometry.js";
17
+ export { convertWKBToGeometry } from "./lib/geometry-converters/wkb/convert-wkb-to-geometry.js";
18
+ export { convertWKBToBinaryGeometry } from "./lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js";
19
+ export { convertTWKBToGeometry } from "./lib/geometry-converters/wkb/convert-twkb-to-geometry.js";
20
+ export { convertGeometryToWKT } from "./lib/geometry-converters/wkb/convert-geometry-to-wkt.js";
21
+ export { convertGeometryToWKB } from "./lib/geometry-converters/wkb/convert-geometry-to-wkb.js";
22
+ export { convertGeometryToTWKB } from "./lib/geometry-converters/wkb/convert-geometry-to-twkb.js";
23
+ export type { WKTCRS, ParseWKTCRSOptions } from "./lib//wkt-crs/parse-wkt-crs.js";
24
+ export { parseWKTCRS } from "./lib//wkt-crs/parse-wkt-crs.js";
25
+ export type { EncodeWKTCRSOptions } from "./lib//wkt-crs/encode-wkt-crs.js";
26
+ export { encodeWKTCRS } from "./lib//wkt-crs/encode-wkt-crs.js";
27
+ export type { BinaryDataFromGeoArrow, BinaryGeometriesFromArrowOptions } from "./lib/feature-collection-converters/convert-geoarrow-to-binary-features.js";
28
+ export { convertGeoArrowToBinaryFeatureCollection, convertGeoArrowToBinaryFeatureCollection as getBinaryGeometriesFromArrow, getBinaryGeometryTemplate, getTriangleIndices, getMeanCentersFromBinaryGeometries } from "./lib/feature-collection-converters/convert-geoarrow-to-binary-features.js";
29
+ export { convertGeoArrowGeometryToGeoJSON } from "./lib/geometry-converters/convert-geoarrow-to-geojson.js";
30
+ export { encodeHex, decodeHex } from "./lib/utils/hex-transcoder.js";
31
+ export { extractNumericPropTypes as _extractNumericPropTypes } from "./lib/feature-collection-converters/convert-flat-geojson-to-binary-features.js";
13
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,+BAA+B,EAAC,gDAA6C;AAErF,YAAY,EAAC,WAAW,EAAC,yCAAsC;AAC/D,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAC,yCAAsC;AAChG,OAAO,EAAC,wBAAwB,EAAC,yCAAsC;AAEvE,YAAY,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,uCAAoC;AACpF,OAAO,EAAC,4BAA4B,EAAC,uCAAoC;AAGzE,OAAO,EAAC,wBAAwB,EAAC,iDAA8C;AAG/E,OAAO,EAAC,mBAAmB,EAAC,wDAAqD;AACjF,OAAO,EAAC,eAAe,EAAC,mDAAgD;AACxE,OAAO,EAAC,oBAAoB,EAAC,yDAAsD;AACnF,OAAO,EAAC,eAAe,EAAE,gBAAgB,EAAC,mDAAgD;AAC1F,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,2CAAwC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,YAAY,EAAC,mBAAmB,EAAC,4CAAyC;AAC1E,OAAO,EAAC,eAAe,EAAC,4CAAyC;AAGjE,YAAY,EAAC,kBAAkB,EAAC,0DAAuD;AACvF,OAAO,EAAC,qBAAqB,EAAC,0DAAuD;AACrF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACvB,2DAAwD;AAGzD,OAAO,EAAC,sBAAsB,EAAC,yDAAsD;AACrF,OAAO,EAAC,wBAAwB,EAAC,+DAA4D;AAG7F,OAAO,EACL,2CAA2C,EAE3C,2CAA2C,IAAI,mBAAmB,EACnE,uFAAoF;AACrF,OAAO,EACL,uCAAuC,EAEvC,uCAAuC,IAAI,eAAe,EAC3D,kFAA+E;AAChF,OAAO,EACL,2BAA2B,EAE3B,2BAA2B,IAAI,oBAAoB,EACpD,+EAA4E;AAC7E,OAAO,EACL,uCAAuC,EACvC,uCAAuC,IAAI,eAAe,EAC3D,kFAA+E;AAGhF,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC,kEAA+D;AAE5F,YAAY,EAAC,SAAS,EAAC,2DAAwD;AAC/E,OAAO,EAAC,iBAAiB,EAAC,2DAAwD;AAGlF,OAAO,EAAC,+BAA+B,EAAC,wEAAqE;AAE7G,OAAO,EAAC,oBAAoB,EAAC,iEAA8D;AAC3F,OAAO,EAAC,oBAAoB,EAAC,iEAA8D;AAC3F,OAAO,EAAC,0BAA0B,EAAC,wEAAqE;AACxG,OAAO,EAAC,qBAAqB,EAAC,kEAA+D;AAE7F,OAAO,EAAC,oBAAoB,EAAC,iEAA8D;AAC3F,OAAO,EAAC,oBAAoB,EAAC,iEAA8D;AAC3F,OAAO,EAAC,qBAAqB,EAAC,kEAA+D;AAG7F,YAAY,EAAC,MAAM,EAAE,kBAAkB,EAAC,wCAAqC;AAC7E,OAAO,EAAC,WAAW,EAAC,wCAAqC;AACzD,YAAY,EAAC,mBAAmB,EAAC,yCAAsC;AACvE,OAAO,EAAC,YAAY,EAAC,yCAAsC;AAG3D,YAAY,EACV,sBAAsB,EACtB,gCAAgC,EACjC,mFAAgF;AACjF,OAAO,EACL,wCAAwC,EAExC,wCAAwC,IAAI,4BAA4B,EACxE,yBAAyB,EACzB,kBAAkB,EAClB,kCAAkC,EACnC,mFAAgF;AAEjF,OAAO,EAAC,gCAAgC,EAAC,iEAA8D;AAIvG,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,sCAAmC;AAChE,OAAO,EAAC,uBAAuB,IAAI,wBAAwB,EAAC,uFAAoF"}
package/dist/index.js CHANGED
@@ -1,16 +1,39 @@
1
1
  // Types from `@loaders.gl/schema`
2
- // Geo Metadata
3
- // import {default as GEOPARQUET_METADATA_SCHEMA} from './lib/geo/geoparquet-metadata-schema.json';
4
- // export {GEOPARQUET_METADATA_SCHEMA};
5
- export { GEOPARQUET_METADATA_JSON_SCHEMA } from "./lib/geo/geoparquet-metadata-schema.js";
6
- export { getGeoMetadata, setGeoMetadata, unpackGeoMetadata } from "./lib/geo/geoparquet-metadata.js";
7
- export { unpackJSONStringMetadata } from "./lib/geo/geoparquet-metadata.js";
8
- export { getGeometryColumnsFromSchema } from "./lib/geo/geoarrow-metadata.js";
9
- // Table conversion
10
- export { convertWKBTableToGeoJSON } from "./lib/tables/convert-table-to-geojson.js";
11
- // Binary Geometries
12
- export { flatGeojsonToBinary } from "./lib/binary-features/flat-geojson-to-binary.js";
13
- export { geojsonToBinary } from "./lib/binary-features/geojson-to-binary.js";
14
- export { geojsonToFlatGeojson } from "./lib/binary-features/geojson-to-flat-geojson.js";
15
- export { binaryToGeojson, binaryToGeometry } from "./lib/binary-features/binary-to-geojson.js";
16
- export { transformBinaryCoords, transformGeoJsonCoords } from "./lib/binary-features/transform.js";
2
+ export { getGeometryInfo } from "./lib/geometry-api/geometry-info.js";
3
+ export { getBinaryGeometryInfo } from "./lib/binary-geometry-api/binary-geometry-info.js";
4
+ export { transformBinaryCoords, transformGeoJsonCoords } from "./lib/binary-geometry-api/transform-coordinates.js";
5
+ // TABLE CONVERSION
6
+ export { convertGeoArrowToTable } from "./lib/table-converters/convert-geoarrow-table.js";
7
+ export { convertWKBTableToGeoJSON } from "./lib/table-converters/convert-wkb-table-to-geojson.js";
8
+ // FEATURE COLLECTION CONVERSION
9
+ export { convertFlatGeojsonToBinaryFeatureCollection,
10
+ // deprecated
11
+ convertFlatGeojsonToBinaryFeatureCollection as flatGeojsonToBinary } from "./lib/feature-collection-converters/convert-flat-geojson-to-binary-features.js";
12
+ export { convertGeojsonToBinaryFeatureCollection,
13
+ // deprecated
14
+ convertGeojsonToBinaryFeatureCollection as geojsonToBinary } from "./lib/feature-collection-converters/convert-geojson-to-binary-features.js";
15
+ export { convertGeojsonToFlatGeojson,
16
+ // deprecated
17
+ convertGeojsonToFlatGeojson as geojsonToFlatGeojson } from "./lib/feature-collection-converters/convert-geojson-to-flat-geojson.js";
18
+ export { convertBinaryFeatureCollectionToGeojson, convertBinaryFeatureCollectionToGeojson as binaryToGeojson } from "./lib/feature-collection-converters/convert-binary-features-to-geojson.js";
19
+ // GEOMETRY ENCODING DETECTION
20
+ export { isWKB, isTWKB, isWKT } from "./lib/geometry-converters/wkb/helpers/parse-wkb-header.js";
21
+ export { WKT_MAGIC_STRINGS } from "./lib/geometry-converters/wkb/helpers/wkb-types.js";
22
+ // GEOMETRY CONVERSION
23
+ export { convertBinaryGeometryToGeometry } from "./lib/geometry-converters/convert-binary-geometry-to-geojson.js";
24
+ export { convertWKTToGeometry } from "./lib/geometry-converters/wkb/convert-wkt-to-geometry.js";
25
+ export { convertWKBToGeometry } from "./lib/geometry-converters/wkb/convert-wkb-to-geometry.js";
26
+ export { convertWKBToBinaryGeometry } from "./lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js";
27
+ export { convertTWKBToGeometry } from "./lib/geometry-converters/wkb/convert-twkb-to-geometry.js";
28
+ export { convertGeometryToWKT } from "./lib/geometry-converters/wkb/convert-geometry-to-wkt.js";
29
+ export { convertGeometryToWKB } from "./lib/geometry-converters/wkb/convert-geometry-to-wkb.js";
30
+ export { convertGeometryToTWKB } from "./lib/geometry-converters/wkb/convert-geometry-to-twkb.js";
31
+ export { parseWKTCRS } from "./lib//wkt-crs/parse-wkt-crs.js";
32
+ export { encodeWKTCRS } from "./lib//wkt-crs/encode-wkt-crs.js";
33
+ export { convertGeoArrowToBinaryFeatureCollection,
34
+ // deprecated
35
+ convertGeoArrowToBinaryFeatureCollection as getBinaryGeometriesFromArrow, getBinaryGeometryTemplate, getTriangleIndices, getMeanCentersFromBinaryGeometries } from "./lib/feature-collection-converters/convert-geoarrow-to-binary-features.js";
36
+ export { convertGeoArrowGeometryToGeoJSON } from "./lib/geometry-converters/convert-geoarrow-to-geojson.js";
37
+ // EXPERIMENTAL APIs
38
+ export { encodeHex, decodeHex } from "./lib/utils/hex-transcoder.js";
39
+ export { extractNumericPropTypes as _extractNumericPropTypes } from "./lib/feature-collection-converters/convert-flat-geojson-to-binary-features.js";
@@ -0,0 +1,21 @@
1
+ import type { BinaryGeometry } from '@loaders.gl/schema';
2
+ /**
3
+ * Information about a binary geometry
4
+ */
5
+ export type BinaryGeometryInfo = {
6
+ /** The GeoJSON style geometry type corresponding to this particular binary geometry */
7
+ multiGeometryType: 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon';
8
+ /** Is this a "Multi" version of the binary geometry? */
9
+ isMultiGeometry: boolean;
10
+ /** How many dimensions are the coordinates? */
11
+ dimension: number;
12
+ /** How many points does this geometry have? */
13
+ pointCount: number;
14
+ /** How many coordinates does this geometry have? */
15
+ coordinateCount: number;
16
+ };
17
+ /**
18
+ * @returns information about a binary geometry
19
+ */
20
+ export declare function getBinaryGeometryInfo(geometry: BinaryGeometry): BinaryGeometryInfo;
21
+ //# sourceMappingURL=binary-geometry-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-geometry-info.d.ts","sourceRoot":"","sources":["../../../src/lib/binary-geometry-api/binary-geometry-info.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uFAAuF;IACvF,iBAAiB,EACb,OAAO,GACP,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,cAAc,CAAC;IACnB,wDAAwD;IACxD,eAAe,EAAE,OAAO,CAAC;IACzB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,kBAAkB,CAQlF"}
@@ -0,0 +1,48 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /**
5
+ * @returns information about a binary geometry
6
+ */
7
+ export function getBinaryGeometryInfo(geometry) {
8
+ return {
9
+ isMultiGeometry: isMultiGeometryType(geometry),
10
+ multiGeometryType: getMultiGeometryType(geometry),
11
+ dimension: geometry.positions.size,
12
+ pointCount: geometry.positions.value.length / geometry.positions.size,
13
+ coordinateCount: geometry.positions.value.length
14
+ };
15
+ }
16
+ /** @returns true if a binary geometry corresponds to a MultiPoint, MultiLineString or MultiPolygon */
17
+ function isMultiGeometryType(geometry) {
18
+ switch (geometry.type) {
19
+ case 'Point':
20
+ const { positions } = geometry;
21
+ return positions.value.length / positions.size > 1;
22
+ case 'LineString':
23
+ const { pathIndices } = geometry;
24
+ return pathIndices.value.length > 1;
25
+ case 'Polygon':
26
+ const { polygonIndices } = geometry;
27
+ return polygonIndices.value.length > 1;
28
+ default:
29
+ return false;
30
+ }
31
+ }
32
+ /**
33
+ * @returns geometry type of binary geometry, including MultiPoint, MultiLineString or MultiPolygon
34
+ */
35
+ function getMultiGeometryType(geometry) {
36
+ const isMulti = isMultiGeometryType(geometry);
37
+ switch (geometry.type) {
38
+ case 'Point':
39
+ return isMulti ? 'MultiPoint' : 'Point';
40
+ case 'LineString':
41
+ return isMulti ? 'MultiLineString' : 'LineString';
42
+ case 'Polygon':
43
+ return isMulti ? 'MultiPolygon' : 'Polygon';
44
+ default:
45
+ // @ts-expect-error
46
+ throw new Error(`Illegal geometry type: ${type}`);
47
+ }
48
+ }
@@ -0,0 +1,5 @@
1
+ import type { BinaryPointGeometry, BinaryLineGeometry, BinaryPolygonGeometry } from '@loaders.gl/schema';
2
+ export declare function concatenateBinaryPointGeometries(binaryPointGeometries: BinaryPointGeometry[], dimension: number): BinaryPointGeometry;
3
+ export declare function concatenateBinaryLineGeometries(binaryLineGeometries: BinaryLineGeometry[], dimension: number): BinaryLineGeometry;
4
+ export declare function concatenateBinaryPolygonGeometries(binaryPolygonGeometries: BinaryPolygonGeometry[], dimension: number): BinaryPolygonGeometry;
5
+ //# sourceMappingURL=concat-binary-geometry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concat-binary-geometry.d.ts","sourceRoot":"","sources":["../../../src/lib/binary-geometry-api/concat-binary-geometry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,gCAAgC,CAC9C,qBAAqB,EAAE,mBAAmB,EAAE,EAC5C,SAAS,EAAE,MAAM,GAChB,mBAAmB,CAQrB;AAED,wBAAgB,+BAA+B,CAC7C,oBAAoB,EAAE,kBAAkB,EAAE,EAC1C,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAWpB;AAED,wBAAgB,kCAAkC,CAChD,uBAAuB,EAAE,qBAAqB,EAAE,EAChD,SAAS,EAAE,MAAM,GAChB,qBAAqB,CA8BvB"}
@@ -0,0 +1,50 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { concatTypedArrays } from "../utils/concat-typed-arrays.js";
5
+ export function concatenateBinaryPointGeometries(binaryPointGeometries, dimension) {
6
+ const positions = binaryPointGeometries.map((geometry) => geometry.positions.value);
7
+ const concatenatedPositions = new Float64Array(concatTypedArrays(positions).buffer);
8
+ return {
9
+ type: 'Point',
10
+ positions: { value: concatenatedPositions, size: dimension }
11
+ };
12
+ }
13
+ export function concatenateBinaryLineGeometries(binaryLineGeometries, dimension) {
14
+ const lines = binaryLineGeometries.map((geometry) => geometry.positions.value);
15
+ const concatenatedPositions = new Float64Array(concatTypedArrays(lines).buffer);
16
+ const pathIndices = lines.map((line) => line.length / dimension).map(cumulativeSum(0));
17
+ pathIndices.unshift(0);
18
+ return {
19
+ type: 'LineString',
20
+ positions: { value: concatenatedPositions, size: dimension },
21
+ pathIndices: { value: new Uint32Array(pathIndices), size: 1 }
22
+ };
23
+ }
24
+ export function concatenateBinaryPolygonGeometries(binaryPolygonGeometries, dimension) {
25
+ const polygons = [];
26
+ const primitivePolygons = [];
27
+ for (const binaryPolygon of binaryPolygonGeometries) {
28
+ const { positions, primitivePolygonIndices } = binaryPolygon;
29
+ polygons.push(positions.value);
30
+ primitivePolygons.push(primitivePolygonIndices.value);
31
+ }
32
+ const concatenatedPositions = new Float64Array(concatTypedArrays(polygons).buffer);
33
+ const polygonIndices = polygons.map((p) => p.length / dimension).map(cumulativeSum(0));
34
+ polygonIndices.unshift(0);
35
+ // Combine primitivePolygonIndices from each individual polygon
36
+ const primitivePolygonIndices = [0];
37
+ for (const primitivePolygon of primitivePolygons) {
38
+ primitivePolygonIndices.push(...primitivePolygon
39
+ .filter((x) => x > 0)
40
+ .map((x) => x + primitivePolygonIndices[primitivePolygonIndices.length - 1]));
41
+ }
42
+ return {
43
+ type: 'Polygon',
44
+ positions: { value: concatenatedPositions, size: dimension },
45
+ polygonIndices: { value: new Uint32Array(polygonIndices), size: 1 },
46
+ primitivePolygonIndices: { value: new Uint32Array(primitivePolygonIndices), size: 1 }
47
+ };
48
+ }
49
+ // https://stackoverflow.com/a/55261098
50
+ const cumulativeSum = (sum) => (value) => (sum += value);
@@ -9,11 +9,10 @@ type TransformCoordinate = (coord: number[]) => number[];
9
9
  export declare function transformBinaryCoords(binaryFeatures: BinaryFeatureCollection, transformCoordinate: TransformCoordinate): BinaryFeatureCollection;
10
10
  /**
11
11
  * Apply transformation to every coordinate of GeoJSON features
12
- *
13
12
  * @param features Array of GeoJSON features
14
13
  * @param fn Function to call on each coordinate
15
14
  * @return Transformed GeoJSON features
16
15
  */
17
16
  export declare function transformGeoJsonCoords(features: Feature[], fn: (coord: number[]) => number[]): Feature[];
18
17
  export {};
19
- //# sourceMappingURL=transform.d.ts.map
18
+ //# sourceMappingURL=transform-coordinates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-coordinates.d.ts","sourceRoot":"","sources":["../../../src/lib/binary-geometry-api/transform-coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,uBAAuB,EAAkB,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAEzF,KAAK,mBAAmB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;AAEzD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,uBAAuB,EACvC,mBAAmB,EAAE,mBAAmB,GACvC,uBAAuB,CAWzB;AAcD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,OAAO,EAAE,EACnB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,GAChC,OAAO,EAAE,CAMX"}
@@ -29,7 +29,6 @@ function transformBinaryGeometryPositions(binaryGeometry, fn) {
29
29
  }
30
30
  /**
31
31
  * Apply transformation to every coordinate of GeoJSON features
32
- *
33
32
  * @param features Array of GeoJSON features
34
33
  * @param fn Function to call on each coordinate
35
34
  * @return Transformed GeoJSON features
@@ -0,0 +1,16 @@
1
+ import type { BinaryGeometryType, BinaryFeatureCollection, Feature } from '@loaders.gl/schema';
2
+ type BinaryToGeoJsonOptions = {
3
+ type?: BinaryGeometryType;
4
+ globalFeatureId?: number;
5
+ };
6
+ /**
7
+ * Convert binary geometry representation to GeoJSON
8
+ * @param data geometry data in binary representation
9
+ * @param options
10
+ * @param options.type Input data type: Point, LineString, or Polygon
11
+ * @param options.featureId Global feature id. If specified, only a single feature is extracted
12
+ * @return GeoJSON objects
13
+ */
14
+ export declare function convertBinaryFeatureCollectionToGeojson(data: BinaryFeatureCollection, options?: BinaryToGeoJsonOptions): Feature[] | Feature;
15
+ export {};
16
+ //# sourceMappingURL=convert-binary-features-to-geojson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-binary-features-to-geojson.d.ts","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-binary-features-to-geojson.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EAKvB,OAAO,EAER,MAAM,oBAAoB,CAAC;AAM5B,KAAK,sBAAsB,GAAG;IAC5B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,uBAAuB,EAC7B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,EAAE,GAAG,OAAO,CAMrB"}
@@ -1,6 +1,7 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ import { convertBinaryGeometryToGeometry } from "../geometry-converters/convert-binary-geometry-to-geojson.js";
4
5
  /**
5
6
  * Convert binary geometry representation to GeoJSON
6
7
  * @param data geometry data in binary representation
@@ -9,7 +10,7 @@
9
10
  * @param options.featureId Global feature id. If specified, only a single feature is extracted
10
11
  * @return GeoJSON objects
11
12
  */
12
- export function binaryToGeojson(data, options) {
13
+ export function convertBinaryFeatureCollectionToGeojson(data, options) {
13
14
  const globalFeatureId = options?.globalFeatureId;
14
15
  if (globalFeatureId !== undefined) {
15
16
  return getSingleFeature(data, globalFeatureId);
@@ -49,20 +50,6 @@ function parseFeatures(data, type) {
49
50
  const dataArray = normalizeInput(data, type);
50
51
  return parseFeatureCollection(dataArray);
51
52
  }
52
- /** Parse input binary data and return a valid GeoJSON geometry object */
53
- export function binaryToGeometry(data, startIndex, endIndex) {
54
- switch (data.type) {
55
- case 'Point':
56
- return pointToGeoJson(data, startIndex, endIndex);
57
- case 'LineString':
58
- return lineStringToGeoJson(data, startIndex, endIndex);
59
- case 'Polygon':
60
- return polygonToGeoJson(data, startIndex, endIndex);
61
- default:
62
- const unexpectedInput = data;
63
- throw new Error(`Unsupported geometry type: ${unexpectedInput?.type}`);
64
- }
65
- }
66
53
  // Normalize features
67
54
  // Return an array of data objects, each of which have a type key
68
55
  function normalizeInput(data, type) {
@@ -109,7 +96,7 @@ function parseFeatureCollection(dataArray) {
109
96
  }
110
97
  /** Parse input binary data and return a single GeoJSON Feature */
111
98
  function parseFeature(data, startIndex, endIndex) {
112
- const geometry = binaryToGeometry(data, startIndex, endIndex);
99
+ const geometry = convertBinaryGeometryToGeometry(data, startIndex, endIndex);
113
100
  const properties = parseProperties(data, startIndex, endIndex);
114
101
  const fields = parseFields(data, startIndex, endIndex);
115
102
  return { type: 'Feature', geometry, properties, ...fields };
@@ -126,77 +113,3 @@ function parseProperties(data, startIndex = 0, endIndex) {
126
113
  }
127
114
  return properties;
128
115
  }
129
- /** Parse binary data of type Polygon */
130
- function polygonToGeoJson(data, startIndex = -Infinity, endIndex = Infinity) {
131
- const { positions } = data;
132
- const polygonIndices = data.polygonIndices.value.filter((x) => x >= startIndex && x <= endIndex);
133
- const primitivePolygonIndices = data.primitivePolygonIndices.value.filter((x) => x >= startIndex && x <= endIndex);
134
- const multi = polygonIndices.length > 2;
135
- // Polygon
136
- if (!multi) {
137
- const coordinates = [];
138
- for (let i = 0; i < primitivePolygonIndices.length - 1; i++) {
139
- const startRingIndex = primitivePolygonIndices[i];
140
- const endRingIndex = primitivePolygonIndices[i + 1];
141
- const ringCoordinates = ringToGeoJson(positions, startRingIndex, endRingIndex);
142
- coordinates.push(ringCoordinates);
143
- }
144
- return { type: 'Polygon', coordinates };
145
- }
146
- // MultiPolygon
147
- const coordinates = [];
148
- for (let i = 0; i < polygonIndices.length - 1; i++) {
149
- const startPolygonIndex = polygonIndices[i];
150
- const endPolygonIndex = polygonIndices[i + 1];
151
- const polygonCoordinates = polygonToGeoJson(data, startPolygonIndex, endPolygonIndex).coordinates;
152
- coordinates.push(polygonCoordinates);
153
- }
154
- return { type: 'MultiPolygon', coordinates };
155
- }
156
- /** Parse binary data of type LineString */
157
- function lineStringToGeoJson(data, startIndex = -Infinity, endIndex = Infinity) {
158
- const { positions } = data;
159
- const pathIndices = data.pathIndices.value.filter((x) => x >= startIndex && x <= endIndex);
160
- const multi = pathIndices.length > 2;
161
- if (!multi) {
162
- const coordinates = ringToGeoJson(positions, pathIndices[0], pathIndices[1]);
163
- return { type: 'LineString', coordinates };
164
- }
165
- const coordinates = [];
166
- for (let i = 0; i < pathIndices.length - 1; i++) {
167
- const ringCoordinates = ringToGeoJson(positions, pathIndices[i], pathIndices[i + 1]);
168
- coordinates.push(ringCoordinates);
169
- }
170
- return { type: 'MultiLineString', coordinates };
171
- }
172
- /** Parse binary data of type Point */
173
- function pointToGeoJson(data, startIndex, endIndex) {
174
- const { positions } = data;
175
- const coordinates = ringToGeoJson(positions, startIndex, endIndex);
176
- const multi = coordinates.length > 1;
177
- if (multi) {
178
- return { type: 'MultiPoint', coordinates };
179
- }
180
- return { type: 'Point', coordinates: coordinates[0] };
181
- }
182
- /**
183
- * Parse a linear ring of positions to a GeoJSON linear ring
184
- *
185
- * @param positions Positions TypedArray
186
- * @param startIndex Start index to include in ring
187
- * @param endIndex End index to include in ring
188
- * @returns GeoJSON ring
189
- */
190
- function ringToGeoJson(positions, startIndex, endIndex) {
191
- startIndex = startIndex || 0;
192
- endIndex = endIndex || positions.value.length / positions.size;
193
- const ringCoordinates = [];
194
- for (let j = startIndex; j < endIndex; j++) {
195
- const coord = Array();
196
- for (let k = j * positions.size; k < (j + 1) * positions.size; k++) {
197
- coord.push(Number(positions.value[k]));
198
- }
199
- ringCoordinates.push(coord);
200
- }
201
- return ringCoordinates;
202
- }
@@ -1,5 +1,6 @@
1
- import type { BinaryFeatureCollection, FlatFeature, GeojsonGeometryInfo } from '@loaders.gl/schema';
2
- import { PropArrayConstructor } from "./flat-geojson-to-binary-types.js";
1
+ import type { BinaryFeatureCollection, FlatFeature } from '@loaders.gl/schema';
2
+ import { GeojsonGeometryInfo } from "../geometry-api/geometry-info.js";
3
+ import { PropArrayConstructor } from "./helpers/flat-geojson-to-binary-types.js";
3
4
  /**
4
5
  * Convert binary features to flat binary arrays. Similar to
5
6
  * `geojsonToBinary` helper function, except that it expects
@@ -13,7 +14,7 @@ import { PropArrayConstructor } from "./flat-geojson-to-binary-types.js";
13
14
  * @param options
14
15
  * @returns filled arrays
15
16
  */
16
- export declare function flatGeojsonToBinary(features: FlatFeature[], geometryInfo: GeojsonGeometryInfo, options?: FlatGeojsonToBinaryOptions): BinaryFeatureCollection;
17
+ export declare function convertFlatGeojsonToBinaryFeatureCollection(features: FlatFeature[], geometryInfo: GeojsonGeometryInfo, options?: FlatGeojsonToBinaryOptions): BinaryFeatureCollection;
17
18
  /**
18
19
  * Options for `flatGeojsonToBinary`
19
20
  */
@@ -22,17 +23,13 @@ export type FlatGeojsonToBinaryOptions = {
22
23
  PositionDataType?: Float32ArrayConstructor | Float64ArrayConstructor;
23
24
  triangulate?: boolean;
24
25
  };
25
- export declare const TEST_EXPORTS: {
26
- extractNumericPropTypes: typeof extractNumericPropTypes;
27
- };
28
26
  /**
29
27
  * Extracts properties that are always numeric
30
28
  *
31
29
  * @param features
32
30
  * @returns object with numeric types
33
31
  */
34
- declare function extractNumericPropTypes(features: FlatFeature[]): {
32
+ export declare function extractNumericPropTypes(features: FlatFeature[]): {
35
33
  [key: string]: PropArrayConstructor;
36
34
  };
37
- export {};
38
- //# sourceMappingURL=flat-geojson-to-binary.d.ts.map
35
+ //# sourceMappingURL=convert-flat-geojson-to-binary-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-flat-geojson-to-binary-features.d.ts","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,uBAAuB,EAEvB,WAAW,EAKZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,mBAAmB,EAAC,yCAAsC;AAClE,OAAO,EACL,oBAAoB,EAIrB,kDAA+C;AAEhD;;;;;;;;;;;;GAYG;AACH,wBAAgB,2CAA2C,CACzD,QAAQ,EAAE,WAAW,EAAE,EACvB,YAAY,EAAE,mBAAmB,EACjC,OAAO,CAAC,EAAE,0BAA0B,GACnC,uBAAuB,CAezB;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,CAAC;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACrC,CAgBA"}
@@ -1,3 +1,6 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  /* eslint-disable indent */
2
5
  import { earcut } from '@math.gl/polygon';
3
6
  /**
@@ -13,7 +16,7 @@ import { earcut } from '@math.gl/polygon';
13
16
  * @param options
14
17
  * @returns filled arrays
15
18
  */
16
- export function flatGeojsonToBinary(features, geometryInfo, options) {
19
+ export function convertFlatGeojsonToBinaryFeatureCollection(features, geometryInfo, options) {
17
20
  const propArrayTypes = extractNumericPropTypes(features);
18
21
  const numericPropKeys = Object.keys(propArrayTypes).filter((k) => propArrayTypes[k] !== Array);
19
22
  return fillArrays(features, {
@@ -25,16 +28,13 @@ export function flatGeojsonToBinary(features, geometryInfo, options) {
25
28
  triangulate: options ? options.triangulate : true
26
29
  });
27
30
  }
28
- export const TEST_EXPORTS = {
29
- extractNumericPropTypes
30
- };
31
31
  /**
32
32
  * Extracts properties that are always numeric
33
33
  *
34
34
  * @param features
35
35
  * @returns object with numeric types
36
36
  */
37
- function extractNumericPropTypes(features) {
37
+ export function extractNumericPropTypes(features) {
38
38
  const propArrayTypes = {};
39
39
  for (const feature of features) {
40
40
  if (feature.properties) {
@@ -0,0 +1,74 @@
1
+ import * as arrow from 'apache-arrow';
2
+ import type { BinaryFeatureCollection } from '@loaders.gl/schema';
3
+ import type { GeoArrowEncoding } from '@loaders.gl/geoarrow';
4
+ /**
5
+ * Binary data from geoarrow column and can be used by e.g. deck.gl GeojsonLayer
6
+ */
7
+ export type BinaryDataFromGeoArrow = {
8
+ /** Binary format geometries, an array of BinaryFeatureCollection */
9
+ binaryGeometries: BinaryFeatureCollection[];
10
+ /** Boundary of the binary geometries */
11
+ bounds: [number, number, number, number];
12
+ /** Feature types of the binary geometries */
13
+ featureTypes: {
14
+ polygon: boolean;
15
+ point: boolean;
16
+ line: boolean;
17
+ };
18
+ /** (Optional) mean centers of the binary geometries for e.g. polygon filtering */
19
+ meanCenters?: number[][];
20
+ };
21
+ export type BinaryGeometriesFromArrowOptions = {
22
+ /** option to specify which chunk to get binary geometries from, for progressive rendering */
23
+ chunkIndex?: number;
24
+ /** The offset (beginning index of rows) of input chunk. Used for reconstructing globalFeatureIds in web workers */
25
+ chunkOffset?: number;
26
+ /** option to get mean centers from geometries, for polygon filtering */
27
+ calculateMeanCenters?: boolean;
28
+ /** option to compute the triangle indices by tesselating polygons */
29
+ triangulate?: boolean;
30
+ };
31
+ /**
32
+ * get binary geometries from geoarrow column
33
+ *
34
+ * @param geoColumn the geoarrow column, e.g. arrowTable.getChildAt(geoColumnIndex)
35
+ * @param geoEncoding the geo encoding of the geoarrow column, e.g. getGeoArrowEncoding(arrowTable.schema, geoColumnName)
36
+ * @param options options for getting binary geometries {meanCenter: boolean}
37
+ * @returns BinaryDataFromGeoArrow
38
+ */
39
+ export declare function convertGeoArrowToBinaryFeatureCollection(geoColumn: arrow.Vector, geoEncoding: GeoArrowEncoding, options?: BinaryGeometriesFromArrowOptions): BinaryDataFromGeoArrow;
40
+ /**
41
+ * binary geometry template, see deck.gl BinaryGeometry
42
+ */
43
+ export declare function getBinaryGeometryTemplate(): {
44
+ globalFeatureIds: {
45
+ value: Uint32Array;
46
+ size: number;
47
+ };
48
+ positions: {
49
+ value: Float32Array;
50
+ size: number;
51
+ };
52
+ properties: never[];
53
+ numericProps: {};
54
+ featureIds: {
55
+ value: Uint32Array;
56
+ size: number;
57
+ };
58
+ };
59
+ /**
60
+ * Get mean centers from binary geometries
61
+ * @param binaryGeometries binary geometries from geoarrow column, an array of BinaryFeatureCollection
62
+ * @returns mean centers of the binary geometries
63
+ */
64
+ export declare function getMeanCentersFromBinaryGeometries(binaryGeometries: BinaryFeatureCollection[]): number[][];
65
+ /**
66
+ * get triangle indices. Allows deck.gl to skip performing costly triangulation on main thread.
67
+ * @param polygonIndices Indices within positions of the start of each simple Polygon
68
+ * @param primitivePolygonIndices Indices within positions of the start of each primitive Polygon/ring
69
+ * @param flatCoordinateArray Array of x, y or x, y, z positions
70
+ * @param nDim - number of dimensions per position
71
+ * @returns triangle indices or null if invalid polygon and earcut fails
72
+ */
73
+ export declare function getTriangleIndices(polygonIndices: Uint16Array, primitivePolygonIndices: Int32Array, flatCoordinateArray: Float64Array, nDim: number): Uint32Array | null;
74
+ //# sourceMappingURL=convert-geoarrow-to-binary-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-geoarrow-to-binary-features.d.ts","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-geoarrow-to-binary-features.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAa3D;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,oEAAoE;IACpE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,wCAAwC;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,6CAA6C;IAC7C,YAAY,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAC,CAAC;IAChE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC1B,CAAC;AAsBF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mHAAmH;IACnH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,KAAK,CAAC,MAAM,EACvB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE,gCAAgC,GACzC,sBAAsB,CAiFxB;AAED;;GAEG;AACH,wBAAgB,yBAAyB;;;;;;;;;;;;;;;EAQxC;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,gBAAgB,EAAE,uBAAuB,EAAE,GAC1C,MAAM,EAAE,EAAE,CAiCZ;AA2ED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,WAAW,EAC3B,uBAAuB,EAAE,UAAU,EACnC,mBAAmB,EAAE,YAAY,EACjC,IAAI,EAAE,MAAM,GACX,WAAW,GAAG,IAAI,CAyCpB"}