@loaders.gl/gis 4.3.4 → 4.4.0-alpha.10

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 (209) 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 +39 -15
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts +21 -0
  8. package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts.map +1 -0
  9. package/dist/lib/binary-geometry-api/binary-geometry-info.js +49 -0
  10. package/dist/lib/binary-geometry-api/binary-geometry-info.js.map +1 -0
  11. package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts +5 -0
  12. package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts.map +1 -0
  13. package/dist/lib/binary-geometry-api/concat-binary-geometry.js +51 -0
  14. package/dist/lib/binary-geometry-api/concat-binary-geometry.js.map +1 -0
  15. package/dist/lib/{binary-features/transform.d.ts → binary-geometry-api/transform-coordinates.d.ts} +1 -2
  16. package/dist/lib/binary-geometry-api/transform-coordinates.d.ts.map +1 -0
  17. package/dist/lib/{binary-features/transform.js → binary-geometry-api/transform-coordinates.js} +1 -1
  18. package/dist/lib/binary-geometry-api/transform-coordinates.js.map +1 -0
  19. package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts +16 -0
  20. package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts.map +1 -0
  21. package/dist/lib/{binary-features/binary-to-geojson.js → feature-collection-converters/convert-binary-features-to-geojson.js} +4 -90
  22. package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.js.map +1 -0
  23. package/dist/lib/{binary-features/flat-geojson-to-binary.d.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts} +6 -9
  24. package/dist/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts.map +1 -0
  25. package/dist/lib/{binary-features/flat-geojson-to-binary.js → feature-collection-converters/convert-flat-geojson-to-binary-features.js} +6 -5
  26. package/dist/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.js.map +1 -0
  27. package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts +74 -0
  28. package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts.map +1 -0
  29. package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.js +378 -0
  30. package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.js.map +1 -0
  31. package/dist/lib/{binary-features/geojson-to-binary.d.ts → feature-collection-converters/convert-geojson-to-binary-features.d.ts} +2 -2
  32. package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.d.ts.map +1 -0
  33. package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.js +25 -0
  34. package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.js.map +1 -0
  35. package/dist/lib/{binary-features/geojson-to-flat-geojson.d.ts → feature-collection-converters/convert-geojson-to-flat-geojson.d.ts} +2 -2
  36. package/dist/lib/feature-collection-converters/convert-geojson-to-flat-geojson.d.ts.map +1 -0
  37. package/dist/lib/{binary-features/geojson-to-flat-geojson.js → feature-collection-converters/convert-geojson-to-flat-geojson.js} +5 -1
  38. package/dist/lib/feature-collection-converters/convert-geojson-to-flat-geojson.js.map +1 -0
  39. package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.d.ts.map +1 -0
  40. package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.js +5 -0
  41. package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.js.map +1 -0
  42. package/dist/lib/geometry-api/geometry-info.d.ts +21 -0
  43. package/dist/lib/geometry-api/geometry-info.d.ts.map +1 -0
  44. package/dist/lib/{binary-features/extract-geometry-info.js → geometry-api/geometry-info.js} +5 -1
  45. package/dist/lib/geometry-api/geometry-info.js.map +1 -0
  46. package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts +4 -0
  47. package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts.map +1 -0
  48. package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.js +92 -0
  49. package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.js.map +1 -0
  50. package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts +13 -0
  51. package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts.map +1 -0
  52. package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.js +165 -0
  53. package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.js.map +1 -0
  54. package/dist/lib/geometry-converters/convert-to-geojson.d.ts +6 -0
  55. package/dist/lib/geometry-converters/convert-to-geojson.d.ts.map +1 -0
  56. package/dist/lib/geometry-converters/convert-to-geojson.js +40 -0
  57. package/dist/lib/geometry-converters/convert-to-geojson.js.map +1 -0
  58. package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts +6 -0
  59. package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts.map +1 -0
  60. package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.js +196 -0
  61. package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.js.map +1 -0
  62. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts +9 -0
  63. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts.map +1 -0
  64. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.js +274 -0
  65. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.js.map +1 -0
  66. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts +8 -0
  67. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts.map +1 -0
  68. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.js +45 -0
  69. package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.js.map +1 -0
  70. package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts +10 -0
  71. package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts.map +1 -0
  72. package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.js +255 -0
  73. package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.js.map +1 -0
  74. package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts +3 -0
  75. package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts.map +1 -0
  76. package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js +165 -0
  77. package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js.map +1 -0
  78. package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts +11 -0
  79. package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts.map +1 -0
  80. package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.js +10 -0
  81. package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.js.map +1 -0
  82. package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts +16 -0
  83. package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts.map +1 -0
  84. package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.js +259 -0
  85. package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.js.map +1 -0
  86. package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts +43 -0
  87. package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts.map +1 -0
  88. package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.js +175 -0
  89. package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.js.map +1 -0
  90. package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts +64 -0
  91. package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts.map +1 -0
  92. package/dist/lib/geometry-converters/wkb/helpers/wkb-types.js +47 -0
  93. package/dist/lib/geometry-converters/wkb/helpers/wkb-types.js.map +1 -0
  94. package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts +21 -0
  95. package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts.map +1 -0
  96. package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.js +65 -0
  97. package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.js.map +1 -0
  98. package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts +8 -0
  99. package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts.map +1 -0
  100. package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.js +34 -0
  101. package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.js.map +1 -0
  102. package/dist/lib/table-converters/convert-geoarrow-table.d.ts +27 -0
  103. package/dist/lib/table-converters/convert-geoarrow-table.d.ts.map +1 -0
  104. package/dist/lib/table-converters/convert-geoarrow-table.js +155 -0
  105. package/dist/lib/table-converters/convert-geoarrow-table.js.map +1 -0
  106. package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts +4 -0
  107. package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts.map +1 -0
  108. package/dist/lib/{tables/convert-table-to-geojson.js → table-converters/convert-wkb-table-to-geojson.js} +11 -16
  109. package/dist/lib/table-converters/convert-wkb-table-to-geojson.js.map +1 -0
  110. package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts +6 -0
  111. package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts.map +1 -0
  112. package/dist/lib/table-converters/make-arrow-batch-iterator.js +36 -0
  113. package/dist/lib/table-converters/make-arrow-batch-iterator.js.map +1 -0
  114. package/dist/lib/utils/base64-encoder.d.ts +5 -0
  115. package/dist/lib/utils/base64-encoder.d.ts.map +1 -0
  116. package/dist/lib/utils/base64-encoder.js +154 -0
  117. package/dist/lib/utils/base64-encoder.js.map +1 -0
  118. package/dist/lib/utils/binary-reader.d.ts +18 -0
  119. package/dist/lib/utils/binary-reader.d.ts.map +1 -0
  120. package/dist/lib/utils/binary-reader.js +70 -0
  121. package/dist/lib/utils/binary-reader.js.map +1 -0
  122. package/dist/lib/utils/binary-writer.d.ts +30 -0
  123. package/dist/lib/utils/binary-writer.d.ts.map +1 -0
  124. package/dist/lib/utils/binary-writer.js +128 -0
  125. package/dist/lib/utils/binary-writer.js.map +1 -0
  126. package/dist/lib/utils/concat-typed-arrays.d.ts +3 -0
  127. package/dist/lib/utils/concat-typed-arrays.d.ts.map +1 -0
  128. package/dist/lib/utils/concat-typed-arrays.js +19 -0
  129. package/dist/lib/utils/concat-typed-arrays.js.map +1 -0
  130. package/dist/lib/utils/hex-encoder.d.ts +15 -0
  131. package/dist/lib/utils/hex-encoder.d.ts.map +1 -0
  132. package/dist/lib/utils/hex-encoder.js +55 -0
  133. package/dist/lib/utils/hex-encoder.js.map +1 -0
  134. package/dist/lib/utils/hex-transcoder.d.ts +15 -0
  135. package/dist/lib/utils/hex-transcoder.d.ts.map +1 -0
  136. package/dist/lib/utils/hex-transcoder.js +51 -0
  137. package/dist/lib/utils/hex-transcoder.js.map +1 -0
  138. package/dist/lib/wkt-crs/encode-wkt-crs.d.ts +10 -0
  139. package/dist/lib/wkt-crs/encode-wkt-crs.d.ts.map +1 -0
  140. package/dist/lib/wkt-crs/encode-wkt-crs.js +36 -0
  141. package/dist/lib/wkt-crs/encode-wkt-crs.js.map +1 -0
  142. package/dist/lib/wkt-crs/parse-wkt-crs.d.ts +15 -0
  143. package/dist/lib/wkt-crs/parse-wkt-crs.d.ts.map +1 -0
  144. package/dist/lib/wkt-crs/parse-wkt-crs.js +121 -0
  145. package/dist/lib/wkt-crs/parse-wkt-crs.js.map +1 -0
  146. package/package.json +7 -5
  147. package/src/index.ts +87 -14
  148. package/src/lib/binary-geometry-api/binary-geometry-info.ts +75 -0
  149. package/src/lib/binary-geometry-api/concat-binary-geometry.ts +78 -0
  150. package/src/lib/{binary-features/transform.ts → binary-geometry-api/transform-coordinates.ts} +0 -1
  151. package/src/lib/{binary-features/binary-to-geojson.ts → feature-collection-converters/convert-binary-features-to-geojson.ts} +5 -142
  152. package/src/lib/{binary-features/flat-geojson-to-binary.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.ts} +14 -9
  153. package/src/lib/feature-collection-converters/convert-geoarrow-to-binary-features.ts +496 -0
  154. package/src/lib/{binary-features/geojson-to-binary.ts → feature-collection-converters/convert-geojson-to-binary-features.ts} +11 -7
  155. package/src/lib/{binary-features/geojson-to-flat-geojson.ts → feature-collection-converters/convert-geojson-to-flat-geojson.ts} +5 -1
  156. package/src/lib/{binary-features → feature-collection-converters/helpers}/flat-geojson-to-binary-types.ts +4 -0
  157. package/src/lib/{binary-features/extract-geometry-info.ts → geometry-api/geometry-info.ts} +20 -2
  158. package/src/lib/geometry-converters/convert-binary-geometry-to-geojson.ts +148 -0
  159. package/src/lib/geometry-converters/convert-geoarrow-to-geojson.ts +193 -0
  160. package/src/lib/geometry-converters/convert-to-geojson.ts +52 -0
  161. package/src/lib/geometry-converters/wkb/convert-geometry-to-twkb.ts +308 -0
  162. package/src/lib/geometry-converters/wkb/convert-geometry-to-wkb.ts +365 -0
  163. package/src/lib/geometry-converters/wkb/convert-geometry-to-wkt.ts +54 -0
  164. package/src/lib/geometry-converters/wkb/convert-twkb-to-geometry.ts +366 -0
  165. package/src/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.ts +238 -0
  166. package/src/lib/geometry-converters/wkb/convert-wkb-to-geometry.ts +23 -0
  167. package/src/lib/geometry-converters/wkb/convert-wkt-to-geometry.ts +294 -0
  168. package/src/lib/geometry-converters/wkb/helpers/parse-wkb-header.ts +213 -0
  169. package/src/lib/geometry-converters/wkb/helpers/wkb-types.ts +82 -0
  170. package/src/lib/geometry-converters/wkb/helpers/wkb-utils.ts +85 -0
  171. package/src/lib/geometry-converters/wkb/helpers/write-wkb-header.ts +41 -0
  172. package/src/lib/table-converters/convert-geoarrow-table.ts +218 -0
  173. package/src/lib/{tables/convert-table-to-geojson.ts → table-converters/convert-wkb-table-to-geojson.ts} +10 -23
  174. package/src/lib/table-converters/make-arrow-batch-iterator.ts +53 -0
  175. package/src/lib/utils/base64-encoder.ts +157 -0
  176. package/src/lib/utils/binary-reader.ts +76 -0
  177. package/src/lib/utils/binary-writer.ts +136 -0
  178. package/src/lib/utils/concat-typed-arrays.ts +24 -0
  179. package/src/lib/utils/hex-encoder.ts +60 -0
  180. package/src/lib/utils/hex-transcoder.ts +54 -0
  181. package/src/lib/wkt-crs/encode-wkt-crs.ts +41 -0
  182. package/src/lib/wkt-crs/parse-wkt-crs.ts +149 -0
  183. package/dist/lib/binary-features/binary-to-geojson.d.ts +0 -18
  184. package/dist/lib/binary-features/binary-to-geojson.d.ts.map +0 -1
  185. package/dist/lib/binary-features/extract-geometry-info.d.ts +0 -8
  186. package/dist/lib/binary-features/extract-geometry-info.d.ts.map +0 -1
  187. package/dist/lib/binary-features/flat-geojson-to-binary-types.d.ts.map +0 -1
  188. package/dist/lib/binary-features/flat-geojson-to-binary-types.js +0 -1
  189. package/dist/lib/binary-features/flat-geojson-to-binary.d.ts.map +0 -1
  190. package/dist/lib/binary-features/geojson-to-binary.d.ts.map +0 -1
  191. package/dist/lib/binary-features/geojson-to-binary.js +0 -21
  192. package/dist/lib/binary-features/geojson-to-flat-geojson.d.ts.map +0 -1
  193. package/dist/lib/binary-features/transform.d.ts.map +0 -1
  194. package/dist/lib/geo/geoarrow-metadata.d.ts +0 -27
  195. package/dist/lib/geo/geoarrow-metadata.d.ts.map +0 -1
  196. package/dist/lib/geo/geoarrow-metadata.js +0 -70
  197. package/dist/lib/geo/geoparquet-metadata-schema.d.ts +0 -79
  198. package/dist/lib/geo/geoparquet-metadata-schema.d.ts.map +0 -1
  199. package/dist/lib/geo/geoparquet-metadata-schema.js +0 -69
  200. package/dist/lib/geo/geoparquet-metadata.d.ts +0 -45
  201. package/dist/lib/geo/geoparquet-metadata.d.ts.map +0 -1
  202. package/dist/lib/geo/geoparquet-metadata.js +0 -117
  203. package/dist/lib/tables/convert-table-to-geojson.d.ts +0 -5
  204. package/dist/lib/tables/convert-table-to-geojson.d.ts.map +0 -1
  205. package/src/lib/geo/geoarrow-metadata.ts +0 -100
  206. package/src/lib/geo/geoparquet-metadata-schema.json +0 -60
  207. package/src/lib/geo/geoparquet-metadata-schema.ts +0 -71
  208. package/src/lib/geo/geoparquet-metadata.ts +0 -191
  209. /package/dist/lib/{binary-features → feature-collection-converters/helpers}/flat-geojson-to-binary-types.d.ts +0 -0
