Suite

Configuration Postgres du géoserveur


Ma taille de base de données postgres importée pour plane.osm est supérieure à 300 Go en mode mince.

Il a ajouté quatre tables pour la création de tuiles.

planet_osm_line, planet_osm_road, planet_osm_polygon, planet_osm_point

Chaque tableau contient des attributs qui sont :

osm_id
accès
adresse:nom de maison
adresse:numéro de maison
addr:interpolation admin_level
voie aérienne
voie aérienne
aménité
surface
barrière
bicyclette
marque
pont
frontière
imeuble
construction
couvert
ponceau
Coupe
dénomination
abandonné
digue
le pied
générateur:source
port
Autoroute
historique
cheval
intermittent
jonction
l'utilisation des terres
couche
loisirs
fermer à clé
homme_fait
militaire
Voiture
Nom
Naturel
Bureau
une manière
opérateur
endroit
population
Puissance
source d'énergie
transport public
chemin de fer
réf
religion
route
un service
magasin
sport
surface
sonner
tourisme
tour:type
type de piste
tunnel
l'eau
voie navigable
zone humide
largeur
bois
z_commande
zone_voie
chemin

Maintenant, je veux le configurer sur Geoserver pour un attribut spécifique.

Exemple : en polygone, j'ai besoin d'importerimeubleseule.

Je suis ce GeoServer et OpenStreetMap et je publie une table PostGIS mais ce n'est pas particulièrement clair à propos de ce qui précède.

J'ai besoin de savoir si c'est possible dans Geoserver ? Et comment ?


Configurez votre couche en tant que vue SQL - lien vers la doc

Pour votre cas (bâtiments), l'instruction SQL de filtrage sera :

SELECT * FROM planet_osm_polygon O le bâtiment N'EST PAS NULL

Et puis, publiez le calque comme d'habitude.


Configuration Nginx pour Geoserver

J'essaie de créer un site Web avec accès aux services WMS à partir d'une instance GeoServer sur le même droplet DigitalOcean que le site Web. Le droplet est un serveur Ubuntu 18.04 avec - tomcat8 - postgresql-10 - openjdk-8-jdk-headless - nginx

J'ai déployé GeoServer à partir d'une archive Web et si je me connecte à l'aide de ssh depuis ma machine locale et mappe le port 8080 des gouttelettes au port 63334 sur ma machine locale, je peux accéder à l'application Web GeoServer à partir de http://localhost:63334/bcp_geoserver/web / et je peux également utiliser les services WMS dans une simple carte Leaflet en utilisant http://localhost:63334/bcp_geoserver/LCFP/wms comme adresse dans un fichier HTML sur ma machine locale. GeoServer semble donc fonctionner correctement.

Cependant, si je change l'adresse dans le fichier HTML en http://localhost:8080/bcp_geoserver/LCFP/wms et la télécharge dans le dossier racine de mon site Web nginx sur le droplet, j'obtiens une erreur de connexion refusée pour les services wms si je essayez d'accéder au site Web via Internet. Je suppose que c'est parce que je n'ai pas de configuration Nginx appropriée pour ce site Web. Existe-t-il un moyen de configurer Nginx pour que le site Web puisse utiliser les services WMS ?

Voici ma configuration Nginx actuelle pour ce site Web :

Je n'ai pas déployé de pare-feu et j'ai une autre application Web Tomcat sur un sous-domaine (également sur localhost:8080) et Nginx le sert correctement avec proxy_pass.


GeoServer dans Tomcat n'obtient pas les fichiers de formes de mise à jour de PostGis

J'ai deux GeoServers exécutés sur la même machine Ubuntu Server 9.04. GeoServer V2.0.1 s'exécute avec Jetty et un autre GeoServer V2.0.0 est Tomcat. Les deux utilisent le même magasin de données PostGis.

Lorsque je publie un nouveau fichier de formes via Rest api sur GeoServer dans Jetty, le GeoServer dans Tomcat ne reçoit pas le fichier de formes de mise à jour de PostGis.

Il peut avoir le moyen de dire à GeoServer dans Tomcat dans la configuration ou le service de recharger le fichier de formes.


Changer le répertoire de cache¶

GeoWebCache stockera automatiquement les tuiles mises en cache dans un répertoire gwc à l'intérieur de votre répertoire de données GeoServer. Pour définir un répertoire différent, arrêtez GeoServer (s'il est en cours d'exécution) et ajoutez le code suivant à votre fichier GeoServer web.xml (situé dans le répertoire WEB-INF) :

Remplacez le chemin à l'intérieur de <param-value> par le chemin de cache souhaité (tel que C: emp ou /tmp ). Redémarrez GeoServer lorsque vous avez terminé.

