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?