...et afficher quelques données géographiques sous QGIS
Salut toi ! Prêt à bénéficier de toute la puissance de Postgres 15 ? Tu as bien mis ta ceinture de sécurité ?
Maîtrise tes tremblements, bien compréhensibles face à ce déluge de technologies aux performances abyssales, et prépare-toi à entrer dans un monde nouveau, où l'imagination est la seule limite !
🤖🤟🌐💪🧭🐘
1) EDB
Tout d’abord, tu vas avoir besoin de cette page pour te créer un compte sur le site d'EnterpriseDB :
https://www.enterprisedb.com/accounts/register
Ensuite connecte-toi et rend-toi ici :
https://www.enterprisedb.com/software-downloads-postgres
Dans l'encart PostgreSQL, supported by EDB, télécharge l'installateur nommé Windows x86-64 Interactive Installer.
- PS 👀
- De ce que je sais, EnterpriseDB est une société qui a été mandatée par le groupe de développement de Postgres pour diffuser les installateurs de cette base de données gratuite et opensource. Ensuite, ils font leur beurre sur d'autres options et conseils autour de l'usage industriel de Postgres. Tu n'auras cependant rien à payer ni à justifier. Ils t'appeleront peut-être, ou t'enverront quelques mails pour en savoir plus sur tes usages, mais en ce qui me concerne, je n'ai jamais rien constaté d'intrusif.
- Et non : je ne travaille pas pour eux !
Lance l'exécutable que tu as téléchargé et suis les instructions :
- Laisse le Répertoire d'installation de Postgres par défaut, Suivant.
- Dans la Sélection des composants, laisse les 4 cases pré-cochées par défaut, Suivant.
- Dans le choix du Répertoire de données, si tu disposes d'un autre disque dur particulièrement costaud, tu peux y créer un répertoire dédié (sans espace ni accent) et le choisir (ce n'est pas obligatoire, mais les bases de données géographiques peuvent vite grossir !), Suivant.
- Dans le choix du Mot de passe, comme tu travailles en local, tu peux mettre simplement postgres, Suivant.
- Laisse le Port par défaut 5432, Suivant.
- Dans Options avancées, laisse la locale par défaut, Suivant, Suivant, Suivant.
Merci de ta patience ! Un certain nombre de choses se sont installées. Laisse la case cochée concernant Stack Builder et Terminer.
2) Stack Builder
Stack Builder s'est ouvert (tu pourras d'ailleurs le ré-utiliser plus tard si besoin), choisi Postgres 15 dans le menu déroulant, Suivant.
- Dans l'onglet Database Server, tu peux vérifier que Postgres 15 est bien installé (sinon, coche-le).
- Dans l'onglet Spatial Extensions, coche PostGIS pour Postgres 15, Suivant, Suivant, Suivant (sans Skipper l'installation hein).
- I agree, coche Create Spatial Database, Next, Next.
- Prend note de ton User name par défaut (postgres), tape ton Password (postgres) et note aussi ton port (5432), Next.
- L'installateur te propose de créer une base spatiale de test, laisse tout par défaut, Install.
- Quelques variables d'environnement vont se mettre en place, ainsi que l'extension pour les rasters, tu peux mettre Oui partout.
- Close puis Finir.
Encore merci de ta patience !
3) PgAdmin
À ce stade PgAdmin s'est installé sur ta machine, cherche-le et ouvre-le.
Ton mot de passe te sera demandé (enregistre-le quelque part !). Si ensuite tu cliques sur Server/Postgres15, tu verras qu'une ou plusieurs bases se sont créées. Laisse-les tranquilles et fait un clic-droit sur Databases pour en ajouter une. Appelle-la test et laisse tout vide ou par défaut.
- Observe l'onglet Schemas de ta base test, le schéma nommé public sera ton schéma de travail. Tu peux considérer un schéma comme une sous-base.
- Dans public, observe l'onglet Tables. Il est logiquement vide pour l'instant, mais c'est aussi le signe que l'extension GIS n'est pas encore activée pour cette base.
- Dans public, observe l'onglet Functions. Il est vide pour l'instant, tu n'as encore aucune fonction. C'est aussi le signe que l'extension GIS n'est pas encore activée pour cette base.
4) L'extension GIS
Si tu as bien suivi les instructions ci-dessus, alors tu vas pouvoir appeler l'extension GIS sur ta base de test :
- Sélectionne ta base de données (un clic dessus).
- Ouvre l'outil Query tool (juste à droite de Browser)
- Exécute-y cette requête :
CREATE extension postgis;
- Astuces 👀
- - Un champ en haut du Query tool te permet de vérifier qu'il pointe bien sur la base voulue.
- - Le bouton Execute (une sorte de bouton Play), ou le raccourci F5, te permettent d'exécuter tes requêtes.
- - En plus de PgAdmin, tu peux aussi t'intéresser à l'outil HeidiSQL, ou encore mieux : DBeaver. Ces outils vont te permettre de te connecter à tes bases Postgres, et qui a quelques avantages/inconvénients par rapport à PgAdmin (plus tard, nul doute qu'il te servira !).
Retourne maintenant voir tes tables et fonctions (clic-droit sur ta base et Refresh). Une table spéciale s'est créée, qui va permettre de gérer la spatialité/projections, et des fonctions spatiales sont disponibles : l'extension GIS est bien en place sur ta base de données 😎
Testons-là !
5) Tables de test
Crée maintenant une ou deux tables avec au moins un champ id et un champ nommé geom (le fameux type spatial ! Par convention nous l'appelerons toujours ainsi).
Pour les plus pressés 🤓 ces codes vont faire le job :
DROP TABLE IF EXISTS rectangles ; CREATE TABLE rectangles ( id serial NOT NULL, geom geometry, CONSTRAINT rectangles_pk PRIMARY KEY (id), CONSTRAINT enforce_geotype CHECK (geometrytype(geom) = 'POLYGON'::text OR geom IS NULL), CONSTRAINT enforce_srid CHECK (st_srid(geom) = 4326) ) WITH (OIDS=FALSE) ; ALTER TABLE rectangles OWNER TO postgres; CREATE INDEX rectangles_geom_idx ON rectangles USING gist (geom);
DROP TABLE IF EXISTS artefacts ; CREATE TABLE artefacts ( id serial NOT NULL, geom geometry, CONSTRAINT artefacts_pk PRIMARY KEY (id), CONSTRAINT enforce_geotype CHECK (geometrytype(geom) = 'POLYGON'::text OR geom IS NULL), CONSTRAINT enforce_srid CHECK (st_srid(geom) = 4326) ) WITH (OIDS=FALSE) ; ALTER TABLE artefacts OWNER TO postgres; CREATE INDEX artefacts_geom_idx ON artefacts USING gist (geom);
Prend le temps d'observer un peu ces codes, et de les comprendre ne serait-ce que partiellement, puis exécute-les dans le Query tool.
Cela va te créer 2 tables de polygones en 4326 : rectangles et artefacts.
6) Connexion avec QGIS
Ouvre QGIS. Le joli bouton représentant un 🐘 va te permettre de créer une connexion à ta base Postgres et t'y connecter.
Tu peux aussi y accéder par le meny Layer/Data Source Manager/PostgreSQL.
Clique sur New pour créer ta connexion :
- Dans Name, choisi un nom explicite pour ta connexion BDD.
- Ton Host sera localhost.
- Le port sera celui que tu as choisi à l'installation (5432).
- Dans Database, tape l'exact nom de ta BDD Postgres.
- Tu peux laisser Service, SSL mode et Session Role vide ou par défaut.
- Dans Authentification, onglet Basic, tu peux entrer les nom d'utilisateur et mot de passe que tu as choisi pour ta base (postgres/postgres), et choisir l'option Store, afin d'autoriser QGIS à les enregistrer.
Bien, tu peux déjà Tester ta connexion, et laisser les autres options vides pour l'instant. Si tout va bien, clique sur OK puis Connect.
Les Schemas de ta base de données apparaissent dans l'encart dédié, tu n'en as qu'un seul pour l'instant et c'est très bien comme ça (public).
Déroule-le : tes tables sont disponibles.
Sélectionne les tables artefacts et rectangles, puis Add : les couches apparaissent dans QGIS !
7) Édition des objets cartographiques PostGIS depuis QGIS
Amuse-toi maintenant à créer des objets géographiques via QGIS. Cela fonctionne de l'exacte même manière que pour un shape par exemple (mode édition, blablabla... Je ne vais pas te faire l'offense de t'expliquer cela 🗺🌍😀).
Maintenant retourne dans PgAdmin, inspire fort et observe ta table (clic-droit sur ta table, View/Edit Data/First 100 Rows) : tes données sont stockés au format spatial PostGIS !
Bizarre hein ? Ce type de format est pourtant idéal pour afficher, requêter ou optimiser des données spatiales. Rassure-toi les coordonnées géographiques sont bien présentes, tu peux t'amuser à les afficher au format TXT/WKT avec cette requête :
SELECT id, ST_ASTEXT(geom) FROM artefacts ;
Et voilà ! Bienvenue dans le futur !
💻🌍🚀👽🐘
Spécial
Une MAJ Windows peut bloquer Postgres, dans ce cas, récupérez le chemin complet de psql.exe, ajoutez une Règle de trafic entrant pointant sur lui :
https://dba.stackexchange.com/questions/30818/problems-connecting-to-windows-based-postgresql
Résumé :
- Panneau de configuration\Système et sécurité\Pare-feu Windows Defender
- Cliquez sur Paramètres avancés
- Cliquez sur Règle de trafic entrant
- Nouvelle règle
- Programme, Suivant
- Dans Au programme ayant pour chemin d'accès, mettez le chemin de psql.exe
- Les 3 checkboxs
- Confirmez