Configuration applicative
Le dossier mapstore/ situé dans le répertoire de configuration geOrchestra contient les fichiers utilisés pour configurer les services backend et le visualiseur frontend.
Services backend
MapStore embarque des services backend pour des fonctions comme l'impression et le proxy vers des services externes.
Impression
Le répertoire mapstore/printing/ contient la configuration du module d'impression. Ce module étend MapFish Print v2 avec des personnalisations spécifiques à MapStore.
Plus d'informations dans la documentation MapStore :
Proxy
MapStore inclut un proxy interne sécurisé utilisé pour accéder à des services externes comme des flux WMS ou WMTS.
Le fichier proxy.properties contient la configuration du proxy. Voir :
Visualiseur cartographique
Le visualiseur, le registre de plugins et l'éditeur de contexte sont configurés via des fichiers JSON stockés dans mapstore/.
/!\ Si un fichier est absent du répertoire de données (datadir georchestra), MapStore se replie sur la version embarquée dans la webapp d'origine.
Si le fichier est présent dans le datadir georchestra c'est lui qui sera pris en compte dans la configuration du visualiseur.
Il est également possible de "patcher" ces fichiers pour n'y stocker dans les fichiers .patch que les paramètres spécifiques à notre environnement.
localConfig.json
C'est le fichier principal de configuration frontend. Il définit la configuration du visualiseur, la liste des plugins activés et les outils disponibles dans les pages d'administration. Il est séparé en plusieurs sections où sont définis les paramètres correspondants.
//Paramètres globaux
{
"proxyUrl":{
"url":"proxy/?url=",
"useCORS":[
"https://georchestra.geo-solutions.it",
"https://3d.sig.rennesmetropole.fr",ole.fr"
],
"autoDetectCORS":true
},
"geoStoreUrl":"rest/geostore/",
"printUrl":"pdf/info.json",
"bingApiKey":"AhuXBu7ipR1gNbBfXhtUAyCZ6rkC5PkWpxs2MnMRZ1ZupxQfivjLCch22ozKSCAn",
"forceDateFormat":"DD-MM-YYYY",
"mapquestApiKey":"__API_KEY_MAPQUEST__",
"apiKeys":{
"googleStreetViewAPIKey":"xxxxxxx"
},
"maxURLLength":5000,
"homePath":"/home"
},
...
"catalog":{
"default":{
"newService":{
"url":"",
"type":"wms",
"title":"",
"isNew":true,
"autoload":false
},
"selectedService":"localgn",
"services":{
"localgn":{
"url":"/geonetwork/srv/fre/csw",
"type":"csw",
"title":"Catalogue Rennes Métropole",
"autoload":true,
"format": "image/png8",
"layerOptions":{
"tileSize":512,
"format":"image/png8"
},
"filter":{
"staticFilter":"<ogc:Or> <ogc:PropertyIsEqualTo matchCase='true'> <ogc:PropertyName>Type</ogc:PropertyName> <ogc:Literal>data</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo matchCase='true'> <ogc:PropertyName>Type</ogc:PropertyName> <ogc:Literal>dataset</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo matchCase='true'> <ogc:PropertyName>Type</ogc:PropertyName> <ogc:Literal>datasetcollection</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo matchCase='true'> <ogc:PropertyName>Type</ogc:PropertyName> <ogc:Literal>series</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Or>",
"dynamicFilter":"<ogc:Or> <ogc:PropertyIsLike matchCase='false' wildCard='*' singleChar='.' escapeChar='!'> <ogc:PropertyName>Title</ogc:PropertyName> <ogc:Literal>${searchText}*</ogc:Literal> </ogc:PropertyIsLike> <ogc:PropertyIsLike matchCase='false' wildCard='*' singleChar='.' escapeChar='!'> <ogc:PropertyName>AlternateTitle</ogc:PropertyName> <ogc:Literal>${searchText}*</ogc:Literal> </ogc:PropertyIsLike> <ogc:PropertyIsLike matchCase='false' wildCard='*' singleChar='.' escapeChar='!'> <ogc:PropertyName>Abstract</ogc:PropertyName> <ogc:Literal>${searchText}*</ogc:Literal> </ogc:PropertyIsLike> <ogc:PropertyIsLike matchCase='false' wildCard='*' singleChar='.' escapeChar='!'> <ogc:PropertyName>Subject</ogc:PropertyName> <ogc:Literal>${searchText}*</ogc:Literal> </ogc:PropertyIsLike> <ogc:PropertyIsLike matchCase='false' wildCard='*' singleChar='.' escapeChar='!'> <ogc:PropertyName>Description</ogc:PropertyName> <ogc:Literal>${searchText}*</ogc:Literal> </ogc:PropertyIsLike> </ogc:Or>"
},
"autoSetVisibilityLimits":true
},
...
},
**//plugins utilisés pour chaque environnement**
```
"plugins":{
```
**//plugins utilisés pour les mobiles**
**//plugins utilisés pour l'application web**
], ```
//plugins utilisés pour les applications embedded
"embedded":[
"Details",
"Easytheming",
{
"name":"Map",
"cfg":{
"mapOptions":{
"openlayers":{
"interactions":{
"pinchRotate":false,
"altShiftDragRotate":false
},
"attribution":{
"container":"#footer-attribution-container"
}
},
"leaflet":{
"attribution":{
"container":"#footer-attribution-container"
}
}
},
"toolsOptions":{
"scalebar":{
"container":"#footer-scalebar-container"
}
}
}
},
....
],
```
**//plugins utilisés communs**
"common":[
],
//paramétrage des cartes de la page home
"maps":[
"Login",
"Easytheming",
"HomeDescription",
"Fork",
"MapSearch",
"FeaturedMaps",
"ContentTabs",
{
"name":"Header",
"cfg":{
"page":"mapstore-home"
}
},
{
"name":"Contexts",
"cfg":{
"mapsOptions":{
"start":0,
"limit":12
},
"fluid":true
},
"override":{
"ContentTabs":{
"position":-1,
"key":"maps"
}
}
}
],
"dashboard":[
{
"name":"OmniBar",
"cfg":{
"containerPosition":"header",
"className":"navbar shadow navbar-home"
}
},
"Details",
"Easytheming",
"AddWidgetDashboard",
"MapConnectionDashboard",
{
"name":"SidebarMenu",
"cfg":{
"containerPosition":"columns"
}
},
{
"name":"Home",
"override":{
"OmniBar":{
"priority":5
}
}
},
{
"name":"Login",
"override":{
"OmniBar":{
"priority":5
}
}
},
"Language",
"NavMenu",
"DashboardSave",
"DashboardSaveAs",
"DashboardExport",
"DashboardImport",
"DeleteDashboard",
"Attribution",
{
"name":"Share",
"cfg":{
"showAPI":false,
"advancedSettings":false,
"shareUrlRegex":"(h[^#]*)#\\/dashboard\\/([A-Za-z0-9]*)",
"shareUrlReplaceString":"$1dashboard-embedded.html#/$2",
"embedOptions":{
"showTOCToggle":false,
"showConnectionsParamToggle":true,
"allowFullScreen":false,
"sizeOptions":{
"Small":{
"width":600,
"height":500
},
"Medium":{
"width":800,
"height":600
},
"Large":{
"width":1000,
"height":800
},
"Custom":{
"width":0,
"height":0
}
},
"selectedOption":"Small"
}
}
},
"Permalink",
{
"name":"DashboardEditor",
"cfg":{
"selectedService":"localgs",
"services":{
"localgs":{
"url":"/geoserver/wms",
"type":"wms",
"title":"le geoserver local",
"autoload":true
}
},
"containerPosition":"columns"
}
},
{
"name":"QueryPanel",
"cfg":{
"toolsOptions":{
"hideCrossLayer":true,
"hideSpatialFilter":true
},
"containerPosition":"columns"
}
},
"Dashboard",
"Notifications",
{
"name":"Tutorial",
"cfg":{
"allowClicksThruHole":false,
"containerPosition":"header",
"preset":"dashboard_tutorial"
}
},
{
"name":"FeedbackMask",
"cfg":{
"containerPosition":"header"
}
}
],
"dashboard-embedded":[
{
"name":"Dashboard",
"cfg":{
"minLayoutWidth":768
}
},
{
"name":"FeedbackMask"
}
],
"geostory":[
{
"name":"OmniBar",
"cfg":{
"containerPosition":"header",
"className":"navbar shadow navbar-home"
}
{
"name":"Share",
"cfg":{
"embedPanel":true,
"showAPI":false,
"embedOptions":{
"showTOCToggle":false,
"allowFullScreen":false
},
"shareUrlRegex":"(h[^#]*)#\\/geostory\\/([^\\/]*)\\/([A-Za-z0-9]*)",
"shareUrlReplaceString":"$1geostory-embedded.html#/$3",
"advancedSettings":{
"hideInTab":"embed",
"homeButton":true,
"sectionId":true
}
}
},
],
...
}
Référence :
config.json
Configuration de la carte par défaut, y compris l'emprise initiale et les couches chargées au démarrage.
Référence :
new.json
Définition initiale de carte utilisée lors de la création d'un nouveau contexte dans l'éditeur.
Référence :
pluginsConfig.json
Registre JSON des plugins disponibles. Il contrôle la liste des plugins pouvant être sélectionnés dans l'éditeur de contexte.
Référence :
Comportements avancés du visualiseur
Fichiers de patch
Des fichiers comme localConfig.json et pluginsConfig.json évoluent souvent entre deux versions. Pour isoler les personnalisations locales des fichiers fournis en standard, MapStore prend en charge des fichiers .patch qui ne contiennent que les différences à appliquer.
La configuration finale est assemblée dynamiquement par l'application quand le fichier est demandé en HTTP.
Référence :
Fichiers dynamiques
Quand des extensions sont installées depuis l'interface d'administration, MapStore écrit des fichiers supplémentaires dans le répertoire de données :
extensions.json: registre JSON des extensions installéesdist/: ressources des extensions téléverséespluginsConfig.json.patch: patch reflétant l'ajout de plugins
Pour stocker ces fichiers ailleurs, définissez l'option JVM georchestra.extensions. Si elle n'est pas définie, MapStore les stocke dans le répertoire de configuration standard.
Répertoires de configuration multiples
MapStore peut lire plusieurs répertoires de configuration en déclarant plusieurs valeurs séparées par des virgules dans georchestra.datadir.
Les règles sont les suivantes :
- en lecture, le premier fichier correspondant trouvé est utilisé
- en écriture, seul le premier répertoire est utilisé
Cela permet de combiner un répertoire inscriptible géré par l'application avec un ou plusieurs répertoires en lecture seule maintenus manuellement par les administrateurs.