cURL

Les exemples de cette section utilisent cURL, un outil de ligne de commande pour exécuter des requêtes HTTP et le transfert de fichiers, de générer des demandes à l’interface REST de GeoServer. Bien que les exemples sont basés sur cURL, ils pourraient être adaptés pour tout outil ou de la bibliothèque HTTP capable. S’il vous plaît soyez conscient que cURL n’agit pas pareil qu’un navigateur Web. Contrairement à Mozilla Firefox ou Google Chrome, cURL ne fera pas échapper les caractères spéciaux dans votre demande cordes automatiquement. Pour vous assurer que vos demandes puissent être traitées correctement, assurez-vous que des caractéres comme les parenthèses, virgules et similaires sont partie avant de les envoyer via cURL. Si vous utilisez PHP 5.5 libcurl plus récent, vous pouvez préparer la chaîne URL en utilisant la fonction curl_escape. Dans les anciennes versions de PHP hmlspecialchars qui devrait faire le travail aussi.

Ajout d’un nouvel workspace

L’exemple suivant crée un nouvel workspace nommé “acme” avec une requête POST :

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

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

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 201 Created
...
< Location: http://localhost/geoserver/rest/workspaces/acme

Notez l’en-tête de réponse Location, qui spécifie l’emplacement (URI) de l’workspace nouvellement créé.

Les informations de workspace peuvent être récupérées au format XML avec une requête GET :

curl -v -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost/geoserver/rest/workspaces/acme

La réponse devrait ressembler à ceci :

<workspace>
  <name>acme</name>
  <dataStores>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/workspaces/acme/datastores.xml"
     type="application/xml"/>
  </dataStores>
  <coverageStores>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/workspaces/acme/coveragestores.xml"
     type="application/xml"/>
  </coverageStores>
  <wmsStores>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/workspaces/acme/wmsstores.xml"
     type="application/xml"/>
  </wmsStores>
</workspace>

Cela montre que le workspace peut contenir des magasins de “dataStores” (for vector data), “coverageStores” (for raster data) et “wmsStores” (for cascaded WMS servers).

Note

L’en-tête Accept est facultative. La requête suivante omet l’en-tête Accept, mais retournera la même réponse que ci-dessus.

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme.xml

Téléchargeant un shapefile

Dans cet exemple on créera un nouveau magasin en téléchargeant un shapefile.

La requête suivante télécharge un shapefile zippé nommé roads.zip et crée un nouveau magasin nommé roads.

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

curl -v -u admin:geoserver -XPUT -H "Content-type: application/zip" --data-binary @roads.zip http://localhost/geoserver/rest/workspaces/acme/datastores/roads/file.shp

L’ identifiant de roads dans l’URI fait référence au nom de la boutique pour être créé. Pour créer un magasin nommé somethingelse, l’URI serait http://localhost/geoserver/rest/workspaces/acme/datastores/somethingelse/file.shp

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 201 Created

Le magasin d’informations peut être récupérée au format XML avec une requête GET :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme/datastores/roads.xml

La réponse devrait ressembler à ceci :

<dataStore>
  <name>roads</name>
  <type>Shapefile</type>
  <enabled>true</enabled>
  <workspace>
    <name>acme</name>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/workspaces/acme.xml" type="application/xml"/>
  </workspace>
  <connectionParameters>
    <entry key="url">file:/C:/path/to/data_dir/data/acme/roads/</entry>
    <entry key="namespace">http://acme</entry>
  </connectionParameters>
  <__default>false</__default>
  <featureTypes>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/workspaces/acme/datastores/roads/featuretypes.xml"
     type="application/xml"/>
  </featureTypes>
</dataStore>

Par défaut lorsqu’un shapefile est téléchargé, un type de fonctionnalité est automatiquement créé. Les informations de type de fonction peuvent être récupérées au format XML avec une requête GET :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme/datastores/roads/featuretypes/tiger_roads.xml

Si règulier, la réponse sera :

<featureType>
  <name>roads</name>
  <nativeName>roads</nativeName>
  <namespace>
    <name>acme</name>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/namespaces/acme.xml" type="application/xml"/>
  </namespace>
  ...
</featureType>

Le reste de la réponse se compose d’informations de configuration et des métadonnées de couche.

Note

Notez que le nom de la couche (et de la FeatureType) correspond au nom physique de ShapeFile contenue dans l’archive.

Ajout d’un fichier de forme existante

