Beaucoup de sigistes savent ce qu’est un raster mais en vrai ils ne savent pas vraiment… Sortie des fameux « c’est lourd », « c’est des images géoréférencées », « c’est un fond de plan » il n’y a plus grand monde…
Alors c’est vrai, la donnée vectorielle est prépondérante dans le monde des SIG et le raster est souvent relégué au simple fond de plan. Mais je vais vous montrer qu’il y a en fait beaucoup de notions derrière un raster et que de les connaitre un peu, cela peut s’avérer utile.
Cet article reprends certains éléments de mon livre à découvrir ci dessous. N’hésitez pas à l’acheter pour approfondir le sujet dans PostGIS !
PostGIS – Tous les ingrédients pour concocter un SIG sur de bonnes bases
Stockez, manipulez et faites parler vos données géolocalisées, vecteur ou raster, avec PostGIS.
Ce livre vise à fournir au lecteur tous les éléments nécessaires pour mettre en place un système d’information géographique (SIG) fondé sur l’utilisation conjointe de PostgreSQL et de PostGIS.
Données matricielles
En anglais, « raster image » signifie « image matricielle ». Cet anglicisme anglicisme largement utilisé dans les SIG signifie tout simplement « ensemble de données matricielles ».
Mais qu’est-ce qu’un ensemble de données matricielles ? Il s’agit tout simplement d’un tableau constitué de valeurs numériques stockées dans des cellules rangées dans des lignes et des colonnes.
Les données matricielles c’est comme les données vecteur en fait…
Un sigiste novice qui n’a pas lu la suite de l’article
…alors oui mais non… Les données sont organisées sous la forme d’un tableau ce qui rappelle une feuille Excel ou une table PostgreSQL mais la comparaison s’arrête là !
En effet, on parle ici de matrice de données au sens mathématique, le positionnement au sein du tableau est ici très important. Une matrice est un tableau rectangulaire composé de m lignes et n colonnes et comportant donc m × n nombres, rangés ligne par ligne. Il y a m lignes, et dans chaque ligne n éléments.
Ainsi, pour chaque cellule, trois informations sont présentes :
- le positionnement horizontal au sein de la ligne (selon l’axe des X) de la cellule ;
- le positionnement vertical au sein de la colonne (selon l’axe des Y) de la cellule ;
- la donnée en elle-même (une valeur numérique).
Une image est une données matricielle, en effet chaque cellule possède une valeur de couleur et un emplacement spécifique. Ces cellules sont d’ailleurs appelées « pixel ». Si vous inversez deux lignes, votre image ne correspond plus à rien. Donc « non ce n’est pas comme un tableau Excel » !
Notez que le terme de « pixel » est utilisé pour nommer les cellules d’une image numérique. Il provient de « picture element » qui signifie « élément d’image ». Ce terme est également utilisé pour désigner les cellules des données raster dans les SIG. En effet, les rasters peuvent être affichés à la manière d’une image même si les cellules possèdent des données numériques ne représentant donc pas une couleur et issues de différentes analyses.
Pour aider à leur représentation, les données matricielles peuvent être colorées, par exemple en nuance de gris.
En plus des données matricielles, les rasters possèdent des données de géoréférencement qui permettent de situer les pixels. Il en existe de nombreuses mais voici les principales :
- la taille du raster en X (le nombre de colonnes) ;
- la taille du raster en Y (le nombre de lignes) ;
- le système de coordonnées ;
- les coordonnées (dans le système de coordonnées mentionné précédemment) du
point d’origine (en général le pixel tout en haut à gauche du raster) ; - la hauteur de chaque pixel dans l’unité du système de coordonnées ;
- la largeur de chaque pixel dans l’unité du système de coordonnées ;
- la distorsion du raster ;
- d’éventuelles informations d’étirement et de déformation du raster.
Notez que la largeur et la hauteur de chaque pixel est une valeur arbitraire choisie pour caler le raster sur le terrain. Dans l’absolu, les pixels n’ont pas de taille et ne sont que des éléments unitaires de donnée.
Résolution image et résolution raster
En informatique, il est fréquent de parler de la résolution spatiale d’une image (souvent abrégée en résolution). Celle-ci correspond à sa densité de pixels lors de son affichage sur un support numérique ou papier. Deux unités existent mais elles correspondent à la même chose :
- Support numérique (affichage sur un écran constitué de pixels) :
- en anglais : pixels per inch : ppi
- en français : pixels par pouce : ppp
- Support imprimé (impression sous forme de points sur un support) :
- en anglais : dots per inch : dpi
- en français : points par pouce : ppp (à ne pas confondre avec le premier)
C’est la résolution qui établit la correspondance entre le nombre de pixels et la taille en mètres (ou tout autre unité) d’une image. Voici un tableau d’exemple :
Taille en pixel | Taille en cm à 96 ppi | Taille en cm à 150 ppi | Taille en cm à 300 ppi |
---|---|---|---|
100 px | 2,64 cm | 1,69 cm | 0,85 cm |
Ainsi, selon la résolution d’un écran, une image ne sera pas affichée de la même façon (plus grande sur les écrans à faible résolution et plus petite sur les écrans à haute résolution).
Il en sera de même pour l’impression. La résolution utilise le pouce comme unité de longueur. Sachant qu’un pouce équivaut à 2,54 cm, voici un tableau de correspondance de résolution :
ppp (ou ppi) | 72 | 150 | 200 | 300 | 600 | 1200 |
ppc (pixels par centimètre) | 28 | 59 | 79 | 118 | 236 | 472 |
Notez que pour les écrans, le terme de résolution correspond donc au nombre de pixels affichés par unité de longueur alors que l’on parle de définition pour indiquer le nombre de pixels total affichés :
- Résolution : 250 ppp
- Définition : 1920 px × 1080 px
Pour les rasters, la résolution ne correspond pas à la même chose. En effet, un raster est une représentation numérique d’un environnement physique. La résolution indique donc la distance de terrain couverte par pixel. Il n’existe pas d’unité spécifique, il s’agit en général d’une valeur numérique dans l’unité de longueur du système de coordonnées du raster.
Lorsqu’une seule valeur est indiquée, celle-ci est censée s’appliquer en X et en Y. Par exemple si un raster possède une résolution de 20 cm, chaque pixel s’étend sur le terrain de 20 cm selon l’axe est-ouest et de 20 cm selon l’axe nord-sud.
Lorsque deux valeurs sont indiquées, il doit être spécifié laquelle correspond à l’axe des X et laquelle à l’axe des Y. Par exemple, si un raster possède une résolution de 20 cm en X et de 40 cm en Y, chaque pixel s’étend sur le terrain de 20 cm selon l’axe est-ouest et de 40 cm selon l’axe nord-sud.
Les expressions haute résolution et basse/faible résolution peuvent être utilisées pour qualifier la résolution : la première dans le cas d’un raster très précis (par exemple une résolution de 10 cm) et la seconde dans le cas d’un raster peu précis (par exemple une résolution de 50 m).
La résolution du raster se distingue donc de la résolution d’affichage. C’est pourquoi elle peut être différente selon l’axe (X/Y) alors que dans le cas d’une image numérique elle ne l’est généralement pas.
Il est possible de calculer la dimension d’affichage des éléments d’un raster sur un écran en combinant la résolution du raster et la résolution de l’écran.
Par exemple : pour calculer la taille d’affichage d’un bâtiment sur votre écran, vous aurez besoin des éléments suivants :
- la taille réelle du bâtiment : 60 m ;
- la résolution du raster affichant le bâtiment : 50 cm ;
- le niveau de zoom dans le logiciel de SIG : 25 % (notez qu’en général vous n’aurez pas cette information mais plutôt une échelle d’affichage simplifiant ce calcul) ;
- la résolution de l’écran d’ordinateur utilisé : 150 ppp.
Le calcul suit les étapes suivantes :
- taille en pixels du bâtiment : 60 / (50 / 100) = 120 pixels ;
- taille d’affichage en pixels du bâtiment : 120 * 25% = 30 pixels ;
- taille d’affichage en centimètres du bâtiment : 30 / ( 150/2,54) = 0,508 cm ;
Le bâtiment s’affichera avec une taille de 5 mm sur l’écran.
Bande ou canal
Dans un raster, les données sont organisées au sein d’une ou plusieurs bandes. Les termes de couches ou de canaux peuvent également être utilisés. Un raster est donc une sorte de conteneur dans lequel sont stockés des bandes.
Au sein de chaque bande, on retrouve les données (les pixels), des statistiques sur les données (valeur maximum, minimum, moyenne) et un histogramme présentant la répartition des données.
Les données de chaque bande se superposent parfaitement et représentent la même étendue mais pour une information différente. Le nombre de bandes dépend donc du type de données à représenter.
Voici quelques exemples de rasters monobandes (ne possédant qu’une seule bande) :
- modèle numérique d’élévation (chaque pixel contient la valeur d’altitude) ;
- carte de densité (chaque pixel contient une valeur de densité) ;
- photographie noir et blanc (chaque pixel contient le niveau de gris).
Voici quelques exemples de rasters multibandes (possédant plusieurs bandes) :
- orthophotographie en couleur réelle
bande 1 : densité de couleur rouge entre 0 et 255
bande 2 : densité de couleur verte entre 0 et 255
bande 3 : densité de couleur bleue entre 0 et 255 - image satellite Landsat 8
bande 1 : aérosols
bande 2 : bleu
bande 3 : vert
bande 4 : rouge
bande 5 : infrarouge proche
bande 6 : infrarouge moyen 1
bande 7 : infrarouge moyen 2
bande 8 : panchromatique
bande 9 : cirrus
Il est tout à fait possible d’utiliser des données sans aucun rapport dans chaque bande
avec par exemple :
- bande 1 : données d’altitude
- bande 2 : données de pente
- bande 3 : rugosité du terrain
- bande 4 : orientation du terrain
Ce sont ensuite les logiciels de SIG qui seront chargés d’interpréter les valeurs de chaque bande afin de les afficher de différentes façons :
- en niveaux de gris ;
- en niveaux de rouge, de vert et de bleu combinés pour recréer une image colorisée ;
- suivant une palette de couleurs correspondant aux diverses valeurs.
Voici un exemple de colorisation d’un raster qui vous montre comment fonctionne ce principe pour des rasters de type images aériennes.
Le raster d’exemple possède trois bandes, chacune d’elles ayant des valeurs allant de 0 à 255 représentant une densité de couleur. La bande 1 pour le rouge, la bande 2
pour le vert et la bande 3 pour le bleu.
Bande 1 : colorisée en rouge
Bande 2 : colorisée en vert
Bande 3 : colorisée en bleu
Mélange des trois bandes
Type des pixels
Chaque pixel est codé sur un ou plusieurs bits. Ainsi, les données stockées au sein des rasters sont toujours de type numérique et permettent le stockage d’un nombre entier ou à virgule, signé (+ ou −) ou non signé.
L’étendue et la précision de la plage de nombres pouvant être stockés sont déterminées par le type du pixel. Les types de pixels (ou codages) suivants existent :
Type | Dénomination anglaise | Détail |
---|---|---|
1BB | 1-bit boolean | Valeur booléenne : 0 (faux) ou 1 (vrai) |
2BUI | 2-bit unsigned integer | Entier sans signe (+ ou −) sur 2 bits : de 0 à 3 |
4BUI | 4-bit unsigned integer | Entier sans signe (+ ou −) sur 4 bits : de 0 à 15 |
8BSI | 8-bit signed integer | Entier avec signe (+ ou −) sur 8 bits : de -128 à 127 |
8BUI | 8-bit unsigned integer | Entier sans signe (+ ou −) sur 8 bits : de 0 à 255 |
16BSI | 16-bit signed integer | Entier avec signe (+ ou −) sur 16 bits : de -32 768 à 32 767 |
16BUI | 16-bit unsigned integer | Entier sans signe (+ ou −) sur 16 bits : de 0 à 65 535 |
32BSI | 32-bit signed integer | Entier avec signe (+ ou −) sur 32 bits : de -2 147 483 648 à 2 147 483 647 |
32BUI | 32-bit unsigned integer | Entier sans signe (+ ou −) sur 32 bits : de 0 à 4 294 967 295 |
32BF | 32-bit float | Nombre décimal sur 32 bits (simple précision) |
64BF | 64-bit float | Nombre décimal sur 64 bits (double précision) |
Nature des données
Les rasters peuvent contenir des données de deux natures différentes : des données dites discrètes ou des données dites continues.
Les données discrètes sont des données facilement délimitables. On utilise en général les formats vecteur pour cette sorte de données, mais il est possible de trouver des rasters qui en contiennent. Elles sont alors faciles à délimiter lors du passage d’un pixel à un autre. Par exemple, une carte de définition de l’espace (chaque type de terrain possède des limites connues et définissables) ou une représentation de la présence de végétaux (les pixels possèdent alors les valeurs 0 ou 1 selon la présence ou l’absence d’individu).
Les données continues sont quant à elles graduelles, sans limites précises. C’est le cas d’une photo aérienne (où chaque pixel représente une portion du spectre visible) ou d’un modèle numérique de terrain (chaque pixel contient une altitude).
Tuilage et pyramide
Il existe de nombreux formats de données raster.
Ces formats dépendent pour beaucoup de l’origine de la donnée. En effet, un grand nombre ont été développés par des sociétés proposant des services d’imagerie. Chacun d’eux permet l’utilisation d’un certain nombre de types de pixels et intègre différentes méthodes de compression réduisant plus ou moins considérablement le poids des fichiers.
Un raster pèse souvent plus lourd qu’un vecteur. La raison en est que chaque point de l’espace doit être défini (en coordonnées et en données). Chaque nouvelle bande ajoutée à un raster augmente également le poids de celui-ci (chaque bande ayant un poids similaire). Il n’est donc pas rare de travailler avec des fichiers pouvant peser plusieurs centaines de mégaoctets voire plusieurs gigaoctets.
L’inconvénient de ceci est que lorsqu’il s’agit d’utiliser ces données, les temps de traitement deviennent plus importants avec l’augmentation du poids de la donnée. En effet, l’affichage des rasters n’est pas aussi simple qu’il n’y paraît. Lorsque le niveau de zoom correspond à 100 % de la taille de l’image, le logiciel doit extraire l’emprise visible du fichier et l’afficher à l’utilisateur. Cette opération nécessite déjà certains calculs gourmands en ressources, surtout si le fichier est très lourd. Lorsque le niveau de zoom est différent, le logiciel doit en plus appliquer des opérations d’upscaling (conversion ascendante) ou de downscaling (conversion descendante) qui consistent à modifier la résolution de l’image extraite pour correspondre à celle affichée grâce à diverses fonctions d’interpolation.
Pour limiter cette consommation de ressources, de nouveaux formats contenant des versions précalculées de ces données interpolées sont apparus. On parle alors de :
- tuilage : découpage d’un raster selon une grille définie (souvent 256 pixels par 256 pixels mais la taille peut varier) afin d’obtenir un ensemble d’images de petites tailles plus faciles à manipuler. Les logiciels de SIG n’ont plus qu’à charger les images correspondantes à l’emprise visualisée au lieu de devoir extraire une portion du fichier original ;
- génération de miniature ou génération de pyramide : précalcul du raster à un niveau de zoom différent de 100 %. Il s’agit de downscaling : diminution de la résolution, correspondant à des niveaux de zoom plus petits (par exemple à 50 %, 25 %, etc.). La structure des données est dite pyramidale avec à la base un raster à la résolution 1/1 puis une résolution plus faible en remontant (avec en général un facteur au carré : 1/2, 1/4, 1/8, 1/16, etc.). Les logiciels SIG utilisent alors le raster original ou une des miniatures en fonction du niveau de zoom utilisé dans les traitements.
Il est courant d’utiliser les deux techniques en même temps, notamment dans les différents formats d’échange web : un raster est créé pour chaque niveau de zoom avec une résolution spécifique (plus le zoom est éloigné, plus le raster couvre une grande surface et plus la résolution est faible) il s’agit des miniatures. Puis ces différentes miniatures sont tuilées : découpées selon un carroyage prédéfini pour pouvoir rapidement accéder au secteur visualisé.
Pour en savoir plus sur le tuilage, vous pouvez consulter cet article :
Certains formats de fichier raster, comme le GeoTIFF, intègrent le tuilage et les miniatures. C’est-à-dire qu’au sein d’un seul fichier coexistent le raster principal et les différentes miniatures.
Lorsque l’on parle d’UN raster (un seul objet), très souvent il s’agit en fait d’un ensemble de fichiers contenant le même type de données mais chacun ayant sa propre étendue et regroupés au sein d’une seule couche dans un SIG. C’est le cas par exemple des fichiers de données de l’IGN qui utilisent diverses carroyages de plusieurs kilomètres de côté évitant ainsi d’avoir à travailler sur un seul fichier contenant la totalité du territoire français. Il s’agit bien d’un tuilage tel que décrit plus haut même si les tuiles possèdent des tailles importantes (de plusieurs centaines voire milliers de pixels de côté) et peuvent donc être retuilés pour diminuer encore les temps d’accès aux données.
Format de données
Voici quelques formats couramment rencontrés :
- ASCII grid (.asc)
Format de données développé par Esri dans lequel les données sont stockées dans un fichier texte sous la forme de valeurs numériques séparées par des espaces ; il y a donc autant de valeurs que de pixels par ligne et autant de lignes que de pixels par colonne. De nombreux modèles numériques de terrain sont stockés dans ce format. - Enhanced Compressed Wavelets (.ecw)
Format de données images compressées avec perte. Il est également possible d’utiliser la compression JPEG2000 avec ce format. Il s’agit d’un format très performant pour les données images mais propriétaire et donc pas facilement utilisable en écriture. - GeoPackage raster (.gpkg)
Le format GeoPackage est basé sur un fichier de base de données SQLite 3 spécifiquement modifié pour contenir des données spatiales (vecteur et/ou raster). Les données raster peuvent être stockées dans divers formats (JPEG, PNG, etc.) avec ou sans compression, avec ou sans tuilage et avec ou sans miniatures. - GeoTIFF File Format (.gtiff ou .tiff)
Le TIFF est un format conteneur (un peu comme le ZIP) embarquant des données images ainsi que tout un tas d’autres informations. Il permet l’utilisation de nombreux types de pixels ainsi que diverses méthodes de compression (dont JPEG et LZW). Il est possible d’y stocker une image tuilée accompagnée de ses miniatures.
Le GeoTIFF repose sur le TIFF et y ajoute des métadonnées de géolocalisation. - JPEG2000 (.jpg ou .jpg2)
Il s’agit ici d’un format d’image mais qui permet d’inclure des métadonnées diverses et donc des métadonnées de géolocalisation. Ce format est trompeur car il est à la fois une norme de compression d’image utilisée par différents formats de fichier raster (qui sont des conteneurs) et à la fois un format à part entière. - MBTiles (.MBTiles)
Il s’agit d’une spécification pour stocker des données tuilées au sein d’une base de données SQLite. Les données peuvent être de type vecteur ou raster mais doivent être finalisées ; son objet n’est pas de stocker de la donnée brute mais de la donnée prête à être affichée.
Il est possible d’ajouter les formats suivants qui ne sont pas des formats de fichiers à
proprement parler mais des protocoles de communication web :
- WMS (Web Map Service)
Défini par l’OGC, ce protocole permet, à partir d’une emprise, de récupérer une image extraite du raster. - WMTS (Web Map Tile Service)
Défini par l’OGC, ce protocole permet, à partir d’une emprise, de récupérer une série de tuiles (portion de raster, voir plus bas) extraites du raster. Les tuiles sont indexées au moyen de valeurs numériques. L’axe des Y allant de 0 au sud à n au nord. - TMS (Tile Map Service)
Défini par l’OSGeo, ce protocole permet, à partir d’une emprise, de récupérer une série de tuiles (portion de raster, voir plus bas) extraites du raster. Les tuiles sont indexées au moyen de valeurs numériques. L’axe des Y allant de 0 au nord à n au sud (inversé par rapport au WMTS). - XYZ
Sans définition, le mécanisme reprend un peu celui des WMTS et des TMS mais sans métadonnées fournies par le serveur. À la base créé par Google pour son utilisation propre, il s’agit d’un protocole beaucoup utilisé mais sans certitude sur le résultat.
Le WMS et le WMTS sont en général les protocoles les plus sûrs à utiliser car ils possèdent une solide définition. Ils permettent en outre l’accès à diverses métadonnées grâce aux requêtes suivantes :
- GetCapabilities qui renvoie un descriptif des différents services (données) accessibles
ainsi que les paramètres utilisables ; - GetMap qui retourne une image ;
- GetFeatureInfo qui renvoie des données sur un objet spécifique affiché.
On parle ici de protocole d’échange car les données (images pour le WMS et tuiles pour les autres protocoles) sont des fichiers stockés dans des formats images classiques (JPEG ou PNG) sans géoréférencement. Seul le nom du fichier permet au logiciel SIG en accord avec les métadonnées renvoyées par le serveur de placer correctement la tuile.
Notez que le seuil de zoom est un terme qui correspond normalement à l’échelle d’affichage utilisée dans les outils de cartographie web (par exemple, pour OpenStreetMap, le seuil de zoom 12 correspond à peu près à une échelle de 1:150 000). Mais il est également utilisé de façon abusive pour parler du niveau de résolution d’un raster (du niveau de génération des miniatures) dans les formats d’échange web.
Pour en savoir plus sur les niveaux de zoom vous pouvez consulter cet article :
Pour en savoir plus
Vous pouvez approfondir le sujet en consultant les ressources suivantes :
- Un cours sur les rasters par ESRI.
Mon livre qui vous montrera comment traiter les rasters avec PostGIS :
PostGIS – Tous les ingrédients pour concocter un SIG sur de bonnes bases
Stockez, manipulez et faites parler vos données géolocalisées, vecteur ou raster, avec PostGIS.
Ce livre vise à fournir au lecteur tous les éléments nécessaires pour mettre en place un système d’information géographique (SIG) fondé sur l’utilisation conjointe de PostgreSQL et de PostGIS.
Cet article vous a plu ?
N'hésitez pas à le partager, il interessera surement certains de vos contacts.
Les thèmes suivants contiennent des articles en lien avec celui-ci, allez faire un tour :
SIG bandegeotiffmatricepixelpyramidetuile