Archives par mot-clé : topologie

La topologie, une recette…

Comme indiqué dans notre dernier compte-rendu, nous revenons avec un exemple sur la topologie. La documentation en français étant parfois difficile à réunir, nous vous proposons une recette pas à pas.

La topologie en quelques mots…

La topologie fournit un cadre pour traiter des notions de continuité et de voisinage.

En géomatique, la topologie permet de réduire la taille du stockage (deux pays limitrophes partagent nécessairement la même frontière), de « nettoyer » des shapefiles etc. En sciences humaines, la topologie et les graphes permettent de modéliser des relations (qualitatives) quand les mesures (spatiales, quantitatives) son mal approchées.

Graphe du moulon A (ensemble de structures urbaines contigües, limité par des rues) de Saint-Antonin-Noble-Val (82), d’après le terrier de 1397 (crédit : Albane Rossi, Cécile Rivals)
Graphe du moulon (ensemble de structures urbaines contigües, limitées par des rues) de Saint-Antonin-Noble-Val (82), d’après le terrier de 1397
Copyright : Albane Rossi, Cécile Rivals

La topologie en pratique…

En nous servant de PostGIS, une base de données spatiale qui fournit des outils de topologie, nous présentons l’intégration d’un shapefile (géographique) dans un schéma topologique.

Début – Importer le shapefile test.shp dans PostGIS (avec le plugin PostGIS Shapefile and DBF loader). Dans l’interface graphique du plugin, lors de l’import du shapefile, définir son SRID comme 2154 (projection RGF93 / Lambert-93).

test.shp
Visuel du shapefile test.

1– Sous PostGIS,  dans l’onglet SQL, lancer :

CREATE EXTENSION postgis_topology;

Cette commande créée :

– l’extension topologique de PostGIS (postgis_topology) ;

– un  nouveau schéma (topology) ;

– dans ce schéma, deux tables : layer et topology ;

2– Sous PostGIS, dans l’onglet SQL, lancer :

SELECT topology.CreateTopology(‘ma_topo’, 2154, 0.5);

Où :

‘ma_topo’ est le nom du nouveau schéma topologique ;

2154 est la référence spatiale de ‘ma_topo’ elle doit être identique à celle de la colonne ‘geom’ (lors de l’import su shapefile);

0.5 est la tolérance de la topologie (voir ci-dessous) ;

Cette commande créée :

–  un  nouveau schéma topologique (‘ma_topo’) ;

–  quatre tables dans ce schéma : edge_data, face, node, relation ;

3– Sous PostGIS, dans l’onglet SQL, lancer :

SELECT topology.AddTopoGeometryColumn(‘ma_topo’, ‘public’, ‘test’, ‘topo’, ‘POLYGON’);

Où :

‘ma_topo’ est le nom du schéma topologique ;

‘public’ est le schéma géométrique ;

‘test’ est la table où sera enregistrée la colonne ‘topo’ ;

‘topo’ est la nouvelle colonne topologique dans la table ‘test’ ;

‘POLYGON’ est le type de données qui y sera enregistré ;

Cette commande créée :

– une colonne topologique dans la table ‘test’;

– une ligne dans la table ‘layer’;

4– Sous PostGIS,  dans l’onglet SQL, lancer :

UPDATE test SET topo = topology.toTopoGeom(geom, ‘ma_topo’, 1, 0.5);

Où :

‘test’ est la table qui va être modifiée ;

‘topo’ est la colonne qui va être modifiée ;

‘geom’ la colonne géométrique qui va être lue ;

‘ma_topo’ est le nom du schéma topologique ;

1 fait référence à l’identifiant enregistré dans la table layer ;

0.5 est la tolérance de la transformation topologique ‘geom’ -> ‘topo’ ;

La commande :

– remplit la colonne topo avec les données géométriques transformées (geom -> topo) ;

– remplit les quatre tables (edge_data, face, node, relation) du schéma ‘ma_topo’;

table edge_data
Aperçu de la table edge_data.

C’est la table edge_data qui contient l’information sur les relations de voisinage…

 panneau_attention A ce niveau des erreurs peuvent survenir.

Par exemple : « la fonction st_changeedgegeom(character varying, integer, geometry) n’existe pas ». Ceci est dû à un problème de search_path. Dans ce cas, fermer et relancer pgAdmin III.

Ou par exemple : « ERREUR:  Geometry SRID (un_nombre) does not match column SRID (un_autre_nombre)) ». Le SRID de la colonne ‘geometry’ ne correspond pas à celui de la colonne ‘topo’.

Fin– Importer dans un SIG (par exemple QGIS).

Topologie de test.shp
Résultat de l’opération de topologie sur le shapefile test.

La tolérance (une vertu)

Pour le shapefile test_1.shp (1), il peut y avoir des vides (gaps) et des superpositions (overlaps). L’outil Vérification de topologie de QGIS permet de les mettre en évidence (2).

shapefile test_1 avant (1) et après  (2) la vérification de sa topologie
Shapefile test_1 avant (1) et après (2) la vérification de sa topologie.