Dans l’exemple précédent, un shapefile a été transféré directement à GeoServer en envoyant un fichier zip dans le corps d’une requête PUT. Cet exemple montre comment publier un shapefile qui existe déjà sur le serveur.

Considérons un répertoire sur le serveur /data/shapefiles qui contient le shapefile rivers.shp. L’exemple suivant ajoute un nouveau magasin pour le fichier de la forme :

Note

Afin d’exécuter l’exercice, créez un dossier shapefiles quelque part sur le serveur et extraire les shapefiles.zip.

curl -v -u admin:geoserver -XPUT -H "Content-type: text/plain" -d "file:///home/geonode/data/shapefiles/rivers.shp" http://localhost/geoserver/rest/workspaces/acme/datastores/rivers/external.shp

La partie de external.shp de l’URI de requête indique que le fichier est provenant de l’extérieur du catalogue.

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 201 Created

Le shapefile sera ajouté au magasin existant et publié comme une couche.

Pour vérifier le contenu du magasin, exécutez une requête GET. Étant donné que la réponse XML fournit uniquement des détails sur le magasin lui-même sans montrer son contenu, exécutez une requête GET pour HTML :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme/datastores/rivers.html

Ajout d’un répertoire des shapefiles existants

Cet exemple montre comment charger et créer une banque qui contient un certain nombre de shapefiles, tous avec une seule opération. Cet exemple est très similaire à l’exemple ci-dessus de l’ajout d’un shapefile unique.

Considérons un répertoire sur le serveur /data/shapefiles qui contient plusieurs fichiers de forme. L’exemple suivant ajoute un nouveau magasin pour le répertoire.

Note

Afin d’exécuter l’exercice, créez un dossier shapefiles quelque part sur le serveur et extraire les shapefiles.zip.

curl -v -u admin:geoserver -XPUT -H "Content-type: text/plain" -d "file:///home/geonode/data/shapefiles/" "http://localhost/geoserver/rest/workspaces/acme/datastores/shapefiles/external.shp?configure=all"

Remarque Le configure=all paramètre de chaîne de requête, qui définit chaque shapefile dans le répertoire sera chargé et publié.

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 201 Created

Pour vérifier le contenu du magasin, exécutez une requête GET. Étant donné que la réponse XML fournit uniquement des détails sur le magasin lui-même sans montrer son contenu, exécutez une requête GET pour HTML :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme/datastores/shapefiles.html

Création d’un style de calque

Cet exemple va créer un nouveau style sur le serveur et va remplir le contenu d’un fichier local de SLD.

L’exemple suivant crée un nouveau style appelé roads_style:

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<style><name>roads_style</name><filename>roads.sld</filename></style>" http://localhost/geoserver/rest/styles

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 201 Created

Cette demande télécharge un fichier nommé roads.sld du fichier et remplit le roads_style avec son contenu :

curl -v -u admin:geoserver -XPUT -H "Content-type: application/vnd.ogc.sld+xml" -d @roads.sld http://localhost/geoserver/rest/styles/roads_style

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 200 OK

Le SLD elle-même peut être téléchargé via une requête GET :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/styles/roads_style.sld

Modification d’un style de calque

Cet exemple va modifier un style de calque. Avant d’effectuer tout changement, il est utile d’afficher la configuration existante pour une couche donnée.

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

Ce qui suit récupère les informations de couche de “acme:roads” au format XML :

curl -v -u admin:geoserver -XGET "http://localhost/geoserver/rest/layers/acme:tiger_roads.xml"

La réponse dans ce cas serait :

<layer>
  <name>tiger_roads</name>
  <type>VECTOR</type>
  <defaultStyle>
    <name>line</name>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost/geoserver/rest/styles/line.xml" type="application/xml"/>
  </defaultStyle>
  <resource class="featureType">
    <name>tiger_roads</name>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost/geoserver/rest/workspaces/acme/datastores/roads/featuretypes/tiger_roads.xml" type="application/xml"/>
  </resource>
  <attribution>
    <logoWidth>0</logoWidth>
    <logoHeight>0</logoHeight>
  </attribution>
</layer>

Lorsque la couche est créée, GeoServer attribue un style par défaut à la couche correspondante à la géométrie de la couche. Dans ce cas, un style nommé line est affecté au calque. Ce style peut se lire avec une demande WMS:

http://localhost/geoserver/wms/reflect?layers=acme:tiger_roads

