Suite

Comment obtenir l'état d'une couche dans le géoserveur à l'aide de gsconfig ?


Je récupère toutes les couches publiées du géoserveur à l'aide de gsconfig à l'aide du code suivant :

à partir de geoserver.catalog import Catalogue cat=Catalog("http:// localhost:8080/geoserver/rest") myResource = cat.get_resources(store='storeName', workspace="workspaceName") couches = cat.get_layers(myResource) .

Maintenant, je veux que toutes les couches qui ne sont pas publiées soient stockées (pas encore publiées) ou le statut d'une couche, ce qui signifie publié ou à publier. Comment puis-je?


layer = cat.get_layer("votre couche") if layer.enabled: print "La couche est publiée" else: print "La couche n'est pas publiée"

Les calques fournissent ces paramètres :

activée est un indicateur booléen qui peut être défini sur False pour arrêter de servir une couche sans la supprimer. Si cela est défini sur True, la couche sera servie.

Référez-vous à cette page Web.


Regrouper deux instances de géoserveur

Nous avons actuellement une application Web qui utilise Geoserver sur AWS. Pour le moment, nous n'utilisons qu'une seule instance de géoserveur et en avons une en attente au cas où. Nous voulons regrouper les 2 instances de géoserveur et les mettre sur le même équilibreur de charge. J'ai lu la documentation et configuré les instances pour partager un dossier de données de géoserveur à l'aide d'un montage EFS, afin que les dossiers soient tenus à jour sur les deux instances. Mon souci est que si nous avons ces géoserveurs qui fonctionnent ensemble et qu'un utilisateur télécharge un fichier par exemple, l'autre instance doit faire une "reload config" pour afficher les modifications qui ont été apportées dans la 1ère instance. D'après ce que j'ai lu jusqu'à présent, une "configuration de rechargement" peut être effectuée via la console ou REST. Quelqu'un peut-il me donner des conseils sur la façon dont je peux accomplir cela?

Il existe plusieurs solutions de clustering OpenSource différentes pour GeoServer -

Le module communautaire HazelCast est un peu plus facile à configurer, bien qu'il ne semble pas qu'il soit publié avec le reste des modules communautaires pour le moment, vous devrez donc peut-être le créer vous-même. Le moyen le plus simple de le configurer consiste à définir tous les nœuds du cluster pour qu'ils pointent vers un répertoire de configuration sur EFS. Dans AWS, vous devez également le configurer pour utiliser les adresses IP, car AWS ne prend pas en charge la multidiffusion. Une autre remarque est que le un événement le mode n'a pas fonctionné depuis quelques années maintenant, il ne fonctionnera donc que dans recharger mode.

Le clustering JMS est un peu plus compliqué car il repose sur un JMS (généralement ActiveMQ) pour gérer la publication des mises à jour vers les autres nœuds du cluster. Pour un simple cluster à 2 nœuds, il est probablement possible d'utiliser l'ActiveMQ intégrable qui peut s'exécuter dans la même instance de tomcat que le géoserveur. Encore une fois, AWS rend cela un peu plus difficile à configurer car par défaut, il essaiera de trouver les serveurs ActiveMQ par multidiffusion. Le cluster JMS synchronise uniquement les modifications apportées au catalogue et ne nécessite pas de rechargement pour que les modifications se produisent. http://docs.geoserver.org/latest/en/user/community/jms-cluster/index.html

Dans l'interface utilisateur, la fonction de rechargement du catalogue est dans le État du serveur page. Un rechargement peut également être déclenché en envoyant une requête PUT ou POST à ​​http://example.com/geoserver/rest/reload (il faudra également un utilisateur authentifié avec le rôle admin pour passer l'appel), voir la documentation de l'API REST pour plus de détails.

Selon la taille du catalogue, le rechargement peut entraîner certains problèmes. Pendant le processus de rechargement, geoserver supprime la version en mémoire du catalogue, puis recharge chaque magasin, couche et style à partir du disque. Au cours de ce processus, si une demande est reçue pour une couche qui n'a pas été rechargée dans la mémoire, le géoserveur est susceptible de répondre avec une erreur 404. Les performances de chargement du catalogue ont été considérablement améliorées dans GeoServer 2.11+ pour réduire le temps de démarrage et le temps de rechargement du catalogue.

Dans tous les cas, je recommanderais de diriger tout le trafic Web et de repos (/geoserver/web & /geoserver/rest) vers un seul nœud qui servira de maître, cela tend à éviter le potentiel de corruption du catalogue qui peut se produire lorsque plusieurs nœuds essayez d'écrire au catalogue en même temps. C'est assez trivial à configurer dans AWS à l'aide d'un ALB.