@@ -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"}
@@ -0,0 +1,378 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { earcut } from '@math.gl/polygon';
5
+ import { updateBoundsFromGeoArrowSamples } from '@loaders.gl/geoarrow';
6
+ /**
7
+ * Binary geometry type
8
+ */
9
+ var BinaryGeometryType;
10
+ (function (BinaryGeometryType) {
11
+ BinaryGeometryType["points"] = "points";
12
+ BinaryGeometryType["lines"] = "lines";
13
+ BinaryGeometryType["polygons"] = "polygons";
14
+ })(BinaryGeometryType || (BinaryGeometryType = {}));
15
+ /**
16
+ * get binary geometries from geoarrow column
17
+ *
18
+ * @param geoColumn the geoarrow column, e.g. arrowTable.getChildAt(geoColumnIndex)
19
+ * @param geoEncoding the geo encoding of the geoarrow column, e.g. getGeoArrowEncoding(arrowTable.schema, geoColumnName)
20
+ * @param options options for getting binary geometries {meanCenter: boolean}
21
+ * @returns BinaryDataFromGeoArrow
22
+ */
23
+ export function convertGeoArrowToBinaryFeatureCollection(geoColumn, geoEncoding, options) {
24
+ const featureTypes = {
25
+ polygon: geoEncoding === 'geoarrow.multipolygon' || geoEncoding === 'geoarrow.polygon',
26
+ point: geoEncoding === 'geoarrow.multipoint' || geoEncoding === 'geoarrow.point',
27
+ line: geoEncoding === 'geoarrow.multilinestring' || geoEncoding === 'geoarrow.linestring'
28
+ };
29
+ const chunks = options?.chunkIndex !== undefined && options?.chunkIndex >= 0
30
+ ? [geoColumn.data[options?.chunkIndex]]
31
+ : geoColumn.data;
32
+ let bounds = [Infinity, Infinity, -Infinity, -Infinity];
33
+ let globalFeatureIdOffset = options?.chunkOffset || 0;
34
+ const binaryGeometries = [];
35
+ chunks.forEach((chunk) => {
36
+ const { featureIds, flatCoordinateArray, nDim, geomOffset, triangles } = getBinaryGeometriesFromChunk(chunk, geoEncoding, options);
37
+ const globalFeatureIds = new Uint32Array(featureIds.length);
38
+ for (let i = 0; i < featureIds.length; i++) {
39
+ globalFeatureIds[i] = featureIds[i] + globalFeatureIdOffset;
40
+ }
41
+ const binaryContent = {
42
+ globalFeatureIds: { value: globalFeatureIds, size: 1 },
43
+ positions: {
44
+ value: flatCoordinateArray,
45
+ size: nDim
46
+ },
47
+ featureIds: { value: featureIds, size: 1 },
48
+ // eslint-disable-next-line no-loop-func
49
+ properties: [...Array(chunk.length).keys()].map((i) => ({
50
+ index: i + globalFeatureIdOffset
51
+ }))
52
+ };
53
+ // TODO: check if chunks are sequentially accessed
54
+ globalFeatureIdOffset += chunk.length;
55
+ // NOTE: deck.gl defines the BinaryFeatureCollection structure must have points, lines, polygons even if they are empty
56
+ binaryGeometries.push({
57
+ shape: 'binary-feature-collection',
58
+ points: {
59
+ type: 'Point',
60
+ ...getBinaryGeometryTemplate(),
61
+ ...(featureTypes.point ? binaryContent : {})
62
+ },
63
+ lines: {
64
+ type: 'LineString',
65
+ ...getBinaryGeometryTemplate(),
66
+ ...(featureTypes.line ? binaryContent : {}),
67
+ pathIndices: { value: featureTypes.line ? geomOffset : new Uint16Array(0), size: 1 }
68
+ },
69
+ polygons: {
70
+ type: 'Polygon',
71
+ ...getBinaryGeometryTemplate(),
72
+ ...(featureTypes.polygon ? binaryContent : {}),
73
+ polygonIndices: {
74
+ // use geomOffset as polygonIndices same as primitivePolygonIndices since we are using earcut to get triangule indices
75
+ value: featureTypes.polygon ? geomOffset : new Uint16Array(0),
76
+ size: 1
77
+ },
78
+ primitivePolygonIndices: {
79
+ value: featureTypes.polygon ? geomOffset : new Uint16Array(0),
80
+ size: 1
81
+ },
82
+ ...(triangles ? { triangles: { value: triangles, size: 1 } } : {})
83
+ }
84
+ });
85
+ bounds = updateBoundsFromGeoArrowSamples(flatCoordinateArray, nDim, bounds);
86
+ });
87
+ return {
88
+ binaryGeometries,
89
+ bounds,
90
+ featureTypes,
91
+ ...(options?.calculateMeanCenters
92
+ ? { meanCenters: getMeanCentersFromBinaryGeometries(binaryGeometries) }
93
+ : {})
94
+ };
95
+ }
96
+ /**
97
+ * binary geometry template, see deck.gl BinaryGeometry
98
+ */
99
+ export function getBinaryGeometryTemplate() {
100
+ return {
101
+ globalFeatureIds: { value: new Uint32Array(0), size: 1 },
102
+ positions: { value: new Float32Array(0), size: 2 },
103
+ properties: [],
104
+ numericProps: {},
105
+ featureIds: { value: new Uint32Array(0), size: 1 }
106
+ };
107
+ }
108
+ /**
109
+ * Get mean centers from binary geometries
110
+ * @param binaryGeometries binary geometries from geoarrow column, an array of BinaryFeatureCollection
111
+ * @returns mean centers of the binary geometries
112
+ */
113
+ export function getMeanCentersFromBinaryGeometries(binaryGeometries) {
114
+ const globalMeanCenters = [];
115
+ binaryGeometries.forEach((binaryGeometry) => {
116
+ let binaryGeometryType = null;
117
+ if (binaryGeometry.points && binaryGeometry.points.positions.value.length > 0) {
118
+ binaryGeometryType = BinaryGeometryType.points;
119
+ }
120
+ else if (binaryGeometry.lines && binaryGeometry.lines.positions.value.length > 0) {
121
+ binaryGeometryType = BinaryGeometryType.lines;
122
+ }
123
+ else if (binaryGeometry.polygons && binaryGeometry.polygons.positions.value.length > 0) {
124
+ binaryGeometryType = BinaryGeometryType.polygons;
125
+ }
126
+ const binaryContent = binaryGeometryType ? binaryGeometry[binaryGeometryType] : null;
127
+ if (binaryContent && binaryGeometryType !== null) {
128
+ const featureIds = binaryContent.featureIds.value;
129
+ const flatCoordinateArray = binaryContent.positions.value;
130
+ const nDim = binaryContent.positions.size;
131
+ const primitivePolygonIndices = binaryContent.type === 'Polygon' ? binaryContent.primitivePolygonIndices?.value : undefined;
132
+ const meanCenters = getMeanCentersFromGeometry(featureIds, flatCoordinateArray, nDim, binaryGeometryType, primitivePolygonIndices);
133
+ meanCenters.forEach((center) => {
134
+ globalMeanCenters.push(center);
135
+ });
136
+ }
137
+ });
138
+ return globalMeanCenters;
139
+ }
140
+ /**
141
+ * Get mean centers from raw coordinates and feature ids
142
+ * @param featureIds Array of feature ids indexes by vertex
143
+ * @param flatCoordinateArray Array of vertex, e.g. x, y or x, y, z, positions
144
+ * @param nDim number of dimensions per position
145
+ * @returns - mean centers of each polygon
146
+ */
147
+ function getMeanCentersFromGeometry(featureIds, flatCoordinateArray, nDim, geometryType, primitivePolygonIndices) {
148
+ const meanCenters = [];
149
+ const vertexCount = flatCoordinateArray.length;
150
+ let vertexIndex = 0;
151
+ let coordIdx = 0;
152
+ let primitiveIdx = 0;
153
+ while (vertexIndex < vertexCount) {
154
+ const featureId = featureIds[vertexIndex / nDim];
155
+ const center = [0, 0];
156
+ let vertexCountInFeature = 0;
157
+ while (vertexIndex < vertexCount && featureIds[coordIdx] === featureId) {
158
+ if (geometryType === BinaryGeometryType.polygons &&
159
+ primitivePolygonIndices?.[primitiveIdx] === coordIdx) {
160
+ // skip the first point since it is the same as the last point in each ring for polygons
161
+ vertexIndex += nDim;
162
+ primitiveIdx++;
163
+ }
164
+ else {
165
+ center[0] += flatCoordinateArray[vertexIndex];
166
+ center[1] += flatCoordinateArray[vertexIndex + 1];
167
+ vertexIndex += nDim;
168
+ vertexCountInFeature++;
169
+ }
170
+ coordIdx += 1;
171
+ }
172
+ center[0] /= vertexCountInFeature;
173
+ center[1] /= vertexCountInFeature;
174
+ meanCenters.push(center);
175
+ }
176
+ return meanCenters;
177
+ }
178
+ /**
179
+ * get binary geometries from geoarrow column
180
+ * @param chunk one chunk/batch of geoarrow column
181
+ * @param geoEncoding geo encoding of the geoarrow column
182
+ * @param options options for getting binary geometries
183
+ * @returns BinaryGeometryContent
184
+ */
185
+ function getBinaryGeometriesFromChunk(chunk, geoEncoding, options) {
186
+ switch (geoEncoding) {
187
+ case 'geoarrow.point':
188
+ case 'geoarrow.multipoint':
189
+ return getBinaryPointsFromChunk(chunk, geoEncoding);
190
+ case 'geoarrow.linestring':
191
+ case 'geoarrow.multilinestring':
192
+ return getBinaryLinesFromChunk(chunk, geoEncoding);
193
+ case 'geoarrow.polygon':
194
+ case 'geoarrow.multipolygon':
195
+ return getBinaryPolygonsFromChunk(chunk, geoEncoding, options);
196
+ default:
197
+ throw Error('invalid geoarrow encoding');
198
+ }
199
+ }
200
+ /**
201
+ * get triangle indices. Allows deck.gl to skip performing costly triangulation on main thread.
202
+ * @param polygonIndices Indices within positions of the start of each simple Polygon
203
+ * @param primitivePolygonIndices Indices within positions of the start of each primitive Polygon/ring
204
+ * @param flatCoordinateArray Array of x, y or x, y, z positions
205
+ * @param nDim - number of dimensions per position
206
+ * @returns triangle indices or null if invalid polygon and earcut fails
207
+ */
208
+ export function getTriangleIndices(polygonIndices, primitivePolygonIndices, flatCoordinateArray, nDim) {
209
+ try {
210
+ let primitiveIndex = 0;
211
+ const triangles = [];
212
+ // loop polygonIndices to get triangles
213
+ for (let i = 0; i < polygonIndices.length - 1; i++) {
214
+ const startIdx = polygonIndices[i];
215
+ const endIdx = polygonIndices[i + 1];
216
+ // get subarray of flatCoordinateArray
217
+ const slicedFlatCoords = flatCoordinateArray.subarray(startIdx * nDim, endIdx * nDim);
218
+ // get holeIndices for earcut
219
+ const holeIndices = [];
220
+ while (primitivePolygonIndices[primitiveIndex] < endIdx) {
221
+ if (primitivePolygonIndices[primitiveIndex] > startIdx) {
222
+ holeIndices.push(primitivePolygonIndices[primitiveIndex] - startIdx);
223
+ }
224
+ primitiveIndex++;
225
+ }
226
+ // TODO check if each ring is closed
227
+ const triangleIndices = earcut(slicedFlatCoords, holeIndices.length > 0 ? holeIndices : undefined, nDim);
228
+ if (triangleIndices.length === 0) {
229
+ throw Error('earcut failed e.g. invalid polygon');
230
+ }
231
+ for (let j = 0; j < triangleIndices.length; j++) {
232
+ triangles.push(triangleIndices[j] + startIdx);
233
+ }
234
+ }
235
+ // convert traingles to Uint32Array
236
+ const trianglesUint32 = new Uint32Array(triangles.length);
237
+ for (let i = 0; i < triangles.length; i++) {
238
+ trianglesUint32[i] = triangles[i];
239
+ }
240
+ return trianglesUint32;
241
+ }
242
+ catch (error) {
243
+ // if earcut fails, return null
244
+ return null;
245
+ }
246
+ }
247
+ /**
248
+ * get binary polygons from geoarrow polygon column
249
+ * @param chunk one chunk of geoarrow polygon column
250
+ * @param geoEncoding the geo encoding of the geoarrow polygon column
251
+ * @param options options for getting binary geometries
252
+ * @returns BinaryGeometryContent
253
+ */
254
+ function getBinaryPolygonsFromChunk(chunk, geoEncoding, options) {
255
+ const isMultiPolygon = geoEncoding === 'geoarrow.multipolygon';
256
+ const polygonData = isMultiPolygon ? chunk.children[0] : chunk;
257
+ const polygonOffset = polygonData.valueOffsets;
258
+ const partData = isMultiPolygon
259
+ ? chunk.valueOffsets.map((i) => polygonOffset.at(i) || i)
260
+ : chunk.valueOffsets;
261
+ const ringData = polygonData.children[0];
262
+ const pointData = ringData.children[0];
263
+ const coordData = pointData.children[0];
264
+ const nDim = pointData.stride;
265
+ const geomOffset = ringData.valueOffsets;
266
+ const flatCoordinateArray = coordData.values;
267
+ const geometryIndexes = new Uint16Array(polygonOffset.length);
268
+ for (let i = 0; i < polygonOffset.length; i++) {
269
+ geometryIndexes[i] = geomOffset[polygonOffset[i]];
270
+ }
271
+ const numOfVertices = flatCoordinateArray.length / nDim;
272
+ const featureIds = new Uint32Array(numOfVertices);
273
+ for (let i = 0; i < partData.length - 1; i++) {
274
+ const startIdx = geomOffset[partData[i]];
275
+ const endIdx = geomOffset[partData[i + 1]];
276
+ for (let j = startIdx; j < endIdx; j++) {
277
+ featureIds[j] = i;
278
+ }
279
+ }
280
+ const triangles = options?.triangulate
281
+ ? getTriangleIndices(geometryIndexes, geomOffset, flatCoordinateArray, nDim)
282
+ : null;
283
+ return {
284
+ featureIds,
285
+ nDim,
286
+ flatCoordinateArray,
287
+ geomOffset,
288
+ geometryIndexes,
289
+ ...(options?.triangulate && triangles ? { triangles } : {})
290
+ };
291
+ }
292
+ /**
293
+ * get binary lines from geoarrow line column
294
+ * @param chunk one chunk/batch of geoarrow column
295
+ * @param geoEncoding the geo encoding of the geoarrow column
296
+ * @returns BinaryGeometryContent
297
+ */
298
+ function getBinaryLinesFromChunk(chunk, geoEncoding) {
299
+ const isMultiLineString = geoEncoding === 'geoarrow.multilinestring';
300
+ const lineData = isMultiLineString ? chunk.children[0] : chunk;
301
+ const pointData = lineData.children[0];
302
+ const coordData = pointData.children[0];
303
+ const nDim = pointData.stride;
304
+ const geomOffset = lineData.valueOffsets;
305
+ const flatCoordinateArray = coordData.values;
306
+ // geometryIndexes is not needed for line string
307
+ const geometryIndexes = new Uint16Array(0);
308
+ const numOfVertices = flatCoordinateArray.length / nDim;
309
+ const featureIds = new Uint32Array(numOfVertices);
310
+ if (isMultiLineString) {
311
+ const partData = chunk.valueOffsets;
312
+ for (let i = 0; i < partData.length - 1; i++) {
313
+ const startIdx = geomOffset[partData[i]];
314
+ const endIdx = geomOffset[partData[i + 1]];
315
+ for (let j = startIdx; j < endIdx; j++) {
316
+ featureIds[j] = i;
317
+ }
318
+ }
319
+ }
320
+ else {
321
+ for (let i = 0; i < chunk.length; i++) {
322
+ const startIdx = geomOffset[i];
323
+ const endIdx = geomOffset[i + 1];
324
+ for (let j = startIdx; j < endIdx; j++) {
325
+ featureIds[j] = i;
326
+ }
327
+ }
328
+ }
329
+ return {
330
+ featureIds,
331
+ flatCoordinateArray,
332
+ nDim,
333
+ geomOffset,
334
+ geometryIndexes
335
+ };
336
+ }
337
+ /**
338
+ * get binary points from geoarrow point column
339
+ * @param chunk one chunk/batch of geoarrow column
340
+ * @param geoEncoding geo encoding of the geoarrow column
341
+ * @returns BinaryGeometryContent
342
+ */
343
+ function getBinaryPointsFromChunk(chunk, geoEncoding) {
344
+ const isMultiPoint = geoEncoding === 'geoarrow.multipoint';
345
+ const pointData = isMultiPoint ? chunk.children[0] : chunk;
346
+ const coordData = pointData.children[0];
347
+ const nDim = pointData.stride;
348
+ const flatCoordinateArray = coordData.values;
349
+ // geometryIndices is not needed for point
350
+ const geometryIndexes = new Uint16Array(0);
351
+ // geomOffset is not needed for point
352
+ const geomOffset = new Int32Array(0);
353
+ const numOfVertices = flatCoordinateArray.length / nDim;
354
+ const featureIds = new Uint32Array(numOfVertices);
355
+ if (isMultiPoint) {
356
+ const partData = chunk.valueOffsets;
357
+ for (let i = 0; i < partData.length - 1; i++) {
358
+ const startIdx = partData[i];
359
+ const endIdx = partData[i + 1];
360
+ for (let j = startIdx; j < endIdx; j++) {
361
+ featureIds[j] = i;
362
+ }
363
+ }
364
+ }
365
+ else {
366
+ for (let i = 0; i < chunk.length; i++) {
367
+ featureIds[i] = i;
368
+ }
369
+ }
370
+ return {
371
+ featureIds,
372
+ flatCoordinateArray,
373
+ nDim,
374
+ geomOffset,
375
+ geometryIndexes
376
+ };
377
+ }
378
+ //# sourceMappingURL=convert-geoarrow-to-binary-features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-geoarrow-to-binary-features.js","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-geoarrow-to-binary-features.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,5 @@ export type GeojsonToBinaryOptions = {
15
15
  * @param options