Dans ce prochain exemple un nouveau style sera crée appelé roads_style et affectée au calque “acme:roads” :

curl -v -u admin:geoserver -XPUT -H "Content-type: text/xml" -d "<layer><defaultStyle><name>roads_style</name></defaultStyle></layer>" http://localhost/geoserver/rest/layers/acme:tiger_roads

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 200 OK

Le nouveau style est consultable avec la même demande WMS comme ci-dessus:

http://localhost/geoserver/wms/reflect?layers=acme:tiger_roads

Notez que si vous voulez télécharger le style dans un workspace (ne le rendant pas un style global), puis l’assigner à un calque à cet workspace, vous devez d’abord créer le style dans un workspace donné:

curl -u admin:geoserver -XPOST -H 'Content-type: text/xml' -d '<style><name>roads_style</name><filename>roads.sld</filename></style>' http://localhost/geoserver/rest/workspaces/acme/styles

Télécharger le fichier au sein de workspace:

curl -u admin:geoserver -XPUT -H 'Content-type: application/vnd.ogc.sld+xml' -d @roads.sld http://localhost/geoserver/rest/workspaces/acme/styles/roads_style

Et enfin appliquer ce style au calque. Notez l’utilisation de la <workspace> tag dans le fichier XML:

curl -u admin:geoserver -XPUT -H 'Content-type: text/xml' -d '<layer><defaultStyle><name>roads_style</name><workspace>acme</workspace></defaultStyle></layer>' http://localhost/geoserver/rest/layers/acme:tiger_roads

Ajout d’une base de données de PostGIS

Dans cet exemple un PostGIS, base de données nommée nyc s’ajoutera comme un nouveau magasin.

Avertissement

Cette section part du principe qu’une base de données PostGIS nommé nyc est présent sur le système local et est accessible par l’utilisateur bob.

Note

Afin de créer et configurer la base de données localement, suivez les instructions sur Créer et préparer le nyc exemple base de données

Créez un nouveau fichier texte et ajoutez le contenu suivant. Cela représentera le nouveau magasin. Enregistrez le fichier sous nycDataStore.xml.

<dataStore>
  <name>nyc</name>
  <connectionParameters>
    <host>localhost</host>
    <port>5432</port>
    <database>nyc</database>
    <user>bob</user>
    <passwd>postgres</passwd>
    <dbtype>postgis</dbtype>
  </connectionParameters>
</dataStore>

Ce qui suit va ajouter que la nouvelle PostGIS stocker au catalogue de GeoServer :

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

curl -v -u admin:geoserver -XPOST -T nycDataStore.xml -H "Content-type: text/xml" http://localhost/geoserver/rest/workspaces/acme/datastores

Si régulier, la réponse doit contenir ce qui suit:

< HTTP/1.1 200 OK

Le magasin d’informations peut être récupérée au format XML avec une requête GET :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme/datastores/nyc.xml

La réponse devrait ressembler à ce qui suit :

<dataStore>
  <name>nyc</name>
  <type>PostGIS</type>
  <enabled>true</enabled>
  <workspace>
    <name>acme</name>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/workspaces/acme.xml" type="application/xml"/>
  </workspace>
  <connectionParameters>
    <entry key="port">5432</entry>
    <entry key="dbtype">postgis</entry>
    <entry key="host">localhost</entry>
    <entry key="user">bob</entry>
    <entry key="database">nyc</entry>
    <entry key="namespace">http://acme</entry>
  </connectionParameters>
  <__default>false</__default>
  <featureTypes>
    <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate"
     href="http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes.xml"
     type="application/xml"/>
  </featureTypes>
</dataStore>

Ajout d’une table PostGIS

Dans cet exemple, une table de la base de données PostGIS créée dans l’exemple précédent s’ajoutera comme un featuretypes.

Avertissement

Cet exemple suppose que la table a déjà été créée et le tiger_roads couche supprimé dans le cas où vous avez exécuté les étapes précédentes.

L’exemple suivant ajoute la table tiger_roads comme un nouveau type de fonctionnalité :

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<featureType><name>tiger_roads</name></featureType>" http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes

Les informations de featuretype peuvent être récupérées au format XML avec une requête GET :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes/tiger_roads.xml

Cette couche peut se lire avec une demande GetMap WMS:

http://localhost/geoserver/wms/reflect?layers=acme:tiger_roads

Création d’une table PostGIS

