Utilisation du module REST

Cette section contient un certain nombre d’exemples qui illustrent différentes utilisations de l’API de configuration de données REST.

Le module de configuration de GeoServer REST utilise les principes REST pour exposer des services permettant de modifier le catalogue, en particulier pour gérer les espaces de travail, de magasins, de couches, de styles et de groupes.

Note

L’extension de configuration REST doit normalement être installé séparément, il n’est pas sorti de la boîte.

Les exemples de cette section utilisent le cURL utilitaire, qui est un outil de ligne de commande très pratique pour l’exécution des requêtes HTTP et de transfert de fichiers.

  1. Ouvrez le Terminal et entrez la commande suivante:

    curl -u admin:geoserver -v -XPOST -H "Content-type: text/xml" -d "<workspace><name>myworkspace</name></workspace>" http://localhost:8083/geoserver/rest/workspaces
    

la réponse contient les éléments suivants :

../../../_images/workspace1.png

Créer un nouvel workspace via REST

  1. Allez dans la section Workspaces via l’interface Web pour montrer le nouvel workspace créé

    ../../../_images/workspace2.png

    GET demande de nouveaux détails du workspace

  2. Obtenez les nouveaux détails de workspace entrant ce qui suit:

    curl -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost:8083/geoserver/rest/workspaces/myworkspace
    
    ../../../_images/workspace3.png

    Demande GET pour obtenir de nouveaux détails d’workspace

  3. Publier le shapefile pointlands à l’aide du workspace myworkspace entrant ce qui suit

    • Linux:

      curl -u admin:geoserver -H "Content-type: application/zip" -T /.../pointlands.zip http://localhost:8083/geoserver/rest/workspaces/myworkspace/datastores/pointlands/file.shp
      
    • Windows:

      curl -u admin:geoserver -H "Content-type: application/zip" -T /.../pointlands.zip http://localhost:8083/geoserver/rest/workspaces/myworkspace/datastores/pointlands/file.shp
      
  4. Aller à la Couche Preview pour montrer les couches dans une carte OpenLayers.

    ../../../_images/shape1.png

    Montrant la nouvelle couche créé

    ../../../_images/shape2.png

    Les nouvelles couches créés

    Note

    Si vous avez déjà suivi le passage de la sécurité de l’atelier , la couche ne sera pas accessible car l’administrateur n’a pas les rôles. Retournez dans la section sécurité de service et supprimer la règle limitant les requêtes GetMap.

  5. Récupère le magasin de données créé au format XML entrant ce qui suit:

    curl -u admin:geoserver -XGET http://localhost:8083/geoserver/rest/workspaces/myworkspace/datastores/pointlands.xml
    
    <dataStore>
      <name>pointlands</name>
      <type>Shapefile</type>
      <enabled>true</enabled>
      <workspace>
            <name>myworkspace</name>
            <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8083/geoserver/rest/workspaces/myworkspace.xml" type="application/xml"/>
      </workspace>
      <connectionParameters>
            <entry key="url">file:${TRAINING_ROOT}/geoserver_data/data/myworkspace/pointlands/</entry>
            <entry key="namespace">http://myworkspace</entry>
      </connectionParameters>
      <__default>false</__default>
      <featureTypes>
            <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8083/geoserver/rest/workspaces/myworkspace/datastores/pointlands/featuretypes.xml" type="application/xml"/>
      </featureTypes>
    </dataStore>
    

    Note

    Par défaut lorsqu’un shapefile est téléchargé une ressource de type de fonction et la couche associée sont automatiquement créés.

  6. Récupérer la couche comme XML entrant ce qui suit:

    curl -u admin:geoserver -XGET http://localhost:8083/geoserver/rest/layers/myworkspace:pointlands.xml
    
    <layer>
      <name>pointlands</name>
      <type>VECTOR</type>
      <defaultStyle>
            <name>point</name>
            <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8083/geoserver/rest/styles/point.xml" type="application/xml"/>
      </defaultStyle>
      <resource class="featureType">
            <name>pointlands</name>
            <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost:8083/geoserver/rest/workspaces/myworkspace/datastores/pointlands/featuretypes/pointlands.xml" type="application/xml"/>
      </resource>
      <attribution>
            <logoWidth>0</logoWidth>
            <logoHeight>0</logoHeight>
      </attribution>
    </layer>
    

    Note

    Lorsque le calque est créé un style par défaut nommé point est attribué à lui.

  7. Créer un nouveau style appelé landmarks avec le SLD suivant (à l’aide de l’interface utilisateur Admin de GeoServer) :

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <StyledLayerDescriptor version="1.0.0"
     xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
     xmlns="http://www.opengis.net/sld"
     xmlns:ogc="http://www.opengis.net/ogc"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <!-- a Named Layer is the basic building block of an SLD document -->
      <NamedLayer>
            <Name>default_point</Name>
            <UserStyle>
            <!-- Styles can have names, titles and abstracts -->
              <Title>Default Point</Title>
              <Abstract>A sample style that draws a point</Abstract>
              <!-- FeatureTypeStyles describe how to render different features -->
              <!-- A FeatureTypeStyle for rendering points -->
              <FeatureTypeStyle>
                    <Rule>
                      <Name>rule1</Name>
                      <Title>Red Square</Title>
                      <Abstract>A 6 pixel square with a red fill and no stroke</Abstract>
                            <PointSymbolizer>
                              <Graphic>
                                    <Mark>
                                      <WellKnownName>triangle</WellKnownName>
                                      <Stroke>
                                            <CssParameter name="stroke">#66FF66</CssParameter>
                                      </Stroke>
                                      <Fill>
                                            <CssParameter name="fill">#66FF66</CssParameter>
                                      </Fill>
                                    </Mark>
                              <Size>10</Size>
                            </Graphic>
                      </PointSymbolizer>
                    </Rule>
              </FeatureTypeStyle>
            </UserStyle>
      </NamedLayer>
    </StyledLayerDescriptor>
    
  8. Appliquer le style de landmarks existant à la couche créée myworkspace:pointlands (cette opération n’écrase pas la définition de l’ensemble de la couche,la met à jour à plutot):

    curl -u admin:geoserver -XPUT -H "Content-type: text/xml" -d "<layer><defaultStyle><name>landmarks</name></defaultStyle><enabled>true</enabled></layer>" http://localhost:8083/geoserver/rest/layers/myworkspace:pointlands
    
  9. Aller à la Couche Preview pour montrer les couches avec le nouveau style landmarks.

    ../../../_images/shpchanging2.png

    Affichage des couches avec le nouveau style créé landmarks