Exemple n ° 2: desservant un grand nombre de fichiers de DTM ASCII Grid

Dans cet exemple, il y a un groupe d’images DTM en format ASCII Grid. Le but de cette section est de décrire comment les commandes GDAL peuvent être utilisés pour fusionner les fichiers d’entrée fournis. Ces données sont tirées de « portail de données ouvertes Regione Calabria <http: pr5sit.regione.calabria.it/web/pr5sit/sezione-opendata1;jsessionid=”D37F21C541E793075AF90E3B0A3AAFBD”>’ _ à la “ASCII - GRID’ section.</http:>

Note

Les données ont la même résolution de pixels et le même système de référence de coordonner * EPSG:3003 *.

Avertissement

Cet exemple requiert GDAL avec Python bindings.

  1. Naviguez vers le répertoire de l’atelier : file:’${TRAINING_ROOT}/data/user_data/gdal_processing_data’ (sous Windows : file:’%TRAINING_ROOT%\data\user_data\gdal_processing_data’) et le * DTM_data * répertoire.

  2. Naviguer à l’intérieur de la * DTM_data * répertoire avec le SDKshell.

Note

Les opérations suivantes doivent être exécutées de la coquille à l’intérieur du répertoire sélectionné. Dans Windows, si elle n’est pas déjà lancé, executer setenv.bat.

  1. Appelant le ** gdalinfo ** commande sur une image pour récupérer les informations associées:

    gdalinfo 521150.asc
    

    Cela se traduira par une description GML des granules, comme suit :

    Driver: AAIGrid/Arc/Info ASCII Grid
    Files: 521150.asc
    Size is 193, 154
    Coordinate System is `'
    Origin = (2590740.000000000000000,4433860.000000000000000)
    Pixel Size = (40.000000000000000,-40.000000000000000)
    Metadata:
      AREA_OR_POINT=Point
    Corner Coordinates:
    Upper Left  ( 2590740.000, 4433860.000)
    Lower Left  ( 2590740.000, 4427700.000)
    Upper Right ( 2598460.000, 4433860.000)
    Lower Right ( 2598460.000, 4427700.000)
    Center      ( 2594600.000, 4430780.000)
    Band 1 Block=193x1 Type=Float32, ColorInterp=Undefined
      NoData Value=-9999
    

    De ** gdalinfo ** il est possible de noter :

    • Aucune définition de CRS. Impossible d’afficher une image sans CRS sur GeoServer.

    • Carreaux rayé (193 x 1).

    • Pas de compression

  2. Liste de toutes les images dans une liste de texte unique avec la commande suivante:

    ls *.asc > list.txt (Linux)
    
    or
    
    dir /b *.asc > list.txt (Windows)
    
  3. Fusion de tous les fichiers d’entrée avec la commande gdal_merge.py:

    gdal_merge.py -o merged.tif -co "TILED=YES" -co "BLOCKXSIZE=512" -co "BLOCKYSIZE=512" -co "COMPRESS=DEFLATE" -co "ZLEVEL=9" -co "BIGTIFF=YES" -init -9999 -a_nodata -9999 -n -9999 -ot Float32 --optfile list.txt
    

    Note

    Cette commande doit être exécutée avec python pour éviter les erreurs d’importation.

    Paramètres utilisés :

    • ** - o merged.tif** : définition du nom du fichier de sortie.

    • ** - co “sol CARRELÉ = YES” -co » BLOCKXSIZE = 512” -co » BLOCKYSIZE = 512” **: définition des dimensions de la mosaïque.

    • ** - co “compresser = de DEFLATE” -co « ZLEVEL = 9” -co » BIGTIFF = YES” **: définition du mode compression.

      Note

      ** - co » BIGTIFF = YES “** est utilisé parce que GDAL n’est pas automatiquement capable de convertir l’image GeoTiff dans un BigTiff si la compression est définie.

    • ** - init-9999 **: initialisation de l’image en pixels sur NO DATA.

    • ** - a_nodata-9999 **: définition de la valeur de sortie pour aucune donnée.

    • ** - n-9999 **: définition de la valeur des pixels d’entrée à ignorer lors de la fusion.

    • ** - ot Float32 **: définition de l’image type de sortie.

    • –optfile list.txt : définition de la liste de fichier d’entrée.

    Le ** gdalinfo ** sortie sur l’image fusionnée est:

    Driver: GTiff/GeoTIFF
    Files: merged.tif
    Size is 3613, 6284
    Coordinate System is `'
    Origin = (2570700.000000000000000,4445900.000000000000000)
    Pixel Size = (40.000000000000000,-40.000000000000000)
    Image Structure Metadata:
      COMPRESSION=DEFLATE
      INTERLEAVE=BAND
    Corner Coordinates:
    Upper Left  ( 2570700.000, 4445900.000)
    Lower Left  ( 2570700.000, 4194540.000)
    Upper Right ( 2715220.000, 4445900.000)
    Lower Right ( 2715220.000, 4194540.000)
    Center      ( 2642960.000, 4320220.000)
    Band 1 Block=512x512 Type=Float32, ColorInterp=Gray
      NoData Value=-9999
    

    L’image fusionnée a une bonne tiling(512x512) et la compression, mais les CRS n’est toujours pas défini.

  4. Réglage de l’image CRS avec ** gdal_translate **:

    gdal_translate -a_srs "EPSG:3003" -co "TILED=YES" -co "BLOCKXSIZE=512" -co "BLOCKYSIZE=512" -co "COMPRESS=DEFLATE" -co "ZLEVEL=9" -co "BIGTIFF=YES" merged.tif merged_CRS.tif
    

    Les différents paramètres d’entrée sont maintenues car par défaut GDAL ne pas compresser l’image d’entrée et définissez un mauvais pavage.

    De ** gdalinfo **:

    Driver: GTiff/GeoTIFF
    Files: merged_CRS.tif
    Size is 3613, 6284
    Coordinate System is:
    PROJCS["Monte Mario / Italy zone 1",
            GEOGCS["Monte Mario",
                    DATUM["Monte_Mario",
                            SPHEROID["International 1924",6378388,297.0000000000014,
                                    AUTHORITY["EPSG","7022"]],
                            TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68],
                            AUTHORITY["EPSG","6265"]],
                    PRIMEM["Greenwich",0],
                    UNIT["degree",0.0174532925199433],
                    AUTHORITY["EPSG","4265"]],
            PROJECTION["Transverse_Mercator"],
            PARAMETER["latitude_of_origin",0],
            PARAMETER["central_meridian",9],
            PARAMETER["scale_factor",0.9996],
            PARAMETER["false_easting",1500000],
            PARAMETER["false_northing",0],
            UNIT["metre",1,
                    AUTHORITY["EPSG","9001"]],
            AUTHORITY["EPSG","3003"]]
    Origin = (2570700.000000000000000,4445900.000000000000000)
    Pixel Size = (40.000000000000000,-40.000000000000000)
    Metadata:
      AREA_OR_POINT=Area
    Image Structure Metadata:
      COMPRESSION=DEFLATE
      INTERLEAVE=BAND
    Corner Coordinates:
    Upper Left  ( 2570700.000, 4445900.000) ( 21d25'57.43"E, 39d29'28.80"N)
    Lower Left  ( 2570700.000, 4194540.000) ( 21d 3'12.94"E, 37d16'39.68"N)
    Upper Right ( 2715220.000, 4445900.000) ( 23d 3'58.08"E, 39d18' 6.80"N)
    Lower Right ( 2715220.000, 4194540.000) ( 22d38'27.42"E, 37d 6' 9.29"N)
    Center      ( 2642960.000, 4320220.000) ( 22d 2'40.73"E, 38d17'47.75"N)
    Band 1 Block=512x512 Type=Float32, ColorInterp=Gray
      NoData Value=-9999
    

    Cette image peut être affichée sur GeoServer, mais une nouvelle étape d’optimisation pourrait apporter de meilleures performances.

  5. (** En option **) Création de la ** aperçus ** associé à l’image fusionnée pour avoir le meilleur débit:

    gdaladdo -r nearest --config COMPRESS_OVERVIEW DEFLATE --config GDAL_TIFF_OVR_BLOCKSIZE 512 merged_CRS.tif 2 4 8 16
    

    Vues d’ensemble sont vues réduites de l’image d’entrée utilisée par GeoServer permettant d’afficher l’image à une résolution inférieure.

    Paramètres utilisés :

    • ** - r plus proche **: définition de la méthode d’interpolation.

    • **–config COMPRESS_OVERVIEW DEFLATE **: définition de la compression sur les aperçus.

    • **–config GDAL_TIFF_OVR_BLOCKSIZE 512 **: définition des dimensions de la mosaïque sur les aperçus.

    Et ** gdalinfo **:

    Driver: GTiff/GeoTIFF
    Files: merged_CRS.tif
    Size is 3613, 6284
    Coordinate System is:
    PROJCS["Monte Mario / Italy zone 1",
            GEOGCS["Monte Mario",
                    DATUM["Monte_Mario",
                            SPHEROID["International 1924",6378388,297.0000000000014,
                                    AUTHORITY["EPSG","7022"]],
                            TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68],
                            AUTHORITY["EPSG","6265"]],
                    PRIMEM["Greenwich",0],
                    UNIT["degree",0.0174532925199433],
                    AUTHORITY["EPSG","4265"]],
            PROJECTION["Transverse_Mercator"],
            PARAMETER["latitude_of_origin",0],
            PARAMETER["central_meridian",9],
            PARAMETER["scale_factor",0.9996],
            PARAMETER["false_easting",1500000],
            PARAMETER["false_northing",0],
            UNIT["metre",1,
                    AUTHORITY["EPSG","9001"]],
            AUTHORITY["EPSG","3003"]]
    Origin = (2570700.000000000000000,4445900.000000000000000)
    Pixel Size = (40.000000000000000,-40.000000000000000)
    Metadata:
      AREA_OR_POINT=Area
    Image Structure Metadata:
      COMPRESSION=DEFLATE
      INTERLEAVE=BAND
    Corner Coordinates:
    Upper Left  ( 2570700.000, 4445900.000) ( 21d25'57.43"E, 39d29'28.80"N)
    Lower Left  ( 2570700.000, 4194540.000) ( 21d 3'12.94"E, 37d16'39.68"N)
    Upper Right ( 2715220.000, 4445900.000) ( 23d 3'58.08"E, 39d18' 6.80"N)
    Lower Right ( 2715220.000, 4194540.000) ( 22d38'27.42"E, 37d 6' 9.29"N)
    Center      ( 2642960.000, 4320220.000) ( 22d 2'40.73"E, 38d17'47.75"N)
    Band 1 Block=512x512 Type=Float32, ColorInterp=Gray
      NoData Value=-9999
      Overviews: 1807x3142, 904x1571, 452x786, 226x393
    

    Puis le résultat peut être affiché dans GeoServer en configurant l’image comme un GeoTiff (voir : Réf:’ ajouter un GeoTiff <geoserver.add_geotiff>’ section).</geoserver.add_geotiff>

  6. Affichage du résultat sur GeoServer :

    ../../../_images/ascii_merged.png