Dans l’exemple précédent, un nouveau type de fonctionnalité a été ajouté en se basant sur un tableau de PostGIS qui existaient déjà dans la base de données. L’exemple suivant ne crée pas seulement un nouveau type de fonctionnalité dans GeoServer, mais crée également la table PostGIS elle-même.

Créez un nouveau fichier texte et ajoutez le contenu suivant. Cette mesure représente la définition du nouveau type de fonctionnalité et de tableau. Enregistrez le fichier sous annotations.xml.

<featureType>
  <name>annotations</name>
  <nativeName>annotations</nativeName>
  <title>Annotations</title>
  <srs>EPSG:4326</srs>
  <attributes>
    <attribute>
      <name>the_geom</name>
      <binding>com.vividsolutions.jts.geom.Point</binding>
    </attribute>
    <attribute>
      <name>description</name>
      <binding>java.lang.String</binding>
    </attribute>
    <attribute>
      <name>timestamp</name>
      <binding>java.util.Date</binding>
    </attribute>
  </attributes>
</featureType>

Cette demande va effectuer la création de type de fonction et ajoutez la nouvelle table :

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

curl -v -u admin:geoserver -XPOST -T annotations.xml -H "Content-type: text/xml" http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes

Le résultat est une table vide nommée “annotations” dans la base de données “nyc”, entièrement configurées comme un type de fonctionnalité.

Les informations de featuretype peuvent être récupérées au format XML avec une requête GET :

curl -v -u admin:geoserver -XGET http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes/annotations.xml

Création d’un groupe de calques

Avertissement

Cet exemple suppose que les tables ont déjà été créé et le tiger_roads, poly_landmarks, pi, giant_polygon couches ont été créées.

$ curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<featureType><name>giant_polygon</name></featureType>" http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes

$ curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<featureType><name>poi</name></featureType>" http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes

$ curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<featureType><name>poly_landmarks</name></featureType>" http://localhost/geoserver/rest/workspaces/acme/datastores/nyc/featuretypes

Dans cet exemple sera créé un groupe de calques, issu des couches qui existent déjà sur le serveur.

Créez un nouveau fichier texte et ajoutez le contenu suivant. Ce fichier représente la définition du nouveau groupe de calque. Enregistrez le fichier sous nycLayerGroup.xml.

<layerGroup>
  <name>nyc</name>
  <layers>
    <layer>poi</layer>
    <layer>poly_landmarks</layer>
    <layer>tiger_roads</layer>
  </layers>
  <styles>
    <style>point</style>
    <style>polygon</style>
    <style>roads_style</style>
  </styles>
</layerGroup>

La requête suivante crée le nouveau groupe de calques :

Note

Chaque bloc de code ci-dessous contient une commande unique qui peut être prolongée sur plusieurs lignes.

curl -v -u admin:geoserver -XPOST -d @nycLayerGroup.xml -H "Content-type: text/xml" http://localhost/geoserver/rest/layergroups

Note

L’argument -d@filename.xml dans cet exemple est utilisé pour envoyer un fichier comme le corps d’une requête HTTP avec une méthode POST. L’argument -T filename.xml utilisé dans le précédent exemple a été utilisé pour envoyer un fichier comme le corps d’un HTTP demandé avec une méthode PUT.

Ce groupe de calques peut être visualisé avec une demande GetMap WMS:

http://localhost/geoserver/wms/reflect?layers=nyc&format=openlayers

Extraction des versions de composants

Cet exemple montre comment récupérer les versions des composants principaux : GeoServer GeoTools et GeoWebCache :

Note

Le bloc de code ci-dessous contient une commande unique qui s’étend sur plusieurs lignes.

curl -v -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost/geoserver/rest/about/version.xml

La réponse ressemblera à quelque chose comme ceci :

<about>
  <resource name="GeoServer">
    <Build-Timestamp>04-Aug-2015 11:00</Build-Timestamp>
    <Git-Revision>bca94d09e2e18839814a4b663ba8b0fca2130e47</Git-Revision>
    <Version>2.7-SNAPSHOT</Version>
  </resource>
  <resource name="GeoTools">
    <Build-Timestamp>29-Jul-2015 10:13</Build-Timestamp>
    <Git-Revision>f50be97a039cd06d43a87ec3cc101626f0ac9fd2</Git-Revision>
    <Version>13-SNAPSHOT</Version>
  </resource>
  <resource name="GeoWebCache">
    <Git-Revision>f6e0d39c29c2317d2839c52a84676935e5b046cf/f6e0d39c29c2317d2839c52a84676935e5b046cf</Git-Revision>
    <Version>1.7-SNAPSHOT</Version>
  </resource>