On peut savoir quelle est la distance maximale (entre deux points) de ces vides et de ces superpositions avec l’outil Mesurer une longueur de QGIS. Ici, la distance maximale est ≤ 5 m (on est en RGF93). C’est ce paramètre que l’on va rentrer dans les requêtes SQL : CreateTopology et toTopoGeom (voir ci-dessus).

SELECT topology.CreateTopology(‘ma_topo’, 0, 5);
SELECT topology.AddTopoGeometryColumn(‘ma_topo’, ‘public’, ‘test’, ‘topo’, ‘POLYGON’);
UPDATE test SET topo = topology.toTopoGeom(geom, ‘ma_topo’, 1, 5);

Il pourra encore apparaitre des erreurs qu’il faudra chercher à identifier de manière ad hoc, par exemple en levant des exceptions (voir les liens ci-dessous).

Résultat :

topologie de test_1.shp avec une tolérance de 5 degrés
Topologie de test_1.shp avec une tolérance de 5 m.

Si la tolérance avait été nulle :

SELECT topology.CreateTopology(‘ma_topo’, 0, 0);
SELECT topology.AddTopoGeometryColumn(‘ma_topo’, ‘public’, ‘test’, ‘topo’, ‘POLYGON’) As new_layer_id;
UPDATE test SET topo = topology.toTopoGeom(geom, ‘ma_topo’, 1, 0);
topologie de test_1.shp sans tolérance (tolérance=0)
Topologie de test_1.shp sans tolérance (tolérance=0).

Liens sur la topologie dans PostGIS :

simplifier un ensemble de polygones limitrophes (départements)

nettoyer un ensemble de lignes (réseau routier)

Une excellente manière de continuer à ‘topologiser’ en bandes dessinées  :

le Topologicon.pdf

Compte-rendu : goûter de la géomatique du jeudi 9 janvier 2014

15h : début du premier goûter de l’année 2014

Le goûter a réuni Laure, Ludovic, Maxime, Thomas, Luc, Delphine, Estelle (élevée au grade de docteur depuis sa dernière présence aux goûters : félicitations !) et Jean-Louis, chercheur en géographie.

Signe de la saison, une très belle galette a animé les discussions ainsi que des papillotes aux trois chocolats et une grande diversité de boissons chaudes.

Question sur la prise en main d’un GPS

La séance débute avec une interrogation sur le GPS Garmin ExTrem : comment y intégrer des cartes anciennes géoréférencées afin de les visualiser sur le terrain ? Différentes solutions sont proposées : MapInstall de Garmin (tutoriels iciici ou) ou pour des cartes personnalisées, le plugins de Qgis GarminCustomMap qui créé un raster en KML.

Topologie : présentation d’une application pratique

Thomas développe à la MSH l’application archéologique OH-FET : elle permet d’étudier les dynamiques spatio-temporelles selon la décomposition des observations archéologiques en entités spatiales dans un graphe topologique. Il est confronté à des problèmes de voisinages de shapefile (vectorisation non-optimale composée de micro-polygones, lignes non jointes…) qui nuisent à l’intégration des données dans le modèle topologique puis à l’analyse. Ces problèmes de topologie conduisent à une discussion de deux ordres. D’abord, sur la manière d’obtenir une topologie grâce aux outils SIG et de base de données. Puis dans le cadre d’OH-FET, sur les choix de présentation aux futurs utilisateurs (pas de prise en compte, résumé exhaustif, seuils d’erreurs ?). Nous proposerons prochainement un billet plus détaillé sur cette question.

Reconnaissance des routes commerciales par LIDAR et photographie aérienne

Jean-Louis travaille dans le cadre de ses recherches sur le peuplement au Moyen-âge sur les routes anciennes. Les photos aériennes permettent une reconnaissance de ces chemins par la différence de couleur des terres. Les résultats actuels issus des données dérivées (ombrages) d’une acquisition LIDAR ne permettent cependant pas de rendre compte de ces routes. Jean-Louis avance des causes liées à l’agriculture : ces anciens chemins se trouvent actuellement dans des champs dont les labours profonds (hersage, broyage des pierres, lit de semence) peuvent avoir fait disparaître toutes traces d’affaissements, comme elles sont détectables dans des forêts.

Exemple d'un vestige archéologique reconnaissable par photographie aérienne. Ici, enceinte pentagonale d’environ 50-70m en Bretagne. Sources : Géoportail, http://archeologie.canalblog.com/
Exemple d’un vestige archéologique reconnaissable par photographie aérienne. Ici, enceinte pentagonale d’environ 50-70m en Bretagne.
Sources : Géoportail, http://archeologie.canalblog.com/

17h : annonce de la reine et du prochain goûter

Le goûter s’est clôturé par le partage de la galette, les félicitations à la reine et les remerciements aux participants. Jean-Louis devrait poursuivre l’exposé de ses travaux au prochain goûter : rendez-vous le jeudi 6 février 2014 !