16
16
  * @returns features in binary format, grouped by geometry type
17
17
  */
18
- export declare function geojsonToBinary(features: Feature[], options?: GeojsonToBinaryOptions): BinaryFeatureCollection;
19
- //# sourceMappingURL=geojson-to-binary.d.ts.map
18
+ export declare function convertGeojsonToBinaryFeatureCollection(features: Feature[], options?: GeojsonToBinaryOptions): BinaryFeatureCollection;
19
+ //# sourceMappingURL=convert-geojson-to-binary-features.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-geojson-to-binary-features.d.ts","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-geojson-to-binary-features.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,OAAO,EAAE,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAMzE;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,CAAC;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,sBAAkE,GAC1E,uBAAuB,CAUzB"}
@@ -0,0 +1,25 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { getGeometryInfo } from "../geometry-api/geometry-info.js";
5
+ import { convertGeojsonToFlatGeojson } from "./convert-geojson-to-flat-geojson.js";
6
+ import { convertFlatGeojsonToBinaryFeatureCollection } from "./convert-flat-geojson-to-binary-features.js";
7
+ /**
8
+ * Convert GeoJSON features to flat binary arrays
9
+ *
10
+ * @param features
11
+ * @param options
12
+ * @returns features in binary format, grouped by geometry type
13
+ */
14
+ export function convertGeojsonToBinaryFeatureCollection(features, options = { fixRingWinding: true, triangulate: true }) {
15
+ const geometryInfo = getGeometryInfo(features);
16
+ const coordLength = geometryInfo.coordLength;
17
+ const { fixRingWinding } = options;
18
+ const flatFeatures = convertGeojsonToFlatGeojson(features, { coordLength, fixRingWinding });
19
+ return convertFlatGeojsonToBinaryFeatureCollection(flatFeatures, geometryInfo, {
20
+ numericPropKeys: options.numericPropKeys,
21
+ PositionDataType: options.PositionDataType || Float32Array,
22
+ triangulate: options.triangulate
23
+ });
24
+ }
25
+ //# sourceMappingURL=convert-geojson-to-binary-features.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-geojson-to-binary-features.js","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-geojson-to-binary-features.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,eAAe,EAAC,yCAAsC;AAC9D,OAAO,EAAC,2BAA2B,EAAC,6CAA0C;AAC9E,OAAO,EAAC,2CAA2C,EAAC,qDAAkD;AAYtG;;;;;;GAMG;AACH,MAAM,UAAU,uCAAuC,CACrD,QAAmB,EACnB,UAAkC,EAAC,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAC;IAE3E,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;IAC7C,MAAM,EAAC,cAAc,EAAC,GAAG,OAAO,CAAC;IACjC,MAAM,YAAY,GAAG,2BAA2B,CAAC,QAAQ,EAAE,EAAC,WAAW,EAAE,cAAc,EAAC,CAAC,CAAC;IAC1F,OAAO,2CAA2C,CAAC,YAAY,EAAE,YAAY,EAAE;QAC7E,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,YAAY;QAC1D,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -13,5 +13,5 @@ export type GeojsonToFlatGeojsonOptions = {
13
13
  * @param options
