@loaders.gl/wms 3.3.0-alpha.10 → 3.3.0-alpha.11
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/dist.min.js +3487 -33
- package/dist/es5/gml-loader.js +54 -0
- package/dist/es5/gml-loader.js.map +1 -0
- package/dist/es5/index.js +31 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/data-sources/image-data-source.js.map +1 -1
- package/dist/es5/lib/data-sources/{wms-data-source.js → wms-service.js} +182 -65
- package/dist/es5/lib/data-sources/wms-service.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/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} +33 -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/wcs-capabilities-loader.js +54 -0
- package/dist/es5/wcs-capabilities-loader.js.map +1 -0
- package/dist/es5/wfs-capabilities-loader.js +54 -0
- package/dist/es5/wfs-capabilities-loader.js.map +1 -0
- package/dist/es5/wms-capabilities-loader.js +2 -2
- package/dist/es5/wms-capabilities-loader.js.map +1 -1
- package/dist/es5/wms-error-loader.js +54 -0
- package/dist/es5/wms-error-loader.js.map +1 -0
- package/dist/es5/wms-feature-info-loader.js +1 -1
- package/dist/es5/wms-feature-info-loader.js.map +1 -1
- package/dist/es5/wms-layer-description-loader.js +3 -3
- package/dist/es5/wms-layer-description-loader.js.map +1 -1
- package/dist/es5/wmts-capabilities-loader.js +54 -0
- package/dist/es5/wmts-capabilities-loader.js.map +1 -0
- package/dist/esm/gml-loader.js +25 -0
- package/dist/esm/gml-loader.js.map +1 -0
- package/dist/esm/index.js +8 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/data-sources/image-data-source.js.map +1 -1
- package/dist/esm/lib/data-sources/wms-service.js +156 -0
- package/dist/esm/lib/data-sources/wms-service.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/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} +31 -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/wcs-capabilities-loader.js +25 -0
- package/dist/esm/wcs-capabilities-loader.js.map +1 -0
- package/dist/esm/wfs-capabilities-loader.js +25 -0
- package/dist/esm/wfs-capabilities-loader.js.map +1 -0
- package/dist/esm/wms-capabilities-loader.js +2 -2
- package/dist/esm/wms-capabilities-loader.js.map +1 -1
- package/dist/esm/wms-error-loader.js +25 -0
- package/dist/esm/wms-error-loader.js.map +1 -0
- package/dist/esm/wms-feature-info-loader.js +1 -1
- package/dist/esm/wms-feature-info-loader.js.map +1 -1
- package/dist/esm/wms-layer-description-loader.js +3 -3
- package/dist/esm/wms-layer-description-loader.js.map +1 -1
- package/dist/esm/wmts-capabilities-loader.js +25 -0
- package/dist/esm/wmts-capabilities-loader.js.map +1 -0
- package/package.json +15 -5
- package/src/gml-loader.ts +40 -0
- package/src/index.ts +23 -4
- package/src/lib/data-sources/image-data-source.ts +1 -2
- package/src/lib/data-sources/wms-service.ts +313 -0
- package/src/lib/gml/parse-gml.ts +500 -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} +41 -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/wcs-capabilities-loader.ts +40 -0
- package/src/wfs-capabilities-loader.ts +40 -0
- package/src/wms-capabilities-loader.ts +1 -1
- package/src/wms-error-loader.ts +40 -0
- package/src/wms-feature-info-loader.ts +1 -1
- package/src/wms-layer-description-loader.ts +4 -4
- package/src/wmts-capabilities-loader.ts +40 -0
- 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-types.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-types.js.map +0 -1
- package/src/lib/data-sources/wms-data-source.ts +0 -99
|
@@ -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,40 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {parseWFSCapabilities} from './lib/wfs/parse-wfs';
|
|
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
|
+
name: 'WFS Capabilities',
|
|
19
|
+
id: 'wcs-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;
|
|
@@ -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/wfs/parse-wfs';
|
|
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 WFSLoaderOptions = LoaderOptions & {
|
|
11
|
+
wfs?: {};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Loader for the response to the WFS GetCapability request
|
|
16
|
+
*/
|
|
17
|
+
export const WFSCapabilitiesLoader = {
|
|
18
|
+
name: 'WFS Capabilities',
|
|
19
|
+
id: 'wfs-capabilities',
|
|
20
|
+
|
|
21
|
+
module: 'wms',
|
|
22
|
+
version: VERSION,
|
|
23
|
+
worker: false,
|
|
24
|
+
extensions: ['xml'],
|
|
25
|
+
mimeTypes: ['application/vnd.ogc.wfs_xml', 'application/xml', 'text/xml'],
|
|
26
|
+
testText: testXMLFile,
|
|
27
|
+
options: {
|
|
28
|
+
wms: {}
|
|
29
|
+
},
|
|
30
|
+
parse: async (arrayBuffer: ArrayBuffer, options?: WFSLoaderOptions) =>
|
|
31
|
+
parseWFSCapabilities(new TextDecoder().decode(arrayBuffer), options),
|
|
32
|
+
parseTextSync: (text: string, options?: WFSLoaderOptions) => 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 = WFSCapabilitiesLoader;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// loaders.gl, MIT license
|
|
2
2
|
|
|
3
3
|
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
-
import {parseWMSCapabilities} from './lib/parse-wms';
|
|
4
|
+
import {parseWMSCapabilities} from './lib/wms/parse-wms';
|
|
5
5
|
|
|
6
6
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
7
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {parseWMSError} from './lib/wms/parse-wms';
|
|
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 WMSLoaderOptions = LoaderOptions & {
|
|
11
|
+
wms?: {};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Loader for the response to the WMS GetCapability request
|
|
16
|
+
*/
|
|
17
|
+
export const WMSErrorLoader = {
|
|
18
|
+
name: 'WMS Error',
|
|
19
|
+
id: 'wms-capabilities',
|
|
20
|
+
|
|
21
|
+
module: 'wms',
|
|
22
|
+
version: VERSION,
|
|
23
|
+
worker: false,
|
|
24
|
+
extensions: ['xml'],
|
|
25
|
+
mimeTypes: ['application/vnd.ogc.se_xml', 'application/xml', 'text/xml'],
|
|
26
|
+
testText: testXMLFile,
|
|
27
|
+
options: {
|
|
28
|
+
wms: {}
|
|
29
|
+
},
|
|
30
|
+
parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>
|
|
31
|
+
parseWMSError(new TextDecoder().decode(arrayBuffer), options),
|
|
32
|
+
parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSError(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 _typecheckWMSErrorLoader: LoaderWithParser = WMSErrorLoader;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type {LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
4
4
|
import {WMSCapabilitiesLoader, WMSLoaderOptions} from './wms-capabilities-loader';
|
|
5
|
-
import {parseWMSFeatureInfo} from './lib/parse-wms';
|
|
5
|
+
import {parseWMSFeatureInfo} from './lib/wms/parse-wms';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Loader for the response to the WMS GetFeatureInfo request
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import type {LoaderWithParser} from '@loaders.gl/loader-utils';
|
|
4
4
|
import {WMSCapabilitiesLoader, WMSLoaderOptions} from './wms-capabilities-loader';
|
|
5
|
-
import {
|
|
5
|
+
import {parseWMSLayerDescription} from './lib/wms/parse-wms';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Loader for the response to the WMS
|
|
8
|
+
* Loader for the response to the WMS DescribeLayer request
|
|
9
9
|
*/
|
|
10
10
|
export const WMSLayerDescriptionLoader = {
|
|
11
11
|
...WMSCapabilitiesLoader,
|
|
@@ -14,8 +14,8 @@ export const WMSLayerDescriptionLoader = {
|
|
|
14
14
|
id: 'wms-layer-description',
|
|
15
15
|
|
|
16
16
|
parse: async (arrayBuffer: ArrayBuffer, options?: WMSLoaderOptions) =>
|
|
17
|
-
|
|
18
|
-
parseTextSync: (text: string, options?: WMSLoaderOptions) =>
|
|
17
|
+
parseWMSLayerDescription(new TextDecoder().decode(arrayBuffer), options),
|
|
18
|
+
parseTextSync: (text: string, options?: WMSLoaderOptions) => parseWMSLayerDescription(text, options)
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
export const _typecheckWMSFeatureInfoLoader: LoaderWithParser = WMSLayerDescriptionLoader;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// loaders.gl, MIT license
|
|
2
|
+
|
|
3
|
+
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
4
|
+
import {parseWMTSCapabilities} from './lib/wmts/parse-wmts';
|
|
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 WMTSLoaderOptions = LoaderOptions & {
|
|
11
|
+
wmts?: {};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Loader for the response to the WMTS GetCapability request
|
|
16
|
+
*/
|
|
17
|
+
export const WMTSCapabilitiesLoader = {
|
|
18
|
+
name: 'WMTS Capabilities',
|
|
19
|
+
id: 'wmts-capabilities',
|
|
20
|
+
|
|
21
|
+
module: 'wms',
|
|
22
|
+
version: VERSION,
|
|
23
|
+
worker: false,
|
|
24
|
+
extensions: ['xml'],
|
|
25
|
+
mimeTypes: ['application/vnd.ogc.wmts_xml', 'application/xml', 'text/xml'],
|
|
26
|
+
testText: testXMLFile,
|
|
27
|
+
options: {
|
|
28
|
+
wms: {}
|
|
29
|
+
},
|
|
30
|
+
parse: async (arrayBuffer: ArrayBuffer, options?: WMTSLoaderOptions) =>
|
|
31
|
+
parseWMTSCapabilities(new TextDecoder().decode(arrayBuffer), options),
|
|
32
|
+
parseTextSync: (text: string, options?: WMTSLoaderOptions) => parseWMTSCapabilities(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 _typecheckWMTSCapabilitiesLoader: LoaderWithParser = WMTSCapabilitiesLoader;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wms-data-source.js","names":["WMSDataSource","props","url","loadOptions","fetch","options","getUrl","request","response","arrayBuffer","WMSCapabilitiesLoader","parse","ImageLoader","WMSFeatureInfoLoader","WMSLayerDescriptionLoader","layers","length","join"],"sources":["../../../../src/lib/data-sources/wms-data-source.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {WMSCapabilities, WMSFeatureInfo, WMSLayerDescription} from '@loaders.gl/wms';\nimport {\n WMSCapabilitiesLoader,\n WMSFeatureInfoLoader,\n WMSLayerDescriptionLoader\n} from '@loaders.gl/wms';\nimport {ImageLoader, ImageType} from '@loaders.gl/images';\nimport {LoaderOptions} from '@loaders.gl/loader-utils';\n\n// import {ImageDataSource} from './image-data-sources';\n\ntype FetchLike = (url: string, options?: RequestInit) => Promise<Response>;\n\nexport type WMSDataSourceProps = {\n url: string;\n loadOptions?: LoaderOptions;\n fetch?: typeof fetch | FetchLike;\n};\n\nexport class WMSDataSource {\n // implements ImageDataSource {\n url: string;\n loadOptions: LoaderOptions;\n fetch: typeof fetch | FetchLike;\n\n constructor(props: WMSDataSourceProps) {\n this.url = props.url;\n this.loadOptions = props.loadOptions || {};\n this.fetch = props.fetch || fetch;\n }\n\n async getCapabilities(options: {parameters?: Record<string, unknown>}): Promise<WMSCapabilities> {\n const url = this.getUrl({request: 'GetCapabilities', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await WMSCapabilitiesLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getImage(options: {\n boundingBox;\n width;\n height;\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<ImageType> {\n const url = this.getUrl({request: 'GetMap', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getFeatureInfo(options: {\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<WMSFeatureInfo> {\n const url = this.getUrl({request: 'GetFeatureInfo', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await WMSFeatureInfoLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getLayerInfo(options: {\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<WMSLayerDescription> {\n const url = this.getUrl({request: 'GetLayerInfo', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await WMSLayerDescriptionLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n async getLegendImage(options: {\n layers: string[];\n parameters?: Record<string, unknown>;\n }): Promise<ImageType> {\n const url = this.getUrl({request: 'GetLegendImage', ...options});\n const response = await this.fetch(url, this.loadOptions);\n const arrayBuffer = await response.arrayBuffer();\n return await ImageLoader.parse(arrayBuffer, this.loadOptions);\n }\n\n /**\n * @note protected, since perhaps getUrl may need to be overridden to handle certain backends?\n * @note if override is common, maybe add a callback prop?\n * */\n protected getUrl(options: {\n request: string;\n layers?: string[];\n parameters?: Record<string, unknown>;\n }): string {\n let url = `${this.url}?REQUEST=${options.request}`;\n if (options.layers?.length) {\n url += `&LAYERS=[${options.layers.join(',')}]`;\n }\n return url;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-wms.js","names":["parseWMSCapabilities","text","options","parsedXML","XMLLoader","parseTextSync","xmlCapabilities","WMT_MS_Capabilities","WMS_Capabilities","extractCapabilities","xml","capabilities","name","Service","Name","title","Title","keywords","requests","layer","extractLayer","Capability","Layer","raw","KeywordList","Keyword","keyword","push","Object","entries","Request","xmlRequest","extractRequest","format","Format","mimeTypes","Array","isArray","xmlLayer","srs","SRS","layers","xmlSubLayer","parseWMSFeatureInfo","xmlFeatureInfo","FeatureInfoResponse","FIELDS","xmlFeatures","features","map","xmlFeature","extractFeature","xmlFields","attributes"],"sources":["../../../src/lib/parse-wms.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {\n WMSCapabilities,\n WMSLayer,\n WMSRequest,\n WMSFeatureInfo\n // WMSFeature,\n // WMSLayerDescription\n} from '../wms-types';\n\nimport {XMLLoader} from '@loaders.gl/xml';\n\n// GetCapabilities\n\n/**\n * Parses a typed data structure from raw XML for `GetCapabilities` response\n * @note Error handlings is fairly weak\n */\nexport function parseWMSCapabilities(text: string, options): WMSCapabilities {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n const xmlCapabilities: any =\n parsedXML.WMT_MS_Capabilities || parsedXML.WMS_Capabilities || parsedXML;\n return extractCapabilities(xmlCapabilities);\n}\n\n/** Extract typed capability data from XML */\nfunction extractCapabilities(xml: any): WMSCapabilities {\n const capabilities: WMSCapabilities = {\n name: xml.Service?.Name || 'unnamed',\n title: xml.Service?.Title,\n keywords: [],\n requests: {},\n layer: extractLayer(xml.Capability?.Layer),\n raw: xml\n };\n\n for (const keyword of xml.Service?.KeywordList?.Keyword || []) {\n capabilities.keywords.push(keyword);\n }\n\n for (const [name, xmlRequest] of Object.entries(xml.Capability?.Request || {})) {\n capabilities.requests[name] = extractRequest(name, xmlRequest);\n }\n\n return capabilities;\n}\n\n/** Extract typed request data from XML */\nfunction extractRequest(name: string, xmlRequest: any): WMSRequest {\n const format: string | string[] = xmlRequest?.Format;\n const mimeTypes: string[] = Array.isArray(format) ? format : [format];\n return {name, mimeTypes};\n}\n\n/** Extract request data */\nfunction extractLayer(xmlLayer: any): WMSLayer {\n const layer: WMSLayer = {\n name: xmlLayer?.Name,\n title: xmlLayer?.Title,\n srs: xmlLayer?.SRS || [],\n layers: []\n };\n\n for (const xmlSubLayer of xmlLayer?.Layer || []) {\n layer.layers?.push(extractLayer(xmlSubLayer));\n }\n\n return layer;\n}\n\n// GetFeatureInfo\n\n/**\n * Parses a typed data structure from raw XML for `GetFeatureInfo` response\n * @note Error handlings is fairly weak\n */\nexport function parseWMSFeatureInfo(text: string, options): WMSFeatureInfo {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n const xmlFeatureInfo: any = parsedXML.FeatureInfoResponse?.FIELDS || [];\n\n const xmlFeatures = Array.isArray(xmlFeatureInfo) ? xmlFeatureInfo : [xmlFeatureInfo];\n\n return {\n features: xmlFeatures.map((xmlFeature) => extractFeature(xmlFeature))\n };\n}\n\nfunction extractFeature(xmlFeature: any) {\n const xmlFields = xmlFeature || {};\n return {attributes: xmlFields};\n}\n"],"mappings":"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"}
|