@loaders.gl/wms 3.3.0-alpha.9 → 3.3.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/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +6 -0
- package/dist/dist.min.js +4080 -2009
- package/dist/es5/index.js +63 -7
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lerc-loader.js +74 -0
- package/dist/es5/lerc-loader.js.map +1 -0
- package/dist/es5/lib/data-sources/adhoc-image-service.js +129 -0
- package/dist/es5/lib/data-sources/adhoc-image-service.js.map +1 -0
- package/dist/es5/lib/data-sources/arcgis-image-service.js +180 -0
- package/dist/es5/lib/data-sources/arcgis-image-service.js.map +1 -0
- package/dist/es5/lib/data-sources/create-image-source.js +45 -0
- package/dist/es5/lib/data-sources/create-image-source.js.map +1 -0
- package/dist/es5/lib/data-sources/image-services/arcgis-image-service.js +179 -0
- package/dist/es5/lib/data-sources/image-services/arcgis-image-service.js.map +1 -0
- package/dist/es5/lib/data-sources/image-services/image-service.js +163 -0
- package/dist/es5/lib/data-sources/image-services/image-service.js.map +1 -0
- package/dist/es5/lib/data-sources/image-services/wms-service.js +400 -0
- package/dist/es5/lib/data-sources/image-services/wms-service.js.map +1 -0
- package/dist/es5/lib/data-sources/image-source.js +14 -0
- package/dist/es5/lib/data-sources/image-source.js.map +1 -0
- package/dist/es5/lib/gml/deep-strict-equal.js +64 -0
- package/dist/es5/lib/gml/deep-strict-equal.js.map +1 -0
- package/dist/es5/lib/gml/parse-gml.js +416 -0
- package/dist/es5/lib/gml/parse-gml.js.map +1 -0
- package/dist/es5/lib/lerc/lerc-types.js +2 -0
- package/dist/es5/lib/lerc/lerc-types.js.map +1 -0
- package/dist/es5/lib/wcs/parse-wcs.js +43 -0
- package/dist/es5/lib/wcs/parse-wcs.js.map +1 -0
- package/dist/es5/lib/wcs/wcs-types.js +2 -0
- package/dist/es5/lib/wcs/wcs-types.js.map +1 -0
- package/dist/es5/lib/wfs/parse-wfs.js +43 -0
- package/dist/es5/lib/wfs/parse-wfs.js.map +1 -0
- package/dist/es5/lib/wfs/wfs-types.js +2 -0
- package/dist/es5/lib/wfs/wfs-types.js.map +1 -0
- package/dist/es5/lib/{parse-wms.js → wms/parse-wms.js} +35 -2
- package/dist/es5/lib/wms/parse-wms.js.map +1 -0
- package/dist/es5/{wms-types.js → lib/wms/wms-types.js} +0 -0
- package/dist/es5/lib/wms/wms-types.js.map +1 -0
- package/dist/es5/lib/wmts/parse-wmts.js +43 -0
- package/dist/es5/lib/wmts/parse-wmts.js.map +1 -0
- package/dist/es5/lib/wmts/wmts-types.js +2 -0
- package/dist/es5/lib/wmts/wmts-types.js.map +1 -0
- package/dist/es5/wip/arcgis-feature-service.js +45 -0
- package/dist/es5/wip/arcgis-feature-service.js.map +1 -0
- package/dist/es5/wip/data-source.js +4 -0
- package/dist/es5/wip/data-source.js.map +1 -0
- package/dist/es5/wip/gml-loader.js +54 -0
- package/dist/es5/wip/gml-loader.js.map +1 -0
- package/dist/es5/wip/wcs-capabilities-loader.js +54 -0
- package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -0
- package/dist/es5/wip/wfs-capabilities-loader.js +54 -0
- package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -0
- package/dist/es5/{wms-feature-info-loader.js → wip/wms-feature-info-loader.js} +3 -3
- package/dist/es5/wip/wms-feature-info-loader.js.map +1 -0
- package/dist/es5/{wms-layer-description-loader.js → wip/wms-layer-description-loader.js} +5 -5
- package/dist/es5/wip/wms-layer-description-loader.js.map +1 -0
- package/dist/es5/wip/wms-layer-description-loader.md.disabled.md +47 -0
- package/dist/es5/wip/wmts-capabilities-loader.js +54 -0
- package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -0
- package/dist/es5/wms-capabilities-loader.js +3 -3
- package/dist/es5/wms-capabilities-loader.js.map +1 -1
- package/dist/es5/wms-error-loader.js +70 -0
- package/dist/es5/wms-error-loader.js.map +1 -0
- package/dist/esm/index.js +16 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lerc-loader.js +25 -0
- package/dist/esm/lerc-loader.js.map +1 -0
- package/dist/esm/lib/data-sources/adhoc-image-service.js +43 -0
- package/dist/esm/lib/data-sources/adhoc-image-service.js.map +1 -0
- package/dist/esm/lib/data-sources/arcgis-image-service.js +62 -0
- package/dist/esm/lib/data-sources/arcgis-image-service.js.map +1 -0
- package/dist/esm/lib/data-sources/create-image-source.js +30 -0
- package/dist/esm/lib/data-sources/create-image-source.js.map +1 -0
- package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js +61 -0
- package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js.map +1 -0
- package/dist/esm/lib/data-sources/image-services/image-service.js +72 -0
- package/dist/esm/lib/data-sources/image-services/image-service.js.map +1 -0
- package/dist/esm/lib/data-sources/image-services/wms-service.js +190 -0
- package/dist/esm/lib/data-sources/image-services/wms-service.js.map +1 -0
- package/dist/esm/lib/data-sources/image-source.js +4 -0
- package/dist/esm/lib/data-sources/image-source.js.map +1 -0
- package/dist/esm/lib/gml/deep-strict-equal.js +57 -0
- package/dist/esm/lib/gml/deep-strict-equal.js.map +1 -0
- package/dist/esm/lib/gml/parse-gml.js +348 -0
- package/dist/esm/lib/gml/parse-gml.js.map +1 -0
- package/dist/esm/lib/lerc/lerc-types.js +2 -0
- package/dist/esm/lib/lerc/lerc-types.js.map +1 -0
- package/dist/esm/lib/wcs/parse-wcs.js +32 -0
- package/dist/esm/lib/wcs/parse-wcs.js.map +1 -0
- package/dist/esm/lib/wcs/wcs-types.js +2 -0
- package/dist/esm/lib/wcs/wcs-types.js.map +1 -0
- package/dist/esm/lib/wfs/parse-wfs.js +32 -0
- package/dist/esm/lib/wfs/parse-wfs.js.map +1 -0
- package/dist/esm/lib/wfs/wfs-types.js +2 -0
- package/dist/esm/lib/wfs/wfs-types.js.map +1 -0
- package/dist/esm/lib/{parse-wms.js → wms/parse-wms.js} +33 -2
- package/dist/esm/lib/wms/parse-wms.js.map +1 -0
- package/dist/esm/{wms-types.js → lib/wms/wms-types.js} +0 -0
- package/dist/esm/lib/wms/wms-types.js.map +1 -0
- package/dist/esm/lib/wmts/parse-wmts.js +32 -0
- package/dist/esm/lib/wmts/parse-wmts.js.map +1 -0
- package/dist/esm/lib/wmts/wmts-types.js +2 -0
- package/dist/esm/lib/wmts/wmts-types.js.map +1 -0
- package/dist/esm/wip/arcgis-feature-service.js +28 -0
- package/dist/esm/wip/arcgis-feature-service.js.map +1 -0
- package/dist/esm/wip/data-source.js +2 -0
- package/dist/esm/wip/data-source.js.map +1 -0
- package/dist/esm/wip/gml-loader.js +25 -0
- package/dist/esm/wip/gml-loader.js.map +1 -0
- package/dist/esm/wip/wcs-capabilities-loader.js +25 -0
- package/dist/esm/wip/wcs-capabilities-loader.js.map +1 -0
- package/dist/esm/wip/wfs-capabilities-loader.js +25 -0
- package/dist/esm/wip/wfs-capabilities-loader.js.map +1 -0
- package/dist/esm/{wms-feature-info-loader.js → wip/wms-feature-info-loader.js} +3 -3
- package/dist/esm/wip/wms-feature-info-loader.js.map +1 -0
- package/dist/esm/wip/wms-layer-description-loader.js +14 -0
- package/dist/esm/wip/wms-layer-description-loader.js.map +1 -0
- package/dist/esm/wip/wms-layer-description-loader.md.disabled.md +47 -0
- package/dist/esm/wip/wmts-capabilities-loader.js +25 -0
- package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -0
- package/dist/esm/wms-capabilities-loader.js +3 -3
- package/dist/esm/wms-capabilities-loader.js.map +1 -1
- package/dist/esm/wms-error-loader.js +40 -0
- package/dist/esm/wms-error-loader.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/lerc-loader.d.ts +30 -0
- package/dist/lerc-loader.d.ts.map +1 -0
- package/dist/lerc-loader.js +56 -0
- package/dist/lib/data-sources/adhoc-image-service.d.ts +24 -0
- package/dist/lib/data-sources/adhoc-image-service.d.ts.map +1 -0
- package/dist/lib/data-sources/adhoc-image-service.js +46 -0
- package/dist/lib/data-sources/arcgis-image-service.d.ts +79 -0
- package/dist/lib/data-sources/arcgis-image-service.d.ts.map +1 -0
- package/dist/lib/data-sources/arcgis-image-service.js +85 -0
- package/dist/lib/data-sources/create-image-source.d.ts +16 -0
- package/dist/lib/data-sources/create-image-source.d.ts.map +1 -0
- package/dist/lib/data-sources/create-image-source.js +39 -0
- package/dist/lib/data-sources/image-services/arcgis-image-service.d.ts +71 -0
- package/dist/lib/data-sources/image-services/arcgis-image-service.d.ts.map +1 -0
- package/dist/lib/data-sources/image-services/arcgis-image-service.js +85 -0
- package/dist/lib/data-sources/image-services/image-service.d.ts +39 -0
- package/dist/lib/data-sources/image-services/image-service.d.ts.map +1 -0
- package/dist/lib/data-sources/image-services/image-service.js +82 -0
- package/dist/lib/data-sources/image-services/wms-service.d.ts +188 -0
- package/dist/lib/data-sources/image-services/wms-service.d.ts.map +1 -0
- package/dist/lib/data-sources/image-services/wms-service.js +218 -0
- package/dist/lib/data-sources/image-source.d.ts +73 -0
- package/dist/lib/data-sources/image-source.d.ts.map +1 -0
- package/dist/lib/data-sources/image-source.js +12 -0
- package/dist/lib/gml/deep-strict-equal.d.ts +3 -0
- package/dist/lib/gml/deep-strict-equal.d.ts.map +1 -0
- package/dist/lib/gml/deep-strict-equal.js +119 -0
- package/dist/lib/gml/parse-gml.d.ts +28 -0
- package/dist/lib/gml/parse-gml.d.ts.map +1 -0
- package/dist/lib/gml/parse-gml.js +371 -0
- package/dist/lib/lerc/lerc-types.d.ts +30 -0
- package/dist/lib/lerc/lerc-types.d.ts.map +1 -0
- package/dist/lib/lerc/lerc-types.js +3 -0
- package/dist/lib/wcs/parse-wcs.d.ts +7 -0
- package/dist/lib/wcs/parse-wcs.d.ts.map +1 -0
- package/dist/lib/wcs/parse-wcs.js +36 -0
- package/dist/lib/wcs/wcs-types.d.ts +73 -0
- package/dist/lib/wcs/wcs-types.d.ts.map +1 -0
- package/dist/lib/wcs/wcs-types.js +3 -0
- package/dist/lib/wfs/parse-wfs.d.ts +7 -0
- package/dist/lib/wfs/parse-wfs.d.ts.map +1 -0
- package/dist/lib/wfs/parse-wfs.js +36 -0
- package/dist/lib/wfs/wfs-types.d.ts +73 -0
- package/dist/lib/wfs/wfs-types.d.ts.map +1 -0
- package/dist/lib/wfs/wfs-types.js +3 -0
- package/dist/lib/wms/parse-wms.d.ts +24 -0
- package/dist/lib/wms/parse-wms.d.ts.map +1 -0
- package/dist/lib/wms/parse-wms.js +115 -0
- package/dist/lib/wms/wms-types.d.ts +100 -0
- package/dist/lib/wms/wms-types.d.ts.map +1 -0
- package/dist/lib/wms/wms-types.js +1908 -0
- package/dist/lib/wmts/parse-wmts.d.ts +7 -0
- package/dist/lib/wmts/parse-wmts.d.ts.map +1 -0
- package/dist/lib/wmts/parse-wmts.js +36 -0
- package/dist/lib/wmts/wmts-types.d.ts +73 -0
- package/dist/lib/wmts/wmts-types.d.ts.map +1 -0
- package/dist/lib/wmts/wmts-types.js +3 -0
- package/dist/wip/arcgis-feature-service.d.ts +56 -0
- package/dist/wip/arcgis-feature-service.d.ts.map +1 -0
- package/dist/wip/arcgis-feature-service.js +28 -0
- package/dist/wip/data-source.d.ts +54 -0
- package/dist/wip/data-source.d.ts.map +1 -0
- package/dist/wip/data-source.js +59 -0
- package/dist/wip/gml-loader.d.ts +26 -0
- package/dist/wip/gml-loader.d.ts.map +1 -0
- package/dist/wip/gml-loader.js +31 -0
- package/dist/wip/wcs-capabilities-loader.d.ts +26 -0
- package/dist/wip/wcs-capabilities-loader.d.ts.map +1 -0
- package/dist/wip/wcs-capabilities-loader.js +31 -0
- package/dist/wip/wfs-capabilities-loader.d.ts +26 -0
- package/dist/wip/wfs-capabilities-loader.d.ts.map +1 -0
- package/dist/wip/wfs-capabilities-loader.js +31 -0
- package/dist/wip/wms-feature-info-loader.d.ts +22 -0
- package/dist/wip/wms-feature-info-loader.d.ts.map +1 -0
- package/dist/wip/wms-feature-info-loader.js +17 -0
- package/dist/wip/wms-layer-description-loader.d.ts +22 -0
- package/dist/wip/wms-layer-description-loader.d.ts.map +1 -0
- package/dist/wip/wms-layer-description-loader.js +17 -0
- package/dist/wip/wmts-capabilities-loader.d.ts +26 -0
- package/dist/wip/wmts-capabilities-loader.d.ts.map +1 -0
- package/dist/wip/wmts-capabilities-loader.js +31 -0
- package/dist/wms-capabilities-loader.d.ts +26 -0
- package/dist/wms-capabilities-loader.d.ts.map +1 -0
- package/dist/wms-capabilities-loader.js +31 -0
- package/dist/wms-error-loader.d.ts +34 -0
- package/dist/wms-error-loader.d.ts.map +1 -0
- package/dist/wms-error-loader.js +43 -0
- package/package.json +17 -6
- package/src/index.ts +51 -6
- package/src/lerc-loader.ts +50 -0
- package/src/lib/data-sources/adhoc-image-service.ts +61 -0
- package/src/lib/data-sources/arcgis-image-service.ts +146 -0
- package/src/lib/data-sources/create-image-source.ts +46 -0
- package/src/lib/data-sources/image-services/arcgis-image-service.ts +136 -0
- package/src/lib/data-sources/image-services/image-service.ts +105 -0
- package/src/lib/data-sources/image-services/wms-service.ts +351 -0
- package/src/lib/data-sources/image-source.ts +82 -0
- package/src/lib/gml/deep-strict-equal.ts +119 -0
- package/src/lib/gml/parse-gml.ts +500 -0
- package/src/lib/lerc/lerc-types.ts +43 -0
- package/src/lib/wcs/parse-wcs.ts +39 -0
- package/src/lib/wcs/wcs-types.ts +77 -0
- package/src/lib/wfs/parse-wfs.ts +39 -0
- package/src/lib/wfs/wfs-types.ts +78 -0
- package/src/lib/{parse-wms.ts → wms/parse-wms.ts} +54 -4
- package/src/{wms-types.ts → lib/wms/wms-types.ts} +3 -1
- package/src/lib/wmts/parse-wmts.ts +39 -0
- package/src/lib/wmts/wmts-types.ts +77 -0
- package/src/wip/arcgis-feature-service.ts +89 -0
- package/src/{lib/data-sources/image-data-source.ts → wip/data-source.ts} +20 -42
- package/src/wip/gml-loader.ts +40 -0
- package/src/wip/wcs-capabilities-loader.ts +40 -0
- package/src/wip/wfs-capabilities-loader.ts +40 -0
- package/src/{wms-feature-info-loader.ts → wip/wms-feature-info-loader.ts} +3 -3
- package/src/wip/wms-layer-description-loader.md.disabled.md +47 -0
- package/src/{wms-layer-description-loader.ts → wip/wms-layer-description-loader.ts} +6 -6
- package/src/wip/wmts-capabilities-loader.ts +40 -0
- package/src/wms-capabilities-loader.ts +2 -2
- package/src/wms-error-loader.ts +59 -0
- package/dist/es5/lib/data-sources/image-data-source.js +0 -4
- package/dist/es5/lib/data-sources/image-data-source.js.map +0 -1
- package/dist/es5/lib/data-sources/wms-data-source.js +0 -223
- package/dist/es5/lib/data-sources/wms-data-source.js.map +0 -1
- package/dist/es5/lib/parse-wms.js.map +0 -1
- package/dist/es5/wms-feature-info-loader.js.map +0 -1
- package/dist/es5/wms-layer-description-loader.js.map +0 -1
- package/dist/es5/wms-types.js.map +0 -1
- package/dist/esm/lib/data-sources/image-data-source.js +0 -2
- package/dist/esm/lib/data-sources/image-data-source.js.map +0 -1
- package/dist/esm/lib/data-sources/wms-data-source.js +0 -70
- package/dist/esm/lib/data-sources/wms-data-source.js.map +0 -1
- package/dist/esm/lib/parse-wms.js.map +0 -1
- package/dist/esm/wms-feature-info-loader.js.map +0 -1
- package/dist/esm/wms-layer-description-loader.js +0 -14
- package/dist/esm/wms-layer-description-loader.js.map +0 -1
- package/dist/esm/wms-types.js.map +0 -1
- package/src/lib/data-sources/wms-data-source.ts +0 -99
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// loaders.gl, MIT licenses
|
|
2
|
+
|
|
3
|
+
/** All capabilities of a WFS service - response to a WFS `GetCapabilities` data structure extracted from XML */
|
|
4
|
+
export type WFSCapabilities = {
|
|
5
|
+
serviceIdentification: {
|
|
6
|
+
title: string;
|
|
7
|
+
serviceTypeVersion: string;
|
|
8
|
+
serviceType: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
serviceProvider: {
|
|
12
|
+
providerName: string;
|
|
13
|
+
providerSite: string;
|
|
14
|
+
serviceContact: {
|
|
15
|
+
individualName: string;
|
|
16
|
+
positionName: string;
|
|
17
|
+
contactInfo: {
|
|
18
|
+
address: {
|
|
19
|
+
administrativeArea: string;
|
|
20
|
+
city: string;
|
|
21
|
+
country: string;
|
|
22
|
+
deliveryPoint: string;
|
|
23
|
+
electronicMailAddress: string;
|
|
24
|
+
postalCode: string;
|
|
25
|
+
};
|
|
26
|
+
phone: {
|
|
27
|
+
voice: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
operationsMetadata: {
|
|
34
|
+
GetCapabilities: any;
|
|
35
|
+
GetFeatureInfo: any;
|
|
36
|
+
GetTile: any;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
contents: {
|
|
40
|
+
layers: {
|
|
41
|
+
abstract: string;
|
|
42
|
+
identifier: string;
|
|
43
|
+
title: string;
|
|
44
|
+
formats: string[];
|
|
45
|
+
styles: {
|
|
46
|
+
identifier: string;
|
|
47
|
+
isDefault: string;
|
|
48
|
+
title: string;
|
|
49
|
+
abstract?: string;
|
|
50
|
+
}[];
|
|
51
|
+
bounds: {
|
|
52
|
+
left: number;
|
|
53
|
+
right: number;
|
|
54
|
+
bottom: number;
|
|
55
|
+
top: number;
|
|
56
|
+
};
|
|
57
|
+
tileMatrixSetLinks: {
|
|
58
|
+
tileMatrixSet: string;
|
|
59
|
+
}[];
|
|
60
|
+
tileMatrixSets: {
|
|
61
|
+
identifier: string;
|
|
62
|
+
matrixIds: {
|
|
63
|
+
identifier: string;
|
|
64
|
+
matrixHeight: number;
|
|
65
|
+
matrixWidth: number;
|
|
66
|
+
scaleDenominator: number;
|
|
67
|
+
tileWidth: number;
|
|
68
|
+
tileHeight: number;
|
|
69
|
+
topLeftCorner: {
|
|
70
|
+
lon: number;
|
|
71
|
+
lat: number;
|
|
72
|
+
};
|
|
73
|
+
}[];
|
|
74
|
+
};
|
|
75
|
+
}[];
|
|
76
|
+
};
|
|
77
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {WFSCapabilities} from './wfs-types';
|
|
4
|
+
|
|
5
|
+
import {XMLLoader} from '@loaders.gl/xml';
|
|
6
|
+
|
|
7
|
+
// GetCapabilities
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Parses a typed data structure from raw XML for `GetCapabilities` response
|
|
11
|
+
* @note Error handlings is fairly weak
|
|
12
|
+
*/
|
|
13
|
+
export function parseWFSCapabilities(text: string, options): WFSCapabilities {
|
|
14
|
+
// Remove namespaces in XML
|
|
15
|
+
options = {...options, xml: {...options?.xml, removeNSPrefix: true}};
|
|
16
|
+
const parsedXML = XMLLoader.parseTextSync(text, options);
|
|
17
|
+
const xmlCapabilities: any = parsedXML.Capabilities || parsedXML;
|
|
18
|
+
return uncapitalizeKeys(xmlCapabilities);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function uncapitalizeKeys(object: any): any {
|
|
22
|
+
if (object && typeof object === 'object') {
|
|
23
|
+
const newObject = {};
|
|
24
|
+
for (const [key, value] of Object.entries(object)) {
|
|
25
|
+
newObject[uncapitalize(key)] = uncapitalizeKeys(value);
|
|
26
|
+
}
|
|
27
|
+
return newObject;
|
|
28
|
+
}
|
|
29
|
+
return object;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Uncapitalize first letter of a string
|
|
34
|
+
* @param {string} str
|
|
35
|
+
* @returns {string}
|
|
36
|
+
*/
|
|
37
|
+
function uncapitalize(str: string): string {
|
|
38
|
+
return typeof str === 'string' ? str.charAt(0).toLowerCase() + str.slice(1) : str;
|
|
39
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// loaders.gl, MIT licenses
|
|
2
|
+
|
|
3
|
+
/** All capabilities of a WFS service - response to a WFS `GetCapabilities` data structure extracted from XML */
|
|
4
|
+
export type WFSCapabilities = {
|
|
5
|
+
serviceIdentification: {
|
|
6
|
+
title: string;
|
|
7
|
+
serviceTypeVersion: string;
|
|
8
|
+
serviceType: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
serviceProvider: {
|
|
12
|
+
providerName: string;
|
|
13
|
+
providerSite: string;
|
|
14
|
+
serviceContact: {
|
|
15
|
+
individualName: string;
|
|
16
|
+
positionName: string;
|
|
17
|
+
contactInfo: {
|
|
18
|
+
address: {
|
|
19
|
+
administrativeArea: string;
|
|
20
|
+
city: string;
|
|
21
|
+
country: string;
|
|
22
|
+
deliveryPoint: string;
|
|
23
|
+
electronicMailAddress: string;
|
|
24
|
+
postalCode: string;
|
|
25
|
+
};
|
|
26
|
+
phone: {
|
|
27
|
+
voice: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
operationsMetadata: {
|
|
34
|
+
GetCapabilities: any;
|
|
35
|
+
GetFeatureInfo: any;
|
|
36
|
+
GetTile: any;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
contents: {
|
|
40
|
+
layers: {
|
|
41
|
+
abstract: string;
|
|
42
|
+
identifier: string;
|
|
43
|
+
title: string;
|
|
44
|
+
formats: string[];
|
|
45
|
+
styles: {
|
|
46
|
+
identifier: string;
|
|
47
|
+
isDefault: string;
|
|
48
|
+
title: string;
|
|
49
|
+
abstract?: string;
|
|
50
|
+
}[];
|
|
51
|
+
bounds: {
|
|
52
|
+
left: number;
|
|
53
|
+
right: number;
|
|
54
|
+
bottom: number;
|
|
55
|
+
top: number;
|
|
56
|
+
};
|
|
57
|
+
tileMatrixSetLinks: {
|
|
58
|
+
tileMatrixSet: string;
|
|
59
|
+
}[];
|
|
60
|
+
tileMatrixSets: {
|
|
61
|
+
identifier: string;
|
|
62
|
+
matrixIds: {
|
|
63
|
+
identifier: string;
|
|
64
|
+
matrixHeight: number;
|
|
65
|
+
matrixWidth: number;
|
|
66
|
+
scaleDenominator: number;
|
|
67
|
+
tileWidth: number;
|
|
68
|
+
tileHeight: number;
|
|
69
|
+
topLeftCorner: {
|
|
70
|
+
lon: number;
|
|
71
|
+
lat: number;
|
|
72
|
+
};
|
|
73
|
+
}[];
|
|
74
|
+
};
|
|
75
|
+
}[];
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
|
|
@@ -4,10 +4,11 @@ import type {
|
|
|
4
4
|
WMSCapabilities,
|
|
5
5
|
WMSLayer,
|
|
6
6
|
WMSRequest,
|
|
7
|
-
WMSFeatureInfo
|
|
7
|
+
WMSFeatureInfo,
|
|
8
|
+
WMSLayerDescription
|
|
8
9
|
// WMSFeature,
|
|
9
10
|
// WMSLayerDescription
|
|
10
|
-
} from '
|
|
11
|
+
} from './wms-types';
|
|
11
12
|
|
|
12
13
|
import {XMLLoader} from '@loaders.gl/xml';
|
|
13
14
|
|
|
@@ -62,13 +63,26 @@ function extractLayer(xmlLayer: any): WMSLayer {
|
|
|
62
63
|
layers: []
|
|
63
64
|
};
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
// Single layer is not represented as array in XML
|
|
67
|
+
const xmlLayers = getXMLArray(xmlLayer?.Layer);
|
|
68
|
+
|
|
69
|
+
for (const xmlSubLayer of xmlLayers) {
|
|
66
70
|
layer.layers?.push(extractLayer(xmlSubLayer));
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
return layer;
|
|
70
74
|
}
|
|
71
75
|
|
|
76
|
+
function getXMLArray(xmlValue: any) {
|
|
77
|
+
if (Array.isArray(xmlValue)) {
|
|
78
|
+
return xmlValue;
|
|
79
|
+
}
|
|
80
|
+
if (xmlValue) {
|
|
81
|
+
return [xmlValue];
|
|
82
|
+
}
|
|
83
|
+
return [];
|
|
84
|
+
}
|
|
85
|
+
|
|
72
86
|
// GetFeatureInfo
|
|
73
87
|
|
|
74
88
|
/**
|
|
@@ -88,5 +102,41 @@ export function parseWMSFeatureInfo(text: string, options): WMSFeatureInfo {
|
|
|
88
102
|
|
|
89
103
|
function extractFeature(xmlFeature: any) {
|
|
90
104
|
const xmlFields = xmlFeature || {};
|
|
91
|
-
|
|
105
|
+
// TODO - not correct
|
|
106
|
+
return {
|
|
107
|
+
attributes: xmlFields,
|
|
108
|
+
type: '',
|
|
109
|
+
bounds: {bottom: 0, top: 0, left: 0, right: 0}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// GetFeatureInfo
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Parses a typed data structure from raw XML for `GetFeatureInfo` response
|
|
117
|
+
* @note Error handlings is fairly weak
|
|
118
|
+
*/
|
|
119
|
+
export function parseWMSLayerDescription(text: string, options): WMSLayerDescription {
|
|
120
|
+
const parsedXML = XMLLoader.parseTextSync(text, options);
|
|
121
|
+
// TODO - implement parser
|
|
122
|
+
return parsedXML as unknown as WMSLayerDescription;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Extract an error message from WMS error response XML
|
|
127
|
+
* @param text
|
|
128
|
+
* @param options
|
|
129
|
+
* @returns a string with a human readable message
|
|
130
|
+
*/
|
|
131
|
+
export function parseWMSError(text: string, options): string {
|
|
132
|
+
const parsedXML = XMLLoader.parseTextSync?.(text, options);
|
|
133
|
+
const serviceExceptionXML =
|
|
134
|
+
parsedXML?.ServiceExceptionReport?.ServiceException ||
|
|
135
|
+
parsedXML?.['ogc:ServiceExceptionReport']?.['ogc:ServiceException'];
|
|
136
|
+
// Sigh, can be either a string or an object
|
|
137
|
+
const message =
|
|
138
|
+
typeof serviceExceptionXML === 'string'
|
|
139
|
+
? serviceExceptionXML
|
|
140
|
+
: serviceExceptionXML['#text'] || serviceExceptionXML.code || 'Unknown error';
|
|
141
|
+
return message;
|
|
92
142
|
}
|
|
@@ -39,13 +39,15 @@ export type WMSFeatureInfo = {
|
|
|
39
39
|
|
|
40
40
|
export type WMSFeature = {
|
|
41
41
|
attributes: Record<string, number | string>;
|
|
42
|
+
type: string;
|
|
43
|
+
bounds: {top: number; bottom: number; left: number; right: number};
|
|
42
44
|
};
|
|
43
45
|
|
|
44
46
|
// DescribeLayer
|
|
45
47
|
|
|
46
48
|
/** Layer description - response to a WMS `DescribeLayer` request */
|
|
47
49
|
export type WMSLayerDescription = {
|
|
48
|
-
|
|
50
|
+
layers: {}[];
|
|
49
51
|
};
|
|
50
52
|
|
|
51
53
|
// // WIP
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {WMTSCapabilities} from './wmts-types';
|
|
4
|
+
|
|
5
|
+
import {XMLLoader} from '@loaders.gl/xml';
|
|
6
|
+
|
|
7
|
+
// GetCapabilities
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Parses a typed data structure from raw XML for `GetCapabilities` response
|
|
11
|
+
* @note Error handlings is fairly weak
|
|
12
|
+
*/
|
|
13
|
+
export function parseWMTSCapabilities(text: string, options): WMTSCapabilities {
|
|
14
|
+
// Remove namespaces in XML
|
|
15
|
+
options = {...options, xml: {...options?.xml, removeNSPrefix: true}};
|
|
16
|
+
const parsedXML = XMLLoader.parseTextSync(text, options);
|
|
17
|
+
const xmlCapabilities: any = parsedXML.Capabilities || parsedXML;
|
|
18
|
+
return uncapitalizeKeys(xmlCapabilities);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function uncapitalizeKeys(object: any): any {
|
|
22
|
+
if (object && typeof object === 'object') {
|
|
23
|
+
const newObject = {};
|
|
24
|
+
for (const [key, value] of Object.entries(object)) {
|
|
25
|
+
newObject[uncapitalize(key)] = uncapitalizeKeys(value);
|
|
26
|
+
}
|
|
27
|
+
return newObject;
|
|
28
|
+
}
|
|
29
|
+
return object;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Uncapitalize first letter of a string
|
|
34
|
+
* @param {string} str
|
|
35
|
+
* @returns {string}
|
|
36
|
+
*/
|
|
37
|
+
function uncapitalize(str: string): string {
|
|
38
|
+
return typeof str === 'string' ? str.charAt(0).toLowerCase() + str.slice(1) : str;
|
|
39
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// loaders.gl, MIT licenses
|
|
2
|
+
|
|
3
|
+
/** All capabilities of a WMTS service - response to a WMTS `GetCapabilities` data structure extracted from XML */
|
|
4
|
+
export type WMTSCapabilities = {
|
|
5
|
+
serviceIdentification: {
|
|
6
|
+
title: string;
|
|
7
|
+
serviceTypeVersion: string;
|
|
8
|
+
serviceType: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
serviceProvider: {
|
|
12
|
+
providerName: string;
|
|
13
|
+
providerSite: string;
|
|
14
|
+
serviceContact: {
|
|
15
|
+
individualName: string;
|
|
16
|
+
positionName: string;
|
|
17
|
+
contactInfo: {
|
|
18
|
+
address: {
|
|
19
|
+
administrativeArea: string;
|
|
20
|
+
city: string;
|
|
21
|
+
country: string;
|
|
22
|
+
deliveryPoint: string;
|
|
23
|
+
electronicMailAddress: string;
|
|
24
|
+
postalCode: string;
|
|
25
|
+
};
|
|
26
|
+
phone: {
|
|
27
|
+
voice: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
operationsMetadata: {
|
|
34
|
+
GetCapabilities: any;
|
|
35
|
+
GetFeatureInfo: any;
|
|
36
|
+
GetTile: any;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
contents: {
|
|
40
|
+
layers: {
|
|
41
|
+
abstract: string;
|
|
42
|
+
identifier: string;
|
|
43
|
+
title: string;
|
|
44
|
+
formats: string[];
|
|
45
|
+
styles: {
|
|
46
|
+
identifier: string;
|
|
47
|
+
isDefault: string;
|
|
48
|
+
title: string;
|
|
49
|
+
abstract?: string;
|
|
50
|
+
}[];
|
|
51
|
+
bounds: {
|
|
52
|
+
left: number;
|
|
53
|
+
right: number;
|
|
54
|
+
bottom: number;
|
|
55
|
+
top: number;
|
|
56
|
+
};
|
|
57
|
+
tileMatrixSetLinks: {
|
|
58
|
+
tileMatrixSet: string;
|
|
59
|
+
}[];
|
|
60
|
+
tileMatrixSets: {
|
|
61
|
+
identifier: string;
|
|
62
|
+
matrixIds: {
|
|
63
|
+
identifier: string;
|
|
64
|
+
matrixHeight: number;
|
|
65
|
+
matrixWidth: number;
|
|
66
|
+
scaleDenominator: number;
|
|
67
|
+
tileWidth: number;
|
|
68
|
+
tileHeight: number;
|
|
69
|
+
topLeftCorner: {
|
|
70
|
+
lon: number;
|
|
71
|
+
lat: number;
|
|
72
|
+
};
|
|
73
|
+
}[];
|
|
74
|
+
};
|
|
75
|
+
}[];
|
|
76
|
+
};
|
|
77
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
|
|
3
|
+
import {LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
// import {GeoJSONLoader} from '@loaders.gl/geojson';
|
|
5
|
+
|
|
6
|
+
type FetchLike = (url: string, options?: RequestInit) => Promise<Response>;
|
|
7
|
+
|
|
8
|
+
export type ArcGISImageServiceQueryOptions = {
|
|
9
|
+
returnGeometry: boolean;
|
|
10
|
+
where: '1%3D1';
|
|
11
|
+
outSR: 4326;
|
|
12
|
+
outFields: string | '*';
|
|
13
|
+
inSR: 4326;
|
|
14
|
+
geometry: `${-90}%2C+${30}%2C+${-70}%2C+${50}`;
|
|
15
|
+
geometryType: 'esriGeometryEnvelope'; // TODO - look up valid values in Esri docs
|
|
16
|
+
spatialRel: 'esriSpatialRelIntersects'; // TODO - look up valid values in Esri docs
|
|
17
|
+
geometryPrecision: number; // TODO - look up valid values in Esri docs
|
|
18
|
+
resultType: 'tile'; // TODO - look up valid values in Esri docs
|
|
19
|
+
f?: 'geojson'; // TODO - look up valid values in Esri docs
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// const DEFAULT_QUERY_OPTIONS: Required<ArcGISImageServiceQueryOptions> = {
|
|
23
|
+
// returnGeometry:true,
|
|
24
|
+
// where: '1%3D1',
|
|
25
|
+
// outSR: 4326,
|
|
26
|
+
// outFields: '*',
|
|
27
|
+
// inSR: 4326,
|
|
28
|
+
// geometry: `${-90}%2C+${30}%2C+${-70}%2C+${50}`,
|
|
29
|
+
// geometryType: 'esriGeometryEnvelope',
|
|
30
|
+
// spatialRel: 'esriSpatialRelIntersects',
|
|
31
|
+
// geometryPrecision: 6,
|
|
32
|
+
// resultType: 'tile',
|
|
33
|
+
// f: 'geojson'
|
|
34
|
+
// };
|
|
35
|
+
|
|
36
|
+
export type ArcGISFeatureServiceProps = ArcGISImageServiceQueryOptions & {
|
|
37
|
+
url: string;
|
|
38
|
+
loadOptions?: LoaderOptions;
|
|
39
|
+
fetch?: typeof fetch | FetchLike;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export class ArcGISFeatureService {
|
|
43
|
+
url: string;
|
|
44
|
+
loadOptions: LoaderOptions;
|
|
45
|
+
fetch: typeof fetch | FetchLike;
|
|
46
|
+
|
|
47
|
+
constructor(props: ArcGISFeatureServiceProps) {
|
|
48
|
+
this.url = props.url;
|
|
49
|
+
this.loadOptions = props.loadOptions || {};
|
|
50
|
+
this.fetch = props.fetch || fetch;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// URL creators
|
|
54
|
+
|
|
55
|
+
metadataURL(options: {parameters?: Record<string, unknown>}): string {
|
|
56
|
+
return this.getUrl({...options});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Form a URL to an ESRI FeatureServer
|
|
61
|
+
// https://services2.arcgis.com/CcI36Pduqd0OR4W9/ArcGIS/rest/services/Bicycle_Routes_Public/FeatureServer/0/query?
|
|
62
|
+
// returnGeometry=true&where=1%3D1&outSR=4326&outFields=*&inSR=4326&geometry=${-90}%2C+${30}%2C+${-70}%2C+${50}&
|
|
63
|
+
// geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelIntersects&geometryPrecision=6&resultType=tile&f=geojson`
|
|
64
|
+
*/
|
|
65
|
+
exportImageURL(options: {
|
|
66
|
+
boundingBox: [number, number, number, number];
|
|
67
|
+
boundingBoxSR?: string;
|
|
68
|
+
width: number;
|
|
69
|
+
height: number;
|
|
70
|
+
imageSR?: string;
|
|
71
|
+
time?: never;
|
|
72
|
+
f?: 'geojson';
|
|
73
|
+
resultType?: 'tile';
|
|
74
|
+
noData?: never;
|
|
75
|
+
noDataInterpretation?: 'esriNoDataMatchAny';
|
|
76
|
+
interpolation?: '+RSP_NearestNeighbor';
|
|
77
|
+
compression?: never
|
|
78
|
+
compressionQuality?: never;
|
|
79
|
+
bandIds?: never;
|
|
80
|
+
mosaicRule?: never;
|
|
81
|
+
renderingRule?: never;
|
|
82
|
+
f?: 'image';
|
|
83
|
+
}): string {
|
|
84
|
+
const {boundingBox} = options;
|
|
85
|
+
// const bbox = `bbox=${boundingBox[0]},${boundingBox[1]},${boundingBox[2]},${boundingBox[3]}`;
|
|
86
|
+
// const size = `size=${width},${height}`
|
|
87
|
+
return this.getUrl({path: 'exportImage', });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -1,52 +1,16 @@
|
|
|
1
1
|
// loaders.gl, MIT license
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/** General data source class */
|
|
4
|
+
// export abstract class DataSource {};
|
|
5
|
+
// export type DataSourceMetadata = {};
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
// ImageSource
|
|
8
|
+
|
|
9
|
+
// Tile Source
|
|
8
10
|
|
|
9
11
|
/** Data source that serves data by tile index *
|
|
10
12
|
export abstract class TileDataSource extends DataSource {};
|
|
11
13
|
|
|
12
|
-
export type ImageFeatureInfo = {};
|
|
13
|
-
|
|
14
|
-
export type ImageLayerInfo = {};
|
|
15
|
-
|
|
16
|
-
export type ImageDataSourceCapabilities = {}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* ImageDataSource - data sources that allow data to be queried by (geospatial) extents
|
|
20
|
-
* @note
|
|
21
|
-
* - If geospatial, bounding box is expected to be in web mercator coordinates
|
|
22
|
-
*
|
|
23
|
-
export abstract class ImageDataSource extends DataSource {
|
|
24
|
-
abstract getCapabilities(): Promise<ImageDataSourceCapabilities>;
|
|
25
|
-
abstract getImage({boundingBox, width, height, layers, parameters}): Promise<ImageType>;
|
|
26
|
-
getFeatureInfo({layers, parameters}): Promise<ImageFeatureInfo> {
|
|
27
|
-
throw new Error('not implemented');
|
|
28
|
-
}
|
|
29
|
-
getLayerInfo({layers, parameters}): Promise<ImageLayerInfo> {
|
|
30
|
-
throw new Error('not implemented');
|
|
31
|
-
}
|
|
32
|
-
getLegendImage({layers, parameters}): Promise<ImageType> {
|
|
33
|
-
throw new Error('not implemented');
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Vector Tile Data Source
|
|
38
|
-
|
|
39
|
-
export type VectorTileDataSourceCapabilities = {
|
|
40
|
-
// check tile.json
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type VectorTile = Record<string, any>;
|
|
44
|
-
|
|
45
|
-
export abstract class VectorTileDataSource extends TileDataSource {
|
|
46
|
-
abstract getCapabilities(): Promise<VectorTileDataSourceCapabilities>;
|
|
47
|
-
abstract getTile({x, y, z, width, height, layers, parameters}): Promise<VectorTile>;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
14
|
// Image Tile Data Source
|
|
51
15
|
|
|
52
16
|
export type ImageTileDataSourceCapabilities = {
|
|
@@ -81,4 +45,18 @@ export abstract class ImageTileDataSource extends TileDataSource {
|
|
|
81
45
|
return [0, 0, 1, 1];
|
|
82
46
|
}
|
|
83
47
|
}
|
|
48
|
+
|
|
49
|
+
// Vector Tile Source
|
|
50
|
+
|
|
51
|
+
export type VectorTileDataSourceCapabilities = {
|
|
52
|
+
// check tile.json
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type VectorTile = Record<string, any>;
|
|
56
|
+
|
|
57
|
+
export abstract class VectorTileDataSource extends TileDataSource {
|
|
58
|
+
abstract getCapabilities(): Promise<VectorTileDataSourceCapabilities>;
|
|
59
|
+
abstract getTile({x, y, z, width, height, layers, parameters}): Promise<VectorTile>;
|
|
60
|
+
}
|
|
61
|
+
|
|
84
62
|
*/
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {parseGML} from '../lib/gml/parse-gml';
|
|
5
|
+
|
|
6
|
+
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
+
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
9
|
+
|
|
10
|
+
export type GMLLoaderOptions = LoaderOptions & {
|
|
11
|
+
gml?: {};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Loader for the response to the GML GetCapability request
|
|
16
|
+
*/
|
|
17
|
+
export const GMLLoader = {
|
|
18
|
+
name: 'GML',
|
|
19
|
+
id: 'gml',
|
|
20
|
+
|
|
21
|
+
module: 'wms',
|
|
22
|
+
version: VERSION,
|
|
23
|
+
worker: false,
|
|
24
|
+
extensions: ['xml'],
|
|
25
|
+
mimeTypes: ['application/vnd.ogc.gml_xml', 'application/xml', 'text/xml'],
|
|
26
|
+
testText: testXMLFile,
|
|
27
|
+
options: {
|
|
28
|
+
gml: {}
|
|
29
|
+
},
|
|
30
|
+
parse: async (arrayBuffer: ArrayBuffer, options?: GMLLoaderOptions) =>
|
|
31
|
+
parseGML(new TextDecoder().decode(arrayBuffer), options),
|
|
32
|
+
parseTextSync: (text: string, options?: GMLLoaderOptions) => parseGML(text, options)
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
function testXMLFile(text: string): boolean {
|
|
36
|
+
// TODO - There could be space first.
|
|
37
|
+
return text.startsWith('<?xml');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const _typecheckGMLLoader: LoaderWithParser = GMLLoader;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {parseWFSCapabilities} from '../lib/wcs/parse-wcs';
|
|
5
|
+
|
|
6
|
+
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
|
+
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
+
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
9
|
+
|
|
10
|
+
export type WCSLoaderOptions = LoaderOptions & {
|
|
11
|
+
wcs?: {};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Loader for the response to the WCS GetCapability request
|
|
16
|
+
*/
|
|
17
|
+
export const WCSCapabilitiesLoader = {
|
|
18
|
+
id: 'wcs-capabilities',
|
|
19
|
+
name: 'WFS Capabilities',
|
|
20
|
+
|
|
21
|
+
module: 'wms',
|
|
22
|
+
version: VERSION,
|
|
23
|
+
worker: false,
|
|
24
|
+
extensions: ['xml'],
|
|
25
|
+
mimeTypes: ['application/vnd.ogc.wcs_xml', 'application/xml', 'text/xml'],
|
|
26
|
+
testText: testXMLFile,
|
|
27
|
+
options: {
|
|
28
|
+
wms: {}
|
|
29
|
+
},
|
|
30
|
+
parse: async (arrayBuffer: ArrayBuffer, options?: WCSLoaderOptions) =>
|
|
31
|
+
parseWFSCapabilities(new TextDecoder().decode(arrayBuffer), options),
|
|
32
|
+
parseTextSync: (text: string, options?: WCSLoaderOptions) => parseWFSCapabilities(text, options)
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
function testXMLFile(text: string): boolean {
|
|
36
|
+
// TODO - There could be space first.
|
|
37
|
+
return text.startsWith('<?xml');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const _typecheckWFSCapabilitiesLoader: LoaderWithParser = WCSCapabilitiesLoader;
|