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