Suite

Pourquoi GeoServer/OpenLayers n'affiche-t-il que les points de mon PostGIS ?

Pourquoi GeoServer/OpenLayers n'affiche-t-il que les points de mon PostGIS ?


Je lis maintenant le livre PostGIS in Action et j'ai un problème avec un exemple :

  • J'ai créé un tableau :

    CREATE TABLE my_geometries (id serial NOT NULL PRIMARY KEY, name varchar(20));

  • J'ai ajouté quelques points à ce tableau :

    SELECT AddGeometryColumn('public','my_geometries', 'my_points',-1,'POINT',2) ;

    INSÉRER DANS mes_géométries (nom, mes_points) VALUES ('Home',ST_GeomFromText('POINT(0 0)'));

    INSERER DANS mes_géométries (nom,mes_points) VALEURS ('Pizza 1',ST_GeomFromText('POINT(1 1)')) ;

  • Et quelques lignes aussi :

    SELECT AddGeometryColumn ('public','my_geometries', 'my_linestrings',-1,'LINESTRING',2) ;

    INSERT INTO my_geometries (name,my_linestrings) VALUES ('Linestring Open', ST_GeomFromText('LINESTRING(0 0,1 1,1 -1)'));

    INSERT INTO my_geometries (name,my_linestrings) VALUES ('Linestring Closed', ST_GeomFromText('LINESTRING(0 0,1 1,1 -1, 0 0)'));

Le problème est que pour une raison quelconque, je ne vois pas les chaînes de lignes dans la fenêtre OpenLayers de GeoServer, mais tous les points sont à leur place.

La page « Modifier la couche » du GeoServer pour my_workspace:my_geometries affiche les détails du type d'entité avec les colonnes my_points et my_linestrings.

Quel est le problème ici? Comment puis-je voir les points et les lignes que j'ai ajoutés à ma base de données dans la fenêtre OpenLayers de GeoServer ?


