Tutoriel: Introduction à GDAL
Site: | OpenCourseWare for GIS |
Cours: | Programmation pour les applications hydrologiques géospatiales |
Livre: | Tutoriel: Introduction à GDAL |
Imprimé par: | Guest user |
Date: | lundi 30 décembre 2024, 19:33 |
1. Introduction
Qu'est-ce que GDAL ?
GDAL est une bibliothèque de traduction pour les
formats de données géospatiales raster qui est publiée sous une licence X/MIT
style Open Source par Open Source Geospatial Foundation. En tant que
bibliothèque, il présente un modèle de données abstrait unique à l'application en
relation avec tous les formats pris en charge. Il est également livré avec une
variété d'utilitaires de ligne de commande utiles pour la traduction et le
traitement des données. Voir pour plus d'informations: http://www.gdal.org
Objectifs d'apprentissage
Après ce cours, vous pourrez:
- Récupérer des informations à partir de données SIG
- Reprojeter les données SIG
- Modifier les propriétés du raster
- Convertir les formats raster
- Convertir les formats vectoriels
- Appliquer des requêtes spatiales sur des vecteurs
- Convertir les fichiers de valeurs séparées par des virgules
- Effectuer une conversion par lot
Logiciel
Pour ces exercices, GDAL doit être installé, de préférence en utilisant le package de distribution OSGEO4W. Si vous avez installé QGIS, la distribution OSGEO4W est déjà là.
Sinon vérifiez:
Le site Web de GDAL: http://www.gdal.org
Le site Web OSGEO4W: http://trac.osgeo.org/osgeo4w/
Données d'exercise
Les données d'exercice peuvent être téléchargées depuis la page principale. Il contient:
roads.shp
: feuille de route d'OpenStreetMap ( http://openstreetmap.org
)
srtm_37_02.tif
: tile d'un modèle numérique d'élévation (DEM) de la Shuttle Radar Topography
Mission (SRTM) (http://www2.jpl.nasa.gov/srtm/)
gem_2011_gn1.shp
: limites des communes néerlandaises, disponible
gratuitement auprès de CBS (Statistics Netherlands) et Kadaster
(http://www.cbs.nl).
Locations.csv
: table avec les emplacements des objets.
landuse.zip
: contient des séries chronologiques d'utilisation des
terres au format IDRISI.
2. Récupération d’informations à partir de données SIG
Dans ce chapitre, vous apprendrez à:
- Récupérer des informations à partir de données raster
- Récupérer des informations à partir de données vectorielles
gdalinfo
et ogrinfo
.2.1. Récupérer des informations à partir de données raster
L'une des commandes les plus simples et les plus utiles de GDAL est gdalinfo. Lorsqu'on lui donne une image comme argument, il récupère et imprime toutes les informations pertinentes connues sur le fichier. Ceci est particulièrement utile si l'image contient des données de balises supplémentaires, comme c'est le cas avec les fichiers TIF. Lorsque vous travaillez avec des images satellite, c'est un moyen extrêmement utile de garder une trace de l'emplacement des images en coordonnées long / lat ainsi que la projection d'image.
1. Ouvrez l'invite où vous avez configuré GDAL. Si vous avez installé QGIS, vous pouvez utiliser OSGeo4W Shell.2. Avec l'invite de commande, accédez au répertoire dans
lequel vous avez enregistré les données d'exercice, par ex. Z:\gdal_exercises
gdalinfo srtm_37_02.tif <ENTER>
- Quelle est la taille de l'image?
- Quel est le système de coordonnées?
- Quel est le code EPSG?
- Quelles sont les valeurs minimales et maximales?
2.2. Récupérer des informations à partir de données vectorielles
Pour récupérer des informations à partir de données vectorielles, nous utilisons la commande ogrinfo.
1. Exécutez la commande suivante:ogrinfo
-al roads.shp | more <ENTER>
ogrinfo
-al gem_2011_gn1.shp | more <ENTER>
2. Répondez à ces questions:
- Quelles sont les projections de ces deux fichiers shapefile?
- Quels sont les codes EPSG?
roads.shp
est EPSG: 4326, ce qui signifie qu'elle est en système
de coordonnées géographiques (GCS) avec des coordonnées en latitude /
longitude.gem_2011_gn1.shp
, la projection est EPSG: 28992, qui est la projection
néerlandaise (Amersfoort RD / New).Plus d'informations sur la commande ogrinfo peuvent être trouvées ici:
Plus d'informations sur les codes EPSG dans cette vidéo:
3. Reprojeter des données SIG
Dans ce chapitre, vous apprendrez à:
- Reprojeter les données raster
- Reprojeter les données vectorielles
3.1. Reprojeter des données raster
GDAL a la capacité de modifier un système de coordonnées raster en utilisant la syntaxe suivante:
gdalwarp
-t_srs EPSG:... <input> <output>
L'argument -t_srs
spécifie le système de coordonnées cible. Si le
système de coordonnées source est inconnu, il doit être spécifié avec
l'argument -s_srs
. EPSG:...
spécifie le code EPSG de la projection. <input>
et <output>
sont respectivement les données d'entrée et de sortie.
Nous allons maintenant reprojeter un modèle numérique d'élévation (DEM) acquis par la Shuttle Radar Topography Mission (SRTM). Vous pouvez utiliser ce site Web pour télécharger des DEM pour votre domaine d'intérêt: http://srtm.csi.cgiar.org/index.asp
Afin de reprojeter le DEM de WGS-84 lat / lon à Amersfoort / RD New, nous utilisons cette commande:
gdalwarp -t_srs EPSG:XXXXX srtm_37_02.tif dem_rd.tif
XXXXX
par le code EPSG approprié pour Amersfoort / RD New
(voir l'une de vos réponses précédentes en utilisant ogrinfo).2. Exécutez la commande:
gdalwarp -t_srs EPSG:28992 srtm_37_02.tif dem_rd.tif <ENTER>
3. Visualisez le résultat dans QGIS.
Plus d'informations sur la commande gdalwarppeuvent être trouvées ici.
3.2. Reprojeter des données vectorielles
Pour les données vectorielles, la commande ogr2ogr est utilisée. La syntaxe est:
ogr2ogr
-t_srs EPSG:XXXXX <output> <input>
Notez que <output>
et <input>
sont dans un ordre différent de celui de gdalwarp!
Ici, nous allons convertir les données de route OpenStreetMaps en projection Amersfoort/RD New.
1. Exécutez:ogr2ogr
-t_srs EPSG:28992 roadsreprojected.shp roads.shp
La commande est exécutée (cela prend un certain temps), mais donne un avertissement.
2. Que signifie l'avertissement?
Pour plus d'informations sur la commande ogr2ogr clickez ici.
4. Convertir des formats SIG
Dans ce chapitre, vous apprendrez à
- Effectuer des conversions entre différents formats raster
- Effectuer des conversions entre différents formats de vecteurs
4.1. Convertir des formats raster
La fonction principale de gdal_translate st d´effectuer des conversions entre différents formats d'image. La syntaxe de base est:
gdal_translate -of FORMAT inputFile outputFile
Nous allons maintenant convertir le DEM du format
geoTiff au format SAGA. SAGA est un SIG qui a son propre format binaire
-soutenu par gdal- avec l'extension .sdat.
1. Exécutez la commande suivante:gdal_translate -of SAGA dem_rd.tif dem_rd.sdat
Certains formats nécessitent plus d'arguments. PCRaster par exemples a besoin d'une spécification du type de données (booléen, nominal, scalaire, etc.). Convertissons les mêmes données au format PCRaster.
2. Exécutez la commande suivante:gdal_translate -of PCRaster -ot Float32 -mo "VS_SCALAR" dem_rd.tif dem_rd.map
Pour convertir au format PCRaster, vous devez
connaître le type de données du raster. Dans l'exemple ci-dessus, le DEM est en
données continues, le type de données est donc scalaire. Si la couche était
discrète (classes), le type de données serait nominal.
Data Type |
-of | -mo |
---|---|---|
Boolean | Byte | "VS_BOOLEAN" |
Nominal | Int32 | "VS_NOMINAL" |
Ordinal | Int32 | "VS_ORDINAL" |
Scalar | Float32 or Float64 |
"VS_SCALAR" |
Direction | Float32 or Float64 |
"VS_DIRECTION" |
LDD | Int32 | "VS_LDD" |
4.2. Convertir des formats vecteur
ogr2ogr -f <"Format"> <output> <input>
gem_2011_gn1.shp
en un fichier Google KML file qui peut être ouvert dans Google Earth.ogr2ogr -f "KML" gem.kml gem_2011_gn1.shp
-t_srs
. Il y a beaucoup
d'autres choses que vous pouvez faire, mais que nous n´allons pas pouvoir couvrir
tutoriel de base.4.3. Requêtes spatiales de données vectorielles
Pour notre carte de Delft, nous voulons faire l'analyse SIG suivante:
- Sélectionnez la commune de Delft sur la carte des communes et l´enregistrez dans un nouveau fichier de formes;
- Intersectez les limites de la commune de Delft avec la carte routière des Pays-Bas.
ogr2ogr
-f "ESRI Shapefile" -where GM_NAAM='Delft'
-a_srs EPSG:28992 delft.shp gem_2011_gn1.shp
GM_NAAM
Delft dans un nouveau fichier appelé delft.shp
. L'argument -a_srs EPSG:28992
est utilisé pour affecter la projection Amersfoort / RD New au fichier de
sortie. L'argument -f
définit le format de sortie.dem_rd.tif
), la carte de route reprojetée (roadsreprojected.shp
) et la commune de Delft (delft.shp
).4.4. Convertir des valeurs séparées par des virgules (CSV)
Parfois, vous souhaitez reprojeter des coordonnées
dans un fichier ASCII, par ex. qui a été enregistré sous forme de texte dans un
tableur. Ici, nous allons convertir les coordonnées dans un fichier ASCII
séparé par des virgules locations.csv
en un nouveau fichier ASCII locations_reprojected.csv
.
Il est recommandé d'afficher d'abord le contenu d'un fichier CSV et de vérifier (1) les coordonnées et (2) le séparateur de colonnes. Le séparateur n'est pas toujours une virgule et dépend parfois des paramètres de langue utilisés lors de l'exportation à partir d'un tableur.
1. Affichez le contenu de locations.csv
. Vous pouvez utiliser la commande type à partir de l'invite de commande comme vous l'avez
appris dans le tutoriel du Ligne de Commande.
<OGRVRTDataSource>
<OGRVRTLayer name="locations">
<SrcDataSource>locations.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<LayerSRS>EPSG:4326</LayerSRS>
<GeometryField encoding="PointFromColumns" x="lon" y="lat"/>
</OGRVRTLayer>
</OGRVRTDataSource>
locations.vrt
dans le dossier gdal_exercises
.
Quelques explications sur le fichier XML:
<OGRVRTLayer name="locations">
doit correspondre à<SrcDataSource>locations.csv</SrcDataSource>
<LayerSRS>EPSG:4326</LayerSRS>
doit correspondre au code EPSG des colonnes de coordonnées
-
<GeometryField encoding="PointFromColumns" x="lon" y="lat"/>
indique les colonnes avec les coordonnées que
vous souhaitez convertir.
ogr2ogr
-t_srs EPSG:28992 -f "CSV" locations_reprojected.csv locations.vrt -lco
GEOMETRY=AS_XY
locations.csv
avec des coordonnées WGS-84 est converti en locations_projected.csv
avec projection Amersfoort/RD New .locations_reprojected.csv
. Qu'est-ce qui est enregistré dans chaque colonne?ogr2ogr
-f "ESRI Shapefile" -t_srs
EPSG:28992 locations.shp locations.vrt
5. Conversion de lot (batch)
Les programmes SIG sur les ordinateurs de bureau sont très utiles pour les opérations SIG, mais sont difficiles à utiliser si nous devons répéter la même tâche pour de nombreuses couches SIG. Ainsi, les scripts peuvent être une solution.
Nous avons ici par exemple des données d'un modèle d'utilisation des terres de Dublin. Les données sont au format raster IDRISI.rst
),avec une couche pour chaque année entre 1990 et 2030.
Notre tâche est de convertir toutes les couches au format GeoTiff (.tif
).landuse.zip
fourni avec les données de cours dans un nouveau
dossier et vérifiez le contenu.gdal_translate -of GTiff 01_State19900101.rst 01_State19900101.tif
for %%f in (*.rst) do (
echo %%~nf
gdal_translate -of GTiff %%f %%~nf.tif
)
rst2tif.bat
dans le dossier contenant les rasters d'utilisation du
sol (n'oubliez pas de changer l'extension si vous utilisez Bloc notes, erreur classique!).*.rst
du dossier. %%f
est la variable qui contient le nom de fichier de
chaque fichier. Avec echo
nous pouvons imprimer quelque chose à l'écran. Ici,
nous imprimons %%~nf
, qui est la partie du nom de fichier avant le point qui
le sépare de l'extension. Ensuite, nous utilisons la commande gdal_translate
avec le format de sortie t GeoTiff. À la fin de la ligne, nous ajoutons l'extension .tif
au nom de fichier.rst2tif <ENTER>
6. Conclusion
Dans cette leçon, vous avez appris à:
- Récupérer des informations à partir de données SIG
- Reprojeter des données SIG
- Changer les propriétés d’un raster
- Convertir des formats de raster
- Convertir des formats vectoriels
- Appliquer des requêtes spatiales à des vecteurs
- Convertir des fichiers de valeurs séparées par des virgules
- Effectuer une conversion par lots