J'ai l'obligation stricte de récupérer les noms de toutes les couches dans un magasin GeoServer à l'aide d'OpenLayers. J'ai parcouru le message ici , mais cela ne répond pas à ma question. J'ai également parcouru l'API REST de GeoServer, ce qui serait idéal si j'utilise un autre langage, par exemple C #, Java ou PHP. Mais je veux le faire entièrement en JavaScript.
MISE
À JOUR: D'après ce que je peux voir dans le WFS GetCapabilities
document, je peux récupérer les noms de toutes les couches en envoyant une demande WFS GetCapabilities à l'aide de filtres. Mais je ne sais pas s'il est possible d'incorporer des filtres dans une GetCapabilities
demande. Je n'ai aucune idée à quoi ressemblera un tel filtre.
Tout conseil sur la façon dont je peux y parvenir sera très apprécié. Toute approche alternative sera également appréciée.
MISE À JOUR:
Je crois avoir trouvé une solution ici ; "Les demandes WFS GetCapabilities peuvent être filtrées pour renvoyer uniquement les couches correspondant à un espace de noms particulier. Pour ce faire, ajoutez le code suivant à votre demande: namespace = <namespace>
". J'espère que cela aide quelqu'un d'autre.
Réponses:
Je remarque que vous avez déjà trouvé une solution qui fonctionne pour vous, mais j'ai pensé que je pourrais ajouter des options supplémentaires que vous ou d'autres pourraient trouver utiles.
Dans GeoServer, il existe une capacité connue sous le nom de services OWS virtuels . Les services WMS, WFS et WCS sont collectivement appelés services OWS. Lorsque vous effectuez une demande auprès de l'un de ces services, vous effectuez une demande globale, de sorte que toutes les couches enregistrées sont renvoyées dans le document de fonctionnalités (sauf si vous disposez de paramètres de sécurité des données). En revanche, un service virtuel est une vue filtrée du service global. Le filtrage est effectué sur les espaces de travail et est accessible via une URL légèrement différente.
Prenons un exemple. Supposons que vous ayez un espace de travail appelé myws et que c'est cet espace de travail pour lequel vous souhaitez répertorier les couches. Dans ce cas, vous pouvez faire une demande à l'url:
Le document sur les capacités renvoyé ne répertorie que les couches enregistrées dans l' espace de travail myws .
C'est une approche, mais vous aviez initialement demandé d'accéder à la liste des couches via JavaScript. Heureusement, il existe un moyen de le faire en utilisant l'API REST GeoServer. Vous pouvez obtenir une liste de types de fonctionnalités pour un espace de travail et une banque de données donnés en utilisant quelque chose comme:
Cela vous renverra un objet JSON répertoriant tous les types de fonctionnalités dans l'espace de travail, vous pouvez également remplacer .json par .xml ou .html pour obtenir la réponse dans ces formats. Alors, comment faire cela dans OpenLayers? Heureusement, OpenLayers fournit une encapsulation de l'objet XMLHttpRequest sous forme d'
OpenLayers.Request
objet. Un exemple simple utilisant l'URL REST ci-dessus serait:Il existe un bon document sur la demande de données distantes avec OpenLayers ici .
J'espère que cela vous donne d'autres approches à considérer.
la source
Cette réponse pourrait aider quelqu'un. Je voulais construire une liste de mes couches automatiquement en utilisant Javascript et Leaflet. En utilisant la réponse CHenderson, j'ai fait le code suivant:
De cette façon, je peux ajouter un mot-clé "groupe: GEOGRAPHIE" sur la couche Geoserver et je n'ai pas besoin de coder manuellement chaque couche et son groupe. Le nom est utilisé pour créer la couche (peut-être en utilisant L.WMS.source) et le titre est l'étiquette html.
la source
Essayez de vérifier cette réponse . il donne également une démo. N'oubliez pas que les couches servent via divers services comme il y est mentionné.
J'espère que ça t'aide...
la source
WFS GetCapabilities
demande. Mais je veux seulement récupérer les noms des couches, rien d'autre. Cela signifie que je dois intégrer des filtres dans ma demande. Mais je n'ai toujours aucune idée de la façon dont je peux ajouter des filtres à uneWFS GetCapabilties
demande qui ne retournerait que les noms des couches. Reportez-vous à ma mise à jour ci-dessus. Des pointeurs?