Modification du document de capacités dans GeoServer

Sep 07 2020

J'ai plusieurs couches dans GeoServer, dont une que j'essaie d'utiliser comme WMS dans les programmes de bureau (Manifold 8). Je l'ai configuré correctement, mais chaque fois que je l'apporte dans Manifold, il projette la couche dans EPSG: 4326, qui ne peut malheureusement pas fonctionner avec ma carte - j'en ai besoin dans EPSG: 3857.

La couche en question est enveloppée dans une définition de couche plus globale, qui contient toutes les couches - et des systèmes de coordonnées qui leur permettent toutes d'être utilisées de manière flexible. Cependant, je souhaite placer cette couche seule dans le document de capacités et lui permettre uniquement d'utiliser EPSG: 3857.

Comment, dans GeoServer, pourrais-je modifier ou remplacer un document de capacités?

Réponses

nr_aus Oct 12 2020 at 01:36

Geoserver définira le CRS «natif» sur ce qu'il détermine comme le système de coordonnées des données source. Vous pouvez définir le «CRS déclaré» et l'option «Force déclarée», ce qui forcera la couche à utiliser le CRS déclaré, mais ce n'est généralement que si le CRS source ne peut pas être lu par Geoserver. Cependant, dans votre cas, cela devrait le forcer à utiliser le (3857).

Quelques lectures à ce sujet peuvent être trouvées ici: https://docs.boundlessgeo.com/suite/1.1.0/geoserver/configuration/crshandling/configurecrs.html

En termes d'isolement de la couche elle-même dans ses propres getCapabilities. hmm. Je ne sais pas si c'est idéal, mais la documentation ici: https://docs.geoserver.org/2.13.2/user/services/wms/reference.html

Cela indique qu'un 'getCapabilities' est un

«L'opération GetCapabilities demande des métadonnées sur les opérations, les services et les données (« capacités ») qui sont offerts par un serveur WMS.»

Suggérer cela, si vous avez ceci

http://localhost:8080/geoserver/wms?
service=wms&
version=1.1.1&
request=GetCapabilities

mais vous voulez

    http://localhost:8080/geoserver_new/wms?
service=wms&
version=1.1.1&
request=GetCapabilities

alors vous aurez besoin d'une toute nouvelle instance de Geoserver. Cela semble exagéré. Ma recommandation est que vous ajoutiez simplement un nouvel espace de travail selon la suggestion ci-dessus, ce qui peut isoler la définition de la couche de votre couche existante.

À titre d'exemple, vous avez actuellement

http://localhost:8080/geoserver/wms?
request=GetMap
&service=WMS
&version=1.1.1
&layers=topp:states

Où topp est l'espace de travail. Mais avec un nouvel espace de travail, vous aurez:

http://localhost:8080/geoserver/wms?
request=GetMap
&service=WMS
&version=1.1.1
&layers=new_workspace:states2

Et puis appliquez simplement les paramètres du système de coordonnées que vous désirez, à la couche new_workspace: states2.

nmtoken Sep 10 2020 at 09:31

Vous pouvez faire une demande GetCapabilities, copier la réponse et la placer dans un dossier Web public, par exemple, enregistrer sous MyStaticGCresponseVersionmno.xmlpuis modifier ce fichier et supprimer le <CRS>CRS:84</CRS>, tout BoundingBox ( <BoundingBox CRS="CRS:84"...), et également modifier l'URL des requêtes GetCapabilities ( <OnlineResource xlink:type="simple" xlink:href="..."/>) en l'emplacement du fichier statique.

Ensuite, vous pouvez utiliser ce fichier «statique» comme URL de service.

Cela fonctionne pour la plupart des clients, mais un validateur WMS échouera.

Vous pouvez également utiliser MapServer et mettre en cascade le service GeoServer à travers lui.

Par exemple,

Voici un service GeoServer WMS:

http://13.95.69.121/geoserver/erl/ows?service=WMS&request=GetCapabilities

avec

<GetCapabilities>
<Format>text/xml</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xlink:type="simple" xlink:href="http://13.95.69.121:80/geoserver/erl/ows?SERVICE=WMS&"/>
</Get>
<Post>
<OnlineResource xlink:type="simple" xlink:href="http://13.95.69.121:80/geoserver/erl/ows?SERVICE=WMS&"/>
</Post>
</HTTP>
</DCPType>
</GetCapabilities>

et ...

dans la couche mineralOccurrenceView

<KeywordList>
<Keyword>features</Keyword>
<Keyword>mineraloccurrence</Keyword>
<Keyword>earth resource</Keyword>
<Keyword>mineral resource</Keyword>
<Keyword>mineral occurrence</Keyword>
<Keyword>mineral deposit</Keyword>
<Keyword>mine</Keyword>
</KeywordList>

Ce service était utilisé dans un portail qui utilise des mots clés pour déclencher des fonctionnalités. Pour tester rapidement les mots-clés (les développeurs clients n'étaient pas des fournisseurs de services), une version de fichier statique de ce fichier a été créée:

http://ogc.bgs.ac.uk/OWS/GTK.xml

avec le OnlineResource changé ainsi.

<GetCapabilities>
<Format>text/xml</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource xlink:type="simple" xlink:href="http://ogc.bgs.ac.uk/OWS/GTK.xml"/>
</Get>
</HTTP>
</DCPType>
</GetCapabilities>

Les autres ressources en ligne restent les mêmes (pointez vers le service réel).

mais les mots clés ont changé pour la couche comme:

  <KeywordList>
      <Keyword>features</Keyword>
      <Keyword>mineraloccurrence</Keyword>
      <Keyword>earth resource</Keyword>
      <Keyword>mineral resource</Keyword>
      <Keyword>mineral occurrence</Keyword>
      <Keyword>mineral deposit</Keyword>
      <Keyword>mine</Keyword>
      <Keyword>Erml_lite_age_or_litho_queryable</Keyword>
      <Keyword>Erml_lite_queryable</Keyword>
      <Keyword>Erml_lite_queryable_geoserver</Keyword>
      <Keyword>Erml_lite_queryable_geoserver_workspace</Keyword>
      <Keyword>Erml_lite_queryable_4</Keyword>
  </KeywordList>

Le contenu édité dans ce cas était des mots-clés, pas de CRS, mais le principe est le même.

Maintenant, pour le client, vous utilisez l' http://ogc.bgs.ac.uk/OWS/GTK.xmlURL comme point de terminaison au lieu de la http://13.95.69.121:80/geoserver/erl/ows?version.