@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.
- package/dist/index.cjs +2411 -469
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +31 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -15
- package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts +21 -0
- package/dist/lib/binary-geometry-api/binary-geometry-info.d.ts.map +1 -0
- package/dist/lib/binary-geometry-api/binary-geometry-info.js +48 -0
- package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts +5 -0
- package/dist/lib/binary-geometry-api/concat-binary-geometry.d.ts.map +1 -0
- package/dist/lib/binary-geometry-api/concat-binary-geometry.js +50 -0
- package/dist/lib/{binary-features/transform.d.ts → binary-geometry-api/transform-coordinates.d.ts} +1 -2
- package/dist/lib/binary-geometry-api/transform-coordinates.d.ts.map +1 -0
- package/dist/lib/{binary-features/transform.js → binary-geometry-api/transform-coordinates.js} +0 -1
- package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts +16 -0
- package/dist/lib/feature-collection-converters/convert-binary-features-to-geojson.d.ts.map +1 -0
- package/dist/lib/{binary-features/binary-to-geojson.js → feature-collection-converters/convert-binary-features-to-geojson.js} +3 -90
- package/dist/lib/{binary-features/flat-geojson-to-binary.d.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts} +6 -9
- package/dist/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts.map +1 -0
- package/dist/lib/{binary-features/flat-geojson-to-binary.js → feature-collection-converters/convert-flat-geojson-to-binary-features.js} +5 -5
- package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts +74 -0
- package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.d.ts.map +1 -0
- package/dist/lib/feature-collection-converters/convert-geoarrow-to-binary-features.js +377 -0
- package/dist/lib/{binary-features/geojson-to-binary.d.ts → feature-collection-converters/convert-geojson-to-binary-features.d.ts} +2 -2
- package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.d.ts.map +1 -0
- package/dist/lib/feature-collection-converters/convert-geojson-to-binary-features.js +24 -0
- package/dist/lib/{binary-features/geojson-to-flat-geojson.d.ts → feature-collection-converters/convert-geojson-to-flat-geojson.d.ts} +2 -2
- package/dist/lib/feature-collection-converters/convert-geojson-to-flat-geojson.d.ts.map +1 -0
- package/dist/lib/{binary-features/geojson-to-flat-geojson.js → feature-collection-converters/convert-geojson-to-flat-geojson.js} +4 -1
- package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.d.ts.map +1 -0
- package/dist/lib/feature-collection-converters/helpers/flat-geojson-to-binary-types.js +4 -0
- package/dist/lib/geometry-api/geometry-info.d.ts +21 -0
- package/dist/lib/geometry-api/geometry-info.d.ts.map +1 -0
- package/dist/lib/{binary-features/extract-geometry-info.js → geometry-api/geometry-info.js} +4 -1
- package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts +4 -0
- package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.d.ts.map +1 -0
- package/dist/lib/geometry-converters/convert-binary-geometry-to-geojson.js +91 -0
- package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts +13 -0
- package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.d.ts.map +1 -0
- package/dist/lib/geometry-converters/convert-geoarrow-to-geojson.js +164 -0
- package/dist/lib/geometry-converters/convert-to-geojson.d.ts +6 -0
- package/dist/lib/geometry-converters/convert-to-geojson.d.ts.map +1 -0
- package/dist/lib/geometry-converters/convert-to-geojson.js +39 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts +6 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-twkb.js +195 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts +9 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkb.js +273 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts +8 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-geometry-to-wkt.js +44 -0
- package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts +10 -0
- package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-twkb-to-geometry.js +254 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts +3 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.js +164 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts +11 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkb-to-geometry.js +9 -0
- package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts +16 -0
- package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/convert-wkt-to-geometry.js +258 -0
- package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts +43 -0
- package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/parse-wkb-header.js +174 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts +64 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-types.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-types.js +46 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts +21 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/wkb-utils.js +64 -0
- package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts +8 -0
- package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.d.ts.map +1 -0
- package/dist/lib/geometry-converters/wkb/helpers/write-wkb-header.js +33 -0
- package/dist/lib/table-converters/convert-geoarrow-table.d.ts +27 -0
- package/dist/lib/table-converters/convert-geoarrow-table.d.ts.map +1 -0
- package/dist/lib/table-converters/convert-geoarrow-table.js +154 -0
- package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts +4 -0
- package/dist/lib/table-converters/convert-wkb-table-to-geojson.d.ts.map +1 -0
- package/dist/lib/{tables/convert-table-to-geojson.js → table-converters/convert-wkb-table-to-geojson.js} +10 -16
- package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts +6 -0
- package/dist/lib/table-converters/make-arrow-batch-iterator.d.ts.map +1 -0
- package/dist/lib/table-converters/make-arrow-batch-iterator.js +35 -0
- package/dist/lib/utils/base64-encoder.d.ts +5 -0
- package/dist/lib/utils/base64-encoder.d.ts.map +1 -0
- package/dist/lib/utils/base64-encoder.js +153 -0
- package/dist/lib/utils/binary-reader.d.ts +18 -0
- package/dist/lib/utils/binary-reader.d.ts.map +1 -0
- package/dist/lib/utils/binary-reader.js +69 -0
- package/dist/lib/utils/binary-writer.d.ts +30 -0
- package/dist/lib/utils/binary-writer.d.ts.map +1 -0
- package/dist/lib/utils/binary-writer.js +127 -0
- package/dist/lib/utils/concat-typed-arrays.d.ts +3 -0
- package/dist/lib/utils/concat-typed-arrays.d.ts.map +1 -0
- package/dist/lib/utils/concat-typed-arrays.js +18 -0
- package/dist/lib/utils/hex-encoder.d.ts +15 -0
- package/dist/lib/utils/hex-encoder.d.ts.map +1 -0
- package/dist/lib/utils/hex-encoder.js +54 -0
- package/dist/lib/utils/hex-transcoder.d.ts +15 -0
- package/dist/lib/utils/hex-transcoder.d.ts.map +1 -0
- package/dist/lib/utils/hex-transcoder.js +50 -0
- package/dist/lib/wkt-crs/encode-wkt-crs.d.ts +10 -0
- package/dist/lib/wkt-crs/encode-wkt-crs.d.ts.map +1 -0
- package/dist/lib/wkt-crs/encode-wkt-crs.js +35 -0
- package/dist/lib/wkt-crs/parse-wkt-crs.d.ts +15 -0
- package/dist/lib/wkt-crs/parse-wkt-crs.d.ts.map +1 -0
- package/dist/lib/wkt-crs/parse-wkt-crs.js +120 -0
- package/package.json +7 -5
- package/src/index.ts +87 -14
- package/src/lib/binary-geometry-api/binary-geometry-info.ts +75 -0
- package/src/lib/binary-geometry-api/concat-binary-geometry.ts +78 -0
- package/src/lib/{binary-features/transform.ts → binary-geometry-api/transform-coordinates.ts} +0 -1
- package/src/lib/{binary-features/binary-to-geojson.ts → feature-collection-converters/convert-binary-features-to-geojson.ts} +5 -142
- package/src/lib/{binary-features/flat-geojson-to-binary.ts → feature-collection-converters/convert-flat-geojson-to-binary-features.ts} +14 -9
- package/src/lib/feature-collection-converters/convert-geoarrow-to-binary-features.ts +496 -0
- package/src/lib/{binary-features/geojson-to-binary.ts → feature-collection-converters/convert-geojson-to-binary-features.ts} +11 -7
- package/src/lib/{binary-features/geojson-to-flat-geojson.ts → feature-collection-converters/convert-geojson-to-flat-geojson.ts} +5 -1
- package/src/lib/{binary-features → feature-collection-converters/helpers}/flat-geojson-to-binary-types.ts +4 -0
- package/src/lib/{binary-features/extract-geometry-info.ts → geometry-api/geometry-info.ts} +20 -2
- package/src/lib/geometry-converters/convert-binary-geometry-to-geojson.ts +148 -0
- package/src/lib/geometry-converters/convert-geoarrow-to-geojson.ts +193 -0
- package/src/lib/geometry-converters/convert-to-geojson.ts +52 -0
- package/src/lib/geometry-converters/wkb/convert-geometry-to-twkb.ts +308 -0
- package/src/lib/geometry-converters/wkb/convert-geometry-to-wkb.ts +365 -0
- package/src/lib/geometry-converters/wkb/convert-geometry-to-wkt.ts +54 -0
- package/src/lib/geometry-converters/wkb/convert-twkb-to-geometry.ts +366 -0
- package/src/lib/geometry-converters/wkb/convert-wkb-to-binary-geometry.ts +238 -0
- package/src/lib/geometry-converters/wkb/convert-wkb-to-geometry.ts +23 -0
- package/src/lib/geometry-converters/wkb/convert-wkt-to-geometry.ts +294 -0
- package/src/lib/geometry-converters/wkb/helpers/parse-wkb-header.ts +213 -0
- package/src/lib/geometry-converters/wkb/helpers/wkb-types.ts +82 -0
- package/src/lib/geometry-converters/wkb/helpers/wkb-utils.ts +85 -0
- package/src/lib/geometry-converters/wkb/helpers/write-wkb-header.ts +41 -0
- package/src/lib/table-converters/convert-geoarrow-table.ts +218 -0
- package/src/lib/{tables/convert-table-to-geojson.ts → table-converters/convert-wkb-table-to-geojson.ts} +10 -23
- package/src/lib/table-converters/make-arrow-batch-iterator.ts +53 -0
- package/src/lib/utils/base64-encoder.ts +157 -0
- package/src/lib/utils/binary-reader.ts +76 -0
- package/src/lib/utils/binary-writer.ts +136 -0
- package/src/lib/utils/concat-typed-arrays.ts +24 -0
- package/src/lib/utils/hex-encoder.ts +60 -0
- package/src/lib/utils/hex-transcoder.ts +54 -0
- package/src/lib/wkt-crs/encode-wkt-crs.ts +41 -0
- package/src/lib/wkt-crs/parse-wkt-crs.ts +149 -0
- package/dist/lib/binary-features/binary-to-geojson.d.ts +0 -18
- package/dist/lib/binary-features/binary-to-geojson.d.ts.map +0 -1
- package/dist/lib/binary-features/extract-geometry-info.d.ts +0 -8
- package/dist/lib/binary-features/extract-geometry-info.d.ts.map +0 -1
- package/dist/lib/binary-features/flat-geojson-to-binary-types.d.ts.map +0 -1
- package/dist/lib/binary-features/flat-geojson-to-binary-types.js +0 -1
- package/dist/lib/binary-features/flat-geojson-to-binary.d.ts.map +0 -1
- package/dist/lib/binary-features/geojson-to-binary.d.ts.map +0 -1
- package/dist/lib/binary-features/geojson-to-binary.js +0 -21
- package/dist/lib/binary-features/geojson-to-flat-geojson.d.ts.map +0 -1
- package/dist/lib/binary-features/transform.d.ts.map +0 -1
- package/dist/lib/geo/geoarrow-metadata.d.ts +0 -27
- package/dist/lib/geo/geoarrow-metadata.d.ts.map +0 -1
- package/dist/lib/geo/geoarrow-metadata.js +0 -70
- package/dist/lib/geo/geoparquet-metadata-schema.d.ts +0 -79
- package/dist/lib/geo/geoparquet-metadata-schema.d.ts.map +0 -1
- package/dist/lib/geo/geoparquet-metadata-schema.js +0 -69
- package/dist/lib/geo/geoparquet-metadata.d.ts +0 -45
- package/dist/lib/geo/geoparquet-metadata.d.ts.map +0 -1
- package/dist/lib/geo/geoparquet-metadata.js +0 -117
- package/dist/lib/tables/convert-table-to-geojson.d.ts +0 -5
- package/dist/lib/tables/convert-table-to-geojson.d.ts.map +0 -1
- package/src/lib/geo/geoarrow-metadata.ts +0 -100
- package/src/lib/geo/geoparquet-metadata-schema.json +0 -60
- package/src/lib/geo/geoparquet-metadata-schema.ts +0 -71
- package/src/lib/geo/geoparquet-metadata.ts +0 -191
- /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 {
|
|
2
|
-
export
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export
|
|
6
|
-
export {
|
|
7
|
-
export { convertWKBTableToGeoJSON } from "./lib/
|
|
8
|
-
export { flatGeojsonToBinary } from "./lib/
|
|
9
|
-
export { geojsonToBinary } from "./lib/
|
|
10
|
-
export { geojsonToFlatGeojson } from "./lib/
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export {
|
|
16
|
-
|
|
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);
|
package/dist/lib/{binary-features/transform.d.ts → binary-geometry-api/transform-coordinates.d.ts}
RENAMED
|
@@ -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"}
|
package/dist/lib/{binary-features/transform.js → binary-geometry-api/transform-coordinates.js}
RENAMED
|
@@ -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
|
|
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 =
|
|
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
|
|
2
|
-
import {
|
|
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
|
|
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
|
-
|
|
38
|
-
//# sourceMappingURL=flat-geojson-to-binary.d.ts.map
|
|
35
|
+
//# sourceMappingURL=convert-flat-geojson-to-binary-features.d.ts.map
|
package/dist/lib/feature-collection-converters/convert-flat-geojson-to-binary-features.d.ts.map
ADDED
|
@@ -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
|
|
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"}
|