</about>

Récupération des manifestes

Cette collection d’exemples montre comment récupérer le manifeste complet et les sous-ensembles du manifeste comme connu pour le chargeur de classe.

Note

Le bloc de code ci-dessous contient une commande unique qui s’étend sur plusieurs lignes.

curl -v -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost/geoserver/rest/about/manifest.xml

Le résultat sera une très longue liste d’informations de manifeste. Tandis que ceci peut être utile, il est souvent souhaitable pour filtrer cette liste.

Filtrage au nom de la ressource

Il est possible de filtrer sur les noms de ressources en utilisant des expressions régulières. Cet exemple permet de récupérer uniquement les ressources là où l’attribut name correspond gwc-.*:

Note

Le bloc de code ci-dessous contient une commande unique qui s’étend sur plusieurs lignes.

curl -v -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost/geoserver/rest/about/manifest.xml?manifest=gwc-.*

Le résultat ressemblera à quelque chose comme ceci (édité par souci de concision) :

<about>
  <resource name="gwc-2.3.0">
    ...
  </resource>
  <resource name="gwc-core-1.4.0">
    ...
  </resource>
  <resource name="gwc-diskquota-core-1.4.0">
    ...
  </resource>
  <resource name="gwc-diskquota-jdbc-1.4.0">
    ...
  </resource>
  <resource name="gwc-georss-1.4.0">
    ...
  </resource>
  <resource name="gwc-gmaps-1.4.0">
    ...
  </resource>
  <resource name="gwc-kml-1.4.0">
    ...
  </resource>
  <resource name="gwc-rest-1.4.0">
    ...
  </resource>
  <resource name="gwc-tms-1.4.0">
    ...
  </resource>
  <resource name="gwc-ve-1.4.0">
    ...
  </resource>
  <resource name="gwc-wms-1.4.0">
    ...
  </resource>
  <resource name="gwc-wmts-1.4.0">
    ...
  </resource>
</about>

Filtrage sur les propriétés de la ressource

Le filtrage est également disponible dans les propriétés de ressource qui en résulte. Cet exemple récupérera uniquement les ressources avec une propriété égale à GeoServerModule.

Note

Les blocs de code ci-dessous contiennent une commande unique qui s’étend sur plusieurs lignes.

curl -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost/geoserver/rest/about/manifest.xml?key=GeoServerModule

Le résultat ressemblera à quelque chose comme ceci (édité par souci de concision) :

<about>
 <resource name="control-flow-2.3.0">
  <GeoServerModule>extension</GeoServerModule>
  ...
 </resource>
 ...
 <resource name="wms-2.3.0">
  <GeoServerModule>core</GeoServerModule>
  ...
 </resource>
</about>

Il est également possible de filtrer contrela propriété et la valeur. Pour récupérer les seules ressources dont une propriété nommée GeoServerModule a une valeur égale à extension, ajouter cette demande avec &value=extension:

curl -u admin:geoserver -XGET -H "Accept: text/xml" http://localhost/geoserver/rest/about/manifest.xml?key=GeoServerModule&value=extension

Télécharger et modifier une mosaïque d’image

La commande suivante télécharge un polyphemus.zip du fichier contenant la définition d’une mosaïque (au moins une granule de la mosaïque pour initialiser les résolutions, les aperçus et les autres) et configure tous les couvertures dedans comme nouveaux calques.

Note

Les blocs de code ci-dessous contiennent une commande unique qui s’étend sur plusieurs lignes.

curl -u admin:geoserver -XPUT -H "Content-type:application/zip" --data-binary @polyphemus.zip http://localhost/geoserver/rest/workspaces/topp/coveragestores/polyphemus/file.imagemosaic

Ce qui suit indique plutôt la mosaïque à récolter (ou re-récolter) un seul fichier dans la mosaïque, en collectant ses propriétés et mise à jour de l’index de la mosaïque :

curl -v -u admin:geoserver -XPOST -H "Content-type: text/plain" -d "file:///path/to/the/file/polyphemus_20130302.nc" "http://localhost/geoserver/rest/workspaces/topp/coveragestores/poly-incremental/external.imagemosaic"

La récolte peut également être dirigée vers un répertoire entier, comme suit :

