Eu tenho um requisito estrito para recuperar nomes de todas as camadas em um armazenamento GeoServer usando OpenLayers. Passei pelo post aqui , mas ele não responde à minha pergunta. Também passei pela API REST do GeoServer, o que seria ideal se eu estivesse usando outra linguagem, como C #, Java ou PHP. Mas eu quero fazer isso inteiramente em JavaScript.
ATUALIZAÇÃO:
Pelo que posso ver no WFS GetCapabilities
documento, posso recuperar os nomes de todas as camadas enviando uma solicitação GetCapabilities do WFS usando filtros. Mas não tenho certeza se é possível incorporar filtros em uma GetCapabilities
solicitação. Também não tenho idéia de como será esse filtro.
Qualquer conselho sobre como eu posso conseguir isso será muito apreciado. Qualquer abordagem alternativa também será apreciada.
ATUALIZAR:
Acredito que encontrei uma solução aqui ; "As solicitações WFS GetCapabilities podem ser filtradas para retornar apenas as camadas correspondentes a um espaço para nome específico. Para fazer isso, adicione o seguinte código à sua solicitação: namespace = <namespace>
". Espero que isso ajude outra pessoa.
fonte
Respostas:
Percebo que você já encontrou uma solução que funciona para você, mas pensei em adicionar algumas opções adicionais que você ou outras pessoas possam achar úteis.
No GeoServer, existe um recurso conhecido como Virtual OWS Services . Os serviços WMS, WFS e WCS são conhecidos coletivamente como serviços OWS. Ao fazer uma solicitação para um desses serviços, você está fazendo uma solicitação global, para que todas as camadas registradas sejam retornadas no documento de recursos (a menos que você tenha configurações de segurança de dados). Por outro lado, um serviço virtual é uma visualização filtrada do serviço global. A filtragem é feita nas áreas de trabalho e é acessada através de um URL ligeiramente diferente.
Vamos dar um exemplo. Suponha que você tenha um espaço de trabalho chamado myws e é nesse espaço de trabalho que você gostaria de listar as camadas. Nesse caso, você pode fazer uma solicitação ao URL:
O documento de recursos retornados listará apenas as camadas registradas no espaço de trabalho myws .
Essa é uma abordagem, no entanto, você havia perguntado originalmente sobre o acesso à lista de camadas por meio de JavaScript. Felizmente, há uma maneira de fazer isso usando a API REST do GeoServer. Você pode obter uma lista de tipos de características para um determinado espaço de trabalho e armazenamento de dados usando algo como:
Isso retornará um objeto JSON listando todos os tipos de características no espaço de trabalho. Você também pode substituir .json por .xml ou .html para obter a resposta nesses formatos. Então, como fazer isso no OpenLayers? Felizmente, o OpenLayers fornece um encapsulamento do objeto XMLHttpRequest na forma de
OpenLayers.Request
objeto. Um exemplo simples usando o URL REST acima seria:Há um bom documento sobre como solicitar dados remotos com o OpenLayers aqui .
Espero que isso lhe dê algumas outras abordagens a serem consideradas.
fonte
Esta resposta pode ajudar alguém. Eu queria criar uma lista de minhas camadas automaticamente usando Javascript e Leaflet. Usando a resposta CHenderson, criei o seguinte código:
Dessa forma, posso adicionar uma palavra-chave "group: GEOGRAPHY" na camada Geoserver e não preciso codificar manualmente cada camada e seu grupo. O nome é usado para criar a camada (talvez usando L.WMS.source) e o título é o rótulo html.
fonte
Tente verificar esta resposta . também dá uma demonstração. Não se esqueça que as camadas servem por vários serviços, como mencionado lá.
espero que ajude você ...
fonte
WFS GetCapabilities
request. Mas eu só quero recuperar nomes de camadas, nada mais. Isso significa que eu tenho que incorporar filtros em minha solicitação. Mas ainda não tenho ideia de como anexar filtros a umaWFS GetCapabilties
solicitação que retornaria apenas os nomes das camadas. Consulte a minha atualização acima. Alguma dica?