MS BIM › Coll. et struct. › Manipulation des données

Interroger une donnée vecteur

Identification

Table d’attributs

Sélections

3 types de sélections

Expressions SQL

La méthode la plus commune pour interroger des données tabulaires est le langage SQL, très puissant pour effectuer des jointures entre plusieurs tables, des agrégation de données, calculs avancés...

Un SIG comme QGIS apporte des interfaces graphiques pour plus d’intuitivité qui font néanmoins appel à des sous-ensembles de la syntaxe SQL, notamment les expression booléennes (ayant pour résultat VRAI ou FAUX .

Par exemple :

Ces expressions sont appliquées à chaque entitée pour être évaluées à VRAI ou FAUX. On les exploite dans différents contextes :

Requête spatiale

Interroger une donnée raster

Interroger un pixel

Visualiser l’histogramme

Calculer des statistiques par zones vecteurs

Géoréférencements

Reprojeter un raster

Nous avons vu que le raster était une grille régulière de valeurs dans une projection donnée, uniformément réparties selon un pas régulier dans le repère euclidien de la projection.

La reprojection consiste à partir d’un raster dans une projection source, de produire un raster dans une autre projection. Cela impose une déformations et un ré-échantillonage car les points géographiques du raster ne sont pas les mêmes dans la projection source et de destination.

Projection des données et projection cartographique

Il faut distinguer :

Géoréférencer un raster

L’opération de géoréférencement consiste à produire un raster géographique à partir d’une image bitmap. Le Géoréférenceur de QGIS est un outil simple permettant d’ouvrir la carte PNG et poser des points avec leur correspondance en coordonnées géographiques. On peut évidemment cliquer sur la carte pour définir les coordonnées.

Ceci permet des déformations complexes qui seront abordées plus bas. Pour un géoréférencement linéaire, 2 points suffisent pour établir la position et l’échelle. Nous savons en outre que nulle rotation ne sera effectuée tant que le nord est bien le haut de l’écran.

En sortie, le géoréférenceur produit un fichier GeoTIFF. Le GeoTIFF est une image TIFF qui contient les données de géoréférencement en tant que métadonnées, ce qui en fait le format de choix pour les rasters.

2 familles d’algorithme : polynomial et Helmert

L’algorithme Helmert déformera l’image autant que nécessaire pour faire correspondre exactement les points de contrôle définis. C’est au départ ce qu’on cherche, mais cela donne beaucoup d’importance aux points (corollaire de la liberté offerte)

Les polynomiales de degrés 1, 2, 3 sont souvent plus efficaces car la déformation d’une photo obéit souvent à une ces équations mathématiques (polynome de degré 2 sinon 3).

Il faut souvent faire différents essais pour obtenir le meilleur géoréférencement possible. Les réflexes viennent ensuite.

Reprojeter une donnée vecteur

Édition de vecteurs

Modifier les points

Créer une couche

Numériser des entités

Traitements vecteurs

Filtrer

Filtrer ne change pas la cardinalité des données : une route reste une route, un point un point, etc. Les entités ne sont pas dédoublées.

Administrer la structure des champs

Calcul de champs

Comme on l’a vu précédemment dans la Gestion des champs , on peut créer de nouveaux champs, sans valeur initiale ou bien en donnant une valeur. Mieux qu’une valeur pour toutes les entités , on peut définir une expression SQL .

Cette opération consiste à ajouter des attributs (des colonnes) dont la valeur pour chaque entité est le fruit d’une expression algébrique.

Le type de son résultat est libre : nombre entier, nombre décimal, texte, date, booléen... Il est déterminé par l’expression. L’expression peut exploiter la valeur d’attributs existants et c’est son principal intérêt.

Zones tampons

Au niveau métier, le tompon représente la propagation d’un phénomène dans un rayon donné, ou les zones de X mètres autours d’une surface donnée. C’est transformer le concept de distance (à quelque chose ) en surface.

Le tampon est la surface regroupant tout point situé à une distance inférieure donnée d’une géométrie initiale.

La zone tampon pour un point est un disque qui a pour rayon la distance du tampon : dans un rayon de 10 km autours de [...]

QGIS ne permet pas les courbes, seulement des segments droits pour les lignes et polygones. Un cercle est donc approché par un hexagone à N points. Lors de l’application d’un tampon, on peut préciser ce N .

Intersections

L’intersection de 2 polygones est facile à imaginer : c’est le polygone délimitant la surface commune aux 2 polygones, qui peut être vide si les 2 polygones n’intersectent pas.

L’intersection entre une ligne et un polygone produit une poly-ligne, une ligne, un poly-point, un point ou pas de géométrie, suivant que la ligne intersecte le polygone sur une surface interrompue, une seule surface, en plusieurs point (polygone concave), un seul point (sur un sommet convexe).

... il faut donc se rappeler que ces abstractions mathématiques gouvernent le résultat qu’on obtient, car le SIG est contraignant en matière de types géométriques. Un multi-point n’est pas une poly-ligne, etc. Une couche de lignes ne peut pas contenir de point au sens strict, mais une ligne peut avoir un seul point : en quelque sorte elle est un point (en mathématiques), mais c’est une ligne (dans l’abstraction SIG).

L’intersection est une jointure d’entités

Dans le SIG, l’identité principale n’est pas la géométrie mais l’entité : l’entité possède une ou plusieurs géométries.

L’explication précédente s’applique aux géométries. Mais comment sont traités les entités et champs de la table d’attributs ?

Ce qui se passe :

  1. Toutes les intersections géométriques sont calculées pour toutes les combinaisons : entre chaque entité de A et chaque entité de B
  2. Pour chaque résultat qui n’est pas vide , une entité est créé en sortie avec :
    • la géométrie fruit de l’intersection géométrique
    • tous les attributs de A
    • tous les attributs de B

Ainsi la couche en sortie récupère tous les champs des 2 couches intersectées. C’est une méthode de jointure.

Agrégation

Agréger une donnée se fait par groupe : la liste des entités en entrée est transformée en une autre liste où chaque entité représente un groupe. Le groupement se faire par valeur unique : d’un attribut ou plus généralement d’une expression.

Par exemple, on peut grouper les communes par département, un exploitant la valeur de l’attribut code_dept .

Pour chaque groupement, on peut faire remonter d’autres valeurs à condition qu’elles soient agrégées. Par exemple, pour notre agrégation departements , on peut générer un attribut nb_communes qui a pour valeur l’expression count(id_commune) , soit le nombre de id_commune existant dans le groupe respectif.

Jointure

La jointure consiste à fusionner une donnée vecteur avec une autre table attributaire, éventuellement non-spatiale (purement attributaire).

Pour cela, on va pour chaque entitée apparier une entité (une ligne de la seconde donnée. On dit aussi apparier les entités de la donnée à gauche avec la donnée à droite . En d’autres termes, faire correspondre à chaque entité de gauche une entitée de droite, quand c’est possible.

La correspondance se fait généralement sur un identifiant commun. Par exemple, notre donnée routes peut être enrichie des attributs présents dans la donnée de l’exploitant, au format CSV, en se basant sur un identifiant commun pour établir la correspondance.

La jointure est en fait bien plus générale quand elle se définit par une expression algébrique reposant sur les attributs de l’entité à gauche et à droite. L’expression peut exploiter le spatial, lorsqu’il s’agit par exemple d’apparier à une liste de points les attributs de sa communes respective : sans attribut id_commune , la fonction Within(point.geometry, commune.geometry) fera correspondre à chaque point la commune dans laquelle il se trouve géométriquement.

La cardinalité n’est pas conservée : l’entité à gauche peut être multipliée (doublée, triplée...) si elle vérifie la correspondance pour plusieurs entités à droite. Dans le cas où elle n’a aucune correspondance, elle peut selon le type de jointure être élminiée (multipliée par zéro correspondance) ou bien conservée avec des valeurs NULL pour les attributs n’ayant pas de correspondance. Dans le premier cas c’est une jointure symétrique et dans l’autre une jointure asymétrique à gauche .

Généralisation géométrique

Il s’agit de diminuer le nombre de points d’un vecteur tout en préservant au mieux sa topologie. C’est indispensable pour réduire l’échelle de la représentation : pas seulement pour économiser en poids des données mais pour que la représentation soit convenable.

Par exemple, le tracé d’une route détaillé à 10 mètres (un point tous les 10 mètres) doit être généralisé pour être affiché sur une échelle de 1/100 000 . Autrement, les points sont trop denses et posent problème lors du rendu des tracés (peut former des pâtés ).

C’est l’équivalent vecteur du sous-rééchantillonage de rasters (rééchantillonage avec réduction du nombre de pixels), qui est plus facile à concevoir du fait de la nature régulière de la grille d’un raster. Pour les vecteurs, la généralisation est complexe car même s’il y a perte d’information (moins de points à l’arrivée qu’au départ), il y a aussi de la détection afin de préserver les formes.

C’est un sujet mathématique complexe où les recherches se poursuivent.

Traitements rasters

Fusionner des rasters

La fusion est l’opération permettant de juxtaposer plusieurs rasters pour produire un raster unique. Les rasters peuvent se superposer, auquel cas l’ordre de fusion est important : les derniers fichiers listés en entrée seront dessinés par dessus les premiers.

Les rasters en entrée doivent avoir le même nombre de bandes, sinon ce n’est pas logique. Par exemple, on ne peut fusionner un MNT avec une orthophoto : cela n’a pas de sens. Deux MNT uni-bande peuvent être fusionnés mais il appartient à l’humain de contrôler que les valeurs ont la même signification (les valeurs d’altitudes doivent être cohérentes entre eux en évitant par exemple de mélanger altitudes absolues et relatives, etc.).

Découper un raster selon des polygones

Le découpage consiste à selectionner une région partielle du raster d’origine, comme on rogne une photo . L’opération produit un raster de même résolution (densité géographique en mètres par pixel) mais de dimensions différentes.

Rééchantilloner un raster

Cela consiste à changer la résolution sans changer l’emprise géographique : les dimensions géographiques sont donc conservées mais pas les dimensions de la grille de pixels.

On l’effectue le plus souvent pour réduire la résolution : c’est l’équivalent de la généralisation des vecteurs. Le principe est le même que lorsqu’on réduit la résolution d’une photo pour diminer le poids du fichier.

Pour une réduction de facteur 2 , 4 pixels en entrée deviennent 1 pixel en sortie. Il s’agit bien d’une agrégation et la valeur du pixel en sortie est calculé à partir de la moyenne des pixels en entrée ou d’une autre méthode.

Souvent le facteur n’est pas entier donc les pixels en sortie tombent entre deux pixels en entrée. Il existe plusieurs méthodes de calcul faisant intervenir le plus proche voisin ou les N plus proches, etc. Les algorithmes vont du plus rapide (basse qualité) au plus lent (meilleure qualité), en particulier :

Classifier un raster

La classification consiste à convertir les valeurs en classes. On remplace une valeur numérique par le numéro de la classe à laquelle elle appartient.

L’exemple le plus simple est la classification linéaire en N classes, d’après les valeurs minimales et maximales. Par exemple, pour faire 3 classes sur des valeurs comprises entre 0 et 300, on établit :

La classification n’est pas toujours linéaires. Elle peut se baser sur une répartition égale (autant de points dans chaque classe). Elle peut aussi suivre une autre logique.

Une des manières de formaliser cela est de définir une expression pour chaque classe : un pixel est classifié selon l’expression qui est évaluée à VRAI .

Examples d’application :

Calculs sur pixels unitaires

Calculs de voisinage

On peut regrouper les calculs rasters en 2 types :

Outils et approches