@loaders.gl/wms 4.2.0-alpha.4 → 4.2.0-alpha.5
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/csw-capabilities-loader.d.ts +1 -1
- package/dist/csw-capabilities-loader.d.ts.map +1 -1
- package/dist/csw-capabilities-loader.js +23 -15
- package/dist/csw-domain-loader.d.ts +1 -1
- package/dist/csw-domain-loader.d.ts.map +1 -1
- package/dist/csw-domain-loader.js +23 -15
- package/dist/csw-records-loader.d.ts +1 -1
- package/dist/csw-records-loader.d.ts.map +1 -1
- package/dist/csw-records-loader.js +23 -15
- package/dist/gml-loader.d.ts +1 -1
- package/dist/gml-loader.d.ts.map +1 -1
- package/dist/gml-loader.js +23 -15
- package/dist/index.cjs +49 -58
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +30 -30
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/lib/parsers/csw/parse-csw-capabilities.js +18 -13
- package/dist/lib/parsers/csw/parse-csw-domain.js +26 -18
- package/dist/lib/parsers/csw/parse-csw-records.js +47 -36
- package/dist/lib/parsers/csw/parse-exception-report.js +26 -8
- package/dist/lib/parsers/gml/deep-strict-equal.js +107 -39
- package/dist/lib/parsers/gml/parse-gml.js +299 -280
- package/dist/lib/parsers/wms/parse-wms-capabilities.js +207 -187
- package/dist/lib/parsers/wms/parse-wms-error.js +17 -6
- package/dist/lib/parsers/wms/parse-wms-features.js +20 -19
- package/dist/lib/parsers/wms/parse-wms-layer-description.js +10 -4
- package/dist/lib/parsers/xml/parse-xml-helpers.js +54 -45
- package/dist/lib/services/create-image-service.d.ts +1 -1
- package/dist/lib/services/create-image-service.d.ts.map +1 -1
- package/dist/lib/services/create-image-service.js +31 -19
- package/dist/lib/services/image-service.js +39 -32
- package/dist/services/arcgis/arcgis-image-service.d.ts +2 -2
- package/dist/services/arcgis/arcgis-image-service.d.ts.map +1 -1
- package/dist/services/arcgis/arcgis-image-service.js +91 -55
- package/dist/services/arcgis/arcgis-server.js +35 -28
- package/dist/services/create-image-source.d.ts +3 -3
- package/dist/services/create-image-source.d.ts.map +1 -1
- package/dist/services/create-image-source.js +11 -2
- package/dist/services/ogc/csw-service.d.ts +3 -3
- package/dist/services/ogc/csw-service.d.ts.map +1 -1
- package/dist/services/ogc/csw-service.js +156 -142
- package/dist/services/ogc/wms-service.d.ts +4 -4
- package/dist/services/ogc/wms-service.d.ts.map +1 -1
- package/dist/services/ogc/wms-service.js +295 -242
- package/dist/wip/data-source.js +58 -1
- package/dist/wip/lib/wcs/parse-wcs-capabilities.js +8 -11
- package/dist/wip/lib/wfs/parse-wfs-capabilities.js +12 -12
- package/dist/wip/lib/wfs/parse-wfs.js +20 -20
- package/dist/wip/lib/wmts/parse-wmts-capabilities.js +70 -12
- package/dist/wip/lib/wmts/parse-wmts.js +23 -20
- package/dist/wip/services/arcgis-feature-service.js +22 -22
- package/dist/wip/wcs-capabilities-loader.d.ts +1 -1
- package/dist/wip/wcs-capabilities-loader.d.ts.map +1 -1
- package/dist/wip/wcs-capabilities-loader.js +21 -15
- package/dist/wip/wfs-capabilities-loader.d.ts +1 -1
- package/dist/wip/wfs-capabilities-loader.d.ts.map +1 -1
- package/dist/wip/wfs-capabilities-loader.js +21 -15
- package/dist/wip/wms-feature-info-loader.d.ts +1 -1
- package/dist/wip/wms-feature-info-loader.d.ts.map +1 -1
- package/dist/wip/wms-feature-info-loader.js +10 -6
- package/dist/wip/wms-layer-description-loader.d.ts +1 -1
- package/dist/wip/wms-layer-description-loader.d.ts.map +1 -1
- package/dist/wip/wms-layer-description-loader.js +9 -6
- package/dist/wip/wmts-capabilities-loader.js +22 -15
- package/dist/wms-capabilities-loader.d.ts +2 -2
- package/dist/wms-capabilities-loader.d.ts.map +1 -1
- package/dist/wms-capabilities-loader.js +27 -15
- package/dist/wms-error-loader.js +33 -28
- package/package.json +10 -8
- package/dist/csw-capabilities-loader.js.map +0 -1
- package/dist/csw-domain-loader.js.map +0 -1
- package/dist/csw-records-loader.js.map +0 -1
- package/dist/gml-loader.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/parsers/csw/parse-csw-capabilities.js.map +0 -1
- package/dist/lib/parsers/csw/parse-csw-domain.js.map +0 -1
- package/dist/lib/parsers/csw/parse-csw-records.js.map +0 -1
- package/dist/lib/parsers/csw/parse-exception-report.js.map +0 -1
- package/dist/lib/parsers/gml/deep-strict-equal.js.map +0 -1
- package/dist/lib/parsers/gml/parse-gml.js.map +0 -1
- package/dist/lib/parsers/wms/parse-wms-capabilities.js.map +0 -1
- package/dist/lib/parsers/wms/parse-wms-error.js.map +0 -1
- package/dist/lib/parsers/wms/parse-wms-features.js.map +0 -1
- package/dist/lib/parsers/wms/parse-wms-layer-description.js.map +0 -1
- package/dist/lib/parsers/xml/parse-xml-helpers.js.map +0 -1
- package/dist/lib/services/create-image-service.js.map +0 -1
- package/dist/lib/services/image-service.js.map +0 -1
- package/dist/services/arcgis/arcgis-image-service.js.map +0 -1
- package/dist/services/arcgis/arcgis-server.js.map +0 -1
- package/dist/services/create-image-source.js.map +0 -1
- package/dist/services/ogc/csw-service.js.map +0 -1
- package/dist/services/ogc/wms-service.js.map +0 -1
- package/dist/wip/data-source.js.map +0 -1
- package/dist/wip/lib/wcs/parse-wcs-capabilities.js.map +0 -1
- package/dist/wip/lib/wfs/parse-wfs-capabilities.js.map +0 -1
- package/dist/wip/lib/wfs/parse-wfs.js.map +0 -1
- package/dist/wip/lib/wmts/parse-wmts-capabilities.js.map +0 -1
- package/dist/wip/lib/wmts/parse-wmts.js.map +0 -1
- package/dist/wip/services/arcgis-feature-service.js.map +0 -1
- package/dist/wip/services/wmts-service.ts.disabled +0 -348
- package/dist/wip/wcs-capabilities-loader.js.map +0 -1
- package/dist/wip/wfs-capabilities-loader.js.map +0 -1
- package/dist/wip/wms-feature-info-loader.js.map +0 -1
- package/dist/wip/wms-layer-description-loader.js.map +0 -1
- package/dist/wip/wms-layer-description-loader.md.disabled.md +0 -47
- package/dist/wip/wmts-capabilities-loader.js.map +0 -1
- package/dist/wms-capabilities-loader.js.map +0 -1
- package/dist/wms-error-loader.js.map +0 -1
|
@@ -1,27 +1,39 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
/**
|
|
5
|
+
* Creates an image source
|
|
6
|
+
* If type is not supplied, will try to automatically detect the the
|
|
7
|
+
* @param url URL to the image source
|
|
8
|
+
* @param type type of source. if not known, set to 'auto'
|
|
9
|
+
* @returns an ImageSource instance
|
|
10
|
+
*/
|
|
1
11
|
export function createImageService(props, services) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
return service.create(props);
|
|
12
|
+
const { type = 'auto' } = props;
|
|
13
|
+
const service = type === 'auto' ? guessServiceType(props.url, services) : getServiceOfType(type, services);
|
|
14
|
+
if (!service) {
|
|
15
|
+
throw new Error('Not a valid image source type');
|
|
16
|
+
}
|
|
17
|
+
return service.create(props);
|
|
10
18
|
}
|
|
19
|
+
/** Guess service type from URL */
|
|
11
20
|
function getServiceOfType(type, services) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
// if (type === 'template') {
|
|
22
|
+
// return ImageService;
|
|
23
|
+
// }
|
|
24
|
+
for (const service of services) {
|
|
25
|
+
if (service.type === type) {
|
|
26
|
+
return service;
|
|
27
|
+
}
|
|
15
28
|
}
|
|
16
|
-
|
|
17
|
-
return null;
|
|
29
|
+
return null;
|
|
18
30
|
}
|
|
31
|
+
/** Guess service type from URL */
|
|
19
32
|
function guessServiceType(url, services) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
33
|
+
for (const service of services) {
|
|
34
|
+
if (service.testURL && service.testURL(url)) {
|
|
35
|
+
return service;
|
|
36
|
+
}
|
|
23
37
|
}
|
|
24
|
-
|
|
25
|
-
return null;
|
|
38
|
+
return null;
|
|
26
39
|
}
|
|
27
|
-
//# sourceMappingURL=create-image-service.js.map
|
|
@@ -1,38 +1,45 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { ImageLoader } from '@loaders.gl/images';
|
|
2
5
|
import { ImageSource } from '@loaders.gl/loader-utils';
|
|
6
|
+
/**
|
|
7
|
+
* Quickly connect to "ad hoc" image sources without subclassing ImageSource.
|
|
8
|
+
* ImageSource allows template url strings to be used to ad hoc connect to arbitrary image data sources
|
|
9
|
+
* Accepts a template url string and builds requests URLs
|
|
10
|
+
*/
|
|
3
11
|
export class ImageService extends ImageSource {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super(props);
|
|
14
|
+
}
|
|
15
|
+
// IMAGE SOURCE API
|
|
16
|
+
async getMetadata() {
|
|
17
|
+
throw new Error('ImageSource.getMetadata not implemented');
|
|
18
|
+
}
|
|
19
|
+
async getImage(parameters) {
|
|
20
|
+
const granularParameters = this.getGranularParameters(parameters);
|
|
21
|
+
const url = this.getURLFromTemplate(granularParameters);
|
|
22
|
+
const response = await this.fetch(url);
|
|
23
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
24
|
+
return await ImageLoader.parse(arrayBuffer);
|
|
25
|
+
}
|
|
26
|
+
// HELPERS
|
|
27
|
+
/** Break up bounding box in east, north, south, west */
|
|
28
|
+
getGranularParameters(parameters) {
|
|
29
|
+
const [[east, north], [west, south]] = parameters.boundingBox;
|
|
30
|
+
return { ...parameters, east, north, south, west };
|
|
31
|
+
}
|
|
32
|
+
/** Supports both ${} and {} notations */
|
|
33
|
+
getURLFromTemplate(parameters) {
|
|
34
|
+
let url = this.props.url;
|
|
35
|
+
for (const [key, value] of Object.entries(parameters)) {
|
|
36
|
+
// TODO - parameter could be repeated
|
|
37
|
+
// const regex = new RegExp(`\${${key}}`, 'g');
|
|
38
|
+
url = url.replace(`\${${key}}`, String(value));
|
|
39
|
+
url = url.replace(`{${key}}`, String(value));
|
|
40
|
+
}
|
|
41
|
+
return url;
|
|
32
42
|
}
|
|
33
|
-
return url;
|
|
34
|
-
}
|
|
35
43
|
}
|
|
36
44
|
ImageService.type = 'template';
|
|
37
|
-
ImageService.testURL = url => url.toLowerCase().includes('{');
|
|
38
|
-
//# sourceMappingURL=image-service.js.map
|
|
45
|
+
ImageService.testURL = (url) => url.toLowerCase().includes('{');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ImageType } from '@loaders.gl/images';
|
|
2
2
|
import type { Service, ImageSourceMetadata, GetImageParameters } from '@loaders.gl/loader-utils';
|
|
3
|
-
import type { ImageServiceProps } from
|
|
4
|
-
import { ImageService } from
|
|
3
|
+
import type { ImageServiceProps } from "../../lib/services/image-service.js";
|
|
4
|
+
import { ImageService } from "../../lib/services/image-service.js";
|
|
5
5
|
export type ArcGISImageServerProps = ImageServiceProps & {
|
|
6
6
|
url: string;
|
|
7
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arcgis-image-service.d.ts","sourceRoot":"","sources":["../../../src/services/arcgis/arcgis-image-service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAE/F,OAAO,KAAK,EAAC,iBAAiB,EAAC,
|
|
1
|
+
{"version":3,"file":"arcgis-image-service.d.ts","sourceRoot":"","sources":["../../../src/services/arcgis/arcgis-image-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +1,96 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { ImageService } from "../../lib/services/image-service.js";
|
|
5
|
+
/**
|
|
6
|
+
* ArcGIS ImageServer
|
|
7
|
+
* Note - exports a big API, that could be exposed here if there is a use case
|
|
8
|
+
* @see https://developers.arcgis.com/rest/services-reference/enterprise/image-service.htm
|
|
9
|
+
*/
|
|
2
10
|
export class ArcGISImageSource extends ImageService {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
11
|
+
constructor(props) {
|
|
12
|
+
super(props);
|
|
13
|
+
this.data = props.url;
|
|
14
|
+
}
|
|
15
|
+
// ImageSource (normalized endpoints)
|
|
16
|
+
async getMetadata() {
|
|
17
|
+
return (await this.metadata());
|
|
18
|
+
// TODO - normalize metadata
|
|
19
|
+
}
|
|
20
|
+
async getImage(parameters) {
|
|
21
|
+
throw new Error('not implemented');
|
|
22
|
+
// TODO - Map generic parameters to ArcGIS specific parameters
|
|
23
|
+
// return await this.exportImage(parameters);
|
|
24
|
+
}
|
|
25
|
+
// ImageServer endpoints
|
|
26
|
+
async metadata() {
|
|
27
|
+
// We just need a JSON parsing...
|
|
28
|
+
// return this.getUrl({path: '', ...options});
|
|
29
|
+
throw new Error('not implemented');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Form a URL to an ESRI ImageServer
|
|
33
|
+
// https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&compressionQuality=&bandIds=&mosaicRule=&renderingRule=&f=image`,
|
|
34
|
+
*/
|
|
35
|
+
exportImage(options) {
|
|
36
|
+
// See WMSService.getMap()
|
|
37
|
+
throw new Error('not implemented');
|
|
38
|
+
}
|
|
39
|
+
// URL creators
|
|
40
|
+
metadataURL(options) {
|
|
41
|
+
return `${this.props.url}?f=pjson`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Form a URL to an ESRI ImageServer
|
|
45
|
+
// https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer/exportImage?
|
|
46
|
+
// bbox=${bounds[0]},${bounds[1]},${bounds[2]},${bounds[3]}&bboxSR=4326&
|
|
47
|
+
// size=${width},${height}&imageSR=102100&time=&format=jpgpng&pixelType=U8&
|
|
48
|
+
// noData=&noDataInterpretation=esriNoDataMatchAny&interpolation=+RSP_NearestNeighbor&compression=&
|
|
49
|
+
// compressionQuality=&bandIds=&mosaicRule=&renderingRule=&
|
|
50
|
+
// f=image
|
|
51
|
+
*/
|
|
52
|
+
exportImageURL(options) {
|
|
53
|
+
const bbox = `bbox=${options.bbox[0]},${options.bbox[1]},${options.bbox[2]},${options.bbox[3]}`;
|
|
54
|
+
const size = `size=${options.width},${options.height}`;
|
|
55
|
+
const arcgisOptions = { ...options, bbox, size };
|
|
56
|
+
// @ts-expect-error
|
|
57
|
+
delete arcgisOptions.width;
|
|
58
|
+
// @ts-expect-error
|
|
59
|
+
delete arcgisOptions.height;
|
|
60
|
+
return this.getUrl('exportImage', arcgisOptions);
|
|
61
|
+
}
|
|
62
|
+
// INTERNAL METHODS
|
|
63
|
+
/**
|
|
64
|
+
* @note protected, since perhaps getWMSUrl may need to be overridden to handle certain backends?
|
|
65
|
+
* @note if override is common, maybe add a callback prop?
|
|
66
|
+
* */
|
|
67
|
+
getUrl(path, options, extra) {
|
|
68
|
+
let url = `${this.props.url}/${path}`;
|
|
69
|
+
let first = true;
|
|
70
|
+
for (const [key, value] of Object.entries(options)) {
|
|
71
|
+
url += first ? '?' : '&';
|
|
72
|
+
first = false;
|
|
73
|
+
if (Array.isArray(value)) {
|
|
74
|
+
url += `${key.toUpperCase()}=${value.join(',')}`;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
url += `${key.toUpperCase()}=${value ? String(value) : ''}`;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return url;
|
|
81
|
+
}
|
|
82
|
+
/** Checks for and parses a WMS XML formatted ServiceError and throws an exception */
|
|
83
|
+
async checkResponse(response) {
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
// } || response.headers['content-type'] === WMSErrorLoader.mimeTypes[0]) {
|
|
86
|
+
// const arrayBuffer = await response.arrayBuffer();
|
|
87
|
+
// const error = await WMSErrorLoader.parse(arrayBuffer, this.loadOptions);
|
|
88
|
+
throw new Error('error');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
54
91
|
}
|
|
55
92
|
export const ArcGISImageService = {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
93
|
+
type: 'arcgis-image-server',
|
|
94
|
+
testURL: (url) => url.toLowerCase().includes('ImageServer'),
|
|
95
|
+
create: (props) => new ArcGISImageSource(props)
|
|
59
96
|
};
|
|
60
|
-
//# sourceMappingURL=arcgis-image-service.js.map
|
|
@@ -1,33 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
/**
|
|
5
|
+
* (Recursively) load the service directory from an ArcGIS Server URL
|
|
6
|
+
* @param url
|
|
7
|
+
* @param fetchFile= Optional fetch function override
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export async function getArcGISServices(url, fetchFile = fetch) {
|
|
11
|
+
if (url.includes('rest/services')) {
|
|
12
|
+
const serverUrl = url.replace(/rest\/services.*$/i, 'rest/services');
|
|
13
|
+
return loadServiceDirectory(serverUrl, fetchFile, []);
|
|
14
|
+
}
|
|
15
|
+
return null;
|
|
8
16
|
}
|
|
9
17
|
async function loadServiceDirectory(serverUrl, fetch, path) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const serviceUrl = `${serverUrl}/${path.join('/')}`;
|
|
19
|
+
const response = await fetch(`${serviceUrl}?f=pjson`);
|
|
20
|
+
const directory = await response.json();
|
|
21
|
+
const services = extractServices(directory, serviceUrl);
|
|
22
|
+
const folders = (directory.folders || []);
|
|
23
|
+
const promises = folders.map((folder) => loadServiceDirectory(`${serverUrl}`, fetch, [...path, folder]));
|
|
24
|
+
for (const folderServices of await Promise.all(promises)) {
|
|
25
|
+
services.push(...folderServices);
|
|
26
|
+
}
|
|
27
|
+
return services;
|
|
20
28
|
}
|
|
21
29
|
function extractServices(directory, url) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
const arcgisServices = (directory.services || []);
|
|
31
|
+
const services = [];
|
|
32
|
+
for (const service of arcgisServices) {
|
|
33
|
+
services.push({
|
|
34
|
+
name: service.name,
|
|
35
|
+
type: `arcgis-${service.type.toLocaleLowerCase().replace('server', '-server')}`,
|
|
36
|
+
url: `${url}${service.name}/${service.type}`
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return services;
|
|
32
40
|
}
|
|
33
|
-
//# sourceMappingURL=arcgis-server.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ImageSource } from '@loaders.gl/loader-utils';
|
|
2
|
-
import { ImageServiceProps } from
|
|
3
|
-
import { CreateImageServiceProps } from
|
|
4
|
-
import type { WMSSourceProps } from
|
|
2
|
+
import { ImageServiceProps } from "../lib/services/image-service.js";
|
|
3
|
+
import { CreateImageServiceProps } from "../lib/services/create-image-service.js";
|
|
4
|
+
import type { WMSSourceProps } from "./ogc/wms-service.js";
|
|
5
5
|
export type ImageServiceType = 'wms' | 'arcgis-image-server' | 'template';
|
|
6
6
|
type CreateImageSourceProps = CreateImageServiceProps & ImageServiceProps & WMSSourceProps & {
|
|
7
7
|
type?: ImageServiceType | 'auto';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-image-source.d.ts","sourceRoot":"","sources":["../../src/services/create-image-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAC,iBAAiB,EAAC,
|
|
1
|
+
{"version":3,"file":"create-image-source.d.ts","sourceRoot":"","sources":["../../src/services/create-image-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAU,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAC,iBAAiB,EAAC,yCAAsC;AAChE,OAAO,EAAqB,uBAAuB,EAAC,gDAA6C;AAEjG,OAAO,KAAK,EAAC,cAAc,EAAC,6BAA0B;AAItD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,qBAAqB,GAAG,UAAU,CAAC;AAI1E,KAAK,sBAAsB,GAAG,uBAAuB,GACnD,iBAAiB,GACjB,cAAc,GAAG;IACf,IAAI,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;CAClC,CAAC;AAEJ;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,WAAW,CAE5E"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { createImageService } from "../lib/services/create-image-service.js";
|
|
2
5
|
import { WMSService } from "./ogc/wms-service.js";
|
|
3
6
|
import { ArcGISImageService } from "./arcgis/arcgis-image-service.js";
|
|
4
7
|
const SERVICES = [WMSService, ArcGISImageService];
|
|
8
|
+
/**
|
|
9
|
+
* Creates an image source
|
|
10
|
+
* If type is not supplied, will try to automatically detect the the
|
|
11
|
+
* @param url URL to the image source
|
|
12
|
+
* @param type type of source. if not known, set to 'auto'
|
|
13
|
+
* @returns an ImageSource instance
|
|
14
|
+
*/
|
|
5
15
|
export function createImageSource(props) {
|
|
6
|
-
|
|
16
|
+
return createImageService(props, SERVICES);
|
|
7
17
|
}
|
|
8
|
-
//# sourceMappingURL=create-image-source.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { DataSourceProps } from '@loaders.gl/loader-utils';
|
|
2
2
|
import { DataSource } from '@loaders.gl/loader-utils';
|
|
3
|
-
import type { CSWCapabilities } from
|
|
4
|
-
import type { CSWRecords } from
|
|
5
|
-
import type { CSWDomain } from
|
|
3
|
+
import type { CSWCapabilities } from "../../csw-capabilities-loader.js";
|
|
4
|
+
import type { CSWRecords } from "../../csw-records-loader.js";
|
|
5
|
+
import type { CSWDomain } from "../../csw-domain-loader.js";
|
|
6
6
|
type CSWCommonParameters = {
|
|
7
7
|
/** In case the endpoint supports multiple services */
|
|
8
8
|
service?: 'CSW';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csw-service.d.ts","sourceRoot":"","sources":["../../../src/services/ogc/csw-service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,UAAU,EAAC,MAAM,0BAA0B,CAAC;AAEpD,OAAO,KAAK,EAAC,eAAe,EAAC,
|
|
1
|
+
{"version":3,"file":"csw-service.d.ts","sourceRoot":"","sources":["../../../src/services/ogc/csw-service.ts"],"names":[],"mappings":"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"}
|