Assurez-vous que GeoServer a un accès en écriture dans ce répertoire.


Geoserver - Problème de performances PostGIS

Nous avons remarqué quelque chose d'étrange dans l'interaction entre notre instance Geoserver et Postgres/PostGIS.

Après avoir défini le niveau de journalisation de Geoserver pour inclure le débogage du développeur, j'ai réussi à capturer une seule demande de Geoserver WMS à PostGIS.

La séquence (raccourcie) des événements et leurs horodatages :

Chose intéressante, lorsque j'exécute la même requête (MSG) directement depuis PgAdmin3 :

J'obtiens 6515 lignes en 380 ms.

C'est-à-dire que Postgres est capable de renvoyer les résultats de la requête dans les 380 ms si elle est interrogée à partir de PgAdmin3, mais Geoserver prend environ 48 secondes pour obtenir le même ensemble de résultats.

Est-ce une sorte de problème JDBC peut-être ?

Quelques détails sur notre installation :

La base de données Master Postgres se trouve sur une machine virtuelle distincte de Geoserver, mais nous répliquons vers un cluster Postgres esclave sur la machine virtuelle Geoserver (même hôte). Geoserver fait donc référence au cluster Postgres en lecture seule 'localhost' pour ses requêtes.

Le temps de réponse de 380 ms indiqué ci-dessus provenait du cluster Postgres esclave, le même que celui utilisé par Geoserver.


Ré. importation de jeu de données

maintenant, importons un dump postgis d'un ensemble de données dans notre base de données postresql. à titre d'exemple, nous allons utiliser nyc_buildings.zip avec un ensemble de données de bâtiments de la ville de New York.

1. téléchargez le package nyc_buildings.zip et extrayez-le. vous obtiendrez le nyc_buildings.sql déposer.

2. entrez phppgadmin pour postgresql avec vos informations d'identification et accédez à nouveau à l'onglet sql de votre base de données avec l'extension postgis (dans notre cas, new york base de données).

3. parcourir l'ensemble de données extrait (par ex. nyc_buildings.sql ) sur votre ordinateur local et téléchargez-le en tant que script SQL.

4. désélectionnez le paginer les résultats ligne sous la forme et exécuter le scénario.


SIG traditionnel vs microservices spatiaux modernes

Traditionnellement, lorsqu'une organisation ou un individu travaille avec des données spatiales, ils commencent avec un produit qui a grandi comme un SIG. Il existe de nombreux produits SIG open source de haute qualité (QGIS, GeoServer, GeoNode, etc.), mais ils peuvent ne pas s'aligner sur les approches modernes et natives du cloud de la conception de logiciels.

La popularité de Kubernetes crée des défis pour ces applications héritées en matière d'automatisation et de déploiement, car elles nécessitent beaucoup de configuration manuelle, par exemple, lorsque des sources de données sont ajoutées et modifiées. Dans de nombreuses configurations, ces applications spatiales doivent exister en dehors de Kubernetes et ne peuvent pas tirer parti de la plupart des commodités qu'elles offrent.

En revanche, les services spatiaux modernes devraient être guidés par les données spatiales qu'ils traitent et diffusent. Ils doivent s'aligner sur les pratiques de développement de logiciels modernes, évoluer efficacement et s'intégrer facilement aux workflows des développeurs.

Les applications qui sont spatialement conscientes doivent également s'assurer qu'elles peuvent gérer les caractéristiques uniques des données spatiales (par exemple, les géométries, les projections, etc.). Faire tout cela dans des microservices indépendants peut être difficile, à moins que vous ne disposiez d'une base de données hautement performante pour effectuer la majorité du travail à votre place. C'est là que pg_tileserv et pg_featureserv aident, car les deux projets tirent parti de la puissance de PostGIS, une extension géospatiale open source de PostgreSQL, pour fournir des capacités spatiales avancées à partir d'un simple framework REST


Geoserver Postgres Configuration - Systèmes d'Information Géographique

Dans cet article, je vais détailler comment mettre en place un système simple et orchestré de conteneurs docker en utilisant :

Nous supposons que vous avez déjà une connaissance pratique de Geoserver et PostGIS dans cet article. Docker est un outil qui vous permet d'exécuter des applications dans des conteneurs isolés du système hôte. L'un des avantages de docker est que vous pouvez publier des recettes prédéfinies pour les applications dans leur référentiel central. Chez Kartoza.com, nous publions un certain nombre de conteneurs docker sur à https://registry.hub.docker.com/repos/kartoza/.