curl -v -u admin:geoserver -XPOST -H "Content-type: text/plain" -d "file:///path/to/the/mosaic/folder" "http://localhost/geoserver/rest/workspaces/topp/coveragestores/poly-incremental/external.imagemosaic"

La structure d’index image mosaïque peut être récupérée en utilisant quelque chose comme :

curl -v -u admin:geoserver -XGET "http://localhost/geoserver/rest/workspaces/topp/coveragestores/polyphemus-v1/coverages/NO2/index.xml"

qui se traduira par le texte suivant :

   <Schema>
  <attributes>
    <Attribute>
      <name>the_geom</name>
      <minOccurs>0</minOccurs>
      <maxOccurs>1</maxOccurs>
      <nillable>true</nillable>
      <binding>com.vividsolutions.jts.geom.Polygon</binding>
    </Attribute>
    <Attribute>
      <name>location</name>
      <minOccurs>0</minOccurs>
      <maxOccurs>1</maxOccurs>
      <nillable>true</nillable>
      <binding>java.lang.String</binding>
    </Attribute>
    <Attribute>
      <name>imageindex</name>
      <minOccurs>0</minOccurs>
      <maxOccurs>1</maxOccurs>
      <nillable>true</nillable>
      <binding>java.lang.Integer</binding>
    </Attribute>
    <Attribute>
      <name>time</name>
      <minOccurs>0</minOccurs>
      <maxOccurs>1</maxOccurs>
      <nillable>true</nillable>
      <binding>java.sql.Timestamp</binding>
    </Attribute>
    <Attribute>
      <name>elevation</name>
      <minOccurs>0</minOccurs>
      <maxOccurs>1</maxOccurs>
      <nillable>true</nillable>
      <binding>java.lang.Double</binding>
    </Attribute>
    <Attribute>
      <name>fileDate</name>
      <minOccurs>0</minOccurs>
      <maxOccurs>1</maxOccurs>
      <nillable>true</nillable>
      <binding>java.sql.Timestamp</binding>
    </Attribute>
    <Attribute>
      <name>updated</name>
      <minOccurs>0</minOccurs>
      <maxOccurs>1</maxOccurs>
      <nillable>true</nillable>
      <binding>java.sql.Timestamp</binding>
    </Attribute>
  </attributes>
  <atom:link xmlns:atom="http://www.w3.org/2005/Atom" rel="alternate" href="http://localhost/geoserver/rest/workspaces/topp/coveragestores/polyphemus-v1/coverages/NO2/index/granules.xml" type="application/xml"/>
</Schema>

Énumérer les granules existantes peut être exécutér comme suit :

curl -v -u admin:geoserver -XGET "http://localhost/geoserver/rest/workspaces/topp/coveragestores/polyphemus-v1/coverages/NO2/index/granules.xml?limit=2"

Cela se traduira par une description GML des granules, comme suit :

<?xml version="1.0" encoding="UTF-8"?>
<wfs:FeatureCollection xmlns:gf="http://www.geoserver.org/rest/granules" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:gml="http://www.opengis.net/gml">
  <gml:boundedBy>
    <gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
      <gml:coord>
        <gml:X>5.0</gml:X>
        <gml:Y>45.0</gml:Y>
      </gml:coord>
      <gml:coord>
        <gml:X>14.875</gml:X>
        <gml:Y>50.9375</gml:Y>
      </gml:coord>
    </gml:Box>
  </gml:boundedBy>
  <gml:featureMember>
    <gf:NO2 fid="NO2.1">
      <gf:the_geom>
        <gml:Polygon>
          <gml:outerBoundaryIs>
            <gml:LinearRing>
              <gml:coordinates>5.0,45.0 5.0,50.9375 14.875,50.9375 14.875,45.0 5.0,45.0</gml:coordinates>
            </gml:LinearRing>
          </gml:outerBoundaryIs>
        </gml:Polygon>
      </gf:the_geom>
      <gf:location>polyphemus_20130301.nc</gf:location>
      <gf:imageindex>336</gf:imageindex>
      <gf:time>2013-03-01T00:00:00Z</gf:time>
      <gf:elevation>10.0</gf:elevation>
      <gf:fileDate>2013-03-01T00:00:00Z</gf:fileDate>
      <gf:updated>2013-04-11T10:54:31Z</gf:updated>
    </gf:NO2>
  </gml:featureMember>
  <gml:featureMember>
    <gf:NO2 fid="NO2.2">
      <gf:the_geom>
        <gml:Polygon>
          <gml:outerBoundaryIs>
            <gml:LinearRing>
              <gml:coordinates>5.0,45.0 5.0,50.9375 14.875,50.9375 14.875,45.0 5.0,45.0</gml:coordinates>
            </gml:LinearRing>
          </gml:outerBoundaryIs>
        </gml:Polygon>
      </gf:the_geom>
      <gf:location>polyphemus_20130301.nc</gf:location>
      <gf:imageindex>337</gf:imageindex>
      <gf:time>2013-03-01T00:00:00Z</gf:time>
      <gf:elevation>35.0</gf:elevation>
      <gf:fileDate>2013-03-01T00:00:00Z</gf:fileDate>
      <gf:updated>2013-04-11T10:54:31Z</gf:updated>
    </gf:NO2>
  </gml:featureMember>
