diff --git a/web/client/api/WMS.js b/web/client/api/WMS.js index daab697a9c..702394e215 100644 --- a/web/client/api/WMS.js +++ b/web/client/api/WMS.js @@ -63,12 +63,23 @@ export const extractCredits = attribution => { }; }; - export const flatLayers = (root) => { - return root.Layer ? (isArray(root.Layer) && root.Layer || [root.Layer]).reduce((previous, current) => { - return previous.concat(flatLayers(current)).concat(current.Layer && current.Name ? [current] : []); - }, []) : root.Name && [root] || []; + const rootLayer = root.Layer ?? root.layer; + const rootName = root.Name ?? root.name; + return rootLayer + ? (castArray(rootLayer)) + .reduce((acc, current) => { + const currentLayer = current.Layer ?? current.layer; + const currentName = current.Name ?? current.name; + return [ + ...acc, + ...flatLayers(current), + ...(currentLayer && currentName ? [current] : []) + ]; + }, []) + : rootName && [root] || []; }; + export const getOnlineResource = (c) => { return c.Request && c.Request.GetMap && c.Request.GetMap.DCPType && c.Request.GetMap.DCPType.HTTP && c.Request.GetMap.DCPType.HTTP.Get && c.Request.GetMap.DCPType.HTTP.Get.OnlineResource && c.Request.GetMap.DCPType.HTTP.Get.OnlineResource.$ || undefined; }; diff --git a/web/client/api/__tests__/WMS-test.js b/web/client/api/__tests__/WMS-test.js index f32d56e68b..4ffca2228e 100644 --- a/web/client/api/__tests__/WMS-test.js +++ b/web/client/api/__tests__/WMS-test.js @@ -207,6 +207,54 @@ describe('Test correctness of the WMS APIs', () => { const capability = API.parseLayerCapabilities(capabilities, {name: 'mytest'}); expect(capability).toExist(); }); + it('should parse nested layers from capabilities', () => { + expect(API.flatLayers({ + Layer: { + Name: 'layer1', + Layer: { + Name: 'layer2', + Layer: { + Name: 'layer3', + Layer: { + Name: 'layer4', + Layer: { + Name: 'layer5' + } + } + } + } + } + })).toEqual([ + { Name: 'layer5' }, + { Name: 'layer4', Layer: { Name: 'layer5' } }, + { Name: 'layer3', Layer: { Name: 'layer4', Layer: { Name: 'layer5' } } }, + { Name: 'layer2', Layer: { Name: 'layer3', Layer: { Name: 'layer4', Layer: { Name: 'layer5' } } } }, + { Name: 'layer1', Layer: { Name: 'layer2', Layer: { Name: 'layer3', Layer: { Name: 'layer4', Layer: { Name: 'layer5' } } } } } + ]); + expect(API.flatLayers({ + layer: { + name: 'layer1', + layer: { + name: 'layer2', + layer: { + name: 'layer3', + layer: { + name: 'layer4', + layer: { + name: 'layer5' + } + } + } + } + } + })).toEqual([ + { name: 'layer5' }, + { name: 'layer4', layer: { name: 'layer5' } }, + { name: 'layer3', layer: { name: 'layer4', layer: { name: 'layer5' } } }, + { name: 'layer2', layer: { name: 'layer3', layer: { name: 'layer4', layer: { name: 'layer5' } } } }, + { name: 'layer1', layer: { name: 'layer2', layer: { name: 'layer3', layer: { name: 'layer4', layer: { name: 'layer5' } } } } } + ]); + }); }); describe('Test correctness of the WMS APIs (mock axios)', () => { diff --git a/web/client/epics/__tests__/catalog-test.js b/web/client/epics/__tests__/catalog-test.js index c08c90f587..485de89dde 100644 --- a/web/client/epics/__tests__/catalog-test.js +++ b/web/client/epics/__tests__/catalog-test.js @@ -22,7 +22,7 @@ const { } = catalog(API); import {SHOW_NOTIFICATION} from '../../actions/notifications'; import {SET_CONTROL_PROPERTY, toggleControl} from '../../actions/controls'; -import {ADD_LAYER, CHANGE_LAYER_PROPERTIES, selectNode} from '../../actions/layers'; +import {ADD_LAYER, CHANGE_LAYER_PROPERTIES, selectNode, SHOW_LAYER_METADATA} from '../../actions/layers'; import {PURGE_MAPINFO_RESULTS, HIDE_MAPINFO_MARKER} from '../../actions/mapInfo'; import {testEpic, addTimeoutEpic, TEST_TIMEOUT} from './epicTestUtils'; import { @@ -65,7 +65,101 @@ describe('catalog Epics', () => { } }); }); + it('should return metadata TC211 with getMetadataRecordById (mapserver)', (done) => { + testEpic(getMetadataRecordById, 2, initAction({ + xmlNamespaces: { + gmd: 'http://www.isotc211.org/2005/gmd', + srv: 'http://www.isotc211.org/2005/srv', + gco: 'http://www.isotc211.org/2005/gco', + gmx: 'http://www.isotc211.org/2005/gmx', + gfc: 'http://www.isotc211.org/2005/gfc', + gts: 'http://www.isotc211.org/2005/gts', + gml: 'http://www.opengis.net/gml' + }, + extractors: [{ + layersRegex: '^opendata_raw$', + properties: { + title: '/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString' + } + }] + }), (actions) => { + try { + const [ + showLayerMetadataEmptyAction, + showLayerMetadataResponseAction + ] = actions; + expect(showLayerMetadataEmptyAction.type).toBe(SHOW_LAYER_METADATA); + expect(showLayerMetadataEmptyAction.maskLoading).toBe(true); + expect(showLayerMetadataEmptyAction.metadataRecord).toEqual({}); + expect(showLayerMetadataResponseAction.type).toBe(SHOW_LAYER_METADATA); + expect(showLayerMetadataResponseAction.maskLoading).toBe(false); + expect(showLayerMetadataResponseAction.metadataRecord).toEqual({ title: 'Images brutes en open data' }); + } catch (e) { + done(e); + } + done(); + }, { + layers: { + selected: ["opendata_raw"], + flat: [{ + id: "opendata_raw", + name: "opendata_raw", + type: "wms", + url: "base/web/client/test-resources/wms/getCapabilities-mapserver.xml" + }] + } + }); + }); + + it('should return metadata TC211 with getMetadataRecordById (mapproxy single)', (done) => { + testEpic(getMetadataRecordById, 2, initAction({ + xmlNamespaces: { + gmd: 'http://www.isotc211.org/2005/gmd', + srv: 'http://www.isotc211.org/2005/srv', + gco: 'http://www.isotc211.org/2005/gco', + gmx: 'http://www.isotc211.org/2005/gmx', + gfc: 'http://www.isotc211.org/2005/gfc', + gts: 'http://www.isotc211.org/2005/gts', + gml: 'http://www.opengis.net/gml' + }, + extractors: [{ + layersRegex: '^cadastre$', + properties: { + title: '/gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString' + } + }] + }), (actions) => { + try { + const [ + showLayerMetadataEmptyAction, + showLayerMetadataResponseAction + ] = actions; + expect(showLayerMetadataEmptyAction.type).toBe(SHOW_LAYER_METADATA); + expect(showLayerMetadataEmptyAction.maskLoading).toBe(true); + expect(showLayerMetadataEmptyAction.metadataRecord).toEqual({}); + expect(showLayerMetadataResponseAction.type).toBe(SHOW_LAYER_METADATA); + expect(showLayerMetadataResponseAction.maskLoading).toBe(false); + expect(showLayerMetadataResponseAction.metadataRecord).toEqual({ + metadataUrl: 'https://ids.craig.fr/geocat/srv/api/records/3bedb35a-a9ba-4f48-8796-de127becd578', + title: 'Plan Cadastral Informatisé (PCI) au format vecteur - Auvergne-Rhône-Alpes - 01/2022' + }); + } catch (e) { + done(e); + } + done(); + }, { + layers: { + selected: ["cadastre"], + flat: [{ + id: "cadastre", + name: "cadastre", + type: "wms", + url: "base/web/client/test-resources/wms/getCapabilities-mapproxy-singlelayer.xml" + }] + } + }); + }); it('autoSearchEpic', (done) => { const NUM_ACTIONS = 1; testEpic(autoSearchEpic, NUM_ACTIONS, changeText(""), (actions) => { diff --git a/web/client/epics/catalog.js b/web/client/epics/catalog.js index 949706a222..a26ce33c3b 100644 --- a/web/client/epics/catalog.js +++ b/web/client/epics/catalog.js @@ -64,10 +64,10 @@ import { buildSRSMap, extractOGCServicesReferences } from '../utils/CatalogUtils'; -import { getSupportedFormat, getCapabilities, describeLayers } from '../api/WMS'; +import { getSupportedFormat, getCapabilities, describeLayers, flatLayers } from '../api/WMS'; import CoordinatesUtils from '../utils/CoordinatesUtils'; import ConfigUtils from '../utils/ConfigUtils'; -import {getCapabilitiesUrl, getLayerId, getLayerUrl} from '../utils/LayersUtils'; +import {getCapabilitiesUrl, getLayerId, getLayerUrl, removeWorkspace } from '../utils/LayersUtils'; import { wrapStartStop } from '../observables/epics'; import {zoomToExtent} from "../actions/map"; import CSW from '../api/CSW'; @@ -338,13 +338,16 @@ export default (API) => ({ return Rx.Observable.defer(() => getCapabilities(getCapabilitiesUrl(layer))) .switchMap((caps) => { - const layersXml = get(caps, 'capability.layer.layer', []); - const metadataUrls = layersXml.length === 1 ? layersXml[0].metadataURL : find(layersXml, l => l.name === layer.name.split(':')[1]); + const layersXml = flatLayers(caps.capability); + const metadataUrls = (layersXml.length === 1 + ? layersXml[0].metadataURL + : find(layersXml, l => removeWorkspace(l.name) === removeWorkspace(layer.name))?.metadataURL) + || []; const metadataUrl = get(find(metadataUrls, mUrl => isString(mUrl.type) && - mUrl.type.toLowerCase() === 'iso19115:2003' && + (mUrl.type.toLowerCase() === 'iso19115:2003' || mUrl.type.toLowerCase() === 'tc211') && (mUrl.format === 'application/xml' || mUrl.format === 'text/xml')), 'onlineResource.href'); const metadataUrlHTML = get(find(metadataUrls, mUrl => isString(mUrl.type) && - mUrl.type.toLowerCase() === 'iso19115:2003' && + (mUrl.type.toLowerCase() === 'iso19115:2003' || mUrl.type.toLowerCase() === 'tc211') && mUrl.format === 'text/html'), 'onlineResource.href'); const extractor = find(get(metadataOptions, 'extractors', []), ({properties, layersRegex}) => { diff --git a/web/client/epics/layers.js b/web/client/epics/layers.js index 2a9bf5ba76..a01bece517 100644 --- a/web/client/epics/layers.js +++ b/web/client/epics/layers.js @@ -26,7 +26,7 @@ import { getLayersWithDimension, layerSettingSelector, getLayerFromId } from '.. import { setControlProperty } from '../actions/controls'; import { initialSettingsSelector, originalSettingsSelector } from '../selectors/controls'; import { basicError } from '../utils/NotificationUtils'; -import { getCapabilitiesUrl, getLayerTitleTranslations} from '../utils/LayersUtils'; +import { getCapabilitiesUrl, getLayerTitleTranslations, removeWorkspace } from '../utils/LayersUtils'; import assign from 'object-assign'; import { isArray, head } from 'lodash'; @@ -38,13 +38,6 @@ export const getUpdates = (updates, options) => { }, {}); }; -export const removeWorkspace = (layer) => { - if (layer.indexOf(':') !== -1) { - return layer.split(':')[1]; - } - return layer; -}; - /** * Runs refresh requests for all requested layers and accumulates results * @memberof epics.layers diff --git a/web/client/test-resources/csw/3bedb35a-a9ba-4f48-8796-de127becd578.xml b/web/client/test-resources/csw/3bedb35a-a9ba-4f48-8796-de127becd578.xml new file mode 100644 index 0000000000..59a827c625 --- /dev/null +++ b/web/client/test-resources/csw/3bedb35a-a9ba-4f48-8796-de127becd578.xml @@ -0,0 +1,726 @@ + + + + 3bedb35a-a9ba-4f48-8796-de127becd578 + + + fre + + + + + + + + + Jeu de données + + + + + Direction Générale des Finances Publiques (DGFiP) + + + + + + + + + + Bureau GF-3A + + + Bâtiment Turgot + + + 86-92, rue de Bercy + + + Paris cedex 12 + + + 75572 + + + France + + + + + Logo + + + + + + + + + + 2020-12-07T09:00:40 + + + ISO 19115:2003/19139 + + + 1.0 + + + + + + + + + + + + + + + + + RGF93 / Lambert-93 (EPSG:2154) + + + EPSG + + + 7.4 + + + + + + + + + + + + + + Plan Cadastral Informatisé (PCI) au format vecteur - Auvergne-Rhône-Alpes - 01/2022 + + + + + 2022-01-01T00:00:00 + + + + + + + + + + FR-130004955-DGFiP_2019_PCI_VECTEUR + + + + + + + + + + Le plan cadastral est un document administratif qui propose l’unique plan parcellaire à grande échelle couvrant le territoire national. Le plan cadastral d’une commune est découpé en sections, elles-mêmes pouvant être découpées en subdivisions de sections, communément appelées « feuilles de plan ». La section cadastrale est une portion du territoire communal dont le périmètre est généralement constitué par des limites présentant un caractère relativement stable sur le terrain (route, chemins, cours d’eau…). La parcelle est l’unité cadastrale de base. C’est un terrain d’un seul tenant situé dans un même lieudit et appartenant à un même propriétaire. Le plan cadastral au format vecteur est issu majoritairement de numérisation du plan cadastral papier ou raster réalisée dans le cadre de conventions avec les collectivités territoriales. Dans une moindre mesure, il a été confectionné directement au format numérique dans le cadre de la production de plans cadastraux neufs (procédure du remaniement prévue par la loi n° 78-645 du 18 juillet 1974) ou d’aménagements fonciers agricoles et forestiers (communément désignés sous le terme « remembrements »). Les plans cadastraux au format vecteur en France métropolitaine sont actuellement géoréférencés dans le système légal (RGF93) à l’aide des projections « coniques conformes 9 zones ». Le géoréférencement des plans vecteur a pu être obtenu : - lors de leur confection (cas des plans cadastraux très récents) ; - après transformation de leurs coordonnées exprimées dans la projection Lambert zones ; - lors de leur vectorisation (cas des plans non initialement géoréférencés). + +Les fichiers compressés sont accessibles au format EDIGEO. +Les données sont également proposées au format DXF PCI et GeoPackage + + + Le but premier du plan cadastral est d'identifier, de localiser et représenter la propriété foncière, ainsi que de servir à l'assise de la fiscalité locale des propriétés non bâties. Par suite, l’article 110 de la loi n° 2009-526 du 12 mai 2009, abrogé et recodifié par l'Ordonnance n° 2010-1232 du 21 octobre 2010 à l'article L127-10 -I du Code de l'environnement dispose qu'en matière de découpage parcellaire et de représentation du bâti, le plan cadastral est la donnée de référence. + + + + + + + + Direction Générale des Finances Publiques (DGFiP) + + + + + + + + + + Bureau GF-3A + + + Bâtiment Turgot + + + 86-92, rue de Bercy + + + Paris cedex 12 + + + 75572 + + + France + + + + + Logo + + + + + + + + + + + + Centre Régional Auvergne-Rhône-Alpes de l'Information Géographique (CRAIG) + + + + + + + 09 72 62 25 31 + + + 04 73 40 75 61 + + + + + + + Hôtel de Région de Clermont-Ferrand + + + 59 boulevard Léon Jouhaux + + + CS 90 706 + + + Clermont-Ferrand + + + 63050 + + + France + + + contact@craig.fr + + + + + Logo + + + + + + + + + + + + + + + + + + + https://ids.craig.fr/geocat/srv/api/records/3bedb35a-a9ba-4f48-8796-de127becd578/attachments/vignette_pci.jpg + + + vignette_pci.jpg + + + + + + + bâtiments + + + adresses + + + parcelles cadastrales + + + hydrographie + + + réseaux de transport + + + unités administratives + + + référentiels de coordonnées + + + + + + + + external.theme.inspire + + + + + + + + + + Parcelles cadastrales + + + + + + + + GEMET - INSPIRE themes, version 1.0 + + + + + 2008-06-01 + + + + + + + + + + geonetwork.thesaurus.external.theme.inspire-theme + + + + + + + + + + + Mentions obligatoires : "source : Direction Générale des Finances Publiques – cadastre ; mise à jour : AAAAMM" + + + + + + + + + + + + + + + + + + 250 + + + + + + + + + + + 500 + + + + + + + + + + + 650 + + + + + + + + + + + 1000 + + + + + + + + + + + 1250 + + + + + + + + + + + 2000 + + + + + + + + + + + 2500 + + + + + + + + + + + 4000 + + + + + + + + + + + 5000 + + + + + + + + + + + 8000 + + + + + + + + + + + 10000 + + + + + + + + + + + 15000 + + + + + + + + + + + + + planningCadastre + + + + + Auvergne Rhône-Alpes + + + + + 2.045 + + + 7.16 + + + 44.127 + + + 46.807 + + + + + + + La légende du plan cadastral est consultable sur: http://www.cadastre.gouv.fr/scpc/pdf/legendes/FR_fr/Legende%20du%20plan%20sur%20internet.pdf + + + + + + + + + DXF + + + 12.0 + + + DXF-PCI + + + + + + + EDIGEO + + + 1.0 + + + NF Z 52-000 + + + + + + + ESRI Shapefile + + + 1.0 + + + + + + + + + Direction Générale des Finances Publiques (DGFiP) + + + + + + + bureau.gf3a@dgfip.finances.gouv.fr + + + + + + + + + + + + + + + + + + http://www.cadastre.gouv.fr + + + WWW:LINK-1.0-http--link + + + cadastre.gouv.fr + + + cadastre.gouv.fr : service de consultation du plan cadastral + + + + + + + https://www.craig.fr/fr/produit/3654-plan-cadastral-informatise-pci + + + WWW:LINK-1.0-http--link + + + Fiche produit sur le site du CRAIG + + + + + + + https://cadastre.data.gouv.fr/ + + + WWW:LINK-1.0-http--link + + + https://cadastre.data.gouv.fr/ + + + https://cadastre.data.gouv.fr/ + + + + + + + + + + + + + + + + + + + + + + + + + + + INSPIRE Implementing rules + + + + + 2010-11-30T00:00:00 + + + + + + + + + + 1.2 + + + INSPIRE + + + + + + + Ressource concernée par INSPIRE + + + false + + + + + + + + + Les plans cadastraux au format vecteur gérés et exportés par les services de la DGFiP ont été confectionnées à partir de levers terrain. Selon les feuilles de plan, les conditions de vectorisation et de géoréférencement sont diverses. Ces informations sont disponibles sur les fiches de chacune des communes. Les plans cadastraux sont de plusieurs types : - plans dits « mis à jour » : ce sont des plans cadastraux mis à jour à partir de la trame des plans cadastraux napoléoniens. Ce ne sont pas des plans réguliers. Ces feuilles de plan sont identifiables par leur section à lettre unique (par exemple « section A »). Les échelles des feuilles de plan peuvent être variables et sont principalement aux échelles suivantes : 1/1250, 1/2500 et 1/5000 ; - plans dits « réguliers » : ce sont des plans qui ont été confectionnés lors de la rénovation du cadastre sans reprendre la trame des plans napoléoniens. Parmi ces plans, l’on distingue deux catégories : - les plans dits « renouvelés » : ce sont des plans qui n’ont pas fait l’objet lors de leur confection d’une délimitation contradictoire des propriétés sur le terrain ; - les plans « refaits » qui ont quant à eux fait l’objet d’une délimitation contradictoire des propriétés. Lorsque le plan cadastral n’est plus en mesure de répondre aux besoins (notamment en raison de son échelle ou de son imprécision éventuelle), il peut être refait selon la procédure du « remaniement » prévue par la loi n° 78-645 du 18 juillet 1974. Les plans cadastraux résultant d’opérations d’aménagements fonciers sont appelés « plans remembrés ». L’identifiant d’une feuille de plan est de la forme : « DDCCCPPPSSNN » où : - « DD » est le numéro du département ; - « CCC » le code INSEE de la commune ; - « PPP » le préfixe de section. Par défaut ce préfixe est égale à « 000 » sauf dans les cas suivants : - en cas d’absorption de commune, ce préfixe a pour valeur le code INSEE de la commune absorbée ; - en cas de communes à arrondissements, ce préfixe contient le code de l’arrondissement (pour Paris de 101 à 120, pour Lyon de 381 à 389, pour Marseille de 201 à 216, dans le cas de la ville de Toulouse il s’agit du code de quartier prenant les valeurs de 801 à 846) - « SS » est la désignation de la section « cadastrale » (en cas de lettre de section unique, la lettre de section est précédée du chiffre « 0 » par exemple « section 0A ») ; - « NN » est le numéro de la feuille (« 01 » par défaut) + + + + + + \ No newline at end of file diff --git a/web/client/test-resources/csw/mapserver-metadata.xml b/web/client/test-resources/csw/mapserver-metadata.xml new file mode 100644 index 0000000000..3be6db557a --- /dev/null +++ b/web/client/test-resources/csw/mapserver-metadata.xml @@ -0,0 +1,294 @@ + + + + opendata_raw + + + en-US + + + dataset + + + + + Landry BREUIL + + + CRAIG + + + root + + + + + + + 04 73 40 54 09 + + + 04 73 40 54 06 + + + + + + + 7, avenue Blaise Pascal + + + Aubière + + + Auvergne + + + 63117 + + + France + + + admin@craig.fr + + + + + + + https://wfs.craig.fr/ortho + + + + + + + pointOfContact + + + + + + ISO 19115:2003 - Geographic information - Metadata + + + ISO 19115:2003 + + + + + geometryOnly + + + + + surface + + + + + + + + + + + EPSG:2154 + + + http://www.epsg-registry.org + + + 6.14 + + + + + + + + + + + Images brutes en open data + + + + + 2011 + + + publication + + + + + + + Dallage des images brutes en open data + + + en-US + + + + + + + 1.974054 + + + 4.590701 + + + 44.548020 + + + 46.843671 + + + + + + + + + + + + + + + Landry BREUIL + + + CRAIG + + + root + + + + + + + 04 73 40 54 09 + + + 04 73 40 54 06 + + + + + + + 7, avenue Blaise Pascal + + + Aubière + + + Auvergne + + + 63117 + + + France + + + admin@craig.fr + + + + + + + https://wfs.craig.fr/ortho + + + + + + + pointOfContact + + + + + + + + + KB + + + + + https://wfs.craig.fr/ortho?service=WMS&version=1.3.0&request=GetMap&width=500&height=300&styles=&layers=opendata_raw&format=image/png&crs=EPSG:2154&bbox=6384388.000000,621812.000000,6638168.000000,821238.000000 + + + WWW:DOWNLOAD-1.0-http-get-map + + + opendata_raw + + + PNG Format + + + + + + + https://wfs.craig.fr/ortho?service=WMS&version=1.3.0&request=GetMap&width=500&height=300&styles=&layers=opendata_raw&format=image/jpeg&crs=EPSG:2154&bbox=6384388.000000,621812.000000,6638168.000000,821238.000000 + + + WWW:DOWNLOAD-1.0-http-get-map + + + opendata_raw + + + JPEG Format + + + + + + + https://wfs.craig.fr/ortho?service=WFS&version=1.1.0&request=GetFeature&typename=opendata_raw&outputformat=GML2 + + + WWW:DOWNLOAD-1.0-http--download + + + opendata_raw + + + GML2 Format + + + + + + + https://wfs.craig.fr/ortho?service=WFS&version=1.1.0&request=GetFeature&typename=opendata_raw&outputformat=GML3 + + + WWW:DOWNLOAD-1.0-http--download + + + opendata_raw + + + GML3 Format + + + + + + + + diff --git a/web/client/test-resources/wms/getCapabilities-mapproxy-singlelayer.xml b/web/client/test-resources/wms/getCapabilities-mapproxy-singlelayer.xml new file mode 100644 index 0000000000..a3b42ae7b6 --- /dev/null +++ b/web/client/test-resources/wms/getCapabilities-mapproxy-singlelayer.xml @@ -0,0 +1,137 @@ + + + + WMS + Service tuilé de consultation (WMS, WMTS) du Plan Cadastral Informatisé vecteur sur la région Auvergne-Rhône-Alpes + Les tuiles ont été produites à partir du PCI vecteur sur les communes vectorisées de la région Auvergne-Rhône-Alpes + + Cadastral Parcels + infoMapAccessService + planningCadastre + DGFIP + cadastre + PCI vecteur + Auvergne-Rhône-Alpes + OGC:WMS + WMS 1.3.0 + WMTS 1.0.0 + Service d'accès aux cartes + CRAIG + tiles.craig.fr + tiles.craig.fr/pci/service + + + + + Landry Breuil + CRAIG + + Administrateur de donnees + + postal +
7, avenue Blaise Pascal
+ Aubiere + + 63117 + France +
+ + + admin@craig.fr +
+ None + Les tuiles sont disponibles en opendata sous licence ouverte + 4000 + 4000 +
+ + + + text/xml + + + + + + + + image/png + + + + + + + + text/plain + text/html + text/xml + + + + + + + + image/png + + + + + + + + + XML + INIMAGE + BLANK + + + cadastre + PCI vecteur Avril 2021 + PCI vecteur Avril 2021 sur les communes vectorisées + EPSG:2154 + EPSG:4326 + CRS:84 + EPSG:4258 + EPSG:900913 + EPSG:3857 + EPSG:3945 + EPSG:3946 + + -180 + 180 + -85.0511287798066 + 85.0511287798066 + + + + + + + ©DGFIP 2021 + + + image/svg + + + + + text/xml + + + + text/html + + + + + +
diff --git a/web/client/test-resources/wms/getCapabilities-mapserver.xml b/web/client/test-resources/wms/getCapabilities-mapserver.xml new file mode 100644 index 0000000000..03214b9c39 --- /dev/null +++ b/web/client/test-resources/wms/getCapabilities-mapserver.xml @@ -0,0 +1,1843 @@ + + + + + + + WMS + Service de consultation (WMS) des orthophotographies 1996/2020 du CRAIG et de ses partenaires + Ce service wms permet de co-visualiser l'ensemble des orthophotographies produites par le CRAIG et ses partenaires entre 1996 et 2020 sur la région Auvergne-Rhône-Alpes. Projet co-financé par l'Union européenne - fonds européen de développement régional FEDER - L'Europe s'engage en Auvergne-Rhône-Alpes. Pour les données de 2009/2010, 2013, 2016, 2018, 2019 et 2020, il est conseillé d'utiliser le service de flux tuilé sur http://tiles.craig.fr/ortho/service? + + OrthoImagery + imageryBaseMapsEarthCover + Orthophotographie + OpenData + OGC:WMS + WMS 1.1.1 + WMS 1.3.0 + wms.craig.fr + wms.craig.fr/ortho + infoMapAccessService + + + + + Landry BREUIL + CRAIG + + root + + postal +
7, avenue Blaise Pascal
+ Aubière + Auvergne + 63117 + France +
+ 04 73 40 54 09 + 04 73 40 54 06 + admin@craig.fr +
+ None + Accès Libre + 3600 + 3600 +
+ + + + + text/xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + image/vnd.jpeg-png + image/vnd.jpeg-png8 + application/x-pdf + image/svg+xml + image/tiff + application/vnd.google-earth.kml+xml + application/vnd.google-earth.kmz + application/x-protobuf + application/json + + + + + + + + + application/json + application/vnd.ogc.gml + text/plain + + + + + + + + + text/xml + + + + + + + + + image/png + image/jpeg + image/png; mode=8bit + image/vnd.jpeg-png + image/vnd.jpeg-png8 + + + + + + + + + text/xml + + + + + + + + + + XML + INIMAGE + BLANK + + + + ortho_craig_partenaires_1996_2018 + Service de consultation (WMS) des orthophotographies 1996/2020 du CRAIG et de ses partenaires + Ce service wms permet de co-visualiser l'ensemble des orthophotographies produites par le CRAIG et ses partenaires entre 1996 et 2020 sur la région Auvergne-Rhône-Alpes. Projet co-financé par l'Union européenne - fonds européen de développement régional FEDER - L'Europe s'engage en Auvergne-Rhône-Alpes. Pour les données de 2009/2010, 2013, 2016, 2018, 2019 et 2020, il est conseillé d'utiliser le service de flux tuilé sur http://tiles.craig.fr/ortho/service? + + OrthoImagery + imageryBaseMapsEarthCover + Orthophotographie + OpenData + OGC:WMS + WMS 1.1.1 + WMS 1.3.0 + wms.craig.fr + wms.craig.fr/ortho + infoMapAccessService + + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 1.94095 + 6.50183 + 44.5039 + 46.8512 + + + + ©CRAIG + + + image/svg + + + + + ortho + Orthophotographies 2018-2020 + Orthophotographies à 20 cm de résolution (2020 sur le Cantal, 2019 sur l'Allier/Haute-Loire/Loire/Puy-de-Dôme, 2018 sur l'Ain et l'Isère) + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.49405 + 44.5558 + 46.8219 + + + + text/xml + + + + + ortho_irc + Orthophotographies IRC 2018-2020 + Orthophotographies IRC à 20 cm de résolution (2020 sur le Cantal, 2019 sur l'Allier/Haute-Loire/Loire/Puy-de-Dôme, 2018 sur l'Ain et l'Isère) + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.49405 + 44.5558 + 46.8219 + + + + text/xml + + + + + ortho_wmst + Orthophotographies 1996-2020 (WMS TIME) + Orthophotographies à diverses résolutions sur l'Auvergne (ainsi que la Loire pour 2016 et 2019, et l'Ain et l'Isère pour 2018): Clermont Communauté 1996, 2001 et 2007, BD Ortho Auvergne IGN 1999-2002 et 2004-2009, Orthophotographie Auvergne CRAIG 2009-2010, 2013, 2016 et 2020. Utiliser le paramètre TIME du protocole WMS pour sélectionner un millésime + + 2.013 + 6.49405 + 44.5558 + 46.8219 + + + 1996-06-01,2000-07-01,2001-06-01,2005-07-01,2007-06-01,2009-07-01,2013-07-01,2016-07-01,2018-07-01,2019-07-01,2020-07-01 + + text/xml + + + 25000 + + + ortho_irc_wmst + Orthophotographies IRC 2009-2019 (WMS TIME) + Orthophotographies infrarouge à diverses résolutions sur l'Auvergne (ainsi que la Loire pour 2016 et 2019, et l'Ain et l'Isère pour 2018): 2009-2010, 2013, 2016, 2019 et 2020. Utiliser le paramètre TIME du protocole WMS pour sélectionner un millésime + + 2.013 + 6.49405 + 44.5558 + 46.8219 + + + 2009-07-01,2013-07-01,2016-07-01,2018-07-01,2019-07-01,2020-07-01 + + text/xml + + + 25000 + + + ortho_2020 + Orthophotographie Cantal 20cm 2020 + Orthophotographie à 20cm de résolution sur le Cantal + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.03984 + 3.38408 + 44.605 + 45.4915 + + + + text/xml + + + + + ortho_irc_2020 + Orthophotographie Cantal IRC 50cm 2020 + Orthophotographie infrarouge à 50cm de résolution sur le Cantal + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.03984 + 3.38408 + 44.605 + 45.4915 + + + + text/xml + + + + + ortho_2019 + Orthophotographie 20cm 2019 + Orthophotographie à 20cm de résolution sur l'Allier, la Loire, la Haute-Loire et le Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.26568 + 4.8093 + 44.7304 + 46.8061 + + + + text/xml + + + + + ortho_irc_2019 + Orthophotographie IRC 20cm 2019 + Orthophotographie infrarouge à 20cm de résolution sur l'Allier, la Loire, la Haute-Loire et le Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.26568 + 4.8093 + 44.7304 + 46.8061 + + + + text/xml + + + + + ortho_2018 + Orthophotographie 25cm 2018 + Orthophotographie à 25cm de résolution sur l'Ain et l'Isère + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 4.67923 + 6.47595 + 44.6705 + 46.5364 + + + + text/xml + + + + + ortho_irc_2018 + Orthophotographie IRC 25cm 2018 + Orthophotographie infrarouge à 25cm de résolution sur l'Ain et l'Isère + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 4.67923 + 6.47595 + 44.6705 + 46.5364 + + + + text/xml + + + + + ortho_2016 + Orthophotographie 25cm 2016 + Orthophotographie à 25cm de résolution sur l'Auvergne et la Loire + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.82622 + 44.5929 + 46.8219 + + + + text/xml + + + + + ortho_irc_2016 + Orthophotographie IRC 25cm 2016 + Orthophotographie infrarouge à 25cm de résolution sur l'Auvergne et la Loire + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.82622 + 44.5929 + 46.8219 + + + + text/xml + + + + + auvergne + Auvergne 25cm 2013 + Orthophotographie à 25cm de resolution sur la région Auvergne + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + auvergne_irc + Auvergne IRC 25cm 2013 + Orthophotographie infrarouge à 25cm de resolution sur la région Auvergne + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + agglos_2013 + Agglos 10cm 2013 + Orthophotographie à 10cm de résolution sur les agglomérations d'Aurillac, Clermont Communauté, Moulins, Montlucon, le Puy en Velay et Vichy + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.20128 + 4.09656 + 44.7638 + 46.7274 + + + + text/xml + + + + + auvergne_2009_2010 + Auvergne 30cm 2009/2010 + Orthophotographie à 30cm de résolution sur la region Auvergne + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + auvergne_irc_2009_2010 + Auvergne IRC 30cm 2009/2010 + Orthophotographie infrarouge à 30cm de résolution sur la région Auvergne + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + agglos_2009_2010 + Agglomérations 15cm 2009/2010 + Orthophotographie à 15cm de résolution sur les Agglomérations de Montlucon, Moulins, du Puy en Velay et de Vichy + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.39768 + 4.09656 + 44.8651 + 46.7274 + + + + text/xml + + + + + site_puy_de_dome_2011 + Site du Puy de Dôme 10cm Mars 2011 + Orthophotographie à 10cm de résolution sur le site du Puy de Dôme, Montaudoux et Colombier (projet Lidarverne) + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.92274 + 3.09014 + 45.7391 + 45.8111 + + + + text/xml + + + + + clermontco_1996 + Clermont Communauté 25cm 1996 + Orthophotographie à 25cm de résolution sur Clermont Communauté + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 3.01698 + 3.21422 + 45.6836 + 45.8525 + + + + text/xml + + + + + clermontco_2001 + Clermont Communauté 16cm 2001 + Orthophotographie à 16cm de résolution sur Clermont Communauté + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.94471 + 3.30541 + 45.6697 + 45.8752 + + + + text/xml + + + + + clermontco_2007 + Clermont Communauté 16cm 2007 + Orthophotographie à 16cm de résolution sur Clermont Communauté + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.93818 + 3.29882 + 45.6748 + 45.8695 + + + + text/xml + + + + + scot_rr_2020 + SCOT Rives du Rhône 2020 20cm + Orthophotographie à 20cm de résolution sur le territoire du SCOT des rives du Rhône + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 4.4236 + 5.16875 + 45.0746 + 45.6264 + + + + text/xml + + + + + scot_rr_2015 + SCOT Rives du Rhône 2015 20cm + Orthophotographie à 20cm de résolution sur le territoire du SCOT des rives du Rhône + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 4.42452 + 5.36113 + 45.1067 + 45.6264 + + + + text/xml + + + + + scot_rr_2009 + SCOT Rives du Rhône 2009 25cm + Orthophotographie à 25cm de résolution sur le territoire du SCOT des rives du Rhône + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 4.55317 + 5.10462 + 45.1658 + 45.6246 + + + + text/xml + + + + + Dallages + Dallages + + Région + Région + + dallage-all-ortho-rvb + Dallage des campagnes d'orthophotographie + Dallage de toutes les orthophotographies disponibles en flux - par millésimes et provenance + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + + dallage-all-ortho-irc + Dallage des campagnes d'orthophotographie infrarouge + Dallage de toutes les orthophotographies infrarouge disponibles en flux - par millésimes et provenance + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + + dallage-auvergne-2009 + Dallage Ortho Auvergne 2009/2010 + Dallage de l'orthophotographie 2009/2010 sur la région complète + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-auvergne-irc-2009 + Dallage Ortho Infrarouge Auvergne 2009/2010 + Dallage de l'orthophotographie infrarouge 2009/2010 sur la région complète + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + dallage-auvergne-2013 + Dallage Ortho Auvergne 2013 + Dallage de l'orthophotographie 2013 sur la région complète + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-auvergne-irc-2013 + Dallage Ortho Infrarouge Auvergne 2013 + Dallage de l'orthophotographie infrarouge 2013 sur la région complète + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + dallage-ortho-2016 + Dallage Ortho Auvergne + Loire 2016 + Dallage de l'orthophotographie 2016 sur la région auvergne et la loire + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-ortho-irc-2016 + Dallage Ortho Infrarouge Auvergne + Loire 2016 + Dallage de l'orthophotographie infrarouge 2016 sur la région auvergne et la loire + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + dallage-ortho-2018 + Dallage Ortho Isère + Ain 2018 + Dallage de l'orthophotographie 2018 sur les départements de l'isère et de l'ain + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-ortho-irc-2018 + Dallage Ortho Infrarouge Isère + Ain 2018 + Dallage de l'orthophotographie infrarouge 2018 sur les départements de l'isère et de l'ain + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + dallage-ortho-2019 + Dallage Ortho 03/42/43/63 2019 + Dallage de l'orthophotographie 2019 sur les départements de l'Allier, la Loire, la Haute-Loire et le Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-ortho-irc-2019 + Dallage Ortho Infrarouge 03/42/43/63 2019 + Dallage de l'orthophotographie infrarouge 2019 sur les départements de l'Allier, la Loire, la Haute-Loire et le Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + + Départements + Départements + + dallage-ortho-2020 + Dallage Ortho 15 2020 + Dallage de l'orthophotographie 2020 sur le département du Cantal + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-ortho-irc-2020 + Dallage Ortho Infrarouge 15 2020 + Dallage de l'orthophotographie infrarouge 2020 sur le département du Cantal + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 6.4934 + 44.5558 + 46.8219 + + + + text/xml + + + + + dallage-allier-2009 + Dallage Allier + Dallage de l'orthophotographie 2009 sur l'Allier + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.24907 + 4.03946 + 45.9123 + 46.8219 + + + + text/xml + + + + + dallage-cantal-2010 + Dallage Cantal + Dallage de l'orthophotographie 2010 sur le Cantal + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.03652 + 3.40013 + 44.6028 + 45.4982 + + + + text/xml + + + + + dallage-haute-loire-2010 + Dallage Haute-Loire + Dallage de l'orthophotographie 2010 sur la Haute-Loire + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 3.05367 + 4.51245 + 44.7183 + 45.4442 + + + + text/xml + + + + + dallage-pdd-2009 + Dallage Puy de Dome + Dallage de l'orthophotographie 2009 sur le Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.35404 + 4.02895 + 45.264 + 46.2681 + + + + text/xml + + + + + + Agglos + Agglos + + dallage-agglos-2009 + Dallage Ortho Agglos 2009/2010 + Dallage de l'orthophotographie 2009/2010 sur les agglomérations + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-agglos-2013 + Dallage Ortho Agglos 2013 + Dallage de l'orthophotographie 2013 sur les agglomérations + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-montlucon-2009 + Dallage Montlucon 2009 + Dallage de l'orthophotographie 2009 sur Montlucon + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.40103 + 2.6659 + 46.226 + 46.423 + + + + text/xml + + + + + dallage-moulins-2009 + Dallage Moulins 2009 + Dallage de l'orthophotographie 2009 sur Moulins + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 3.11384 + 3.58595 + 46.3747 + 46.7273 + + + + text/xml + + + + + dallage-vichy-2009 + Dallage Vichy 2009 + Dallage de l'orthophotographie 2009 sur Vichy + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 3.24872 + 3.57123 + 45.9966 + 46.2611 + + + + text/xml + + + + + dallage-le-puy-2010 + Dallage Le Puy 2010 + Dallage de l'orthophotographie 2010 sur Le Puy + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 3.61405 + 4.06556 + 44.8651 + 45.1453 + + + + text/xml + + + + + dallage-clerco-1996 + Dallage Ortho Clerco 1996 + Dallage de l'orthophotographie 1996 sur Clermont Communauté + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-clerco-2001 + Dallage Ortho Clerco 2001 + Dallage de l'orthophotographie 2001 sur Clermont Communauté + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-clerco-2007 + Dallage Ortho Clerco 2007 + Dallage de l'orthophotographie 2007 sur Clermont Communauté + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + + Autres + Autres + + dallage-site-puy-de-dome-2011 + Dallage Ortho Site Puy de Dome / Montaudoux / Colombier 2011 + Dallage de l'orthophotographie 2011 sur le site du Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.0123 + 6.49586 + 44.5131 + 46.8602 + + + + text/xml + + + + + dallage-mnt-site-puy-de-dome-2011 + Dallage MNT Site Puy de Dome / Montaudoux / Colombier 2011 + Dallage du MNT 2011 sur le site du Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.9163 + 3.0837 + 45.7391 + 45.8111 + + + + text/xml + + + + + dallage-lidar-site-puy-de-dome-2011 + Dallage LIDAR Site Puy de Dome / Montaudoux / Colombier 2011 + Dallage des données brutes LIDAR 2011 sur le site du Puy de Dôme + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.91952 + 3.09014 + 45.7368 + 45.8111 + + + + text/xml + + + + + + MNT + MNT + + dallage-mnt-auvergne-2009 + Dallage MNT Région + Dallage du MNT 2009/2010 sur la région complète + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + dallage-mnt-agglos-2009 + Dallage MNT Agglos + Dallage du MNT sur les agglomérations + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.39768 + 4.09656 + 44.8651 + 46.7274 + + + + text/xml + + + + + + Images Brutes + Images Brutes + + dallage-raw-auvergne-2009 + Dallage Images Brutes Région 2009/2010 + Dallage des images brutes 2009/2010 sur la région complète + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 1.97852 + 4.58041 + 44.572 + 46.8275 + + + + text/xml + + + + + dallage-raw-agglos-2009 + Dallage Images Brutes Agglos 2009/2010 + Dallage des images brutes 2009/2010 sur les agglomérations + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.38647 + 4.09656 + 44.8651 + 46.7274 + + + + text/xml + + + + + + Open data + Open data + + opendata_ortho + Ortho en open data + Dallages des orthophotographies en open data + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + + opendata_irc + Ortho infrarouge en open data + Dallages des orthophotographies infrarouge en open data + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + + opendata_mnt + MNT en open data + Dallages des MNT en open data + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 2.013 + 4.55088 + 44.5968 + 46.8219 + + + + text/xml + + + + + + opendata_lidar + LIDAR en open data + Dallage des LIDAR en open data + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 1.96036 + 4.64145 + 44.5767 + 45.8764 + + + + text/xml + + + + + + opendata_raw + Images brutes en open data + Dallage des images brutes en open data + EPSG:2154 + EPSG:4326 + EPSG:3785 + EPSG:3857 + EPSG:900913 + EPSG:4171 + EPSG:4258 + EPSG:3945 + EPSG:3946 + + 1.97405 + 4.5907 + 44.548 + 46.8437 + + + + text/xml + + + + + + + + +
diff --git a/web/client/utils/LayersUtils.js b/web/client/utils/LayersUtils.js index 5a173c5b51..3ea5292dbd 100644 --- a/web/client/utils/LayersUtils.js +++ b/web/client/utils/LayersUtils.js @@ -825,6 +825,18 @@ export const isTimelineVisible = (layers)=>{ return false; }; +/** + * Remove the workspace prefix from a geoserver layer name + * @param {string} full layer name with workspace + * @returns {string} layer name without workspace prefix + */ +export const removeWorkspace = (layer) => { + if (layer.indexOf(':') !== -1) { + return layer.split(':')[1]; + } + return layer; +}; + LayersUtils = { getGroupByName, getLayerId, diff --git a/web/client/utils/__tests__/LayersUtils-test.js b/web/client/utils/__tests__/LayersUtils-test.js index 61c837667d..6b75943114 100644 --- a/web/client/utils/__tests__/LayersUtils-test.js +++ b/web/client/utils/__tests__/LayersUtils-test.js @@ -1405,4 +1405,8 @@ describe('LayersUtils', () => { expect(flattenedGroups.length).toBe(7); }); }); + it('removeWorkspace', ()=>{ + expect(LayersUtils.removeWorkspace('workspace:layerName')).toBe('layerName'); + expect(LayersUtils.removeWorkspace('layerName')).toBe('layerName'); + }); }); diff --git a/web/client/utils/ogc/MS.js b/web/client/utils/ogc/MS.js new file mode 100644 index 0000000000..99b47f84a2 --- /dev/null +++ b/web/client/utils/ogc/MS.js @@ -0,0 +1,1248 @@ +/** + * Copyright 2022, Landry Breuil . + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. + */ +/** + * This definition of MS adds the mapserver vendor extension GetStyles to the possible WMS elements + * originally available in the ogc-schemas mappings. + * + * generated using java -jar node_modules/jsonix/lib/jsonix-schema-compiler-full.jar -p MS -b ms.xjb ms.xsd + * using those input files: + + * ms.xsd: + + + + + + + + * ms.xjb (taken from https://github.com/highsource/jsonix-schema-compiler/issues/83): + + + + + + + + + + */ + +// Disable ESLint because the file was generated by jsonix tools +/* eslint-disable */ +var MS_Module_Factory = function () { + var MS = { + name: 'MS', + defaultElementNamespaceURI: 'http:\/\/www.opengis.net\/wms', + defaultAttributeNamespaceURI: 'http:\/\/www.w3.org\/1999\/xlink', + typeInfos: [{ + localName: 'ArcType', + typeName: { + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink', + localPart: 'arcType' + }, + propertyInfos: [{ + name: 'locatorTitle', + minOccurs: 0, + collection: true, + elementName: { + localPart: 'title', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.TitleEltType' + }, { + name: 'type', + required: true, + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'arcrole', + type: 'attribute' + }, { + name: 'title', + type: 'attribute' + }, { + name: 'show', + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'actuate', + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'from', + typeInfo: 'NCName', + type: 'attribute' + }, { + name: 'to', + typeInfo: 'NCName', + type: 'attribute' + }] + }, { + localName: 'LocatorType', + typeName: { + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink', + localPart: 'locatorType' + }, + propertyInfos: [{ + name: 'locatorTitle', + minOccurs: 0, + collection: true, + elementName: { + localPart: 'title', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.TitleEltType' + }, { + name: 'type', + required: true, + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'href', + required: true, + type: 'attribute' + }, { + name: 'role', + type: 'attribute' + }, { + name: 'title', + type: 'attribute' + }, { + name: 'label', + typeInfo: 'NCName', + type: 'attribute' + }] + }, { + localName: 'WMSCapabilities', + typeName: null, + propertyInfos: [{ + name: 'service', + required: true, + elementName: 'Service', + typeInfo: '.Service' + }, { + name: 'capability', + required: true, + elementName: 'Capability', + typeInfo: '.Capability' + }, { + name: 'version', + attributeName: { + localPart: 'version' + }, + type: 'attribute' + }, { + name: 'updateSequence', + attributeName: { + localPart: 'updateSequence' + }, + type: 'attribute' + }] + }, { + localName: 'Post', + typeName: null, + propertyInfos: [{ + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }] + }, { + localName: 'DCPType', + typeName: null, + propertyInfos: [{ + name: 'http', + required: true, + elementName: 'HTTP', + typeInfo: '.HTTP' + }] + }, { + localName: 'Simple', + typeName: { + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink', + localPart: 'simple' + }, + propertyInfos: [{ + name: 'content', + collection: true, + type: 'anyElement' + }, { + name: 'type', + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'href', + type: 'attribute' + }, { + name: 'role', + type: 'attribute' + }, { + name: 'arcrole', + type: 'attribute' + }, { + name: 'title', + type: 'attribute' + }, { + name: 'show', + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'actuate', + typeInfo: 'Token', + type: 'attribute' + }] + }, { + localName: 'DataURL', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + elementName: 'Format' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }] + }, { + localName: 'StyleSheetURL', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + elementName: 'Format' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }] + }, { + localName: 'LegendURL', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + elementName: 'Format' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }, { + name: 'width', + typeInfo: 'PositiveInteger', + attributeName: { + localPart: 'width' + }, + type: 'attribute' + }, { + name: 'height', + typeInfo: 'PositiveInteger', + attributeName: { + localPart: 'height' + }, + type: 'attribute' + }] + }, { + localName: 'MetadataURL', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + elementName: 'Format' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }, { + name: 'type', + required: true, + typeInfo: 'NMToken', + attributeName: { + localPart: 'type' + }, + type: 'attribute' + }] + }, { + localName: 'AuthorityURL', + typeName: null, + propertyInfos: [{ + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }, { + name: 'name', + required: true, + typeInfo: 'NMToken', + attributeName: { + localPart: 'name' + }, + type: 'attribute' + }] + }, { + localName: 'StyleURL', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + elementName: 'Format' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }] + }, { + localName: 'EXGeographicBoundingBox', + typeName: null, + propertyInfos: [{ + name: 'westBoundLongitude', + required: true, + typeInfo: 'Double' + }, { + name: 'eastBoundLongitude', + required: true, + typeInfo: 'Double' + }, { + name: 'southBoundLatitude', + required: true, + typeInfo: 'Double' + }, { + name: 'northBoundLatitude', + required: true, + typeInfo: 'Double' + }] + }, { + localName: 'Extended', + typeName: { + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink', + localPart: 'extended' + }, + propertyInfos: [{ + name: 'extendedModel', + minOccurs: 0, + collection: true, + elementTypeInfos: [{ + elementName: { + localPart: 'title', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.TitleEltType' + }, { + elementName: { + localPart: 'resource', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.ResourceType' + }, { + elementName: { + localPart: 'locator', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.LocatorType' + }, { + elementName: { + localPart: 'arc', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.ArcType' + }], + type: 'elements' + }, { + name: 'type', + required: true, + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'role', + type: 'attribute' + }, { + name: 'title', + type: 'attribute' + }] + }, { + localName: 'ContactAddress', + typeName: null, + propertyInfos: [{ + name: 'addressType', + required: true, + elementName: 'AddressType' + }, { + name: 'address', + required: true, + elementName: 'Address' + }, { + name: 'city', + required: true, + elementName: 'City' + }, { + name: 'stateOrProvince', + required: true, + elementName: 'StateOrProvince' + }, { + name: 'postCode', + required: true, + elementName: 'PostCode' + }, { + name: 'country', + required: true, + elementName: 'Country' + }] + }, { + localName: 'Request', + typeName: null, + propertyInfos: [{ + name: 'getCapabilities', + required: true, + elementName: 'GetCapabilities', + typeInfo: '.OperationType' + }, { + name: 'getMap', + required: true, + elementName: 'GetMap', + typeInfo: '.OperationType' + }, { + name: 'getFeatureInfo', + elementName: 'GetFeatureInfo', + typeInfo: '.OperationType' + }, { + name: 'extendedOperation', + minOccurs: 0, + collection: true, + mixed: false, + allowDom: false, + elementName: '_ExtendedOperation', + typeInfo: '.OperationType', + type: 'elementRef' + }] + }, { + localName: 'FeatureListURL', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + elementName: 'Format' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }] + }, { + localName: 'ContactInformation', + typeName: null, + propertyInfos: [{ + name: 'contactPersonPrimary', + elementName: 'ContactPersonPrimary', + typeInfo: '.ContactPersonPrimary' + }, { + name: 'contactPosition', + elementName: 'ContactPosition' + }, { + name: 'contactAddress', + elementName: 'ContactAddress', + typeInfo: '.ContactAddress' + }, { + name: 'contactVoiceTelephone', + elementName: 'ContactVoiceTelephone' + }, { + name: 'contactFacsimileTelephone', + elementName: 'ContactFacsimileTelephone' + }, { + name: 'contactElectronicMailAddress', + elementName: 'ContactElectronicMailAddress' + }] + }, { + localName: 'Identifier', + typeName: null, + propertyInfos: [{ + name: 'value', + type: 'value' + }, { + name: 'authority', + required: true, + attributeName: { + localPart: 'authority' + }, + type: 'attribute' + }] + }, { + localName: 'HTTP', + typeName: null, + propertyInfos: [{ + name: 'get', + required: true, + elementName: 'Get', + typeInfo: '.Get' + }, { + name: 'post', + elementName: 'Post', + typeInfo: '.Post' + }] + }, { + localName: 'Keyword', + typeName: null, + propertyInfos: [{ + name: 'value', + type: 'value' + }, { + name: 'vocabulary', + attributeName: { + localPart: 'vocabulary' + }, + type: 'attribute' + }] + }, { + localName: 'Capability', + typeName: null, + propertyInfos: [{ + name: 'request', + required: true, + elementName: 'Request', + typeInfo: '.Request' + }, { + name: 'exception', + required: true, + elementName: 'Exception', + typeInfo: '.Exception' + }, { + name: 'extendedCapabilities', + minOccurs: 0, + collection: true, + elementName: '_ExtendedCapabilities', + typeInfo: 'AnyType' + }, { + name: 'layer', + elementName: 'Layer', + typeInfo: '.Layer' + }] + }, { + localName: 'Service', + typeName: null, + propertyInfos: [{ + name: 'name', + required: true, + elementName: 'Name' + }, { + name: 'title', + required: true, + elementName: 'Title' + }, { + name: '_abstract', + elementName: 'Abstract' + }, { + name: 'keywordList', + elementName: 'KeywordList', + typeInfo: '.KeywordList' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }, { + name: 'contactInformation', + elementName: 'ContactInformation', + typeInfo: '.ContactInformation' + }, { + name: 'fees', + elementName: 'Fees' + }, { + name: 'accessConstraints', + elementName: 'AccessConstraints' + }, { + name: 'layerLimit', + elementName: 'LayerLimit', + typeInfo: 'PositiveInteger' + }, { + name: 'maxWidth', + elementName: 'MaxWidth', + typeInfo: 'PositiveInteger' + }, { + name: 'maxHeight', + elementName: 'MaxHeight', + typeInfo: 'PositiveInteger' + }] + }, { + localName: 'OnlineResource', + typeName: null, + propertyInfos: [{ + name: 'type', + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'href', + type: 'attribute' + }, { + name: 'role', + type: 'attribute' + }, { + name: 'arcrole', + type: 'attribute' + }, { + name: 'title', + type: 'attribute' + }, { + name: 'show', + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'actuate', + typeInfo: 'Token', + type: 'attribute' + }] + }, { + localName: 'Style', + typeName: null, + propertyInfos: [{ + name: 'name', + required: true, + elementName: 'Name' + }, { + name: 'title', + required: true, + elementName: 'Title' + }, { + name: '_abstract', + elementName: 'Abstract' + }, { + name: 'legendURL', + minOccurs: 0, + collection: true, + elementName: 'LegendURL', + typeInfo: '.LegendURL' + }, { + name: 'styleSheetURL', + elementName: 'StyleSheetURL', + typeInfo: '.StyleSheetURL' + }, { + name: 'styleURL', + elementName: 'StyleURL', + typeInfo: '.StyleURL' + }] + }, { + localName: 'OperationType', + propertyInfos: [{ + name: 'format', + required: true, + collection: true, + elementName: 'Format' + }, { + name: 'dcpType', + required: true, + collection: true, + elementName: 'DCPType', + typeInfo: '.DCPType' + }] + }, { + localName: 'Exception', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + collection: true, + elementName: 'Format' + }] + }, { + localName: 'ContactPersonPrimary', + typeName: null, + propertyInfos: [{ + name: 'contactPerson', + required: true, + elementName: 'ContactPerson' + }, { + name: 'contactOrganization', + required: true, + elementName: 'ContactOrganization' + }] + }, { + localName: 'Get', + typeName: null, + propertyInfos: [{ + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }] + }, { + localName: 'Attribution', + typeName: null, + propertyInfos: [{ + name: 'title', + elementName: 'Title' + }, { + name: 'onlineResource', + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }, { + name: 'logoURL', + elementName: 'LogoURL', + typeInfo: '.LogoURL' + }] + }, { + localName: 'LogoURL', + typeName: null, + propertyInfos: [{ + name: 'format', + required: true, + elementName: 'Format' + }, { + name: 'onlineResource', + required: true, + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }, { + name: 'width', + typeInfo: 'PositiveInteger', + attributeName: { + localPart: 'width' + }, + type: 'attribute' + }, { + name: 'height', + typeInfo: 'PositiveInteger', + attributeName: { + localPart: 'height' + }, + type: 'attribute' + }] + }, { + localName: 'BoundingBox', + typeName: null, + propertyInfos: [{ + name: 'crs', + required: true, + attributeName: { + localPart: 'CRS' + }, + type: 'attribute' + }, { + name: 'minx', + required: true, + typeInfo: 'Double', + attributeName: { + localPart: 'minx' + }, + type: 'attribute' + }, { + name: 'miny', + required: true, + typeInfo: 'Double', + attributeName: { + localPart: 'miny' + }, + type: 'attribute' + }, { + name: 'maxx', + required: true, + typeInfo: 'Double', + attributeName: { + localPart: 'maxx' + }, + type: 'attribute' + }, { + name: 'maxy', + required: true, + typeInfo: 'Double', + attributeName: { + localPart: 'maxy' + }, + type: 'attribute' + }, { + name: 'resx', + typeInfo: 'Double', + attributeName: { + localPart: 'resx' + }, + type: 'attribute' + }, { + name: 'resy', + typeInfo: 'Double', + attributeName: { + localPart: 'resy' + }, + type: 'attribute' + }] + }, { + localName: 'Dimension', + typeName: null, + propertyInfos: [{ + name: 'value', + type: 'value' + }, { + name: 'name', + required: true, + attributeName: { + localPart: 'name' + }, + type: 'attribute' + }, { + name: 'units', + required: true, + attributeName: { + localPart: 'units' + }, + type: 'attribute' + }, { + name: 'unitSymbol', + attributeName: { + localPart: 'unitSymbol' + }, + type: 'attribute' + }, { + name: '_default', + attributeName: { + localPart: 'default' + }, + type: 'attribute' + }, { + name: 'multipleValues', + typeInfo: 'Boolean', + attributeName: { + localPart: 'multipleValues' + }, + type: 'attribute' + }, { + name: 'nearestValue', + typeInfo: 'Boolean', + attributeName: { + localPart: 'nearestValue' + }, + type: 'attribute' + }, { + name: 'current', + typeInfo: 'Boolean', + attributeName: { + localPart: 'current' + }, + type: 'attribute' + }] + }, { + localName: 'ResourceType', + typeName: { + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink', + localPart: 'resourceType' + }, + propertyInfos: [{ + name: 'content', + collection: true, + type: 'anyElement' + }, { + name: 'type', + required: true, + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'role', + type: 'attribute' + }, { + name: 'title', + type: 'attribute' + }, { + name: 'label', + typeInfo: 'NCName', + type: 'attribute' + }] + }, { + localName: 'KeywordList', + typeName: null, + propertyInfos: [{ + name: 'keyword', + minOccurs: 0, + collection: true, + elementName: 'Keyword', + typeInfo: '.Keyword' + }] + }, { + localName: 'TitleEltType', + typeName: { + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink', + localPart: 'titleEltType' + }, + propertyInfos: [{ + name: 'content', + collection: true, + type: 'anyElement' + }, { + name: 'type', + required: true, + typeInfo: 'Token', + type: 'attribute' + }, { + name: 'lang', + attributeName: { + localPart: 'lang', + namespaceURI: 'http:\/\/www.w3.org\/XML\/1998\/namespace' + }, + type: 'attribute' + }] + }, { + localName: 'Layer', + typeName: null, + propertyInfos: [{ + name: 'name', + elementName: 'Name' + }, { + name: 'title', + required: true, + elementName: 'Title' + }, { + name: '_abstract', + elementName: 'Abstract' + }, { + name: 'keywordList', + elementName: 'KeywordList', + typeInfo: '.KeywordList' + }, { + name: 'crs', + minOccurs: 0, + collection: true, + elementName: 'CRS' + }, { + name: 'exGeographicBoundingBox', + elementName: 'EX_GeographicBoundingBox', + typeInfo: '.EXGeographicBoundingBox' + }, { + name: 'boundingBox', + minOccurs: 0, + collection: true, + elementName: 'BoundingBox', + typeInfo: '.BoundingBox' + }, { + name: 'dimension', + minOccurs: 0, + collection: true, + elementName: 'Dimension', + typeInfo: '.Dimension' + }, { + name: 'attribution', + elementName: 'Attribution', + typeInfo: '.Attribution' + }, { + name: 'authorityURL', + minOccurs: 0, + collection: true, + elementName: 'AuthorityURL', + typeInfo: '.AuthorityURL' + }, { + name: 'identifier', + minOccurs: 0, + collection: true, + elementName: 'Identifier', + typeInfo: '.Identifier' + }, { + name: 'metadataURL', + minOccurs: 0, + collection: true, + elementName: 'MetadataURL', + typeInfo: '.MetadataURL' + }, { + name: 'dataURL', + minOccurs: 0, + collection: true, + elementName: 'DataURL', + typeInfo: '.DataURL' + }, { + name: 'featureListURL', + minOccurs: 0, + collection: true, + elementName: 'FeatureListURL', + typeInfo: '.FeatureListURL' + }, { + name: 'style', + minOccurs: 0, + collection: true, + elementName: 'Style', + typeInfo: '.Style' + }, { + name: 'minScaleDenominator', + elementName: 'MinScaleDenominator', + typeInfo: 'Double' + }, { + name: 'maxScaleDenominator', + elementName: 'MaxScaleDenominator', + typeInfo: 'Double' + }, { + name: 'layer', + minOccurs: 0, + collection: true, + elementName: 'Layer', + typeInfo: '.Layer' + }, { + name: 'queryable', + typeInfo: 'Boolean', + attributeName: { + localPart: 'queryable' + }, + type: 'attribute' + }, { + name: 'cascaded', + typeInfo: 'NonNegativeInteger', + attributeName: { + localPart: 'cascaded' + }, + type: 'attribute' + }, { + name: 'opaque', + typeInfo: 'Boolean', + attributeName: { + localPart: 'opaque' + }, + type: 'attribute' + }, { + name: 'noSubsets', + typeInfo: 'Boolean', + attributeName: { + localPart: 'noSubsets' + }, + type: 'attribute' + }, { + name: 'fixedWidth', + typeInfo: 'NonNegativeInteger', + attributeName: { + localPart: 'fixedWidth' + }, + type: 'attribute' + }, { + name: 'fixedHeight', + typeInfo: 'NonNegativeInteger', + attributeName: { + localPart: 'fixedHeight' + }, + type: 'attribute' + }] + }, { + type: 'enumInfo', + localName: 'TypeType', + baseTypeInfo: 'Token', + values: ['simple', 'extended', 'title', 'resource', 'locator', 'arc'] + }, { + type: 'enumInfo', + localName: 'ShowType', + baseTypeInfo: 'Token', + values: ['new', 'replace', 'embed', 'other', 'none'] + }, { + type: 'enumInfo', + localName: 'ActuateType', + baseTypeInfo: 'Token', + values: ['onLoad', 'onRequest', 'other', 'none'] + }], + elementInfos: [{ + elementName: 'Fees' + }, { + elementName: 'GetCapabilities', + typeInfo: '.OperationType' + }, { + elementName: 'Attribution', + typeInfo: '.Attribution' + }, { + elementName: 'Exception', + typeInfo: '.Exception' + }, { + elementName: 'Request', + typeInfo: '.Request' + }, { + elementName: 'MaxScaleDenominator', + typeInfo: 'Double' + }, { + elementName: 'AddressType' + }, { + elementName: 'GetFeatureInfo', + typeInfo: '.OperationType' + }, { + elementName: 'ContactOrganization' + }, { + elementName: 'ContactPerson' + }, { + elementName: 'Address' + }, { + elementName: 'MaxHeight', + typeInfo: 'PositiveInteger' + }, { + elementName: '_ExtendedOperation', + typeInfo: '.OperationType' + }, { + elementName: 'ContactVoiceTelephone' + }, { + elementName: 'StyleURL', + typeInfo: '.StyleURL' + }, { + elementName: { + localPart: 'GetStyles', + namespaceURI: 'http:\/\/mapserver.gis.umn.edu\/mapserver' + }, + typeInfo: '.OperationType', + substitutionHead: '_ExtendedOperation' + }, { + elementName: 'MaxWidth', + typeInfo: 'PositiveInteger' + }, { + elementName: 'ContactPosition' + }, { + elementName: { + localPart: 'title', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.TitleEltType' + }, { + elementName: 'ContactInformation', + typeInfo: '.ContactInformation' + }, { + elementName: 'Abstract' + }, { + elementName: 'BoundingBox', + typeInfo: '.BoundingBox' + }, { + elementName: 'AccessConstraints' + }, { + elementName: 'ContactAddress', + typeInfo: '.ContactAddress' + }, { + elementName: 'DataURL', + typeInfo: '.DataURL' + }, { + elementName: 'Name' + }, { + elementName: 'Title' + }, { + elementName: 'City' + }, { + elementName: 'Style', + typeInfo: '.Style' + }, { + elementName: 'OnlineResource', + typeInfo: '.OnlineResource' + }, { + elementName: 'Country' + }, { + elementName: 'ContactElectronicMailAddress' + }, { + elementName: 'KeywordList', + typeInfo: '.KeywordList' + }, { + elementName: 'Layer', + typeInfo: '.Layer' + }, { + elementName: 'AuthorityURL', + typeInfo: '.AuthorityURL' + }, { + elementName: 'EX_GeographicBoundingBox', + typeInfo: '.EXGeographicBoundingBox' + }, { + elementName: 'CRS' + }, { + elementName: 'MinScaleDenominator', + typeInfo: 'Double' + }, { + elementName: 'FeatureListURL', + typeInfo: '.FeatureListURL' + }, { + elementName: 'LayerLimit', + typeInfo: 'PositiveInteger' + }, { + elementName: 'StateOrProvince' + }, { + elementName: 'ContactPersonPrimary', + typeInfo: '.ContactPersonPrimary' + }, { + elementName: 'Keyword', + typeInfo: '.Keyword' + }, { + elementName: 'LegendURL', + typeInfo: '.LegendURL' + }, { + elementName: { + localPart: 'locator', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.LocatorType' + }, { + elementName: 'Capability', + typeInfo: '.Capability' + }, { + elementName: 'DCPType', + typeInfo: '.DCPType' + }, { + elementName: { + localPart: 'resource', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.ResourceType' + }, { + elementName: 'Identifier', + typeInfo: '.Identifier' + }, { + elementName: 'Post', + typeInfo: '.Post' + }, { + elementName: 'HTTP', + typeInfo: '.HTTP' + }, { + elementName: { + localPart: 'arc', + namespaceURI: 'http:\/\/www.w3.org\/1999\/xlink' + }, + typeInfo: '.ArcType' + }, { + elementName: 'WMS_Capabilities', + typeInfo: '.WMSCapabilities' + }, { + elementName: 'MetadataURL', + typeInfo: '.MetadataURL' + }, { + elementName: 'ContactFacsimileTelephone' + }, { + elementName: 'PostCode' + }, { + elementName: 'Service', + typeInfo: '.Service' + }, { + elementName: 'LogoURL', + typeInfo: '.LogoURL' + }, { + elementName: '_ExtendedCapabilities', + typeInfo: 'AnyType' + }, { + elementName: 'Dimension', + typeInfo: '.Dimension' + }, { + elementName: 'GetMap', + typeInfo: '.OperationType' + }, { + elementName: 'Get', + typeInfo: '.Get' + }, { + elementName: 'StyleSheetURL', + typeInfo: '.StyleSheetURL' + }, { + elementName: 'Format' + }] + }; + return { + MS: MS + }; +}; +if (typeof define === 'function' && define.amd) { + define([], MS_Module_Factory); +} +else { + var MS_Module = MS_Module_Factory(); + if (typeof module !== 'undefined' && module.exports) { + module.exports.MS = MS_Module.MS; + } + else { + var MS = MS_Module.MS; + } +} +/* eslint-enable */ diff --git a/web/client/utils/ogc/WMS.js b/web/client/utils/ogc/WMS.js index 98d9a919b0..f8a6834d1d 100644 --- a/web/client/utils/ogc/WMS.js +++ b/web/client/utils/ogc/WMS.js @@ -11,16 +11,30 @@ const { OWS_1_0_0, WMS_1_0_0, + SLD_1_1_0, + SE_1_1_0, + Filter_1_1_0, + GML_3_1_1, + SMIL_2_0, + SMIL_2_0_Language, WMS_1_1_0, WMS_1_1_1, WMS_1_3_0 } = require('ogc-schemas'); const XLink_1_0 = require('w3c-schemas').XLink_1_0; +const MS = require('./MS').MS; const {Jsonix} = require('jsonix'); const context = new Jsonix.Context([ OWS_1_0_0, XLink_1_0, + SLD_1_1_0, + SE_1_1_0, + Filter_1_1_0, + GML_3_1_1, + SMIL_2_0, + SMIL_2_0_Language, + MS, WMS_1_0_0, WMS_1_1_0, WMS_1_1_1,