Figure est un outil d'orchestration pour docker qui vous permet de définir et de gérer vos définitions de service. Pour définir nos services orchestrés, nous pouvons simplement utiliser nos conteneurs postgis et geoserver publiés, puis utiliser les fonctionnalités de volumes de docker pour conserver les répertoires de données (cluster postgis et geoserver data_dir) afin que les services puissent être activés et désactivés tout en maintenant leur état . Les définitions de service sont spécifiées dans un fichier appelé fig.yml. La première chose que je vais faire est de créer un environnement virtuel python et d'y installer fig :

Tout d'abord, définissons notre service de base de données dans fig.yml :

Notre service s'appelle 'db' et nous montons un répertoire dans le conteneur comme /var/lib/postgresql - notre cluster de base de données y sera initialisé, et nous définissons des variables d'environnement qui seront utilisées pour configurer un utilisateur postgres. Par défaut, notre image PostGIS initialise une base de données appelée 'gis' avec les extensions postgis installées dedans. Ensuite, nous définissons un service de géoserveur dans fig.yml:

Cela monte un répertoire de l'hôte dans /opt/geoserver/rép_données - quel est l'emplacement dans lequel le géoserveur écrira ses données de configuration. De plus, nous spécifions une dépendance sur le conteneur de base de données - fig garantira que le service de base de données est lancé avant le conteneur de géoserveur. Vous pourrez également référencer la base de données en tant que nom d'hôte 'db' lors de la création d'un magasin de données pg dans postgis. Faisons donc apparaître nos conteneurs en utilisant 'fig up' (qui dans ce cas les téléchargera simplement à partir de notre collection d'images kartoza sur http://hub.docker.com). Vous verrez une sortie comme celle-ci :

L'indicateur '-d' met les services en arrière-plan. Vous pouvez consulter ce référentiel : https://github.com/timlinux/geoserver-deploy si vous souhaitez utiliser le projet dans cet article. Consultez la documentation de fig pour d'autres choses que vous pouvez faire une fois que votre service est en cours d'exécution - fig vous permet essentiellement de gérer la suite de services comme une seule unité, en les faisant monter ou descendre avec une seule commande.

Une fois opérationnel, vous pouvez trouver l'adresse IP du conteneur du géoserveur comme ceci :

Une fois que vous avez l'adresse IP, connectez-vous simplement sur le port 8080 de votre navigateur Web, par exemple : http://172.17.0.5:8080 - qui devrait vous présenter l'écran de connexion normal du géoserveur (utilisateur : admin, mot de passe : géoserveur) .

Dans la capture d'écran ci-dessous, vous pouvez voir comment nous pouvons nous connecter au service postgis à partir du service géoserveur en utilisant l'hôte 'db' et la base de données 'gis' pour les détails de connexion.

Avec une architecture de base comme celle-ci en place, vous pouvez commencer à mélanger d'autres services Docker pour créer des architectures plus complètes. Par exemple, essayez d'ajouter notre image btsync (https://registry.hub.docker.com/u/kartoza/btsync/) afin de pouvoir synchroniser les fichiers de données SIG et les fichiers de configuration du géoserveur entre différents hôtes. C'est une approche que vous pouvez adopter pour faire évoluer vos services afin qu'ils s'exécutent sur plusieurs services - ou pour vous permettre de concevoir votre travail sur un poste de travail local et de synchroniser automatiquement ces modifications avec votre serveur. Vous pouvez également utiliser fig pour mettre à l'échelle un service sur un seul serveur - exécutant en fait plusieurs copies de, par exemple. géoserveur :

Ce qui montrerait alors 3 instances de géoserveur s'exécutant dans docker ps :

Si vous placez un proxy nginx devant le géoserveur, vous pouvez ensuite l'amener à des requêtes circulaires entre les instances du géoserveur pour former un simple équilibreur de charge (bien que je suggère de consulter la documentation / la communauté du géoserveur pour voir si ce serait un moyen efficace pour mettre à l'échelle un service de géoserveur).

L'utilisation de docker peut considérablement améliorer la flexibilité et la répétabilité avec lesquelles vous déployez des services - et il existe un nombre croissant d'images de docker géospatiales - si vous aimez FOSSGIS, l'exploration de docker en vaudra la peine !


Vous ne savez pas si vous exécutez le meilleur PostGIS possible pour votre PostgreSQL ? Reportez-vous à notre politique de compatibilité de version et de fin de vie.

PostGIS est publié sous la licence publique générale GNU (GPLv2 ou ultérieure). Reportez-vous à la FAQ sur les licences pour plus d'informations. PostGIS est développé par un groupe de contributeurs dirigé par un comité de pilotage du projet.

Qu'est-ce qui se passe en ce moment

PostGIS 3.1.2

L'équipe PostGIS est heureuse de publier la version de PostGIS 3.1.2 !

Cette version est une version de correction de bogues, résolvant les problèmes trouvés dans la version 3.1 précédente.

    , TopoGeometry::geometry cast renvoie NULL pour les objets TopoGeometry vides (Sandro Santilli) , postgistigregéocodeur Meilleures réponses lorsqu'aucun zip n'est fourni (Regina Obe), gérer des dystems de coordonnées composées plus complexes (Paul Ramsey), ne faire que des retournements d'axe sur CRS qui ont un “Lat” comme première colonne (Paul Ramsey)
  • Prend en charge les versions récentes de Proj qui ont supprimé pjobtenirrelease (Paul Ramsey) , Ajuster la tolérance pour les calculs géodésiques (Paul Ramsey) , Conversion incorrecte de l'azimut géographique négatif en positif (Paul Ramsey) , Cluster DBSCAN non formé lorsque la longueur du jeu d'enregistrements est égale à minPoints (Dan Baston) , Mettre à jour les bboxes après scale/affine changements de coordonnées (Paul Ramsey) , Correction des problèmes de raster liés aux changements de tablefunc de PostgreSQL 14 (Paul Ramsey, Regina Obe) , mingw64 PostGIS / PostgreSQL 14 compile (Regina Obe, Tom Lane) , Mise à jour pour prendre en charge Tiger 2020 (Regina Obe) , Change Proj durée de vie du cache pour durer aussi longtemps que la connexion (Paul Ramsey), ajouter le support de build Pg14 (Paul Ramsey)

PostGIS 3.1.1

L'équipe PostGIS est heureuse de publier la version de PostGIS 3.1.1 !

Cette version est une version de correction de bogues, résolvant les problèmes trouvés dans la version 3.1 précédente.

    , Crash lors du passage de la collection avec uniquement des composants vides à ST_MakeValid , Faire fonctionner le pilote synthétique VSICURL comme documenté , Résultats instables de ST_MakeValid , Éviter de répertorier la même géométrie dans différentes collections

PostGIS 3.1.0

L'équipe PostGIS est heureuse de publier la version de PostGIS 3.1.0 !

Cette version expose les nouvelles fonctionnalités de GEOS 3.9 ainsi que de nombreuses améliorations de performances de base pour les jointures spatiales, l'accès aux objets volumineux, la sortie au format texte et plus encore.

Les performances sont une caractéristique clé de cette version, avec des améliorations apportées aux jointures spatiales, aux sorties de texte, aux lectures d'objets volumineux, à la sortie de tuiles vectorielles et à une multitude d'ajustements plus petits.

Le code de clustering k-means a été amélioré pour prendre en charge la pondération et les clusters de dimension supérieure.

Des générateurs de géométrie pour créer des pavages hexagonaux et carrés ont été ajoutés, pour des requêtes de résumé plus simples dans la base de données.

Enfin, PostGIS expose les dernières améliorations de la bibliothèque de géométrie GEOS version 3.9. Le nouveau moteur de superposition (alias “OverlayNG”) offre une gestion plus robuste des géométries d'entrée difficiles, en utilisant un ensemble de nouvelles stratégies de nœud pour traiter la géométrie. Pour l'utilisateur final, cela devrait signifier plus d'"exceptions de topologie" lors de l'utilisation des fonctions d'union, de différence, d'intersection ou de différence symétrique. PostGIS expose également la nouvelle capacité de superposition à précision fixe via un paramètre de taille de grille supplémentaire sur ST_Intersection et les autres fonctions de superposition.

PostGIS 3.1.0rc1

L'équipe PostGIS est heureuse de publier la version candidate de la prochaine version PostGIS 3.1.0. Cette version expose certaines des nouvelles améliorations de performances et de fonctionnalités de GEOS 3.9 ainsi que de nombreuses améliorations de vitesse ne nécessitant pas un GEOS plus récent.


Geoserver Postgres Configuration - Systèmes d'Information Géographique

Nous nous efforçons de travailler avec nos clients pour trouver une solution de qualité répondant à leurs besoins.

Certifié et expérimenté dans la fourniture de la bonne solution et de l'assistance dans l'environnement AWS.

Calcul en nuage élastique (EC2)

Service de base de données rationnelle (RDS)

Services de notification simples

Service de stockage simple (S3)

Déployez et configurez des services de surveillance 24h/24 et 7j/7 pour suivre les statistiques des ressources et limiter les temps d'arrêt.

Tirer parti des techniques de cartographie SIG et Web pour créer une image opérationnelle commune afin de prendre en charge les événements et les opérations.

Mise à niveau de l'environnement AWS pour fournir une infrastructure en tant que service pour l'hébergement d'applications, de bases de données et d'autres services.


Voir la vidéo: Connect Geoserver to PostGIS (Octobre 2021).