Créer une couche dans GeoServer à l'aide de REST


16

Dans le cadre d'une solution possible à cette question, je veux créer une couche dans GeoServer via REST qui fournit une instruction SQL avec un ID utilisateur.

Lecture Je pense que je créerais un type d' entité et le publierais? Je dois tout faire dans REST. Quelqu'un at-il des exemples de code?


Il semble qu'il ne soit pas possible d'ajouter une couche via l'interface de repos, l'avez-vous résolu à la fin? J'obtiens l'erreur: HTTP Status 405 - La méthode HTTP spécifiée n'est pas autorisée pour la ressource demandée
a1an

Réponses:


41

Il y a beaucoup de choses que vous pouvez faire avec l'API REST GeoServer qui ne sont pas spécifiquement documentées et pour lesquelles il n'y a pas d'exemples de code. Voici la stratégie pour y faire face.

Commencez d'abord par les exemples de la documentation . Assurez-vous que vous savez comment créer une nouvelle couche ou un nouvel espace de travail à l'aide d'un HTTP POST avec XML ou JSON.

Ensuite, via l'interface utilisateur GeoServer, créez manuellement l'objet dont vous avez besoin pour lequel il n'y a pas de documentation (dans ce cas, un type d'entité).

Enfin, accédez manuellement à l'index GeoServer REST ( http://your-server/restou http://your-server/geoserver/rest). Parcourez l'index jusqu'à ce que vous trouviez le type d'entité que vous venez de créer. Ajoutez ".xml" ou ".json" à l'URL de cette ressource, et vous verrez sa représentation XML ou JSON.

Cette représentation est ce dont vous auriez eu besoin pour POST pour créer le type d'entité via l'API. L'URL de la représentation est l'URL dont vous auriez eu besoin pour POSTER (par exemple, http://your-server/geoserver/rest/..../myFeatureTypeName.json).

Vous pouvez utiliser cette stratégie pour comprendre comment créer ou configurer par programme n'importe quelle ressource dans GeoServer.


2
MERCI! Réponse facile et vient de me sauver encore 2 heures de moquerie
Ragi Yaser Burhum

4
De plus, de nombreux paramètres peuvent être ignorés et GeoServer les comprendra (comme dans l'interface utilisateur). par exemple. boîtes englobantes
rcoup

1
Wow - c'est la meilleure description de ce que j'ai vu.
Kieveli

3
En utilisant GeoServer 2.10.2, j'ai trouvé que j'avais besoin de POSTER sur le featuretypespoint de terminaison du magasin, par exemplegeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Stephen Lead

Description claire du flux de travail, liens pertinents inclus. MIS À JOUR! :)
tony gil

10

Je sais que c'est une vieille question, mais juste au cas où quelqu'un d'autre serait confus comme moi. La partie importante est que vous ne pouvez pas créer une couche à partir du point de terminaison http: // geoserver / rest / couches .

Si vous cherchez à ajouter une couche vectorielle, cela se fait via la ressource de type d'entité:

http://docs.geoserver.org/stable/en/user/rest/api/featuretypes.html

UN POSTE pour:

/workspaces/<ws>/datastores/<ds>/featuretypes

où se trouve l'espace de travail sous lequel vous souhaitez que le type d'entité vive, et la source de données à utiliser créera un nouveau type d'entité vectorielle, c'est-à-dire une couche.

Si vous vous demandez ce que vous pouvez POSTER, @Rohan est correct, le moyen le plus simple est de rechercher un type d'entité existant, IE un http GET pour

/workspaces/<ws>/datastores/<ds>/featuretypes/<ft>.json 

qui renverra un type d'entité existant en tant que json.



0

Si vous comprenez Java, vous voudrez peut-être jeter un œil à ce code simple qui utilise REST pour effectuer toutes sortes d'opérations sur GeoServer.


0

Pour ajouter un calque, un magasin de données et un type de fonction doivent être définis. En supposant qu'ils sont déjà définis avec un style (comme décrit dans le guide à http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-using-the-rest-api/ pour ajouter une couche un PUT la demande doit être envoyée à geoserver à:

http://geoserver.host/geoserver/rest/layers/NEW_LAYER_NAME

Avec un contenu de données comme:

<layer>
  <name>NEW_LAYER_NAME</name>
  <type>VECTOR</type>
  <defaultStyle>
    <name>myStyle</name>
  </defaultStyle>
  <resource class="featureType">
    <name>myFeature</name>
  </resource>
</layer>

Ce blog parle de l'ajout d'un style à une couche existante, ce qui est logique car c'est à cela que PUT est conçu. Vous ne pouvez pas créer un nouveau calque de cette façon. Voici les documents: docs.geoserver.org/stable/en/user/rest/api/layers.html , un PUT vers rest / couches retournera un 405. Un PUT vers / rest / couches / <listing_layer> modifiera un couche particulière, pas en créer une nouvelle.
lostintranslation
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.