Le téléchargement de ISO19139 xml n'enregistre pas/ne renvoie pas gmd : éléments de contact #2250

Je télécharge une image et un fichier xml ISO19139 associé. Le fichier contient un élément gmd:contact (joint ci-dessous). Ce fichier se télécharge correctement. Cependant, lorsque j'essaie de "Télécharger les métadonnées" et de choisir l'option "ISO", presque toutes les informations de contact ont "manquant" dans les champs (l'adresse e-mail est la seule exception). La sortie est également jointe ci-dessous. Je n'ai pas vérifié combien de données ISO19139 ne sont pas renvoyées (ou enregistrées). Je suis conscient que le géonode n'enregistre pas l'ensemble ISO19139 complet, mais il semble y avoir une incohérence ici. Il m'a été suggéré que j'aurais dû utiliser Geonetwork car il télécharge et renvoie fidèlement l'enregistrement ISO19139 complet. L'utilisation de Geonetwork en tant que service de catalogue principal améliorerait-elle la gestion d'ISO19139 dans Geonode ?

Un extrait des métadonnées d'entrée :

Un extrait de l'option "Télécharger les métadonnées" / "ISO":

Le texte a été mis à jour avec succès, mais ces erreurs se sont produites :

Nous ne sommes pas en mesure de convertir la tâche en problème pour le moment. Veuillez réessayer.

Le problème a été créé avec succès, mais nous ne sommes pas en mesure de mettre à jour le commentaire pour le moment.


Intégration de cartes de prévision phénologique pour l'évaluation de la biodiversité : un workflow d'entreprise

Les récentes politiques de données ouvertes du Bureau de la politique scientifique et technologique (OSTP) et du Bureau de la gestion et du budget (OMB), qui étaient pleinement applicables le 1er octobre 2016, exigent que les produits d'information financés par le gouvernement fédéral (publications, etc.) soient fabriqués librement. à la disposition du public et que les données sous-jacentes sur lesquelles se fondent les conclusions doivent être divulguées. Un aspect clé et pertinent de th.

Les récentes politiques de données ouvertes du Bureau de la politique scientifique et technologique (OSTP) et du Bureau de la gestion et du budget (OMB), qui étaient pleinement applicables le 1er octobre 2016, exigent que les produits d'information financés par le gouvernement fédéral (publications, etc.) soient fabriqués librement. à la disposition du public et que les données sous-jacentes sur lesquelles se fondent les conclusions doivent être divulguées. Un aspect clé et pertinent de ces politiques est que les données collectées par les programmes de l'USGS doivent être partagées avec le public et que ces données sont soumises aux exigences d'examen des pratiques scientifiques fondamentales (FSP). Ces nouvelles politiques ajoutent un fardeau substantiel aux scientifiques et aux centres scientifiques de l'USGS. mission plus large de l'USGS. Le but de cette recherche était d'appliquer ces nouvelles politiques, en ce qui concerne la production de prévisions en temps réel et à court terme de données maillées sur la biodiversité, en tant que modèle pour la production et la livraison similaires de produits de données provenant d'autres projets et programmes de l'USGS.


Abstrait

Les changements environnementaux mondiaux sont principalement induits par les activités humaines (par exemple, la production alimentaire et énergétique, l'urbanisation, les activités minières). Pour évaluer et comprendre ces changements qui se produisent partout sur la planète, une surveillance régulière et continue est une condition essentielle. Cependant, en raison de la zone potentiellement étendue répartie sur de nombreux emplacements qui doivent être suivis, cela conduit généralement à une faible fréquence de surveillance des changements environnementaux de seulement quelques sites sélectionnés au mieux.

Avec le nombre croissant de grands référentiels de données d'observation de la Terre (OT) librement et librement accessibles et les capacités croissantes des solutions logicielles ouvertes et interopérables, il est désormais possible d'automatiser diverses tâches de traitement des données d'OT pour surveiller les changements environnementaux à grande échelle.

Cet article présente le cadre de surveillance en direct de la surface de la Terre (LiMES) qui aide à automatiser les tâches de traitement d'images en transformant les données brutes en informations et en connaissances via des flux de travail utilisant des chaînes de services de traitement interopérables pour surveiller les changements environnementaux. Les avantages et les limites sont démontrés et discutés à travers la mise en œuvre d'un prototype pour faciliter la mise à jour de l'état de certains des 278 points chauds environnementaux du PNUE. Nous pensons qu'un tel cadre peut aider à réduire l'écart entre les volumes massifs de données d'OT et les utilisateurs tels que les organisations internationales (OI) afin de les aider à mieux remplir leurs mandats de surveillance environnementale en amenant les données brutes à un niveau qui peut être utilisé par des non-experts en télédétection pour les évaluations d'impact de base.


Interroger GeoServer en Python grâce à gsconfig#

Comme vous l'avez surement remarqué, je ne suis pas un grand fan de Java. Le fait est que je trouve ce langage trop verbeux et vraiment compliqué à prendre en main. C'est pourquoi quand je suis tombé sur, gsconfig, une librairie python permettant via le protocole REST de dialoguer avec GeoServer, j'ai de suite été emballé.

Au cours de ce billet, nous abordons deux sujets principaux. Tout d'abord la création d'un environnement virtuel afin de ne pas « polluer » nos sources de dépôts. Ensuite l'installation et l'utilisation de gsconfig

1 - Jouer en toute sécurité grâce à Virtualenv#

Installation de virtualenv#

L'une des (nombreuses) raisons pour lesquelles j'aime python, est la liberté offerte par ce langage. Ne vous est-il jamais arrivé de vouloir utiliser une même application mais sous des versions différentes, d'installer une librairie python encore en développement pour faire des tests sans corrompre tout votre système ? Avec une architecture classique cela est impossible. Pour utiliser à cela, Python offre une alternative des plus intéressants, les environnements virtuels.

Ces derniers permettent tout simplement de disposer d'une sorte de boite virtuelle au sein de laquelle vous pouvez installer localement les librairies que vous ne souhaitez pas avoir dans votre système global. L'énorme avantage est que vous n'avez pas besoin d'installer un système complet. En effet les librairies installées dans votre système global restent utilisables localement. J'arrêterai là les explications, mais si vous souhaitez en savoir davantage, je vous renvoie vers les billets de clemesha et de l'incontournable sgillies

Passons maintenant à la pratique. Il est bien évidemment nécessaire, dans un premier temps, d'installer virtualenv. Ubuntu faisant les choses bien, il est disponible dans les dépôts. Par Synaptic ou par un apt-get commence par installer python-virtualenv. Puisque nous y sommes, installez également git-core. Cela nous servira à télécharger gsconfig qui utilise le système de version Git.

Création d'un environnement virtuel#

Cela réalisé, il ne nous reste plus qu'à créer concrètement notre environnement virtuel. Cela se fait via un terminal, mais rassurez-vous, vous n'aurez en tout et pour tout que deux lignes à taper ! placez par vous placer à l'endroit où vous souhaitez créer votre nouvel environnement. Vous pouvez le faire où vous le souhaitez, mais je vous conseille de créer un répertoire spécifique. En terme d'organisation cela sera tout de même plus simple. Ensuite, il vous suffit simplement de taper la ligne de commande virtualenv suivi du nom que vous souhaitez :

/App/geo$ virtualenv gsconfig-virtual
Nouvel exécutable python dans gsconfig-virtual/bin/python
Installation des outils de configuration. terminé.

Voilà votre nouvel environnement est créé mais pas encore actif. Pour cela il est nécessaire, après s'être rendu dans votre nouvel environnement, selon la source de la manière suivante :

/App/geo$ cd gsconfig-virtual/
[email protected] :

/App/geo/gsconfig-virtual$ source bin/activate
(gsconfig-virtual)[email protected] :

Comme vous l'avez remarqué, la dernière ligne de mon terminal a changé. Elle est précédée de (gsconfig-virtual) signe que je suis bien maintenant dans un environnement virtuel. Nous sommes prêt maintenant à installer gsconfig.

2 -Interroger GeoServer en Python grâce à gsconfig#

Installation de gsconfig#

Au sein de votre nouvel environnement virtuel, vous disposez de trois répertoires : bin, include et lib. Rendez-vous dans le répertoire bin et lancez la commande ci-dessous qui va télécharger gsconfig.

/App/geo/gsconfig-virtual/gsconfig-virtual/gsconfig-virtual/bin$ git clone http://github.com/dwins/gsconfig.py.git

Une fois le téléchargement terminé, il ne vous reste plus qu'à installer gsconfig :

/App/geo/gsconfig-virtual/bin$ cd gsconfig.py
(gsconfig-virtual)[email protected] :

/App/geo/gsconfig-virtual/bin/gsconfig.py$ python setup.py install

Ma première tentative d'installation s'est soldée par un échec en raison de l'absence de la librairie httplib2. Rien de très grave rassurez-vous. Si c'est également votre cas, téléchargeons-la immédiatement et relatons l'installation.

/App/geo/gsconfig-virtual$ easy_install httplib2
(gsconfig-virtual)[email protected] :

/App/geo/gsconfig-virtual$ cd bin/gsconfig.py
(gsconfig-virtual)[email protected] :

/App/geo/gsconfig-virtual/bin/gsconfig.py$ python setup.py install
.
Utilisation de /home/user/App/geo/gsconfig-virtual/lib/python2.6/site-packages/httplib2-0.6.0-py2.6.egg
Dépendances de traitement terminées pour gsconfig.py==1.0

Et voilà le tour est joué, l'installation est terminée.

Utilisation de gsconfig#

Maintenant que toute notre infrastructure est en place, utilisez immédiatement gsconfig. Mais avant toute chose, il est nécessaire de démarrer GeoServer. En effet, gsconfig va dialoguer avec notre serveur cartographique via le protocole Rest. Une fois cela réalisé, il suffit dans votre environnement virtuel de lancer un interpréteur python. Nous allons ensuite importer la librairie et effectuer quelques tests :

depuis geoserver.catalog import Catalogue
cat = Catalogue("http://localhost:8082/geoserver/rest")
cat.get_layers()
[Couche[giant_polygon], Couche[poi], Couche[poly_landmarks], Couche[tiger_roads], Couche[Pk50095], Couche[Img_Sample], Couche[mosaic], Couche[Arc_Sample], Couche[tasmania_cities], Couche[tasmania_roads] , Couche[tasmania_water_bodies], Couche[tasmania_state_boundaries], Couche[états], Couche[sfdem], Couche[bugsites], Couche[restreint], Couche[archsites], Couche[routes], Couche[flux]]

Imaginons que nous entendons en connaître davantage à propos de la couche déclare :

états = cat.get_layer('états')
états.href
'http://localhost:8082/geoserver/rest/layers/states.xml'
états.nom
'États'
états.styles
[Style[polygone], Style[pophatch]]

De la même manière si nous connaissons les espaces de travail disponibles :

L'installation ainsi que la prise en main de gsconfig sont réellement très rapides. Quel plaisir de pouvoir s'amuser avec geoserver tout en utilisant python ! Mais bon, c'est décidé cette année je me mets au java.


2 réponses 2

tldr -- Sur Gnome, vous pouvez définir le paramètre de démarrage du noyau pour remplacer manuellement la résolution de votre moniteur. Si vous utilisez l'implémentation Weston (ce qui n'est apparemment pas le cas de Gnome), vous pouvez configurer différentes résolutions dans

J'ai lutté avec cela pendant longtemps et j'ai trouvé un compromis qui fonctionne bien pour le moment. Cependant, j'espère qu'il existe un meilleur moyen, alors faites-le moi savoir s'il y en a.

Avec Weston (non testé)

Au début, je pensais que Gnome utilisait Weston pour sa couche Wayland, mais apparemment cela ne fonctionne pas de cette façon. Si, toutefois, vous utilisez Weston, vous pouvez soi-disant configurer la résolution des écrans externes dans

Le nom de sortie doit être le nom de votre écran. Sur Arch, vous pouvez exécuter cette commande pour savoir quels écrans sont connectés :

Pour obtenir la bonne valeur pour la ligne de mode, vous pouvez exécuter cvt 1920 1080 , ou avec la résolution dont vous avez besoin. Plus d'informations ici : https://wiki.archlinux.org/index.php/Wayland#Configuration

Avec Gnome

Il semble que Gnome n'ait pas de moyen de configurer les résolutions d'affichage (au moins pour le moment). J'ai donc trouvé un rapport de bogue qui faisait référence à ce paramètre de démarrage du noyau que vous pouvez utiliser pour remplacer la résolution des affichages. Lisez la documentation liée pour plus de détails, mais sur mon système, j'avais besoin de configurer l'affichage "DP-1" pour qu'il soit de 1920x1080 à 60Hz, j'ai donc ajouté cette ligne à mes paramètres de démarrage :

J'utilise systemd-boot, j'ai donc ajouté cela à ma ligne d'options dans /boot/loader/entries/arch.conf . Si vous utilisez GRUB ou autre, vos étapes seront différentes pour ajouter ce paramètre de démarrage.

En fait, je ne sais pas ce qui se passera maintenant si je démarre avec cet ensemble d'options, puis branche un écran qui nécessite une résolution différente. Ce paramètre de démarrage remplacera-t-il cela ou s'agit-il d'une solution de secours en cas d'échec de la détection automatique ? Je ne sais pas. Parce que je ne suis pas sûr, j'ai ajouté une deuxième entrée de démarrage qui omet ce paramètre. Donc, parfois, je peux avoir besoin de redémarrer pour obtenir la bonne résolution sur un écran externe. Mais sinon, ça marche bien.