Criar uma camada no GeoServer usando REST

16

Como parte de uma possível solução para essa pergunta desejo criar uma camada no GeoServer via REST que forneça uma instrução SQL junto com um ID do usuário.

Lendo Acho que criaria um tipo de recurso e o publicaria? Eu preciso fazer isso tudo no REST. Alguém tem algum exemplo de código?

CaptDragon
fonte
Parece que não é possível adicionar uma camada por meio da interface restante, você resolveu isso no final? Eu recebo o erro: Status HTTP 405 - O método HTTP especificado não é permitido para o recurso solicitado
a1an

Respostas:

41

Você pode fazer muitas coisas com a API REST do GeoServer que não estão documentadas especificamente e para as quais não existem exemplos de código. Aqui está a estratégia para enfrentá-los.

Primeiro, comece com os exemplos na documentação . Verifique se você está familiarizado com como criar uma nova camada ou área de trabalho simples usando um HTTP POST com XML ou JSON.

Em seguida, através da interface do usuário do GeoServer, crie manualmente o objeto necessário para o qual não há documentação (nesse caso, um tipo de recurso).

Por fim, navegue manualmente para o índice REST GeoServer ( http://your-server/restou http://your-server/geoserver/rest). Navegue pelo índice até encontrar o tipo de recurso que você acabou de criar. Anexe ".xml" ou ".json" à URL deste recurso e você verá sua representação XML ou JSON.

Essa representação é o que você precisaria para o POST para criar o tipo de recurso por meio da API. O URL da representação é o URL para o qual você precisaria POST (por exemplo http://your-server/geoserver/rest/..../myFeatureTypeName.json).

Você pode usar esta estratégia para descobrir como criar ou configurar programaticamente qualquer recurso no GeoServer.

Rohan Singh
fonte
2
OBRIGADO! Resposta fácil e apenas me salvou mais 2 horas de zombando redor
Ragi Yaser Burhum
4
Além disso, muitos parâmetros podem ser ignorados, e o GeoServer os descobrirá (assim como na interface do usuário). por exemplo. caixas delimitadoras
rcoup
1
Uau - esta é a melhor descrição disso que eu já vi.
Kieveli 4/04
3
Usando GeoServer 2.10.2, descobri que eu precisava POST para o featuretypesponto final da loja, por exemplogeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Stephen chumbo
Descrição clara do fluxo de trabalho, links relevantes incluídos. UPVOTED! :)
gil tony
10

Eu sei que esta é uma pergunta antiga, mas apenas no caso de alguém mais estar confuso como eu. A parte importante é que você não pode criar uma camada a partir do ponto de extremidade http: // geoserver / rest / layers .

Se você deseja adicionar uma camada vetorial, isso é feito através do recurso de tipo de recurso:

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

Um POST para:

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

onde é o espaço de trabalho em que você deseja que o tipo de recurso fique, e a fonte de dados a usar criará um novo tipo de recurso de vetor, ou seja, camada.

Se você está pensando no que pode POST, @Rohan está correto, a maneira mais fácil é consultar um tipo de recurso existente, ou seja, um http GET para

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

que retornará um tipo de recurso existente como json.

perdido na tradução
fonte
1

Sua melhor referência está no guia do usuário. http://docs.geoserver.org/stable/en/user/rest/examples/index.html

jdeolive
fonte
Sim, mas não há exemplo para criar um tipo de recurso a partir de uma instrução SQL ... eu esperava que alguém tivesse um código de exemplo para compartilhar.
CaptDragon
Esse guia do usuário está muito ausente.
Kieveli 4/04
0

Se você entende Java, pode dar uma olhada neste código simples que usa REST para executar todos os tipos de operações no GeoServer.

Ivo Limmen
fonte
0

Para adicionar uma camada, um armazenamento de dados e um tipo de característica devem ser definidos. Supondo que eles já estejam definidos junto com um estilo (conforme descrito no guia em http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-using-the-rest-api/ para adicionar uma camada a PUT A solicitação deve ser enviada ao geoserver em:

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

Com um conteúdo de dados como:

<layer>
  <name>NEW_LAYER_NAME</name>
  <type>VECTOR</type>
  <defaultStyle>
    <name>myStyle</name>
  </defaultStyle>
  <resource class="featureType">
    <name>myFeature</name>
  </resource>
</layer>
a1an
fonte
Esse blog fala sobre como adicionar um estilo a uma camada existente, o que faz sentido, pois é para isso que o PUT foi projetado. Você não pode criar uma nova camada dessa maneira. Aqui estão os documentos: docs.geoserver.org/stable/en/user/rest/api/layers.html , um PUT para descanso / camadas retornará um 405. Um PUT para / rest / layers / <existing_layer> modificará um camada específica, não crie uma nova.
VersionIntradução #