Avez-vous deux styles pour votre calque? Vous devrez créer un style pour dessiner les points (en utilisant une colonne géométrique) et un autre pour dessiner les lignes (en utilisant l'autre colonne géométrique). En effet, par défaut, GeoServer utilisera la première colonne géométrique par défaut.

Si vous suivez la suggestion de Kelso de combiner les géométries en une seule colonne, vous devrez consulter http://docs.geoserver.org/stable/en/user/styling/sld-tipstricks/mixed-geometries.html pour voir comment faire le SLD fonctionne comme vous le souhaitez (la valeur par défaut appliquera un symboliseur de point au centre de la ligne).


Bien que ce ne soit pas une réponse directe à la raison pour laquelle vous ne pouvez pas voir les chaînes de lignes dans OpenLayers, vous pouvez stocker plusieurs géométries dans une colonne, surmontant ainsi votre besoin de deux colonnes différentes. Si vous vouliez ensuite les séparer, vous pourriez créer une vue, l'une sélectionnant les lignes, l'autre sélectionnant les points et les reliant via le géoserveur. Si vous voulez voir les deux géométries, il suffit de créer un lien vers my_geometries et geoserver / openlayers affichera les deux.

Pour utiliser plusieurs géométries dans une colonne, utilisez :

SELECT AddGeometryColumn('public','my_geometries', 'my_geom',-1,'GEOMETRY',2) ;

OùCampAfrique

Je voulais juste saluer un grand événement pour ceux en Afrique ou intéressés par l'application des technologies géospatiales en Afrique. WhereCampAfrica est une non-conférence, dans le style de BarCamp et WhereCamp, où n'importe qui peut se présenter et présenter et discuter des idées (spatiales) qui l'excitent. Ce devrait être un grand groupe de personnes, il se déroule juste après la réunion CGIAR-CSI où j'ai passé un bon moment au moins un an. Toute personne utilisant GeoServer qui peut s'en sortir devrait absolument y assister. C'est un événement totalement gratuit.


Docker avec Docker

Cela fait un moment que je n'ai rien posté, principalement parce que je ne sais pas de quoi parler ces jours-ci. J'ai travaillé sur le serveur d'adresses Tn et une chose que je voulais faire était de le faire fonctionner dans docker. Ce que beaucoup d'entre vous y vont probablement, CE N'EST PAS SI DIFFICILE. En général, vous avez raison, mais c'est toujours un domaine étrange dans lequel je dois me lancer. J'ai joué avec Docker pendant des années, en général, cela fonctionne, mais je n'ai presque jamais de raison d'en faire grand-chose. Sauf que maintenant, avec la façon dont je travaille sur le serveur d'adresses TN, j'avais besoin d'un moyen de faire tourner un serveur Postgis et de tout tester, puis de le supprimer.

J'ai donc replongé dans Docker. Encore.

Vous pouvez créer votre propre instance de docker. Vous créez un fichier docker et commencez à ajouter tout ce dont vous avez besoin, mais j'ai rapidement décidé que je ne voulais pas encore créer mon propre fichier docker. Après avoir fait quelques recherches, Kartoza en a déjà construit un. Aussi – ils en ont un pour Geoserver . Geoserver a été l'une de ces choses que je n'ai pas encore assez intégrées dans le flux du serveur d'adresses, mais j'y travaille.

Assis avec Docker, j'avais quatre choses à faire :

  • Base de données fonctionnelle je peux démarrer et arrêter
  • Stockage local
  • Je peux m'asseoir dans une autre pièce et travailler tout en y accédant sur cette machine.
  • Je ne veux pas empiler des choses installées sur mon ordinateur.

Simple? Oui…principalement. Il semble que pendant la majeure partie de ma carrière, j'ai dansé entre développeur, administrateur système et géo. Je ne semble jamais avoir un contrôle complet sur aucune des choses, sauf qu'être une personne "géo" gratte plus les démangeaisons que les deux autres. Cela a donc commencé une longue journée “Comment puis-je…. « ce qui a réaffirmé à nouveau que l'échange de piles est le diable, que la documentation peut être ennuyeuse et que beaucoup de gens ne peuvent rien écrire pour sauver leur vie (moi y compris environ la moitié du temps).

Le plus gros casse-tête était de garder mes données permanentes sur mon disque dur. Je peux monter le docker du géoserveur dans un répertoire – pourquoi ne puis-je pas monter le docker postgis….et étonnamment, il y a une multitude de désinformation. En bref, vous devez créer un volume pour que postgis fonctionne, ce qui consiste essentiellement à effectuer les opérations suivantes :

  • Créer un /répertoire/quelque part
  • Créer un volume : docker volume create –driver local –name pg_data –opt type=aucun –opt device=/directory/quelque part –opt o=lier

Finalement j'ai fait ce qui suit :

docker run –name=postgis -d -e POSTGRES_USER=user -e POSTGRES_PASS=pass -e POSTGRES_DBNAME=tndemo -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v pg_data:/var/lib/postgresql/ kartoza /postgis:dernier

docker run -d -p 8580:8080 –name “geoserver” –link postgis:postgis -p 8080:8080 -v /media/data/demo/geoserver_data:/opt/geoserver/data_dir kartoza/geoserver:latest

PostGIS et Geoserver fonctionnent en harmonie dans le docker. J'étais heureux. Je peux connecter geoserver à postgis. Je peux me connecter aux deux choses depuis mon canapé pendant que j'écoute les Chroniques de Baby Yoda.

J'étais aussi un peu consterné. Surtout chez moi.

Brûler le temps que j'ai passé à obtenir une configuration fonctionnelle était beaucoup trop long. Ce n'est la faute de personne car j'ai des instructions, une connexion Internet qui fonctionne et la possibilité de poser des questions à la communauté. Ce qui a été un problème pour moi ces derniers temps. Je me souviens des échecs passés et je recommence à zéro sur un projet et je suis hanté par les échecs passés. À tel point que je me suis davantage mis à l'écoute. La pandémie a rendu les choses suffisamment frustrantes sans que mon cerveau ne s'en mêle. Je suis donc revenu à l'art d'apprendre ce mois-ci et de jeter l'ancien.

Maintenant que cela fonctionne, je peux maintenant créer et casser la base de données à volonté et, espérons-le, obtenir une version en cours d'exécution de celle-ci qui fait tout ce que je veux qu'elle fasse.

Peut-être que je vais créer un fichier docker juste pour dire que je l'ai fait.

Peut-être que je ferai quelques autres choses amusantes.


Floatsam et Jetsam

Voici mon article de blog aléatoire ….

Je pense avoir 4 ordinateurs utilisables dans mon bureau. Deux exécutent Ubuntu en tant que bureau, un exécute un serveur Ubuntu, un exécute Windows 10 (et je suis surpris que l'ordinateur portable fonctionne toujours). Mes deux machines principales exécutent Ubuntu 17.04. J'ai sauté partout avec des ordinateurs de bureau. La course a été Gnome 2, XFCE, Mate et je viens de passer à Gnome 3. Pendant quelques mois, j'étais du côté fluxbox de la vie.

Pourquoi Gnome 3 ? Je n'ai pas exécuté “stock Ubuntu” depuis le bureau Unity. Avec l'annonce du retour d'Ubuntu dans Gnome 3, j'ai décidé qu'il était peut-être temps de lui donner une autre chance. J'aime Maté. J'adore XFCE – mais j'avais besoin de changement. Donc – un changement. Dans l'ensemble, ce n'est pas mal du tout. Je me souviens que lorsque Gnome 3 a fait sa première apparition, je l'ai détesté. J'apprécie maintenant l'approche centrée sur le clavier. Unity était centré sur le clavier, mais trop verrouillé pour mon plaisir. Ma seule haine – la quantité de RAM consommée. J'ai besoin d'augmenter la RAM sur mon poste de travail. Pas seulement à cause de Gnome, mais juste parce que j'en fais beaucoup et je pense qu'il est temps pour une mise à niveau.

J'ai commencé à utiliser Ubuntu à temps plein en 2013 lorsque je devais travailler dans les îles Vierges américaines. L'ouragan Irma m'a rappelé la folie de travailler là-bas. Après avoir été là-bas pendant 4 ou 5 mois, je suis devenu un peu obsédé par la portabilité. C'était mon premier saut dans l'open source avec QGIS et PostGIS. Il y a eu de nombreux jours où Internet n'était pas disponible. Je me souviens d'un jour où deux d'entre nous transportaient 2 ordinateurs portables, deux multiprises, une rallonge de 50 pieds et une imprimante. Nous nous sommes trompés en marchant depuis un port maritime et avons erré sans but pendant environ une heure à la recherche de l'agence de location de voitures. Une nuit, j'étais assis sur un porche en train de voler Internet à quelqu'un presque hors de portée qui essayait de télécharger/télécharger des données. Je suis devenu bizarre de partir avec mon ordinateur portable pour une promenade sur l'île. S'il m'arrive d'appuyer sur “Internet gratuit”, je m'arrête et je travaille. Mieux encore si je pouvais le recharger.

Je me suis demandé pendant presque une semaine comment je travaillerais après l'ouragan avec une électricité rare et presque pas d'Internet. Par une bonne journée en 2013, Internet était rare. Je recevais un appel ou un e-mail et me demandais de télécharger un fichier de 4 Go et vous auriez tout aussi bien pu me demander de prendre l'avion ces jours-là. Un de mes amis a appelé de St Thomas et il a parcouru les données SIG sur un ordinateur de bureau. Mes ordinateurs portables bénéficient généralement d'une charge complète d'environ 4,5 heures. Si je travaille, ramène cela à trois heures. La plus longue période sans électricité que j'ai jamais vécue remonte à une semaine en 2011. J'ai emprunté le générateur d'un ami pour faire fonctionner mon ordinateur de bureau afin de transférer les données vers mon ordinateur portable, puis de me rendre au café le plus proche pour travailler.

Cette semaine, je me suis demandé si je pouvais récupérer un modem 56K “en ligne” si je devais le faire. Ensuite, j'ai réalisé que ma location actuelle n'avait même pas de lignes téléphoniques intactes. Ah.

J'étais à FOSS4G à Boston il y a plus d'un mois. Cela ne ressemble pas à un mois. J'ai rencontré l'un des volontaires qui est candidat au doctorat à Columbia U. Une chose en a entraîné une autre et nous commençons à discuter de sa thèse. J'ai menacé au cours de la dernière partie de faire une classe PostGIS. Je n'arrête pas de reculer car “Est-ce que je connais bien ce logiciel ?”. Je reçois par. J'apprécie. Je ne sais pas si je pourrais l'enseigner. J'ai donc commencé à répondre au hasard à des questions sur l'analyse des données.

Il m'a proposé de me payer. J'ai refusé. Cette année, j'ai été un capitaliste « intelligent ». Je dirais rage, mais ce n'est pas tout à fait vrai. J'ai réduit tous les emplois bénévoles à 1. Je donne des estimations cohérentes. Je ne poursuis pas le travail et je ne me retrouve pas dans des situations de "faible offre" où ma gorge se fait trancher. C'est ce que c'est – Je ferai ce que vous voulez faire le plus rapidement possible et correct. Donc, le Q & A sur PostGIS et les données sont plutôt sympas. Je suppose que je peux encore crier "ce n'est toujours pas à 100 % à propos de l'argent" pendant que je dirige cette entreprise et que je cherche des moyens d'augmenter l'efficacité et le travail. J'apprends quelques choses car cette personne n'est pas principalement un gars de SIG, c'est un outil. Je l'aide à créer sa boîte à outils d'astuces sur les données.


Chapitre 3. Foire aux questions sur PostGIS

OpenGeo a un atelier de guide de didacticiel étape par étape Introduction à PostGIS. Il comprend des données empaquetées ainsi qu'une introduction à l'utilisation d'OpenGeo Suite. C'est probablement le meilleur tutoriel sur PostGIS.

BostonGIS propose également un guide PostGIS presque idiot pour démarrer. Celui-ci est plus axé sur l'utilisateur Windows.

Mes applications et outils de bureau fonctionnaient avec PostGIS 1.5, mais ils ne fonctionnent pas avec PostGIS 2.0. Comment puis-je réparer ça?

De nombreuses fonctions obsolètes ont été supprimées de la base de code PostGIS dans PostGIS 2.0. Cela a affecté les applications en plus des outils tiers tels que Geoserver, MapServer, QuantumGIS et OpenJump pour n'en nommer que quelques-uns. Il existe plusieurs façons de résoudre ce problème. Pour les applications tierces, vous pouvez essayer de mettre à niveau vers les dernières versions de celles-ci qui résolvent bon nombre de ces problèmes. Pour votre propre code, vous pouvez modifier votre code pour ne pas utiliser les fonctions supprimées. La plupart de ces fonctions ne sont pas des alias ST_ de ST_Union, ST_Length etc. et en dernier recours, installez l'intégralité de legacy.sql ou uniquement les portions de legacy.sql dont vous avez besoin.

Le fichier legacy.sql se trouve dans le même dossier que postgis.sql. Vous pouvez installer ce fichier après avoir installé postgis.sql et spatial_ref_sys.sql pour récupérer toutes les 200 anciennes fonctions que nous avons supprimées.

Lorsque je charge des données OpenStreetMap avec osm2pgsql, j'obtiens un échec d'erreur : ERREUR : la classe d'opérateur "gist_geometry_ops" n'existe pas pour la méthode d'accès "gist" Une erreur s'est produite. Cela a bien fonctionné dans PostGIS 1.5.

Dans PostGIS 2, la classe d'opérateur géométrique par défaut gist_geometry_ops a été remplacée par gist_geometry_ops_2d et gist_geometry_ops a été complètement supprimé. Cela a été fait parce que PostGIS 2 a également introduit des index spatiaux Nd pour la prise en charge de la 3D et l'ancien nom a été jugé confus et impropre.

Certaines applications plus anciennes qui, dans le cadre du processus, créent des tables et des index, faisaient explicitement référence au nom de la classe de l'opérateur. Ce n'était pas nécessaire si vous voulez l'index 2D par défaut. Donc, si vous parvenez à dire bon, modifiez la création d'index à partir de :

Le seul cas où vous DEVREZ spécifier la classe d'opérateur est si vous voulez un index spatial 3D comme suit :

Si vous êtes malheureux d'être coincé avec du code compilé, vous ne pouvez pas modifier l'ancien gist_geometry_ops codé en dur, vous pouvez alors créer l'ancienne classe à l'aide de legacy_gist.sql emballé dans PostGIS 2.0.2+. Cependant, si vous utilisez ce correctif, il est conseillé de supprimer ultérieurement l'index et de le recréer sans la classe d'opérateur. Cela vous évitera des soucis à l'avenir lorsque vous aurez besoin d'une nouvelle mise à niveau.

J'exécute PostgreSQL 9.0 et je ne peux plus lire/afficher les géométries dans OpenJump, Safe FME et d'autres outils ?

Dans PostgreSQL 9.0+, l'encodage par défaut des données bytea a été changé en hexadécimal et les anciens pilotes JDBC assument toujours le format d'échappement. Cela a affecté certaines applications telles que les applications Java utilisant des pilotes JDBC plus anciens ou des applications .NET qui utilisent l'ancien pilote npgsql qui s'attend à l'ancien comportement de ST_AsBinary. Il existe deux approches pour que cela fonctionne à nouveau.

Vous pouvez mettre à niveau votre pilote JDBC vers la dernière version de PostgreSQL 9.0 que vous pouvez obtenir à partir de http://jdbc.postgresql.org/download.html

Si vous exécutez une application .NET, vous pouvez utiliser Npgsql 2.0.11 ou une version ultérieure que vous pouvez télécharger à partir de http://pgfoundry.org/frs/?group_id=1000140 et comme décrit sur l'entrée de blog publiée NpgSQL 2.0.11 de Francisco Figueiredo

Si la mise à niveau de votre pilote PostgreSQL n'est pas une option, vous pouvez rétablir l'ancien comportement par défaut avec la modification suivante :

J'ai essayé d'utiliser PgAdmin pour afficher ma colonne de géométrie et elle est vide, qu'est-ce qui donne ?

PgAdmin ne montre rien pour les grandes géométries. Les meilleurs moyens de vérifier que vous avez des données dans vos colonnes de géométrie sont ?

Quels types d'objets géométriques puis-je stocker ?

Vous pouvez stocker des géométries Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon et GeometryCollection. Dans PostGIS 2.0 et versions ultérieures, vous pouvez également stocker des TINS ​​et des surfaces polyédriques dans le type de géométrie de base. Ceux-ci sont spécifiés dans le format Open GIS Well Known Text (avec les extensions Z, M et ZM). Trois types de données sont actuellement pris en charge. Le type de données géométriques OGC standard qui utilise un système de coordonnées planaires pour la mesure, le type de données géographiques qui utilise un système de coordonnées géodésiques, avec des calculs sur une sphère ou un sphéroïde. Le membre le plus récent de la famille de type spatial PostGIS est raster pour le stockage et l'analyse des données raster. Raster a sa propre FAQ. Reportez-vous au chapitre 10, Foire aux questions sur le raster PostGIS et chapitre 9, Référence raster pour plus de détails.

Je suis tout confus. Quel magasin de données dois-je utiliser la géométrie ou la géographie ?

Réponse courte : la géographie est un type de données plus récent qui prend en charge les mesures de distances à longue distance, mais la plupart des calculs y sont plus lents que sur la géométrie. Si vous utilisez la géographie, vous n'avez pas besoin d'en apprendre beaucoup sur les systèmes de coordonnées planaires. La géographie est généralement meilleure si tout ce qui vous intéresse est de mesurer les distances et les longueurs et que vous disposez de données du monde entier. Le type de données géométriques est un type de données plus ancien qui a beaucoup plus de fonctions le prenant en charge, bénéficie d'une meilleure prise en charge d'outils tiers et les opérations sur celui-ci sont généralement plus rapides - parfois jusqu'à 10 fois plus rapides pour les géométries plus grandes. La géométrie est préférable si vous êtes assez à l'aise avec les systèmes de référence spatiale ou si vous traitez des données localisées où toutes vos données tiennent dans un seul système de référence spatiale (SRID), ou si vous devez effectuer beaucoup de traitement spatial. Remarque : Il est assez facile d'effectuer des conversions ponctuelles entre les deux types pour profiter des avantages de chacun. Reportez-vous à la Section 14.11, « Matrice de prise en charge des fonctions PostGIS » pour voir ce qui est actuellement pris en charge et ce qui ne l'est pas.

J'ai des questions plus intenses sur la géographie, telles que la taille d'une région géographique puis-je mettre dans une colonne de géographie tout en obtenant des réponses raisonnables. Existe-t-il des limitations telles que les pôles, tout sur le terrain doit tenir dans un hémisphère (comme SQL Server 2008 l'a fait), la vitesse, etc. ?

Vos questions sont trop profondes et complexes pour trouver une réponse adéquate dans cette section. Veuillez vous référer à notre Section 4.2.3, “Geography Advanced FAQ”.

Comment insérer un objet SIG dans la base de données ?

Tout d'abord, vous devez créer une table avec une colonne de type "géométrie" ou "géographie" pour contenir vos données SIG. Le stockage des données de type géographie est un peu différent du stockage de la géométrie. Reportez-vous à la Section 4.2.1, “Geography Basics” pour plus de détails sur le stockage de la géographie.

Pour la géométrie : connectez-vous à votre base de données avec psql et essayez le code SQL suivant :

Si la définition de la colonne de géométrie échoue, vous n'avez probablement pas chargé les fonctions et objets PostGIS dans cette base de données ou vous utilisez une version antérieure à la 2.0 de PostGIS. Voir la Section 2.4, “Compilation et installation à partir de la source : détaillée”.

Ensuite, vous pouvez insérer une géométrie dans la table à l'aide d'une instruction SQL insert. L'objet SIG lui-même est formaté à l'aide du format « texte connu » d'OpenGIS Consortium :

Pour plus d'informations sur les autres objets SIG, consultez la référence des objets.

Pour afficher vos données SIG dans le tableau :

La valeur de retour devrait ressembler à ceci :

Comment construire une requête spatiale ?

De la même manière que vous construisez toute autre requête de base de données, en tant que combinaison SQL de valeurs de retour, de fonctions et de tests booléens.

Pour les requêtes spatiales, il est important de garder à l'esprit deux problèmes lors de la construction de votre requête : existe-t-il un index spatial que vous pouvez utiliser et, faites-vous des calculs coûteux sur un grand nombre de géométries.

En général, vous souhaiterez utiliser l'"opérateur d'intersections" (&&) qui teste si les boîtes englobantes des entités se coupent. La raison pour laquelle l'opérateur && est utile est que si un index spatial est disponible pour accélérer le test, l'opérateur && l'utilisera. Cela peut rendre les requêtes beaucoup plus rapides.

Vous utiliserez également des fonctions spatiales, telles que Distance(), ST_Intersects(), ST_Contains() et ST_Within(), entre autres, pour affiner les résultats de votre recherche. La plupart des requêtes spatiales incluent à la fois un test indexé et un test de fonction spatiale. Le test d'index sert à limiter le nombre de tuples de retour aux seuls tuples qui force remplir la condition d'intérêt. Les fonctions spatiales sont ensuite utilisées pour tester exactement la condition.

Comment accélérer les requêtes spatiales sur les grandes tables ?

Les requêtes rapides sur les grandes tables sont le raison d'être de bases de données spatiales (avec la prise en charge des transactions), il est donc important d'avoir un bon index.

Pour construire un index spatial sur une table avec une colonne de géométrie, utilisez la fonction "CREATE INDEX" comme suit :

L'option "USING GIST" indique au serveur d'utiliser un index GiST (Generalized Search Tree).

Les indices GiST sont supposés être avec perte. Les index avec perte utilisent un objet proxy (dans le cas spatial, une boîte englobante) pour créer l'index.

Vous devez également vous assurer que le planificateur de requêtes PostgreSQL dispose de suffisamment d'informations sur votre index pour prendre des décisions rationnelles sur le moment de l'utiliser. Pour ce faire, vous devez « regrouper des statistiques » sur vos tables de géométrie.

Pour PostgreSQL 8.0.x et supérieur, exécutez simplement le ANALYSE DU VIDE commander.

Pour PostgreSQL 7.4.x et versions antérieures, exécutez le SELECTIONNER UPDATE_GEOMETRY_STATS() commander.

Pourquoi les index PostgreSQL R-Tree ne sont-ils pas pris en charge ?

Les premières versions de PostGIS utilisaient les index PostgreSQL R-Tree. Cependant, les R-Trees PostgreSQL ont été complètement abandonnés depuis la version 0.6, et l'indexation spatiale est fournie avec un schéma R-Tree-over-GiST.

Nos tests ont montré que la vitesse de recherche pour R-Tree natif et GiST est comparable. Les R-Trees natifs de PostgreSQL ont deux limitations qui les rendent indésirables pour une utilisation avec les fonctionnalités SIG (notez que ces limitations sont dues à l'implémentation actuelle de R-Tree natif de PostgreSQL, et non au concept R-Tree en général) :

Les index R-Tree dans PostgreSQL ne peuvent pas gérer les fonctionnalités dont la taille est supérieure à 8 Ko. Les index GiST le peuvent, en utilisant l'astuce "avec perte" consistant à substituer la boîte englobante à la caractéristique elle-même.

Les index R-Tree dans PostgreSQL ne sont pas "null safe", donc la construction d'un index sur une colonne de géométrie qui contient des géométries nulles échouera.

Pourquoi devrais-je utiliser la fonction AddGeometryColumn() et tous les autres éléments OpenGIS ?

Si vous ne souhaitez pas utiliser les fonctions de support OpenGIS, vous n'êtes pas obligé de le faire. Créez simplement des tables comme dans les anciennes versions, en définissant vos colonnes de géométrie dans l'instruction CREATE. Toutes vos géométries auront des SRID de -1, et les tables de métadonnées OpenGIS ne pas être correctement rempli. Cependant, cela entraînera l'échec de la plupart des applications basées sur PostGIS, et il est généralement suggéré d'utiliser AddGeometryColumn() pour créer des tables de géométrie.

MapServer est une application qui utilise les métadonnées de geometry_columns. Plus précisément, MapServer peut utiliser le SRID de la colonne de géométrie pour effectuer une reprojection à la volée des entités dans la projection cartographique correcte.

Quelle est la meilleure façon de trouver tous les objets dans un rayon d'un autre objet ?

Pour utiliser la base de données le plus efficacement possible, il est préférable de faire des requêtes de rayon qui combinent le test de rayon avec un test de boîte englobante : le test de boîte englobante utilise l'index spatial, donnant un accès rapide à un sous-ensemble de données auquel le test de rayon est ensuite appliqué .

La fonction ST_DWithin(geometry, geometry, distance) est un moyen pratique d'effectuer une recherche de distance indexée. Cela fonctionne en créant un rectangle de recherche suffisamment grand pour englober le rayon de distance, puis en effectuant une recherche de distance exacte sur le sous-ensemble de résultats indexé.

Par exemple, pour trouver tous les objets avec 100 mètres de POINT(1000 1000), la requête suivante fonctionnerait bien :

Comment effectuer une reprojection de coordonnées dans le cadre d'une requête ?

Pour effectuer une reprojection, les systèmes de coordonnées source et de destination doivent être définis dans la table SPATIAL_REF_SYS, et les géométries reprojetées doivent déjà avoir un SRID défini. Une fois cela fait, une reprojection est aussi simple que de se référer au SRID de destination souhaité. Le ci-dessous projette une géométrie à NAD 83 long lat. Le ci-dessous ne fonctionnera que si le srid de the_geom n'est pas -1 (référence spatiale non définie)

J'ai fait un ST_AsEWKT et un ST_AsText sur ma géométrie assez grande et il a renvoyé un champ vide. Ce qui donne?

Vous utilisez probablement PgAdmin ou un autre outil qui ne génère pas de texte volumineux. Si votre géométrie est suffisamment grande, elle apparaîtra vide dans ces outils. Utilisez PSQL si vous avez vraiment besoin de le voir ou de le sortir dans WKT.

Quand je fais un ST_Intersects, cela dit que mes deux géométries ne se coupent pas quand je sais qu'elles le font. Ce qui donne?

Cela se produit généralement dans deux cas courants. Votre géométrie n'est pas valide - vérifiez ST_IsValid ou vous supposez qu'ils se croisent car ST_AsText tronque les nombres et vous avez beaucoup de décimales après qu'il ne vous montre pas.

Je publie un logiciel qui utilise PostGIS, cela signifie-t-il que mon logiciel doit être sous licence en utilisant la GPL comme PostGIS ? Devrai-je publier tout mon code si j'utilise PostGIS ?

Presque certainement pas. À titre d'exemple, considérons la base de données Oracle s'exécutant sur Linux. Linux est GPL, Oracle ne l'est pas : est-ce qu'Oracle fonctionnant sous Linux doit être distribué sous GPL ? Non. De même, votre logiciel peut utiliser une base de données PostgreSQL/PostGIS autant qu'il le souhaite et être sous la licence de votre choix.

La seule exception serait si vous apportiez des modifications au code source de PostGIS, et distribué votre version modifiée de PostGIS. Dans ce cas, vous devrez partager le code de votre PostGIS modifié (mais pas le code des applications qui s'exécutent dessus). Même dans ce cas limité, vous n'auriez toujours qu'à distribuer le code source aux personnes auxquelles vous avez distribué les binaires. La GPL n'exige pas que vous publier votre code source, seulement que vous le partagez avec les personnes à qui vous donnez des binaires.

Ce qui précède reste vrai même si vous utilisez PostGIS en conjonction avec les fonctions optionnelles CGAL. Des parties de CGAL sont sous GPL, mais il en va de même pour PostGIS : l'utilisation de CGAL ne rend pas PostGIS plus GPL qu'il ne l'était au départ.


Livre de recettes SLD

Le style des couches de carte dans GeoServer peut être difficile. Bien qu'il existe des moyens de créer des couches de carte sans jamais avoir à consulter le code du descripteur de couche stylisé (SLD), certains ne veulent pas d'intermédiaire et souhaitent coder directement avec SLD. Pour ceux-là, il y a quelques options :

1. Lisez la spécification OGC SLD 1.0. À plus de 100 pages, il peut être un peu dense.
2. Lisez le schéma SLD. Car, vraiment, qui n'aime pas interpréter les schémas ?

À défaut, le futur styliste de carte n'a généralement pas de chance, il doit comprendre le style en posant des questions sur les listes de diffusion et en effectuant des recherches sur le Web.

Lorsque j'apprenais le SLD, je voulais des exemples simples que je pouvais comprendre et modifier. Je voulais des captures d'écran. Je voulais savoir quelle ligne de code faisait quoi. Je voulais rechercher des styles comme s'ils étaient dans un livre de recettes. Mais ce type de référence n'existait pas à l'époque.

Le SLD Cookbook est cette référence. C'est une “référence pratique” pour montrer comment fonctionne le style de carte. Il n'est pas conçu pour être exhaustif, et il ne vous parlera pas de tous les cas extrêmes possibles. Mais il n'a pas non plus de SLD de plusieurs centaines de lignes, un obstacle important à la compréhension.

Vous voulez savoir comment styliser un point simple ? Regardez l'exemple, téléchargez le SLD (et le fichier de formes qui a également généré la capture d'écran, si vous le souhaitez) et lisez les détails. Voyez quelle ligne de code accomplit quoi, donc si vous voulez rendre les points bleus au lieu de rouges, vous saurez quelle ligne changer (ligne 8 dans ce cas). Vous voulez voir comment créer un style où les lignes sont stylisées différemment par les attributs de données ? Ou par niveau de zoom ? Référez-vous au besoin. Même les personnes expérimentées avec SLD peuvent trouver les exemples utiles.

Il existe quelques exemples mixtes qui tirent parti des extensions de GeoServer/GeoTools (hachures de remplissage de polygones, étiquettes qui suivent des lignes) mais pour la plupart, les exemples sont parfaitement valides selon la spécification SLD 1.0.

Je suis sûr que d'autres exemples peuvent et seront ajoutés avec le temps. J'ai déjà reçu de très bons retours des autres, et certains styles seront probablement optimisés. Mais chaque exemple, chaque capture d'écran et chaque SLD a été testé dans la version la plus récente de GeoServer.

Alors jetez-y un œil et adoptez le style ! J'espère que tu apprécies. Un merci tout spécial à Geonovum, qui a financé ce projet. Je l'apprécie personnellement.


Que puis-je faire pour m'améliorer moi-même en SIG ? Se sentir coincé après l'école.

J'ai obtenu mon diplôme il y a environ deux mois et demi avec une mineure en SIG. J'ai découvert que j'aimais beaucoup plus les SIG que ma majeure, mais j'ai commencé une mineure très tard. Cela a pris BEAUCOUP de temps pour terminer l'école, donc je ne veux pas y retourner. Je veux apprendre à être bon en SIG par moi-même. Actuellement, je travaille sur l'apprentissage de python avec géocodage avec un livre d'ESRI.

Je ne peux pas trouver d'emploi dans les SIG pour le moment, donc je travaille ailleurs en attendant. Je veux rester précis dans le SIG jusqu'à ce que je puisse réellement être rappelé. Le problème est que je ne sais pas quelles sont les prochaines étapes. Je pensais faire quelques activités de volontariat juste comme un échauffement du monde réel, mais je ne sais pas qui a besoin de matériel SIG de voluteer. J'ai encore environ un an de licence sur mon bureau donc je veux que ça compte. Merci a tous!

Edit : fautes de frappe sur le téléphone edit2 : Merci à tous ceux qui ont répondu. Je lis les commentaires de tout le monde et regarde les liens que vous soumettez tous. Je vous en suis reconnaissant!


Piratage PostgreSQL

Beaucoup d'entre vous regarderont et iront “OMG – Randy a un nouveau hack pour une base de données”. Non – Randy est un hacker des bases de données.

Il y a environ 4 ou 5 ans, j'ai été abandonné à l'idée des bases de données. Je travaillais à plusieurs milliers de kilomètres au sud et la vie était plus facile avec une base de données qu'avec des fichiers plats. Jusque-là, j'avais flirté avec les bases de données et suivi des cours en ligne. Je ferais de petites bases de données, mais ce n'était pas quelque chose que je devais gérer au quotidien. Je l'ai traité indirectement, car à l'époque, mon employeur utilisait ArcSDE au-dessus d'Oracle, MAIS, en tant qu'employé modeste, je n'étais pas autorisé à faire grand-chose avec. C'était le travail des administrateurs. J'ai créé des géodatabases basées sur des fichiers ESRI et j'étais très heureux. De temps en temps, je crée même des fichiers basés sur Microsoft Access.

Alors flashez-vous sur l'année dernière et j'ai été jusqu'au cou dans les bases de données. Beaucoup d'entre vous hausseront les épaules. Vous faites des choses incroyables avec PostgreSQL et le serveur SQL et ce n'est pas si grave. L'année dernière, j'ai effectué ma troisième grande migration de fichiers Geo plats vers PostgreSQL/PostGIS. C'était une chose assez simple à faire : QGIS, PostGIS et j'ai chargé Geoserver (mais nous ne l'avons toujours pas utilisé - je suis sûr que nous le ferons).

Le client est passé d'un environnement “ArcView/File based Geodatabse” à un environnement de base de données multi-utilisateurs. Ce sont des 911 et c'est un petit comté. Ils sont passés de 1 personne pouvant travailler à 3 personnes travaillant et visualisant les données. Je pense qu'actuellement, ils ont 4 personnes qui ajoutent des données et mettent à jour les données maintenant. C'est une victoire.

Mon dieu les points

Ce qui n'a pas été une victoire, c'est mon déplacement des données dans la base de données. Les géodatabases basées sur des fichiers n'ont pas de clé primaire. Peut-être y a-t-il un moyen de gérer cela ces jours-ci - je ne sais pas. Ils utilisaient donc une extension appelée Attribute Assistant pour gérer des colonnes et des séquences uniques dans ArcMap. J'ai chargé les données et je n'ai pas fait assez attention à ce qui se passait.

Pour allonger une histoire courte, j'ai raté la colonne unique des données. Je ne savais pas qu'il devait être attribué, alors ne changez jamais – comme expliqué “il doit juste être unique”. Lorsque je l'ai chargé, la clé primaire et l'identifiant unique étaient désactivés. La clé primaire était 4 et l'ID était 5. Regardez, il y a une clé primaire de 10 et un ID de 247. L'ID unique n'avait rien à voir avec les données du comté, mais tout avec la base de données de l'état 911. J'ai donc calculé l'ID de la clé primaire et c'est là que les choses sont devenues stupides. Alors, qu'est-ce que j'ai fait de SIG magique ? Je ne l'ai pas fait.

J'ai créé une nouvelle colonne d'index.

mettre à jour hc911.addresspoints set index = right(oirid, -6)::int

Ce qui a arraché le numéro de la colonne unique et l'a affecté à un nouveau champ. J'ai construit une nouvelle séquence avec une nouvelle valeur d'incrémentation. J'ai foiré ça. J'ai fini par redéfinir une nouvelle clé primaire. Fixé. Aucune connaissance SIG appliquée – juste des bases de données.

Comment savez-vous que vous êtes fatigué? C'est ainsi!

Ce qui n'est pas un gros problème mais pour moi une expérience d'apprentissage. Je dois passer une journée à parler au client et à trouver un chemin avant de migrer. La migration des données a pris 2 heures. La connaissance institutionnelle aurait probablement pris 8 heures. Le prochain n'aura pas ce problème. Vous allez devoir me parler beaucoup de vos données et de votre processus. Bien plus que vous ne le souhaitez et c'est bien, nous avons juste besoin de parler.

Les données sont tout. Pour rendre tout le monde heureux, j'ai configuré quelques tâches cron pour vider les données dans Geopackage et Shapefiles à l'aide d'OGR. Cela fait maintenant 6 mois qu'ils se traînent tranquillement en faisant leur travail sans applaudissements ni fanfare. De plus en plus de personnes au bureau vont lentement “hey, vous voulez dire que je peux utiliser QGIS pour me connecter à la base de données ? Je peux voir les données ?”.

Je peux dire que tout ce mouvement moins le hoquet d'identification a été une énorme victoire pour l'organisation. J'ai juste eu la chance d'être le gars pour le faire.

Donc, si vous êtes une organisation aux prises avec votre système commercial, pourquoi ne pas jeter un œil de ce côté de la barrière. Nous nous amusons beaucoup. Si vous vous demandez “Hé, que dois-je apprendre ces jours-ci”– – , je vous invite à vous plonger dans PostgreSQL/PostGIS.


A quelle distance est-ce?

J'ai travaillé sur un projet de cartographie avec un peu d'analyse pour faire bonne mesure. Ce qui est amusant, c'est que le projet m'a forcé à emprunter la route PyQGIS. Heureusement pour vous, cet article ne couvrira pas cela. En fait, j'ai écrit un script et il s'est exécuté et il a fait quelque chose de mal, mais c'est un début.

Quoi qu'il en soit – Distance. J'ai eu un problème et le problème était “À quelle distance se trouvent tous les lancements de canoës par rapport à l'arrêt final ?”. C'est donc un problème de réseau. Je ne me soucie pas du temps que cela prend dans le canoë - juste à distance.

Je n'utilise pas souvent les outils réseau. J'ai déjà effectué le routage du chemin le plus court d'un endroit à l'autre avec des résultats mitigés il y a longtemps. J'ai 9 emplacements à faire. En fouillant dans les outils, il semble que l'outil de géotraitement du chemin le plus court fonctionnera.

L'outil est simple : choisissez une couche de points. Choisissez une destination. Choisissez une couche réseau qui pour moi est le flux. L'exécution de l'outil vous donne une nouvelle couche de données indiquant le chemin entre vos points et le point final. Dans ce cas, il s'agissait de 9 lignes en une seule couche pour les 9 mises à l'eau de canoë. Chaque ligne a un coût qui est la distance. J'ai fait un retour à ma couche de lancement de canoë et du coup en quelques clics j'ai la distance jusqu'au bout.

De là à une feuille de calcul et j'ai ce tableau astucieux montrant le kilométrage du Lee et Gordon Mill au Camp Jordan Le lancement du pont Reeds au Camp Jordan :

Est-ce que tout cela valait vraiment un article de blog ? For me yes because I hadn’t done this lately and it was ridiculously easy. Plus this entire exercise has been fueling my PyQGIS itch. As I said earlier I had built some code to do the thing that this did – now I want to do a few things to automate running this on a larger more complicated pile of data. What if I wanted road distance to every fire station from every address? How would I automate that?

…and of course there is pgrouting – Which I’ve been playing with more these days. As I think about it that brings my networking tools to three things: QGIS, Pgrouting, and GRASS.

Anyway – Routing in QGIS is a thing. One more tool in the awesome tool box.


Logiciels open source

What is open source software?
Open source software is computer software that is freely available in source code form. The code can be modified and redistributed without restriction. Arches has been open source since its inception.

Why was Arches developed as open source software?
An open source approach was chosen because we believe it offers Arches adopters the ability to realize substantial flexibility and cost savings compared to the use of proprietary software. As an open source product, the Arches software is available at no cost, individual adopters may modify it to meet their specific needs, and may pool resources with other organizations to pay for customizations and maintenance. Under the open source license, any improvements must be made available to everyone.

What’s the role of the Getty Conservation Institute and World Monuments Fund?
The Getty Conservation Institute and World Monuments Fund led the initial development of Arches (see Project Background) with the goal of creating an open source software project. The GCI and WMF are only two of many active stakeholders. The GCI and WMF believe a thriving open source community will be a key determinant to Arches being broadly adopted over the long term, and are therefore committed to providing resources to support the community’s website and management during the first years of its existence.

What license is Arches distributed under?
Arches is distributed under the GNU Affero General Public License, version 3 (AGPL3). The AGPL3 is similar to the GNU General Public License, and it is specially designed so that modifications to software used on network servers become available to the development community. The AGPL3 requires that derivative works be distributed under the same license. Learn more about the GNU Affero General Public License, version 3 here.

Is Arches a Geographic Information System (GIS)?
Oui. Arches models location-based data, such as position and extent, using geospatial data, such as points, linestrings, and polygons (as well as the coordinate systems and spatial analyses associated with GIS).

Do Arches users have to be trained GIS specialists in order to use the system?
No. Although Arches allows users to create and edit GIS data, we have developed a user interface that shields users from much of the complexity usually associated with GIS software.

Does Arches use Esri GIS?
No, Arches does not require any Esri software. Esri software requires users to purchase expensive software licenses, which we believe would limit the ability of many organizations to deploy Arches. Instead, Arches uses robust, well-supported, and technologically advanced Open Source alternatives to Esri software. For example, Arches uses PostGIS and GeoServer as a high-performance alternative to ArcGIS Server.

Can I use my existing Esri technology with Arches?
Oui. Arches can import and export data as .shp files, which are compatible with Esri technology. Information in Arches also can be published through mapping services that ArcGIS can use for cartographic production, spatial analyses, and “what-if” scenario planning.


To stay up-to-date on project news, sign up for the Arches project announcement list or join the Arches discussion forum.


Voir la vidéo: WebGIS Development from scratch using Geoserver, Openlayers 6 and Postgis