@loaders.gl/wms 3.3.2 → 3.4.0-alpha.2
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 +29 -0
- package/dist/csw-capabilities-loader.d.ts.map +1 -0
- package/dist/csw-capabilities-loader.js +31 -0
- package/dist/csw-domain-loader.d.ts +28 -0
- package/dist/csw-domain-loader.d.ts.map +1 -0
- package/dist/csw-domain-loader.js +31 -0
- package/dist/csw-records-loader.d.ts +12 -0
- package/dist/csw-records-loader.d.ts.map +1 -0
- package/dist/csw-records-loader.js +30 -0
- package/dist/dist.min.js +3781 -4001
- package/dist/es5/csw-capabilities-loader.js +55 -0
- package/dist/es5/csw-capabilities-loader.js.map +1 -0
- package/dist/es5/csw-domain-loader.js +54 -0
- package/dist/es5/csw-domain-loader.js.map +1 -0
- package/dist/es5/csw-records-loader.js +52 -0
- package/dist/es5/csw-records-loader.js.map +1 -0
- package/dist/es5/{wip/gml-loader.js → gml-loader.js} +3 -3
- package/dist/es5/gml-loader.js.map +1 -0
- package/dist/es5/index.js +43 -8
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lerc-loader.js +1 -1
- package/dist/es5/lerc-loader.js.map +1 -1
- package/dist/es5/lib/{data-sources/create-image-source.js → create-image-source.js} +4 -4
- package/dist/es5/lib/create-image-source.js.map +1 -0
- package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js +24 -0
- package/dist/es5/lib/parsers/csw/parse-csw-capabilities.js.map +1 -0
- package/dist/es5/lib/parsers/csw/parse-csw-domain.js +42 -0
- package/dist/es5/lib/parsers/csw/parse-csw-domain.js.map +1 -0
- package/dist/es5/lib/parsers/csw/parse-csw-records.js +76 -0
- package/dist/es5/lib/parsers/csw/parse-csw-records.js.map +1 -0
- package/dist/es5/lib/parsers/csw/parse-exception-report.js +18 -0
- package/dist/es5/lib/parsers/csw/parse-exception-report.js.map +1 -0
- package/dist/es5/lib/parsers/gml/deep-strict-equal.js.map +1 -0
- package/dist/es5/lib/parsers/gml/parse-gml.js.map +1 -0
- package/dist/es5/lib/parsers/lerc/lerc-types.js.map +1 -0
- package/dist/es5/lib/{wms/parse-wms.js → parsers/wms/parse-wms-capabilities.js} +1 -42
- package/dist/es5/lib/parsers/wms/parse-wms-capabilities.js.map +1 -0
- package/dist/es5/lib/parsers/wms/parse-wms-error.js +16 -0
- package/dist/es5/lib/parsers/wms/parse-wms-error.js.map +1 -0
- package/dist/es5/lib/parsers/wms/parse-wms-features.js +33 -0
- package/dist/es5/lib/parsers/wms/parse-wms-features.js.map +1 -0
- package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js +13 -0
- package/dist/es5/lib/parsers/wms/parse-wms-layer-description.js.map +1 -0
- package/dist/es5/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.js +36 -29
- package/dist/es5/lib/services/arcgis/arcgis-image-service.js.map +1 -0
- package/dist/es5/lib/services/arcgis/arcgis-server.js +115 -0
- package/dist/es5/lib/services/arcgis/arcgis-server.js.map +1 -0
- package/dist/es5/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +22 -19
- package/dist/es5/lib/services/generic/image-service.js.map +1 -0
- package/dist/es5/lib/services/generic/tile-service.js +2 -0
- package/dist/es5/lib/services/generic/tile-service.js.map +1 -0
- package/dist/es5/lib/services/ogc/csw-service.js +384 -0
- package/dist/es5/lib/services/ogc/csw-service.js.map +1 -0
- package/dist/es5/lib/{data-sources/image-services → services/ogc}/wms-service.js +163 -115
- package/dist/es5/lib/services/ogc/wms-service.js.map +1 -0
- package/dist/es5/lib/services/ogc/wmts-service.ts.disabled +348 -0
- package/dist/es5/lib/sources/data-source.js +44 -0
- package/dist/es5/lib/sources/data-source.js.map +1 -0
- package/dist/es5/lib/sources/image-source.js +26 -0
- package/dist/es5/lib/sources/image-source.js.map +1 -0
- package/dist/es5/lib/sources/tile-source.js +26 -0
- package/dist/es5/lib/sources/tile-source.js.map +1 -0
- package/dist/es5/lib/sources/utils/utils.js +40 -0
- package/dist/es5/lib/sources/utils/utils.js.map +1 -0
- package/dist/es5/{lib/wfs/parse-wfs.js → wip/lib/wcs/parse-wcs-capabilities.js} +7 -29
- package/dist/es5/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -0
- package/dist/es5/{lib/wcs/parse-wcs.js → wip/lib/wfs/parse-wfs-capabilities.js} +7 -28
- package/dist/es5/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -0
- package/dist/es5/{lib/wmts/parse-wmts.js → wip/lib/wmts/parse-wmts-capabilities.js} +7 -28
- package/dist/es5/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -0
- package/dist/es5/wip/wcs-capabilities-loader.js +4 -4
- package/dist/es5/wip/wcs-capabilities-loader.js.map +1 -1
- package/dist/es5/wip/wfs-capabilities-loader.js +4 -4
- package/dist/es5/wip/wfs-capabilities-loader.js.map +1 -1
- package/dist/es5/wip/wms-feature-info-loader.js +3 -3
- package/dist/es5/wip/wms-feature-info-loader.js.map +1 -1
- package/dist/es5/wip/wms-layer-description-loader.js +3 -3
- package/dist/es5/wip/wms-layer-description-loader.js.map +1 -1
- package/dist/es5/wip/wmts-capabilities-loader.js +10 -4
- package/dist/es5/wip/wmts-capabilities-loader.js.map +1 -1
- package/dist/es5/wms-capabilities-loader.js +5 -4
- package/dist/es5/wms-capabilities-loader.js.map +1 -1
- package/dist/es5/wms-error-loader.js +3 -3
- package/dist/es5/wms-error-loader.js.map +1 -1
- package/dist/esm/csw-capabilities-loader.js +26 -0
- package/dist/esm/csw-capabilities-loader.js.map +1 -0
- package/dist/esm/csw-domain-loader.js +25 -0
- package/dist/esm/csw-domain-loader.js.map +1 -0
- package/dist/esm/csw-records-loader.js +24 -0
- package/dist/esm/csw-records-loader.js.map +1 -0
- package/dist/esm/{wip/gml-loader.js → gml-loader.js} +3 -3
- package/dist/esm/gml-loader.js.map +1 -0
- package/dist/esm/index.js +16 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lerc-loader.js +1 -1
- package/dist/esm/lerc-loader.js.map +1 -1
- package/dist/esm/lib/{data-sources/create-image-source.js → create-image-source.js} +4 -4
- package/dist/esm/lib/create-image-source.js.map +1 -0
- package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js +19 -0
- package/dist/esm/lib/parsers/csw/parse-csw-capabilities.js.map +1 -0
- package/dist/esm/lib/parsers/csw/parse-csw-domain.js +25 -0
- package/dist/esm/lib/parsers/csw/parse-csw-domain.js.map +1 -0
- package/dist/esm/lib/parsers/csw/parse-csw-records.js +46 -0
- package/dist/esm/lib/parsers/csw/parse-csw-records.js.map +1 -0
- package/dist/esm/lib/parsers/csw/parse-exception-report.js +13 -0
- package/dist/esm/lib/parsers/csw/parse-exception-report.js.map +1 -0
- package/dist/esm/lib/parsers/gml/deep-strict-equal.js.map +1 -0
- package/dist/esm/lib/parsers/gml/parse-gml.js.map +1 -0
- package/dist/esm/lib/parsers/lerc/lerc-types.js.map +1 -0
- package/dist/esm/lib/{wms/parse-wms.js → parsers/wms/parse-wms-capabilities.js} +1 -37
- package/dist/esm/lib/parsers/wms/parse-wms-capabilities.js.map +1 -0
- package/dist/esm/lib/parsers/wms/parse-wms-error.js +12 -0
- package/dist/esm/lib/parsers/wms/parse-wms-error.js.map +1 -0
- package/dist/esm/lib/parsers/wms/parse-wms-features.js +27 -0
- package/dist/esm/lib/parsers/wms/parse-wms-features.js.map +1 -0
- package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js +9 -0
- package/dist/esm/lib/parsers/wms/parse-wms-layer-description.js.map +1 -0
- package/dist/esm/lib/services/arcgis/arcgis-image-service.js +67 -0
- package/dist/esm/lib/services/arcgis/arcgis-image-service.js.map +1 -0
- package/dist/esm/lib/services/arcgis/arcgis-server.js +35 -0
- package/dist/esm/lib/services/arcgis/arcgis-server.js.map +1 -0
- package/dist/esm/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +13 -10
- package/dist/esm/lib/services/generic/image-service.js.map +1 -0
- package/dist/esm/lib/services/generic/tile-service.js +2 -0
- package/dist/esm/lib/services/generic/tile-service.js.map +1 -0
- package/dist/esm/lib/services/ogc/csw-service.js +162 -0
- package/dist/esm/lib/services/ogc/csw-service.js.map +1 -0
- package/dist/esm/lib/{data-sources/image-services → services/ogc}/wms-service.js +40 -34
- package/dist/esm/lib/services/ogc/wms-service.js.map +1 -0
- package/dist/esm/lib/services/ogc/wmts-service.ts.disabled +348 -0
- package/dist/esm/lib/sources/data-source.js +29 -0
- package/dist/esm/lib/sources/data-source.js.map +1 -0
- package/dist/esm/lib/sources/image-source.js +6 -0
- package/dist/esm/lib/sources/image-source.js.map +1 -0
- package/dist/esm/lib/sources/tile-source.js +6 -0
- package/dist/esm/lib/sources/tile-source.js.map +1 -0
- package/dist/esm/lib/sources/utils/utils.js +26 -0
- package/dist/esm/lib/sources/utils/utils.js.map +1 -0
- package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js +16 -0
- package/dist/esm/wip/lib/wcs/parse-wcs-capabilities.js.map +1 -0
- package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js +17 -0
- package/dist/esm/wip/lib/wfs/parse-wfs-capabilities.js.map +1 -0
- package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js +17 -0
- package/dist/esm/wip/lib/wmts/parse-wmts-capabilities.js.map +1 -0
- package/dist/esm/wip/wcs-capabilities-loader.js +4 -4
- package/dist/esm/wip/wcs-capabilities-loader.js.map +1 -1
- package/dist/esm/wip/wfs-capabilities-loader.js +2 -2
- package/dist/esm/wip/wfs-capabilities-loader.js.map +1 -1
- package/dist/esm/wip/wms-feature-info-loader.js +1 -2
- package/dist/esm/wip/wms-feature-info-loader.js.map +1 -1
- package/dist/esm/wip/wms-layer-description-loader.js +1 -2
- package/dist/esm/wip/wms-layer-description-loader.js.map +1 -1
- package/dist/esm/wip/wmts-capabilities-loader.js +4 -2
- package/dist/esm/wip/wmts-capabilities-loader.js.map +1 -1
- package/dist/esm/wms-capabilities-loader.js +3 -2
- package/dist/esm/wms-capabilities-loader.js.map +1 -1
- package/dist/esm/wms-error-loader.js +2 -2
- package/dist/esm/wms-error-loader.js.map +1 -1
- package/dist/gml-loader.d.ts.map +1 -0
- package/dist/{wip/gml-loader.js → gml-loader.js} +2 -2
- package/dist/index.d.ts +25 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -14
- package/dist/lerc-loader.d.ts +1 -1
- package/dist/lerc-loader.d.ts.map +1 -1
- package/dist/lib/create-image-source.d.ts +17 -0
- package/dist/lib/create-image-source.d.ts.map +1 -0
- package/dist/lib/{data-sources/create-image-source.js → create-image-source.js} +5 -5
- package/dist/lib/{wmts/wmts-types.d.ts → parsers/csw/parse-csw-capabilities.d.ts} +9 -3
- package/dist/lib/parsers/csw/parse-csw-capabilities.d.ts.map +1 -0
- package/dist/lib/parsers/csw/parse-csw-capabilities.js +24 -0
- package/dist/lib/parsers/csw/parse-csw-domain.d.ts +17 -0
- package/dist/lib/parsers/csw/parse-csw-domain.d.ts.map +1 -0
- package/dist/lib/parsers/csw/parse-csw-domain.js +33 -0
- package/dist/lib/parsers/csw/parse-csw-records.d.ts +33 -0
- package/dist/lib/parsers/csw/parse-csw-records.d.ts.map +1 -0
- package/dist/lib/parsers/csw/parse-csw-records.js +58 -0
- package/dist/lib/parsers/csw/parse-exception-report.d.ts +6 -0
- package/dist/lib/parsers/csw/parse-exception-report.d.ts.map +1 -0
- package/dist/lib/parsers/csw/parse-exception-report.js +30 -0
- package/dist/lib/parsers/gml/deep-strict-equal.d.ts.map +1 -0
- package/dist/lib/parsers/gml/parse-gml.d.ts.map +1 -0
- package/dist/lib/parsers/lerc/lerc-types.d.ts.map +1 -0
- package/dist/lib/{wms/wms-types.d.ts → parsers/wms/parse-wms-capabilities.d.ts} +6 -19
- package/dist/lib/parsers/wms/parse-wms-capabilities.d.ts.map +1 -0
- package/dist/lib/{wms/wms-types.js → parsers/wms/parse-wms-capabilities.js} +61 -1
- package/dist/lib/parsers/wms/parse-wms-error.d.ts +8 -0
- package/dist/lib/parsers/wms/parse-wms-error.d.ts.map +1 -0
- package/dist/lib/parsers/wms/parse-wms-error.js +22 -0
- package/dist/lib/parsers/wms/parse-wms-features.d.ts +20 -0
- package/dist/lib/parsers/wms/parse-wms-features.d.ts.map +1 -0
- package/dist/lib/parsers/wms/parse-wms-features.js +27 -0
- package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts +10 -0
- package/dist/lib/parsers/wms/parse-wms-layer-description.d.ts.map +1 -0
- package/dist/lib/parsers/wms/parse-wms-layer-description.js +15 -0
- package/dist/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.d.ts +25 -13
- package/dist/lib/services/arcgis/arcgis-image-service.d.ts.map +1 -0
- package/dist/lib/{data-sources → services/arcgis}/arcgis-image-service.js +33 -23
- package/dist/lib/services/arcgis/arcgis-server.d.ts +15 -0
- package/dist/lib/services/arcgis/arcgis-server.d.ts.map +1 -0
- package/dist/lib/services/arcgis/arcgis-server.js +42 -0
- package/dist/lib/{data-sources/image-services → services/generic}/image-service.d.ts +3 -13
- package/dist/lib/services/generic/image-service.d.ts.map +1 -0
- package/dist/lib/{data-sources/adhoc-image-service.js → services/generic/image-service.js} +12 -10
- package/dist/lib/services/generic/tile-service.d.ts +1 -0
- package/dist/lib/services/generic/tile-service.d.ts.map +1 -0
- package/dist/lib/services/generic/tile-service.js +1 -0
- package/dist/lib/services/ogc/csw-service.d.ts +115 -0
- package/dist/lib/services/ogc/csw-service.d.ts.map +1 -0
- package/dist/lib/services/ogc/csw-service.js +170 -0
- package/dist/lib/{data-sources/image-services → services/ogc}/wms-service.d.ts +41 -22
- package/dist/lib/services/ogc/wms-service.d.ts.map +1 -0
- package/dist/lib/{data-sources/image-services → services/ogc}/wms-service.js +41 -28
- package/dist/lib/sources/data-source.d.ts +22 -0
- package/dist/lib/sources/data-source.d.ts.map +1 -0
- package/dist/lib/sources/data-source.js +34 -0
- package/dist/lib/{data-sources → sources}/image-source.d.ts +4 -1
- package/dist/lib/sources/image-source.d.ts.map +1 -0
- package/dist/lib/{data-sources → sources}/image-source.js +2 -1
- package/dist/lib/sources/tile-source.d.ts +54 -0
- package/dist/lib/sources/tile-source.d.ts.map +1 -0
- package/dist/lib/sources/tile-source.js +13 -0
- package/dist/lib/sources/utils/utils.d.ts +13 -0
- package/dist/lib/sources/utils/utils.d.ts.map +1 -0
- package/dist/lib/sources/utils/utils.js +38 -0
- package/dist/{lib/wfs/wfs-types.d.ts → wip/lib/wcs/parse-wcs-capabilities.d.ts} +8 -3
- package/dist/wip/lib/wcs/parse-wcs-capabilities.d.ts.map +1 -0
- package/dist/wip/lib/wcs/parse-wcs-capabilities.js +15 -0
- package/dist/{lib/wcs/wcs-types.d.ts → wip/lib/wfs/parse-wfs-capabilities.d.ts} +6 -1
- package/dist/wip/lib/wfs/parse-wfs-capabilities.d.ts.map +1 -0
- package/dist/wip/lib/wfs/parse-wfs-capabilities.js +19 -0
- package/dist/wip/lib/wmts/parse-wmts-capabilities.d.ts +87 -0
- package/dist/wip/lib/wmts/parse-wmts-capabilities.d.ts.map +1 -0
- package/dist/wip/lib/wmts/parse-wmts-capabilities.js +77 -0
- package/dist/wip/wcs-capabilities-loader.d.ts +4 -3
- package/dist/wip/wcs-capabilities-loader.d.ts.map +1 -1
- package/dist/wip/wcs-capabilities-loader.js +3 -3
- package/dist/wip/wfs-capabilities-loader.d.ts +4 -3
- package/dist/wip/wfs-capabilities-loader.d.ts.map +1 -1
- package/dist/wip/wfs-capabilities-loader.js +3 -3
- package/dist/wip/wms-feature-info-loader.d.ts +4 -2
- package/dist/wip/wms-feature-info-loader.d.ts.map +1 -1
- package/dist/wip/wms-feature-info-loader.js +3 -3
- package/dist/wip/wms-layer-description-loader.d.ts +5 -3
- package/dist/wip/wms-layer-description-loader.d.ts.map +1 -1
- package/dist/wip/wms-layer-description-loader.js +3 -3
- package/dist/wip/wmts-capabilities-loader.d.ts +4 -3
- package/dist/wip/wmts-capabilities-loader.d.ts.map +1 -1
- package/dist/wip/wmts-capabilities-loader.js +3 -3
- package/dist/wms-capabilities-loader.d.ts +4 -3
- package/dist/wms-capabilities-loader.d.ts.map +1 -1
- package/dist/wms-capabilities-loader.js +3 -3
- package/dist/wms-error-loader.js +2 -2
- package/package.json +7 -7
- package/src/csw-capabilities-loader.ts +46 -0
- package/src/csw-domain-loader.ts +44 -0
- package/src/csw-records-loader.ts +42 -0
- package/src/{wip/gml-loader.ts → gml-loader.ts} +2 -2
- package/src/index.ts +48 -28
- package/src/lerc-loader.ts +1 -1
- package/src/lib/{data-sources/create-image-source.ts → create-image-source.ts} +12 -10
- package/src/lib/parsers/csw/parse-csw-capabilities.ts +103 -0
- package/src/lib/parsers/csw/parse-csw-domain.ts +45 -0
- package/src/lib/parsers/csw/parse-csw-records.ts +90 -0
- package/src/lib/parsers/csw/parse-exception-report.ts +31 -0
- package/src/lib/{wms/wms-types.ts → parsers/wms/parse-wms-capabilities.ts} +72 -53
- package/src/lib/parsers/wms/parse-wms-error.ts +22 -0
- package/src/lib/parsers/wms/parse-wms-features.ts +39 -0
- package/src/lib/parsers/wms/parse-wms-layer-description.ts +18 -0
- package/src/lib/{data-sources/image-services → services/arcgis}/arcgis-image-service.ts +44 -26
- package/src/lib/services/arcgis/arcgis-server.ts +59 -0
- package/src/lib/{data-sources/adhoc-image-service.ts → services/generic/image-service.ts} +18 -12
- package/src/lib/services/generic/tile-service.ts +0 -0
- package/src/lib/services/ogc/csw-service.ts +251 -0
- package/src/lib/{data-sources/image-services → services/ogc}/wms-service.ts +73 -34
- package/src/lib/services/ogc/wmts-service.ts.disabled +348 -0
- package/src/lib/sources/data-source.ts +46 -0
- package/src/lib/{data-sources → sources}/image-source.ts +5 -1
- package/src/lib/sources/tile-source.ts +59 -0
- package/src/lib/sources/utils/utils.ts +42 -0
- package/src/{lib/wmts/wmts-types.ts → wip/lib/wcs/parse-wcs-capabilities.ts} +15 -3
- package/src/{lib/wcs/wcs-types.ts → wip/lib/wfs/parse-wfs-capabilities.ts} +18 -1
- package/src/wip/lib/wmts/parse-wmts-capabilities.ts +170 -0
- package/src/wip/wcs-capabilities-loader.ts +6 -3
- package/src/wip/wfs-capabilities-loader.ts +4 -1
- package/src/wip/wms-feature-info-loader.ts +5 -1
- package/src/wip/wms-layer-description-loader.ts +7 -2
- package/src/wip/wmts-capabilities-loader.ts +4 -1
- package/src/wms-capabilities-loader.ts +5 -1
- package/src/wms-error-loader.ts +1 -1
- package/dist/es5/lib/data-sources/adhoc-image-service.js.map +0 -1
- package/dist/es5/lib/data-sources/arcgis-image-service.js +0 -180
- package/dist/es5/lib/data-sources/arcgis-image-service.js.map +0 -1
- package/dist/es5/lib/data-sources/create-image-source.js.map +0 -1
- package/dist/es5/lib/data-sources/image-services/arcgis-image-service.js.map +0 -1
- package/dist/es5/lib/data-sources/image-services/image-service.js +0 -163
- package/dist/es5/lib/data-sources/image-services/image-service.js.map +0 -1
- package/dist/es5/lib/data-sources/image-services/wms-service.js.map +0 -1
- package/dist/es5/lib/data-sources/image-source.js +0 -14
- package/dist/es5/lib/data-sources/image-source.js.map +0 -1
- package/dist/es5/lib/gml/deep-strict-equal.js.map +0 -1
- package/dist/es5/lib/gml/parse-gml.js.map +0 -1
- package/dist/es5/lib/lerc/lerc-types.js.map +0 -1
- package/dist/es5/lib/wcs/parse-wcs.js.map +0 -1
- package/dist/es5/lib/wcs/wcs-types.js +0 -2
- package/dist/es5/lib/wcs/wcs-types.js.map +0 -1
- package/dist/es5/lib/wfs/parse-wfs.js.map +0 -1
- package/dist/es5/lib/wfs/wfs-types.js +0 -2
- package/dist/es5/lib/wfs/wfs-types.js.map +0 -1
- package/dist/es5/lib/wms/parse-wms.js.map +0 -1
- package/dist/es5/lib/wms/wms-types.js +0 -2
- package/dist/es5/lib/wms/wms-types.js.map +0 -1
- package/dist/es5/lib/wmts/parse-wmts.js.map +0 -1
- package/dist/es5/lib/wmts/wmts-types.js +0 -2
- package/dist/es5/lib/wmts/wmts-types.js.map +0 -1
- package/dist/es5/wip/gml-loader.js.map +0 -1
- package/dist/esm/lib/data-sources/adhoc-image-service.js.map +0 -1
- package/dist/esm/lib/data-sources/arcgis-image-service.js +0 -62
- package/dist/esm/lib/data-sources/arcgis-image-service.js.map +0 -1
- package/dist/esm/lib/data-sources/create-image-source.js.map +0 -1
- package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js +0 -61
- package/dist/esm/lib/data-sources/image-services/arcgis-image-service.js.map +0 -1
- package/dist/esm/lib/data-sources/image-services/image-service.js +0 -72
- package/dist/esm/lib/data-sources/image-services/image-service.js.map +0 -1
- package/dist/esm/lib/data-sources/image-services/wms-service.js.map +0 -1
- package/dist/esm/lib/data-sources/image-source.js +0 -4
- package/dist/esm/lib/data-sources/image-source.js.map +0 -1
- package/dist/esm/lib/gml/deep-strict-equal.js.map +0 -1
- package/dist/esm/lib/gml/parse-gml.js.map +0 -1
- package/dist/esm/lib/lerc/lerc-types.js.map +0 -1
- package/dist/esm/lib/wcs/parse-wcs.js +0 -32
- package/dist/esm/lib/wcs/parse-wcs.js.map +0 -1
- package/dist/esm/lib/wcs/wcs-types.js +0 -2
- package/dist/esm/lib/wcs/wcs-types.js.map +0 -1
- package/dist/esm/lib/wfs/parse-wfs.js +0 -32
- package/dist/esm/lib/wfs/parse-wfs.js.map +0 -1
- package/dist/esm/lib/wfs/wfs-types.js +0 -2
- package/dist/esm/lib/wfs/wfs-types.js.map +0 -1
- package/dist/esm/lib/wms/parse-wms.js.map +0 -1
- package/dist/esm/lib/wms/wms-types.js +0 -2
- package/dist/esm/lib/wms/wms-types.js.map +0 -1
- package/dist/esm/lib/wmts/parse-wmts.js +0 -32
- package/dist/esm/lib/wmts/parse-wmts.js.map +0 -1
- package/dist/esm/lib/wmts/wmts-types.js +0 -2
- package/dist/esm/lib/wmts/wmts-types.js.map +0 -1
- package/dist/esm/wip/gml-loader.js.map +0 -1
- package/dist/lib/data-sources/adhoc-image-service.d.ts +0 -24
- package/dist/lib/data-sources/adhoc-image-service.d.ts.map +0 -1
- package/dist/lib/data-sources/arcgis-image-service.d.ts +0 -79
- package/dist/lib/data-sources/arcgis-image-service.d.ts.map +0 -1
- package/dist/lib/data-sources/create-image-source.d.ts +0 -16
- package/dist/lib/data-sources/create-image-source.d.ts.map +0 -1
- package/dist/lib/data-sources/image-services/arcgis-image-service.d.ts.map +0 -1
- package/dist/lib/data-sources/image-services/arcgis-image-service.js +0 -85
- package/dist/lib/data-sources/image-services/image-service.d.ts.map +0 -1
- package/dist/lib/data-sources/image-services/image-service.js +0 -82
- package/dist/lib/data-sources/image-services/wms-service.d.ts.map +0 -1
- package/dist/lib/data-sources/image-source.d.ts.map +0 -1
- package/dist/lib/gml/deep-strict-equal.d.ts.map +0 -1
- package/dist/lib/gml/parse-gml.d.ts.map +0 -1
- package/dist/lib/lerc/lerc-types.d.ts.map +0 -1
- package/dist/lib/wcs/parse-wcs.d.ts +0 -7
- package/dist/lib/wcs/parse-wcs.d.ts.map +0 -1
- package/dist/lib/wcs/parse-wcs.js +0 -36
- package/dist/lib/wcs/wcs-types.d.ts.map +0 -1
- package/dist/lib/wcs/wcs-types.js +0 -3
- package/dist/lib/wfs/parse-wfs.d.ts +0 -7
- package/dist/lib/wfs/parse-wfs.d.ts.map +0 -1
- package/dist/lib/wfs/parse-wfs.js +0 -36
- package/dist/lib/wfs/wfs-types.d.ts.map +0 -1
- package/dist/lib/wfs/wfs-types.js +0 -3
- package/dist/lib/wms/parse-wms.d.ts +0 -24
- package/dist/lib/wms/parse-wms.d.ts.map +0 -1
- package/dist/lib/wms/parse-wms.js +0 -115
- package/dist/lib/wms/wms-types.d.ts.map +0 -1
- package/dist/lib/wmts/parse-wmts.d.ts +0 -7
- package/dist/lib/wmts/parse-wmts.d.ts.map +0 -1
- package/dist/lib/wmts/parse-wmts.js +0 -36
- package/dist/lib/wmts/wmts-types.d.ts.map +0 -1
- package/dist/lib/wmts/wmts-types.js +0 -3
- package/dist/wip/gml-loader.d.ts.map +0 -1
- package/src/lib/data-sources/arcgis-image-service.ts +0 -146
- package/src/lib/data-sources/image-services/image-service.ts +0 -105
- package/src/lib/wcs/parse-wcs.ts +0 -39
- package/src/lib/wfs/parse-wfs.ts +0 -39
- package/src/lib/wfs/wfs-types.ts +0 -78
- package/src/lib/wms/parse-wms.ts +0 -142
- package/src/lib/wmts/parse-wmts.ts +0 -39
- /package/dist/es5/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
- /package/dist/es5/lib/{gml → parsers/gml}/parse-gml.js +0 -0
- /package/dist/es5/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
- /package/dist/esm/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
- /package/dist/esm/lib/{gml → parsers/gml}/parse-gml.js +0 -0
- /package/dist/esm/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
- /package/dist/{wip/gml-loader.d.ts → gml-loader.d.ts} +0 -0
- /package/dist/lib/{gml → parsers/gml}/deep-strict-equal.d.ts +0 -0
- /package/dist/lib/{gml → parsers/gml}/deep-strict-equal.js +0 -0
- /package/dist/lib/{gml → parsers/gml}/parse-gml.d.ts +0 -0
- /package/dist/lib/{gml → parsers/gml}/parse-gml.js +0 -0
- /package/dist/lib/{lerc → parsers/lerc}/lerc-types.d.ts +0 -0
- /package/dist/lib/{lerc → parsers/lerc}/lerc-types.js +0 -0
- /package/src/lib/{gml → parsers/gml}/deep-strict-equal.ts +0 -0
- /package/src/lib/{gml → parsers/gml}/parse-gml.ts +0 -0
- /package/src/lib/{lerc → parsers/lerc}/lerc-types.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-strict-equal.js","names":["deepStrictEqual","actual","expected","strict","Date","getTime","RegExp","source","global","multiline","lastIndex","ignoreCase","objEquiv","pSlice","Array","prototype","slice","isPrimitive","arg","isArguments","object","Object","toString","call","a","b","undefined","getPrototypeOf","aIsArgs","bIsArgs","ka","keys","kb","key","i","length","sort"],"sources":["../../../../../src/lib/parsers/gml/deep-strict-equal.ts"],"sourcesContent":["// https://github.com/nodejs/node/commit/c1d82ac2ff15594840e2a1b9531b506ae067ed27;\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** @todo replace this ridiculous choice of deepStrictEqual */\n// eslint-disable-next-line complexity\nexport function deepStrictEqual(actual: unknown, expected: unknown, strict?: boolean) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n // } else if (actual instanceof Buffer && expected instanceof Buffer) {\n // return compare(actual, expected) === 0;\n\n // // 7.2. If the expected value is a Date object, the actual value is\n // // equivalent if it is also a Date object that refers to the same time.\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (actual instanceof RegExp && expected instanceof RegExp) {\n return (\n actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase\n );\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (\n (actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')\n ) {\n // eslint-disable-next-line eqeqeq\n return strict ? actual === expected : actual == expected;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n }\n return objEquiv(actual, expected, strict);\n}\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst pSlice = Array.prototype.slice;\n\nfunction isPrimitive(arg) {\n return arg === null || (typeof arg !== 'object' && typeof arg !== 'function');\n}\n\nfunction isArguments(object) {\n // eslint-disable-next-line eqeqeq\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\n// eslint-disable-next-line complexity\nfunction objEquiv(a: unknown, b: unknown, strict) {\n if (a === null || a === undefined || b === null || b === undefined) return false;\n // if one is a primitive, the other must be same\n if (isPrimitive(a) || isPrimitive(b)) return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) return false;\n const aIsArgs = isArguments(a);\n const bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepStrictEqual(a, b, strict);\n }\n const ka = Object.keys(a);\n const kb = Object.keys(b);\n let key;\n let i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length) return false;\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i]) return false;\n }\n // equivalent values for every corresponding key, and\n // ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepStrictEqual(a[key], b[key], strict)) return false;\n }\n return true;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-gml.js","names":["noTransform","coords","parseGML","text","options","parsedXML","XMLLoader","parseTextSync","transformCoords","stride","context","createChildContext","parseGMLToGeometry","inputXML","childContext","geometry","getFirstKeyValue","name","xml","type","coordinates","parseLinearRingOrLineString","parsePolygonOrRectangle","parseSurface","parseMultiSurface","rewind","mutate","parseCoords","s","srsDimension","replace","trim","split","length","Error","points","i","point","slice","map","parseFloat","push","parsePosList","textOf","parsePos","parsePoint","pos","findIn","posList","Object","entries","childName","childXML","parseCurveSegments","points2","end","start","deepStrictEqual","shift","parseRing","lineString","segments","parseExteriorOrInterior","linearRing","ring","exterior","pointLists","patches","polygons","parseCompositeSurface","c2Name","c2Xml","el","surfaceMembers","polygons2","polygons3","parseSurfaceMember","polygonXML","surfaceMemberXML","childXml","root","tags","tag","child","object","key","value","srsDimensionAttribute","attributes","parseInt","Number","isNaN","create"],"sources":["../../../../../src/lib/parsers/gml/parse-gml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n// Forked from https://github.com/derhuerst/parse-gml-polygon/blob/master/index.js\n// under ISC license\n\n/* eslint-disable no-continue, default-case */\n\nimport type {\n // GeoJSON,\n // Feature,\n // FeatureCollection,\n Geometry,\n Position\n // GeoJsonProperties,\n // Point,\n // MultiPoint,\n // LineString,\n // MultiLineString,\n // Polygon,\n // MultiPolygon,\n // GeometryCollection\n} from '@loaders.gl/schema';\n\nimport {XMLLoader} from '@loaders.gl/xml';\nimport {deepStrictEqual} from './deep-strict-equal';\nimport rewind from '@turf/rewind';\n\nfunction noTransform(...coords) {\n return coords;\n}\n\nexport type ParseGMLOptions = {\n transformCoords?: Function;\n stride?: 2 | 3 | 4;\n};\n\nexport type ParseGMLContext = {\n srsDimension?: number;\n [key: string]: any;\n};\n\n/**\n * Parses a typed data structure from raw XML for GML features\n * @note Error handlings is fairly weak\n */\nexport function parseGML(text: string, options) {\n // GeoJSON | null {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n\n options = {transformCoords: noTransform, stride: 2, ...options};\n const context = createChildContext(parsedXML, options, {});\n\n return parseGMLToGeometry(parsedXML, options, context);\n}\n\n/** Parse a GeoJSON geometry from GML XML */\nexport function parseGMLToGeometry(\n inputXML: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Geometry | null {\n const childContext = createChildContext(inputXML, options, context);\n\n let geometry: Geometry | null = null;\n\n const [name, xml] = getFirstKeyValue(inputXML);\n\n switch (name) {\n // case 'gml:MultiPoint':\n // geometry = {\n // type: 'MultiPoint',\n // coordinates: parseMultiPoint(xml, options, childContext)\n // };\n // break;\n\n case 'gml:LineString':\n geometry = {\n type: 'LineString',\n coordinates: parseLinearRingOrLineString(xml, options, childContext)\n };\n break;\n\n // case 'gml:MultiLineString':\n // geometry = {\n // type: 'MultiLineString',\n // coordinates: parseMultiLineString(xml, options, childContext)\n // };\n // break;\n\n case 'gml:Polygon':\n case 'gml:Rectangle':\n geometry = {\n type: 'Polygon',\n coordinates: parsePolygonOrRectangle(xml, options, childContext)\n };\n break;\n case 'gml:Surface':\n geometry = {\n type: 'MultiPolygon',\n coordinates: parseSurface(xml, options, childContext)\n };\n break;\n case 'gml:MultiSurface':\n geometry = {\n type: 'MultiPolygon',\n coordinates: parseMultiSurface(xml, options, childContext)\n };\n break;\n\n default:\n return null;\n }\n\n // todo\n return rewind(geometry, {mutate: true});\n}\n\n/** Parse a list of coordinates from a string */\nfunction parseCoords(s: string, options: ParseGMLOptions, context: ParseGMLContext): Position[] {\n const stride = context.srsDimension || options.stride || 2;\n\n // Handle white space\n const coords = s.replace(/\\s+/g, ' ').trim().split(' ');\n\n if (coords.length === 0 || coords.length % stride !== 0) {\n throw new Error(`invalid coordinates list (stride ${stride})`);\n }\n\n const points: Position[] = [];\n for (let i = 0; i < coords.length - 1; i += stride) {\n const point = coords.slice(i, i + stride).map(parseFloat);\n points.push(options.transformCoords?.(...point) || point);\n }\n\n return points;\n}\n\nexport function parsePosList(xml: any, options: ParseGMLOptions, context: ParseGMLContext) {\n const childContext = createChildContext(xml, options, context);\n\n const coords = textOf(xml);\n if (!coords) {\n throw new Error('invalid gml:posList element');\n }\n\n return parseCoords(coords, options, childContext);\n}\n\nexport function parsePos(xml: any, options: ParseGMLOptions, context: ParseGMLContext): Position {\n const childContext = createChildContext(xml, options, context);\n\n const coords = textOf(xml);\n if (!coords) {\n throw new Error('invalid gml:pos element');\n }\n\n const points = parseCoords(coords, options, childContext);\n if (points.length !== 1) {\n throw new Error('gml:pos must have 1 point');\n }\n return points[0];\n}\n\nexport function parsePoint(xml: any, options: ParseGMLOptions, context: ParseGMLContext): number[] {\n const childContext = createChildContext(xml, options, context);\n\n // TODO AV: Parse other gml:Point options\n const pos = findIn(xml, 'gml:pos');\n if (!pos) {\n throw new Error('invalid gml:Point element, expected a gml:pos subelement');\n }\n return parsePos(pos, options, childContext);\n}\n\nexport function parseLinearRingOrLineString(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n // or a LineStringSegment\n const childContext = createChildContext(xml, options, context);\n\n let points: Position[] = [];\n\n const posList = findIn(xml, 'gml:posList');\n if (posList) {\n points = parsePosList(posList, options, childContext);\n } else {\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:Point':\n points.push(parsePoint(childXML, options, childContext));\n break;\n case 'gml:pos':\n points.push(parsePos(childXML, options, childContext));\n break;\n default:\n continue;\n }\n }\n }\n\n if (points.length === 0) {\n throw new Error(`${xml.name} must have > 0 points`);\n }\n return points;\n}\n\nexport function parseCurveSegments(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const points: Position[] = [];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:LineStringSegment':\n const points2 = parseLinearRingOrLineString(childXML, options, context);\n\n // remove overlapping\n const end = points[points.length - 1];\n const start = points2[0];\n if (end && start && deepStrictEqual(end, start)) {\n points2.shift();\n }\n\n points.push(...points2);\n break;\n default:\n continue;\n }\n }\n\n if (points.length === 0) {\n throw new Error('gml:Curve > gml:segments must have > 0 points');\n }\n return points;\n}\n\nexport function parseRing(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const childContext = createChildContext(xml, options, context);\n\n const points: Position[] = [];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:curveMember':\n let points2;\n\n const lineString = findIn(childXML, 'gml:LineString');\n if (lineString) {\n points2 = parseLinearRingOrLineString(lineString, options, childContext);\n } else {\n const segments = findIn(childXML, 'gml:Curve', 'gml:segments');\n if (!segments) {\n throw new Error(`invalid ${childName} element`);\n }\n\n points2 = parseCurveSegments(segments, options, childContext);\n }\n\n // remove overlapping\n const end = points[points.length - 1];\n const start = points2[0];\n if (end && start && deepStrictEqual(end, start)) {\n points2.shift();\n }\n\n points.push(...points2);\n\n break;\n }\n }\n\n if (points.length < 4) {\n throw new Error(`${xml.name} must have >= 4 points`);\n }\n return points;\n}\n\nexport function parseExteriorOrInterior(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[] {\n const linearRing = findIn(xml, 'gml:LinearRing');\n if (linearRing) {\n return parseLinearRingOrLineString(linearRing, options, context);\n }\n\n const ring = findIn(xml, 'gml:Ring');\n if (!ring) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n return parseRing(ring, options, context);\n}\n\nexport function parsePolygonOrRectangle(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][] {\n // or PolygonPatch\n const childContext = createChildContext(xml, options, context);\n\n const exterior = findIn(xml, 'gml:exterior');\n if (!exterior) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n const pointLists: Position[][] = [parseExteriorOrInterior(exterior, options, childContext)];\n\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:interior':\n pointLists.push(parseExteriorOrInterior(childXML, options, childContext));\n break;\n }\n }\n\n return pointLists;\n}\n\nexport function parseSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const childContext = createChildContext(xml, options, context);\n\n const patches = findIn(xml, 'gml:patches');\n if (!patches) {\n throw new Error(`invalid ${xml.name} element`);\n }\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:PolygonPatch':\n case 'gml:Rectangle':\n polygons.push(parsePolygonOrRectangle(childXML, options, childContext));\n break;\n\n default:\n continue;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n\n return polygons;\n}\n\nexport function parseCompositeSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const childContext = createChildContext(xml, options, context);\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(xml)) {\n switch (childName) {\n case 'gml:surfaceMember':\n case 'gml:surfaceMembers':\n const [c2Name, c2Xml] = getFirstKeyValue(childXML);\n switch (c2Name) {\n case 'gml:Surface':\n polygons.push(...parseSurface(c2Xml, options, childContext));\n break;\n case 'gml:Polygon':\n polygons.push(parsePolygonOrRectangle(c2Xml, options, childContext));\n break;\n }\n break;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n return polygons;\n}\n\nexport function parseMultiSurface(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n let el = xml;\n\n const surfaceMembers = findIn(xml, 'gml:LinearRing');\n if (surfaceMembers) {\n el = surfaceMembers;\n }\n\n const polygons: Position[][][] = [];\n for (const [childName, childXML] of Object.entries(el)) {\n switch (childName) {\n case 'gml:Surface':\n const polygons2 = parseSurface(childXML, options, context);\n polygons.push(...polygons2);\n break;\n case 'gml:surfaceMember':\n const polygons3 = parseSurfaceMember(childXML, options, context);\n polygons.push(...polygons3);\n break;\n\n case 'gml:surfaceMembers':\n const polygonXML = findIn(childXML, 'gml:Polygon');\n for (const surfaceMemberXML of polygonXML as []) {\n const polygons3 = parseSurfaceMember(surfaceMemberXML, options, context);\n polygons.push(...polygons3);\n }\n break;\n }\n }\n\n if (polygons.length === 0) {\n throw new Error(`${xml.name} must have > 0 polygons`);\n }\n\n return polygons;\n}\n\nfunction parseSurfaceMember(\n xml: any,\n options: ParseGMLOptions,\n context: ParseGMLContext\n): Position[][][] {\n const [childName, childXml] = getFirstKeyValue(xml);\n switch (childName) {\n case 'gml:CompositeSurface':\n return parseCompositeSurface(childXml, options, context);\n case 'gml:Surface':\n return parseSurface(childXml, options, context);\n case 'gml:Polygon':\n return [parsePolygonOrRectangle(childXml, options, context)];\n }\n throw new Error(`${childName} must have polygons`);\n}\n\n// Helpers\n\nfunction textOf(el: any): string {\n if (typeof el !== 'string') {\n throw new Error('expected string');\n }\n return el;\n}\n\nfunction findIn(root: any, ...tags: string[]): any {\n let el = root;\n for (const tag of tags) {\n const child = el[tag];\n if (!child) {\n return null;\n }\n el = child;\n }\n return el;\n}\n\n/** @returns the first [key, value] pair in an object, or ['', null] if empty object */\nfunction getFirstKeyValue(object: any): [string, any] {\n if (object && typeof object === 'object') {\n for (const [key, value] of Object.entries(object)) {\n return [key, value];\n }\n }\n return ['', null];\n}\n\n/** A bit heavyweight for just tracking dimension? */\nfunction createChildContext(xml, options, context): ParseGMLContext {\n const srsDimensionAttribute = xml.attributes && xml.attributes.srsDimension;\n\n if (srsDimensionAttribute) {\n const srsDimension = parseInt(srsDimensionAttribute);\n if (Number.isNaN(srsDimension) || srsDimension <= 0) {\n throw new Error(\n `invalid srsDimension attribute value \"${srsDimensionAttribute}\", expected a positive integer`\n );\n }\n\n const childContext = Object.create(context);\n childContext.srsDimension = srsDimension;\n return childContext;\n }\n\n return context;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lerc-types.js","names":[],"sources":["../../../../../src/lib/parsers/lerc/lerc-types.ts"],"sourcesContent":["// loaders.gl, MIT license\n\n/** Data returned by LERC loader */\nexport type LERCData = {\n /**\tWidth of decoded image */\n width: number;\n /**\tHeight of decoded image */\n height: number;\n /**\tThe type of pixels represented in the output */\n pixelType: LercPixelType;\n /**\t[statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values */\n statistics: BandStats[];\n /**\t[band1, band2, …] Each band is a typed array of width * height * depthCount */\n pixels: TypedArray[];\n /**\tTyped array with a size of width*height, or null if all pixels are valid */\n mask: Uint8Array;\n /**\tDepth count */\n depthCount: number;\n /**\tarray\t[band1_mask, band2_mask, …] Each band is a Uint8Array of width * height * depthCount */\n bandMasks?: Uint8Array[];\n};\n\nexport type LercPixelType = 'S8' | 'U8' | 'S16' | 'U16' | 'S32' | 'U32' | 'F32' | 'F64';\n\nexport interface BandStats {\n minValue: number;\n maxValue: number;\n depthStats?: {\n minValues: Float64Array;\n maxValues: Float64Array;\n };\n}\n\nexport type TypedArray =\n | Int8Array\n | Uint8Array\n | Uint8ClampedArray\n | Int16Array\n | Uint16Array\n | Int32Array\n | Uint32Array\n | Float32Array\n | Float64Array;\n"],"mappings":""}
|
|
@@ -5,9 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.parseWMSCapabilities = parseWMSCapabilities;
|
|
8
|
-
exports.parseWMSError = parseWMSError;
|
|
9
|
-
exports.parseWMSFeatureInfo = parseWMSFeatureInfo;
|
|
10
|
-
exports.parseWMSLayerDescription = parseWMSLayerDescription;
|
|
11
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
9
|
var _xml = require("@loaders.gl/xml");
|
|
13
10
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
@@ -94,42 +91,4 @@ function getXMLArray(xmlValue) {
|
|
|
94
91
|
}
|
|
95
92
|
return [];
|
|
96
93
|
}
|
|
97
|
-
|
|
98
|
-
function parseWMSFeatureInfo(text, options) {
|
|
99
|
-
var _parsedXML$FeatureInf;
|
|
100
|
-
var parsedXML = _xml.XMLLoader.parseTextSync(text, options);
|
|
101
|
-
var xmlFeatureInfo = ((_parsedXML$FeatureInf = parsedXML.FeatureInfoResponse) === null || _parsedXML$FeatureInf === void 0 ? void 0 : _parsedXML$FeatureInf.FIELDS) || [];
|
|
102
|
-
var xmlFeatures = Array.isArray(xmlFeatureInfo) ? xmlFeatureInfo : [xmlFeatureInfo];
|
|
103
|
-
return {
|
|
104
|
-
features: xmlFeatures.map(function (xmlFeature) {
|
|
105
|
-
return extractFeature(xmlFeature);
|
|
106
|
-
})
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
function extractFeature(xmlFeature) {
|
|
110
|
-
var xmlFields = xmlFeature || {};
|
|
111
|
-
return {
|
|
112
|
-
attributes: xmlFields,
|
|
113
|
-
type: '',
|
|
114
|
-
bounds: {
|
|
115
|
-
bottom: 0,
|
|
116
|
-
top: 0,
|
|
117
|
-
left: 0,
|
|
118
|
-
right: 0
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function parseWMSLayerDescription(text, options) {
|
|
124
|
-
var parsedXML = _xml.XMLLoader.parseTextSync(text, options);
|
|
125
|
-
return parsedXML;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function parseWMSError(text, options) {
|
|
129
|
-
var _XMLLoader$parseTextS, _parsedXML$ServiceExc, _parsedXML$ogcServic;
|
|
130
|
-
var parsedXML = (_XMLLoader$parseTextS = _xml.XMLLoader.parseTextSync) === null || _XMLLoader$parseTextS === void 0 ? void 0 : _XMLLoader$parseTextS.call(_xml.XMLLoader, text, options);
|
|
131
|
-
var serviceExceptionXML = (parsedXML === null || parsedXML === void 0 ? void 0 : (_parsedXML$ServiceExc = parsedXML.ServiceExceptionReport) === null || _parsedXML$ServiceExc === void 0 ? void 0 : _parsedXML$ServiceExc.ServiceException) || (parsedXML === null || parsedXML === void 0 ? void 0 : (_parsedXML$ogcServic = parsedXML['ogc:ServiceExceptionReport']) === null || _parsedXML$ogcServic === void 0 ? void 0 : _parsedXML$ogcServic['ogc:ServiceException']);
|
|
132
|
-
var message = typeof serviceExceptionXML === 'string' ? serviceExceptionXML : serviceExceptionXML['#text'] || serviceExceptionXML.code || 'Unknown error';
|
|
133
|
-
return message;
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=parse-wms.js.map
|
|
94
|
+
//# sourceMappingURL=parse-wms-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-wms-capabilities.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","xmlLayers","getXMLArray","xmlSubLayer","xmlValue"],"sources":["../../../../../src/lib/parsers/wms/parse-wms-capabilities.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLLoader} from '@loaders.gl/xml';\n\n/** All capabilities of a WMS service - response to a WMS `GetCapabilities` data structure extracted from XML */\nexport type WMSCapabilities = {\n name: string;\n title?: string;\n abstract?: string;\n keywords: string[];\n layer: {\n name: string;\n title?: string;\n srs?: string[];\n boundingBox?: [number, number, number, number];\n layers: WMSLayer[];\n };\n requests: Record<string, WMSRequest>;\n raw: Record<string, unknown>;\n};\n\nexport type WMSLayer = {\n name: string;\n title?: string;\n srs?: string[];\n boundingBox?: [number, number, number, number];\n layers: WMSLayer[];\n};\n\nexport type WMSRequest = {\n name: string;\n mimeTypes: string[];\n};\n\n/**\n * <EX_GeographicBoundingBox>\n * <westBoundLongitude>-180</westBoundLongitude>\n * <eastBoundLongitude>180</eastBoundLongitude>\n * <southBoundLatitude>-65</southBoundLatitude>\n * <northBoundLatitude>75</northBoundLatitude>\n * </EX_GeographicBoundingBox>\n * <BoundingBox CRS=\"EPSG:4326\"\n * minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n */\nexport type Layer = {\n name: string; // e.g. DMSP-Global-Composites-Version-4\n title: string; // e.g. DMSP-Global-Composites-Version-4</Title>\n abstract?: string; // DMSP-Global-Composites-Version-4</Abstract>\n crs: string; // e.g. EPSG:4326</CRS>\n queryable?: boolean;\n opaque?: boolean;\n cascaded?: boolean;\n geographicBoundingBox: number[];\n boundingBox: number[];\n boundingBoxCRS: string;\n layers: Layer[];\n};\n\n/**\n * <Style>\n * <Name>default</Name>\n * <Title>default</Title>\n * <LegendURL width=\"89\" height=\"21\">\n * <Format>image/png</Format>\n * <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=countries&format=image/png&STYLE=default\"/>\n * </LegendURL>\n * </Style>\n */\nexport type Style = {\n name: string; // e.g. DMSP-Global-Composites-Version-4\n title: string; // e.g. DMSP-Global-Composites-Version-4</Title>\n legendUrl?: {\n width: number;\n height: number;\n format: string;\n onlineResource: string;\n };\n};\n\n// export type Capability = GetCapabilities | GetMap;\n\nexport type WMSService = {\n rawData: unknown;\n name: string;\n title: string;\n onlineResource?: string;\n contactInformation?: string;\n maxWidth?: number;\n maxHeight?: number;\n capabilities: {\n // getCapabilities: GetCapabilities;\n // getMap: GetMap;\n // getFeatureInfo?: GetFeatureInfo;\n };\n\n untypedData: unknown; // The raw, untyped JSON converted from XML\n};\n\n/* \n<Capability>\n <Request>\n <GetCapabilities>\n <Format>text/xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </GetCapabilities>\n <GetMap>\n <Format>image/png</Format>\n <Format>image/tiff</Format>\n <Format>image/jpeg</Format>\n <Format>image/png; mode=8bit</Format>\n <Format>application/x-pdf</Format>\n <Format>image/svg+xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </GetMap>\n <GetFeatureInfo>\n <Format>text/plain</Format>\n <Format>application/vnd.ogc.gml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </GetFeatureInfo>\n <sld:DescribeLayer>\n <Format>text/xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </sld:DescribeLayer>\n <sld:GetLegendGraphic>\n <Format>image/png</Format>\n <Format>image/jpeg</Format>\n <Format>image/png; mode=8bit</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </sld:GetLegendGraphic>\n <ms:GetStyles>\n <Format>text/xml</Format>\n <DCPType>\n <HTTP>\n <Get><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Get>\n <Post><OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?\"/></Post>\n </HTTP>\n </DCPType>\n </ms:GetStyles>\n </Request>\n <Exception>\n <Format>XML</Format>\n <Format>INIMAGE</Format>\n <Format>BLANK</Format>\n </Exception>\n <sld:UserDefinedSymbolization SupportSLD=\"1\" UserLayer=\"0\" UserStyle=\"1\" RemoteWFS=\"0\" InlineFeature=\"0\" RemoteWCS=\"0\"/>\n <Layer>\n <Name>DMSP-Global-Composites-Version-4</Name>\n <Title>DMSP-Global-Composites-Version-4</Title>\n <Abstract>DMSP-Global-Composites-Version-4</Abstract>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>countries</Name>\n <Title>Countries</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>83.6236</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"83.6236\" maxy=\"180\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"89\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=countries&format=image/png&STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>adminboundaries</Name>\n <Title>Administrative Boundaries</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>83.6236</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"83.6236\" maxy=\"180\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"65\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=adminboundaries&format=image/png&STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>eez</Name>\n <Title>EEZ Boundaries</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-179.999</westBoundLongitude>\n <eastBoundLongitude>179.999</eastBoundLongitude>\n <southBoundLatitude>-85.4703</southBoundLatitude>\n <northBoundLatitude>87.0239</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-85.4703\" miny=\"-179.999\" maxx=\"87.0239\" maxy=\"179.999\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"53\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=eez&format=image/png&STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>cities</Name>\n <Title>Cities</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-176.152</westBoundLongitude>\n <eastBoundLongitude>179.222</eastBoundLongitude>\n <southBoundLatitude>-54.792</southBoundLatitude>\n <northBoundLatitude>78.2</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-54.792\" miny=\"-176.152\" maxx=\"78.2\" maxy=\"179.222\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"71\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=cities&format=image/png&STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>citieslabeled</Name>\n <Title>Cities With Labels</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-176.152</westBoundLongitude>\n <eastBoundLongitude>179.222</eastBoundLongitude>\n <southBoundLatitude>-54.792</southBoundLatitude>\n <northBoundLatitude>78.2</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-54.792\" miny=\"-176.152\" maxx=\"78.2\" maxy=\"179.222\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>land</Name>\n <Title>Land Sea Mask</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>83.6236</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"83.6236\" maxy=\"180\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"59\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=land&format=image/png&STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>LandSeaMask</Name>\n <Title>LandSeaMask</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-90</southBoundLatitude>\n <northBoundLatitude>90</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-90\" miny=\"-180\" maxx=\"90\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>Rivers</Name>\n <Title>Rivers</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-164.887</westBoundLongitude>\n <eastBoundLongitude>160.764</eastBoundLongitude>\n <southBoundLatitude>-36.9694</southBoundLatitude>\n <northBoundLatitude>71.3925</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-36.9694\" miny=\"-164.887\" maxx=\"71.3925\" maxy=\"160.764\" />\n <Style>\n <Name>default</Name>\n <Title>default</Title>\n <LegendURL width=\"71\" height=\"21\">\n <Format>image/png</Format>\n <OnlineResource xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:type=\"simple\" xlink:href=\"http://mapserver.ngdc.noaa.gov/cgi-bin/public/gcv4/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=Rivers&format=image/png&STYLE=default\"/>\n </LegendURL>\n </Style>\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F101992.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F101992.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F101992.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101992.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F101992.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F101993.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F101993.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F101993.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101993.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F101993.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F101994.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F101994.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F101994.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F101994.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F101994.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121994.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121994.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121994.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121994.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121994.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121995.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121995.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121995.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121995.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121995.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121996.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121996.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121996.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121996.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121996.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121997.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121997.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121997.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121997.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121997.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121998.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121998.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121998.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121998.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121998.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F121999.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F121999.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F121999.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F121999.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F121999.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F141997.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F141997.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F141997.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141997.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F141997.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F141998.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F141998.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F141998.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141998.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F141998.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F141999.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F141999.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F141999.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F141999.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F141999.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142000.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142000.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142000.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142000.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142000.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142001.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142001.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142001.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142001.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142001.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142002.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142002.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142002.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142002.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142002.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F142003.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F142003.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F142003.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F142003.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F142003.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152000.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152000.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152000.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152000.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152000.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152001.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152001.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152001.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152001.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152001.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152002.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152002.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152002.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152002.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152002.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152003.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152003.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152003.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152003.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152003.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152004.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152004.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152004.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152004.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152004.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152005.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152005.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152005.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152005.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152005.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152006.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152006.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152006.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152006.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152006.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152007.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152007.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152007.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152007.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152007.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F152008.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F152008.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F152008.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F152008.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F152008.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162004.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162004.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162004.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162004.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162004.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162005.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162005.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162005.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162005.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162005.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162006.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162006.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162006.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162006.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162006.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162007.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162007.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162007.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162007.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162007.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162008.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162008.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162008.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162008.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162008.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b.avg_lights_x_pct.lzw.tif</Name>\n <Title>F162009.v4b.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b_web.avg_vis.lzw.tif</Name>\n <Title>F162009.v4b_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b_web.cf_cvg.lzw.tif</Name>\n <Title>F162009.v4b_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F162009.v4b_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F162009.v4b_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c.avg_lights_x_pct.lzw.tif</Name>\n <Title>F182010.v4c.avg_lights_x_pct.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c_web.avg_vis.lzw.tif</Name>\n <Title>F182010.v4c_web.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c_web.cf_cvg.lzw.tif</Name>\n <Title>F182010.v4c_web.cf_cvg.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n <Layer queryable=\"0\" opaque=\"0\" cascaded=\"0\">\n <Name>F182010.v4c_web.stable_lights.avg_vis.lzw.tif</Name>\n <Title>F182010.v4c_web.stable_lights.avg_vis.lzw.tif</Title>\n <CRS>EPSG:4326</CRS>\n <EX_GeographicBoundingBox>\n <westBoundLongitude>-180</westBoundLongitude>\n <eastBoundLongitude>180</eastBoundLongitude>\n <southBoundLatitude>-65</southBoundLatitude>\n <northBoundLatitude>75</northBoundLatitude>\n </EX_GeographicBoundingBox>\n <BoundingBox CRS=\"EPSG:4326\"\n minx=\"-65\" miny=\"-180\" maxx=\"75\" maxy=\"180\" />\n </Layer>\n </Layer>\n</Capability>\n</WMS_Capabilities>\n*/\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 // Single layer is not represented as array in XML\n const xmlLayers = getXMLArray(xmlLayer?.Layer);\n\n for (const xmlSubLayer of xmlLayers) {\n layer.layers?.push(extractLayer(xmlSubLayer));\n }\n\n return layer;\n}\n\nfunction getXMLArray(xmlValue: any) {\n if (Array.isArray(xmlValue)) {\n return xmlValue;\n }\n if (xmlValue) {\n return [xmlValue];\n }\n return [];\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseWMSError = parseWMSError;
|
|
7
|
+
var _xml = require("@loaders.gl/xml");
|
|
8
|
+
|
|
9
|
+
function parseWMSError(text, options) {
|
|
10
|
+
var _XMLLoader$parseTextS, _parsedXML$ServiceExc, _parsedXML$ogcServic;
|
|
11
|
+
var parsedXML = (_XMLLoader$parseTextS = _xml.XMLLoader.parseTextSync) === null || _XMLLoader$parseTextS === void 0 ? void 0 : _XMLLoader$parseTextS.call(_xml.XMLLoader, text, options);
|
|
12
|
+
var serviceExceptionXML = (parsedXML === null || parsedXML === void 0 ? void 0 : (_parsedXML$ServiceExc = parsedXML.ServiceExceptionReport) === null || _parsedXML$ServiceExc === void 0 ? void 0 : _parsedXML$ServiceExc.ServiceException) || (parsedXML === null || parsedXML === void 0 ? void 0 : (_parsedXML$ogcServic = parsedXML['ogc:ServiceExceptionReport']) === null || _parsedXML$ogcServic === void 0 ? void 0 : _parsedXML$ogcServic['ogc:ServiceException']);
|
|
13
|
+
var message = typeof serviceExceptionXML === 'string' ? serviceExceptionXML : serviceExceptionXML.value || serviceExceptionXML.code || 'Unknown error';
|
|
14
|
+
return message;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=parse-wms-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-wms-error.js","names":["parseWMSError","text","options","parsedXML","XMLLoader","parseTextSync","serviceExceptionXML","ServiceExceptionReport","ServiceException","message","value","code"],"sources":["../../../../../src/lib/parsers/wms/parse-wms-error.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLLoader} from '@loaders.gl/xml';\n\n/**\n * Extract an error message from WMS error response XML\n * @param text\n * @param options\n * @returns a string with a human readable message\n */\nexport function parseWMSError(text: string, options): string {\n const parsedXML = XMLLoader.parseTextSync?.(text, options);\n const serviceExceptionXML =\n parsedXML?.ServiceExceptionReport?.ServiceException ||\n parsedXML?.['ogc:ServiceExceptionReport']?.['ogc:ServiceException'];\n // Sigh, can be either a string or an object\n const message =\n typeof serviceExceptionXML === 'string'\n ? serviceExceptionXML\n : serviceExceptionXML.value || serviceExceptionXML.code || 'Unknown error';\n return message;\n}\n"],"mappings":";;;;;;AAEA;;AAQO,SAASA,aAAa,CAACC,IAAY,EAAEC,OAAO,EAAU;EAAA;EAC3D,IAAMC,SAAS,4BAAGC,cAAS,CAACC,aAAa,0DAAvB,2BAAAD,cAAS,EAAiBH,IAAI,EAAEC,OAAO,CAAC;EAC1D,IAAMI,mBAAmB,GACvB,CAAAH,SAAS,aAATA,SAAS,gDAATA,SAAS,CAAEI,sBAAsB,0DAAjC,sBAAmCC,gBAAgB,MACnDL,SAAS,aAATA,SAAS,+CAATA,SAAS,CAAG,4BAA4B,CAAC,yDAAzC,qBAA4C,sBAAsB,CAAC;EAErE,IAAMM,OAAO,GACX,OAAOH,mBAAmB,KAAK,QAAQ,GACnCA,mBAAmB,GACnBA,mBAAmB,CAACI,KAAK,IAAIJ,mBAAmB,CAACK,IAAI,IAAI,eAAe;EAC9E,OAAOF,OAAO;AAChB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseWMSFeatureInfo = parseWMSFeatureInfo;
|
|
7
|
+
var _xml = require("@loaders.gl/xml");
|
|
8
|
+
|
|
9
|
+
function parseWMSFeatureInfo(text, options) {
|
|
10
|
+
var _parsedXML$FeatureInf;
|
|
11
|
+
var parsedXML = _xml.XMLLoader.parseTextSync(text, options);
|
|
12
|
+
var xmlFeatureInfo = ((_parsedXML$FeatureInf = parsedXML.FeatureInfoResponse) === null || _parsedXML$FeatureInf === void 0 ? void 0 : _parsedXML$FeatureInf.FIELDS) || [];
|
|
13
|
+
var xmlFeatures = Array.isArray(xmlFeatureInfo) ? xmlFeatureInfo : [xmlFeatureInfo];
|
|
14
|
+
return {
|
|
15
|
+
features: xmlFeatures.map(function (xmlFeature) {
|
|
16
|
+
return extractFeature(xmlFeature);
|
|
17
|
+
})
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function extractFeature(xmlFeature) {
|
|
21
|
+
var xmlFields = xmlFeature || {};
|
|
22
|
+
return {
|
|
23
|
+
attributes: xmlFields,
|
|
24
|
+
type: '',
|
|
25
|
+
bounds: {
|
|
26
|
+
bottom: 0,
|
|
27
|
+
top: 0,
|
|
28
|
+
left: 0,
|
|
29
|
+
right: 0
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=parse-wms-features.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-wms-features.js","names":["parseWMSFeatureInfo","text","options","parsedXML","XMLLoader","parseTextSync","xmlFeatureInfo","FeatureInfoResponse","FIELDS","xmlFeatures","Array","isArray","features","map","xmlFeature","extractFeature","xmlFields","attributes","type","bounds","bottom","top","left","right"],"sources":["../../../../../src/lib/parsers/wms/parse-wms-features.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLLoader} from '@loaders.gl/xml';\n\n/** WMS Feature info - response to a WMS `GetFeatureInfo` request */\nexport type WMSFeatureInfo = {\n features: WMSFeature[];\n};\n\nexport type WMSFeature = {\n attributes: Record<string, number | string>;\n type: string;\n bounds: {top: number; bottom: number; left: number; right: number};\n};\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 // TODO - not correct\n return {\n attributes: xmlFields,\n type: '',\n bounds: {bottom: 0, top: 0, left: 0, right: 0}\n };\n}\n"],"mappings":";;;;;;AAEA;;AAiBO,SAASA,mBAAmB,CAACC,IAAY,EAAEC,OAAO,EAAkB;EAAA;EACzE,IAAMC,SAAS,GAAGC,cAAS,CAACC,aAAa,CAACJ,IAAI,EAAEC,OAAO,CAAC;EACxD,IAAMI,cAAmB,GAAG,0BAAAH,SAAS,CAACI,mBAAmB,0DAA7B,sBAA+BC,MAAM,KAAI,EAAE;EAEvE,IAAMC,WAAW,GAAGC,KAAK,CAACC,OAAO,CAACL,cAAc,CAAC,GAAGA,cAAc,GAAG,CAACA,cAAc,CAAC;EAErF,OAAO;IACLM,QAAQ,EAAEH,WAAW,CAACI,GAAG,CAAC,UAACC,UAAU;MAAA,OAAKC,cAAc,CAACD,UAAU,CAAC;IAAA;EACtE,CAAC;AACH;AAEA,SAASC,cAAc,CAACD,UAAe,EAAE;EACvC,IAAME,SAAS,GAAGF,UAAU,IAAI,CAAC,CAAC;EAElC,OAAO;IACLG,UAAU,EAAED,SAAS;IACrBE,IAAI,EAAE,EAAE;IACRC,MAAM,EAAE;MAACC,MAAM,EAAE,CAAC;MAAEC,GAAG,EAAE,CAAC;MAAEC,IAAI,EAAE,CAAC;MAAEC,KAAK,EAAE;IAAC;EAC/C,CAAC;AACH"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseWMSLayerDescription = parseWMSLayerDescription;
|
|
7
|
+
var _xml = require("@loaders.gl/xml");
|
|
8
|
+
|
|
9
|
+
function parseWMSLayerDescription(text, options) {
|
|
10
|
+
var parsedXML = _xml.XMLLoader.parseTextSync(text, options);
|
|
11
|
+
return parsedXML;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=parse-wms-layer-description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-wms-layer-description.js","names":["parseWMSLayerDescription","text","options","parsedXML","XMLLoader","parseTextSync"],"sources":["../../../../../src/lib/parsers/wms/parse-wms-layer-description.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLLoader} from '@loaders.gl/xml';\n\n/** Layer description - response to a WMS `DescribeLayer` request */\nexport type WMSLayerDescription = {\n layers: {}[];\n};\n\n/**\n * Parses a typed data structure from raw XML for `GetFeatureInfo` response\n * @note Error handlings is fairly weak\n */\nexport function parseWMSLayerDescription(text: string, options): WMSLayerDescription {\n const parsedXML = XMLLoader.parseTextSync(text, options);\n // TODO - implement parser\n return parsedXML as unknown as WMSLayerDescription;\n}\n"],"mappings":";;;;;;AAEA;;AAWO,SAASA,wBAAwB,CAACC,IAAY,EAAEC,OAAO,EAAuB;EACnF,IAAMC,SAAS,GAAGC,cAAS,CAACC,aAAa,CAACJ,IAAI,EAAEC,OAAO,CAAC;EAExD,OAAOC,SAAS;AAClB"}
|