14
14
  * @returns an Array of Flat GeoJSON features
15
15
  */
16
- export declare function geojsonToFlatGeojson(features: Feature[], options?: GeojsonToFlatGeojsonOptions): FlatFeature[];
17
- //# sourceMappingURL=geojson-to-flat-geojson.d.ts.map
16
+ export declare function convertGeojsonToFlatGeojson(features: Feature[], options?: GeojsonToFlatGeojsonOptions): FlatFeature[];
17
+ //# sourceMappingURL=convert-geojson-to-flat-geojson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-geojson-to-flat-geojson.d.ts","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-geojson-to-flat-geojson.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,OAAO,EAAY,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AASF;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,2BAAoE,GAC5E,WAAW,EAAE,CAEf"}
@@ -1,3 +1,6 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { getPolygonSignedArea } from '@math.gl/polygon';
2
5
  /**
3
6
  * Convert GeoJSON features to Flat GeoJSON features
@@ -6,7 +9,7 @@ import { getPolygonSignedArea } from '@math.gl/polygon';
6
9
  * @param options
7
10
  * @returns an Array of Flat GeoJSON features
8
11
  */
9
- export function geojsonToFlatGeojson(features, options = { coordLength: 2, fixRingWinding: true }) {
12
+ export function convertGeojsonToFlatGeojson(features, options = { coordLength: 2, fixRingWinding: true }) {
10
13
  return features.map((feature) => flattenFeature(feature, options));
11
14
  }
12
15
  /**
@@ -122,3 +125,4 @@ function flattenFeature(feature, options) {
122
125
  }
123
126
  return { ...feature, geometry: { type, indices, data, areas } };
124
127
  }
128
+ //# sourceMappingURL=convert-geojson-to-flat-geojson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-geojson-to-flat-geojson.js","sourceRoot":"","sources":["../../../src/lib/feature-collection-converters/convert-geojson-to-flat-geojson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flat-geojson-to-binary-types.d.ts","sourceRoot":"","sources":["../../../../src/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,uBAAuB,GACvB,uBAAuB,GACvB,gBAAgB,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,YAAY,GAAG,YAAY,CAAC;IACvC,gBAAgB,EAAE,WAAW,GAAG,WAAW,CAAC;IAC5C,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC;IACtC,YAAY,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAC,CAAC;IAC1C,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE;QACN,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACtB,EAAE,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,YAAY,GAAG,YAAY,CAAC;IACvC,WAAW,EAAE,WAAW,GAAG,WAAW,CAAC;IACvC,gBAAgB,EAAE,WAAW,GAAG,WAAW,CAAC;IAC5C,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC;IACtC,YAAY,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAC,CAAC;IAC1C,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE;QACN,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACtB,EAAE,CAAC;CACL,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,YAAY,GAAG,YAAY,CAAC;IACvC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC;IAC1C,uBAAuB,EAAE,WAAW,GAAG,WAAW,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,WAAW,GAAG,WAAW,CAAC;IAC5C,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC;IACtC,YAAY,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;KAAC,CAAC;IAC1C,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE;QACN,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACtB,EAAE,CAAC;CACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export {};
5
+ //# sourceMappingURL=flat-geojson-to-binary-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flat-geojson-to-binary-types.js","sourceRoot":"","sources":["../../../../src/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC"}
@@ -0,0 +1,21 @@
1
+ import type { Feature } from '@loaders.gl/schema';
2
+ /** Aggregate information for converting GeoJSON into other formats */
3
+ export type GeojsonGeometryInfo = {
4
+ coordLength: number;
5
+ pointPositionsCount: number;
6
+ pointFeaturesCount: number;
7
+ linePositionsCount: number;
8
+ linePathsCount: number;
9
+ lineFeaturesCount: number;
10
+ polygonPositionsCount: number;
11
+ polygonObjectsCount: number;
12
+ polygonRingsCount: number;
13
+ polygonFeaturesCount: number;
14
+ };
15
+ /**
16
+ * Initial scan over GeoJSON features
17
+ * Counts number of coordinates of each geometry type and
18
+ * keeps track of the max coordinate dimensions
19
+ */
20
+ export declare function getGeometryInfo(features: Feature[]): GeojsonGeometryInfo;
21
+ //# sourceMappingURL=geometry-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-info.d.ts","sourceRoot":"","sources":["../../../src/lib/geometry-api/geometry-info.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAEhD,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AAEH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,CA4FxE"}
@@ -1,10 +1,13 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  /**
2
5
  * Initial scan over GeoJSON features
3
6
  * Counts number of coordinates of each geometry type and
4
7
  * keeps track of the max coordinate dimensions
5
8
  */
6
9
  // eslint-disable-next-line complexity, max-statements
7
- export function extractGeometryInfo(features) {
10
+ export function getGeometryInfo(features) {
8
11
  // Counts the number of _positions_, so [x, y, z] counts as one
9
12
  let pointPositionsCount = 0;
10
13
  let pointFeaturesCount = 0;
@@ -90,3 +93,4 @@ export function extractGeometryInfo(features) {
90
93
  polygonFeaturesCount
91
94
  };
92
95
  }
96
+ //# sourceMappingURL=geometry-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-info.js","sourceRoot":"","sources":["../../../src/lib/geometry-api/geometry-info.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAkBpC;;;;GAIG;AACH,sDAAsD;AACtD,MAAM,UAAU,eAAe,CAAC,QAAmB;IACjD,+DAA+D;IAC/D,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,OAAO;gBACV,kBAAkB,EAAE,CAAC;gBACrB,mBAAmB,EAAE,CAAC;gBACtB,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,YAAY;gBACf,kBAAkB,EAAE,CAAC;gBACrB,mBAAmB,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;gBACnD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACzC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM;YACR,KAAK,YAAY;gBACf,iBAAiB,EAAE,CAAC;gBACpB,kBAAkB,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;gBAClD,cAAc,EAAE,CAAC;gBAEjB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACzC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM;YACR,KAAK,iBAAiB;gBACpB,iBAAiB,EAAE,CAAC;gBACpB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACxC,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC;oBAClC,cAAc,EAAE,CAAC;oBAEjB,qCAAqC;oBACrC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;wBACzB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,KAAK,SAAS;gBACZ,oBAAoB,EAAE,CAAC;gBACvB,mBAAmB,EAAE,CAAC;gBACtB,iBAAiB,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;gBACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC9C,qBAAqB,IAAI,SAAS,CAAC,MAAM,CAAC;gBAE1C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;oBAC9B,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBACD,MAAM;YACR,KAAK,cAAc;gBACjB,oBAAoB,EAAE,CAAC;gBACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAC3C,mBAAmB,EAAE,CAAC;oBACtB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;oBACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjC,qBAAqB,IAAI,SAAS,CAAC,MAAM,CAAC;oBAE1C,qCAAqC;oBACrC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;wBAC9B,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBACD,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,mBAAmB;QACnB,kBAAkB;QAClB,kBAAkB;QAClB,cAAc;QACd,iBAAiB;QACjB,qBAAqB;QACrB,mBAAmB;QACnB,iBAAiB;QACjB,oBAAoB;KACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { BinaryGeometry, Geometry } from '@loaders.gl/schema';
2
+ /** Parse input binary data and return a valid GeoJSON geometry object */
3
+ export declare function convertBinaryGeometryToGeometry(data: BinaryGeometry, startIndex?: number, endIndex?: number): Geometry;
4
+ //# sourceMappingURL=convert-binary-geometry-to-geojson.d.ts.map