J'ai du mal à générer des tuiles pour une image haute résolution que nous avons. L'image actuelle que nous avons est une très grande image (+ 20 Go), enregistrée en tant que fichier GeoTiff.
Je voudrais générer les tuiles à l'aide de l'utilitaire de ligne de commande gdal2tiles, puis l'ouvrir et l'afficher dans Césium, en utilisant le fournisseur d'images TMS pour fournir les tuiles. En utilisant gdalinfo, voici quelques détails de l'image:
Driver: GTiff/GeoTIFF
Files: image.tif
Size is 52250, 56119
Coordinate System is:
PROJCS["WGS 84 / UTM zone 35S",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",27],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",10000000],
UNIT["meters",1],
AUTHORITY["EPSG","32735"]]
Origin = (606276.000000000000000,7197873.000000000000000)
Pixel Size = (0.500000000000000,-0.500000000000000)
Metadata:
AREA_OR_POINT=Area
TIFFTAG_MAXSAMPLEVALUE=13165
TIFFTAG_MINSAMPLEVALUE=1
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
TIFFTAG_SOFTWARE=ERDAS IMAGINE
TIFFTAG_XRESOLUTION=1
TIFFTAG_YRESOLUTION=1
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 606276.000, 7197873.000) ( 28d 3'21.59"E, 25d19'55.12"S)
Lower Left ( 606276.000, 7169813.500) ( 28d 3'29.55"E, 25d35' 7.17"S)
Upper Right ( 632401.000, 7197873.000) ( 28d18'55.92"E, 25d19'47.60"S)
Lower Right ( 632401.000, 7169813.500) ( 28d19' 5.85"E, 25d34'59.57"S)
Center ( 619338.500, 7183843.250) ( 28d11'13.23"E, 25d27'27.58"S)
Band 1 Block=512x512 Type=UInt16, ColorInterp=Gray
Band 2 Block=512x512 Type=UInt16, ColorInterp=Undefined
Band 3 Block=512x512 Type=UInt16, ColorInterp=Undefined
Band 4 Block=512x512 Type=UInt16, ColorInterp=Undefined
Ma première tentative a été d'utiliser gdal_translate pour géoréférencer l'image, puis d'utiliser gdalwarp pour changer la projection en EPSG: 3857, comme requis par Césium (voir la référence API)
gdal_translate -of VRT -a_srs EPSG:4326 -gcp 606275 7197875 28.055987 -25.331974 -gcp 606275 7169814 28.058200 -25.585326 -gcp 632400.5 7197875 28.31553 -25.329876 -gcp 632400.5 7169814 28.318286 -25.583209 image.tif newImage1.vrt
gdalwarp -of VRT -t_srs EPSG:3857 newImage1.vrt newImage2.vrt
Cependant, je reçois un grand nombre des erreurs suivantes:
ERREUR 1: la latitude ou la longitude a dépassé les limites
Une autre méthode que j'ai essayée était d'utiliser directement gdal2tiles et de générer les tuiles:
gdal2tiles.py image.tif
Cela a créé un dossier avec un sous-dossier (étiqueté 18) étant le seul niveau de zoom auquel les tuiles ont été créées. Cependant, les images que je reçois ici sont complètement "fausses" et "floues".
Un exemple d'une des tuiles:
Des suggestions pour générer des tuiles pour cette image grande image d'une zone spécifique en utilisant gdal2tiles afin que je puisse la charger et la visualiser dans Césium?
Mise à jour
Donc, après avoir essayé la suggestion de @ iant, j'ai utilisé les commandes suivantes:
gdalwarp -co TILED=YES -co COMPRESS=DEFLATE -co BIGTIFF=YES -t_srs EPSG:3857 image.tif newImage.tif
Cette commande a parfaitement fonctionné jusqu'à la fin où j'ai eu l'erreur suivante:
ERREUR 1: TIFFFillTile: erreur de lecture à la ligne 43520, col 47104; obtenu 35788250 octets, attendu 37421449
Je ne sais pas ce que cette erreur signifiait, je l'ai laissée pour le moment et j'ai quand même obtenu une image finale "newImage.tif", produite par l'étape gdalwarp. En utilisant cela, j'ai appelé gdal2tiles.py
gdal2tiles.py newImage.tif
Cela a produit un dossier avec les sous-dossiers 10-18 (et pas seulement un niveau de zoom 18 comme je l'ai précédemment). Il se lit également parfaitement dans Césium, sans aucune erreur de console, mais l'image semble toujours "fausse":
Je considère que mon problème peut être dû au fait que @ user30184 a suggéré "... les données source ne conviennent pas bien à gdal2tiles." Cependant, jusqu'à ce que notre fournisseur soit en mesure de nous fournir quelque chose à utiliser avec gdal, c'est tout ce que j'ai.
J'envisageais peut-être de supprimer l'une des bandes pour éviter que gdal n'interpère la dernière bande comme canal alpha. Aucune suggestion?
la source
Réponses:
Je pense que tout ce que vous avez à faire est de le reprojeter en utilisant:
puis tuile le:
Si votre fichier est très volumineux, cela peut prendre un certain temps.
la source
Je suppose que votre image fait partie des produits 4 bandes d'Airbus DS:
http://www.intelligence-airbusds.com/en/4951-which-spectral-mode-do-i-choose
Gdal2tiles est conçu pour diviser des images visuelles courantes en tuiles png. Ces images utilisent 8 bits par bande et elles ont une bande (niveaux de gris), 3 bandes (rouge-vert-bleu) de 4 bandes (reg-vert-bleu + alpha).
Je dirais que votre question est en grande partie hors de propos car vos données source ne conviennent pas bien pour gdal2tiles. Vous pouvez contourner les problèmes immédiats que vous rencontrez actuellement, mais le résultat final ne sera toujours pas bon si vous ne retraitez pas vos données.
La raison pour laquelle la tuile n'est pas belle que vous avez attachée à votre question peut être que la quatrième bande de données est interprétée comme un canal alpha.
la source
gdal_translate -srcwin 20000 20000 1000 1000 original.tif sample.tif
devrait le faire (grands décalages pour éviter les zones nodata). Ouvrez cette petite image avec QGIS et vous devriez pouvoir jouer avec les paramètres de visualisation rapidement. Ma supposition sur le canal alpha est probablement fausse, sinon le résultat devrait être coloré, pas gris.