Crear una capa en GeoServer usando REST

16

Como parte de una posible solución a esta pregunta, quiero crear una capa en GeoServer a través de REST que proporcione una instrucción SQL junto con un ID de usuario.

Lectura ¿Creo que crearía un tipo de función y lo publicaría? Necesito hacer todo esto en REST. ¿Alguien tiene algún ejemplo de código?

CaptDragon
fuente
Parece que no es posible agregar una capa a través de la interfaz de descanso, ¿lo resolvió al final?
Aparece

Respuestas:

41

Hay muchas cosas que puede hacer con la API REST de GeoServer que no están documentadas específicamente y para las que no hay ejemplos de código. Aquí está la estrategia para abordarlos.

Primero, comience con los ejemplos en la documentación . Asegúrese de estar familiarizado con cómo puede crear una nueva capa o espacio de trabajo simple utilizando un HTTP POST con XML o JSON.

Luego, a través de la interfaz de usuario de GeoServer, cree manualmente el objeto que necesita para el que no hay documentación (en este caso, un tipo de característica).

Finalmente, busque manualmente el índice REST de GeoServer ( http://your-server/resto http://your-server/geoserver/rest). Navegue a través del índice hasta encontrar el tipo de característica que acaba de crear. Agregue ".xml" o ".json" a la URL de este recurso, y verá su representación XML o JSON.

Esta representación es lo que habría necesitado para POST para crear el tipo de característica a través de la API. La URL de la representación es la URL que habría necesitado para PUBLICAR (por ejemplo http://your-server/geoserver/rest/..../myFeatureTypeName.json).

Puede usar esta estrategia para descubrir cómo crear o configurar mediante programación cualquier recurso en GeoServer.

Rohan Singh
fuente
2
¡GRACIAS! Respuesta fácil y me ahorró otras 2 horas de burlas
Ragi Yaser Burhum
44
Además, se pueden omitir muchos parámetros y GeoServer los resolverá (al igual que en la interfaz de usuario). p.ej. cuadros delimitadores
rcoup
1
Wow, esta es la mejor descripción de esto que he visto.
Kieveli
3
Usando GeoServer 2.10.2, descubrí que necesitaba PUBLICAR en el featuretypespunto final de la tienda, por ejemplogeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Stephen Lead
Descripción clara del flujo de trabajo, enlaces relevantes incluidos. ¡VOTADO! :)
tony gil
10

Sé que esta es una vieja pregunta, pero en caso de que alguien más esté confundido como yo. La parte importante es que no puede crear una capa desde el punto final http: // geoserver / rest / layers .

Si está buscando agregar una capa vectorial, se hace a través del recurso de tipo de entidad:

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

Un mensaje para:

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

dónde está el espacio de trabajo en el que desea que viva el tipo de entidad, y la fuente de datos a utilizar creará un nuevo tipo de entidad vectorial, es decir, una capa.

Si se pregunta qué puede PUBLICAR, @Rohan es correcto, la forma más fácil es consultar un tipo de función existente, es decir, un http GET para

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

que devolverá un tipo de característica existente como json.

perdido en la traducción
fuente
1

Su mejor referencia está en la guía del usuario. http://docs.geoserver.org/stable/en/user/rest/examples/index.html

jdeolive
fuente
Sí, pero no hay ningún ejemplo para crear un tipo de característica a partir de una declaración SQL ... esperaba que alguien tuviera un código de ejemplo para compartir.
CaptDragon
Esa guía del usuario es muy deficiente.
Kieveli
0

Si comprende Java, es posible que desee echar un vistazo a este código simple que usa REST para realizar todo tipo de operaciones en GeoServer.

Ivo Limmen
fuente
0

Para agregar una capa, se debe definir un almacén de datos y un tipo de entidad. Suponiendo que ya están definidos junto con un estilo (como se describe en la guía en http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-using-the-rest-api/ para agregar una capa a PUT la solicitud debe enviarse a geoserver a:

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

Con un contenido de datos como:

<layer>
  <name>NEW_LAYER_NAME</name>
  <type>VECTOR</type>
  <defaultStyle>
    <name>myStyle</name>
  </defaultStyle>
  <resource class="featureType">
    <name>myFeature</name>
  </resource>
</layer>
a1an
fuente
Ese blog habla de agregar un estilo a una capa existente, lo que tiene sentido ya que para eso está diseñado PUT. No puede crear una nueva capa de esta manera. Aquí están los documentos: docs.geoserver.org/stable/en/user/rest/api/layers.html , un PUT para descansar / capas devolverá un 405. Un PUT para / rest / layers / <existing_layer> modificará un capa particular, no crear una nueva.
lostintranslation