</wfs:FeatureCollection>

La suppression de toutes les granules provenant d’un fichier particulier (un fichier NetCDF peut en contenir plusieurs) peut être effectuée comme suit :

curl -v -u admin:geoserver -XDELETE "http://localhost/geoserver/rest/workspaces/topp/coveragestores/polyphemus-v1/coverages/NO2/index/granules.xml?filter=location='polyphemus_20130301.nc'"

Création d’un vide granules de mosaïque et de récolte

La commande suivante télécharge un empty.zip fichier. Cette archive contient la définition d’une mosaïque de vide (pas de granules dans le cas présent) à travers les fichiers suivants:

datastore.properties (the postgis datastore connection params)
indexer.xml (The mosaic Indexer, note the CanBeEmpty=true parameter)
polyphemus-test.xml (The auxiliary file used by the NetCDF reader to parse schemas and tables)

Note

Assurez-vous de mettre à jour le fichier datastore.properties avec vos paramètres de connexion et de revigorer le zip une fois terminé, avant de le télécharger.

Note

Les blocs de code ci-dessous contiennent une commande unique qui s’étend sur plusieurs lignes.

Note

La configure=none paramètre permettant la configuration future après récolte

curl -u admin:geoserver -XPUT -H "Content-type:application/zip" --data-binary @empty.zip http://localhost/geoserver/rest/workspaces/topp/coveragestores/empty/file.imagemosaic?configure=none

Ce qui suit indique plutôt à la mosaïque de récolter un seul polyphemus_20120401.nc file dans la mosaïque, la collecte de ses propriétés et mise à jour de l’index de la mosaïque :

curl -v -u admin:geoserver -XPOST -H "Content-type: text/plain" -d "file:///path/to/the/file/polyphemus_20120401.nc" "http://localhost/geoserver/rest/workspaces/topp/coveragestores/empty/external.imagemosaic"

Une fois fait, vous pouvez obtenir la liste des couvertures/granules disponibles sur ce magasin.

curl -v -u admin:geoserver -XGET "http://localhost/geoserver/rest/workspaces/topp/coveragestores/empty/coverages.xml?list=all"

qui se traduira par le texte suivant :

<list>
  <coverageName>NO2</coverageName>
  <coverageName>O3</coverageName>
</list>

L’étape suivante consiste à configurer une fois pour la couverture (comme NO2 exemple), une couverture disponible.

curl -v -u admin:geoserver -XPOST -H "Content-type: text/xm" -d @"/path/to/coverageconfig.xml" "http://localhost/geoserver/rest/workspaces/topp/coveragestores/empty/coverages"

Où coverageconfig.xml peut ressembler à ceci

<coverage>
  <name>NO2</name>
</coverage>

Note

Lorsque vous spécifiez uniquement le nom de la couverture, la couverture sera automatiquement configurée

Changement de mot de passe maître

Le mot de passe peut être récupérés de wit une demande GET.

curl -v -u admin:geoserver -XGET   http://localhost/geoserver/rest/security/masterpw.xml

Un mot de passe maître généré peut être -“}3a^Kh. Prochaine étape consiste à créer un fichier XML.

Fichier changes.xml

<masterPassword>
   <oldMasterPassword>-"}3a^Kh</oldMasterPassword>
   <newMasterPassword>geoserver1</newMasterPassword>
</masterPassword>

Changer le mot de passe en utilisant le fichier :

curl -v -u admin:geoserver -XPUT -H "Content-type: text/xml" -d @change.xml http://localhost/geoserver/rest/security/masterpw.xml