Tengo un requisito estricto para recuperar los nombres de todas las capas en una tienda GeoServer usando OpenLayers. He leído la publicación aquí , pero no responde mi pregunta. También pasé por la API REST de GeoServer, que sería ideal si estoy usando otro lenguaje, por ejemplo, C #, Java o PHP. Pero quiero hacer esto completamente en JavaScript.
ACTUALIZACIÓN:
Por lo que puedo ver en el WFS GetCapabilities
documento, puedo recuperar los nombres de todas las capas enviando una solicitud de GetCapabilities de WFS usando filtros. Pero no estoy seguro de si es posible incorporar filtros en una GetCapabilities
solicitud. Tampoco tengo idea de cómo se verá ese filtro.
Cualquier consejo sobre cómo puedo lograr esto será muy apreciado. Cualquier enfoque alternativo también será apreciado.
ACTUALIZAR:
Creo que he encontrado una solución aquí ; "Las solicitudes de GetCapabilities de WFS se pueden filtrar para devolver solo las capas correspondientes a un espacio de nombres en particular. Para hacer esto, agregue el siguiente código a su solicitud: namespace = <namespace>
". Espero que esto ayude a alguien más.
fuente
Respuestas:
Noté que ya ha encontrado una solución que funciona para usted, pero pensé que podría agregar algunas opciones adicionales que usted u otros puedan encontrar útiles.
En GeoServer hay una capacidad conocida como Virtual OWS Services . Los servicios WMS, WFS y WCS se conocen colectivamente como servicios OWS. Cuando realiza una solicitud a uno de estos servicios, realiza una solicitud global, por lo que todas las capas registradas se devuelven en el documento de capacidades (a menos que tenga configuraciones de seguridad de datos). Por el contrario, un servicio virtual es una vista filtrada del servicio global. El filtrado se realiza en espacios de trabajo y se accede a través de una URL ligeramente diferente.
Tomemos un ejemplo. Suponga que tiene un espacio de trabajo llamado myws y es este espacio de trabajo para el que desea enumerar las capas. En ese caso, puede hacer una solicitud a la URL:
El documento de capacidades devuelto solo enumerará las capas registradas en el espacio de trabajo myws .
Ese es un enfoque, sin embargo, originalmente había preguntado sobre el acceso a la lista de capas a través de JavaScript. Afortunadamente, hay una manera de hacerlo utilizando la API REST de GeoServer. Puede obtener una lista de tipos de características para un espacio de trabajo y un almacén de datos determinados usando algo como:
Esto le devolverá un objeto JSON que enumera todos los tipos de características dentro del espacio de trabajo, también puede sustituir .json por .xml o .html para obtener la respuesta en esos formatos. Entonces, ¿cómo hacer esto en OpenLayers? Afortunadamente, OpenLayers proporciona una encapsulación del objeto XMLHttpRequest en forma de
OpenLayers.Request
objeto. Un ejemplo simple usando la URL REST anterior sería:Hay un buen documento de solicitud de datos remotos con OpenLayers aquí .
Espero que le brinde otros enfoques para considerar.
fuente
Esta respuesta podría ayudar a alguien. Quería crear una lista de mis capas automáticamente usando Javascript y Leaflet. Usando la respuesta CHenderson, hice el siguiente código:
De esta manera, puedo agregar una palabra clave "grupo: GEOGRAFÍA" en la capa Geoserver y no tengo que codificar manualmente cada capa y su grupo. El nombre se usa para crear la capa (quizás usando L.WMS.source) y el título es la etiqueta html.
fuente
Intenta ver esta respuesta . También da una demostración. No olvide que las capas sirven a través de varios servicios como se menciona allí.
Espero que te ayude...
fuente
WFS GetCapabilities
request. Pero solo quiero recuperar nombres de capas, nada más. Esto significa que tengo que incorporar filtros en mi solicitud. Pero todavía no tengo idea de cómo puedo agregar filtros a unaWFS GetCapabilties
solicitud que solo devolvería los nombres de las capas. Consulte mi actualización anterior. Cualquier puntero?