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?

CaptDragon
la source
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.

Rohan Singh
la source
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.

perdu dans la traduction
la source
1

Votre meilleure référence est dans le guide de l'utilisateur. http://docs.geoserver.org/stable/en/user/rest/examples/index.html

jdeolive
la source
Oui, mais il n'y a pas d'exemple pour créer un type d'entité à partir d'une instruction SQL ... j'espérais que quelqu'un aurait un exemple de code à partager.
CaptDragon
Ce guide d'utilisation fait cruellement défaut.
Kieveli
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.

Ivo Limmen
la source
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>
a1an
la source
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