私たちが持っている高解像度画像のタイルを生成するのに少し苦労しています。現在の画像は非常に大きい(+ 20GB)画像で、GeoTiffファイルとして保存されています。
TMS画像プロバイダーを使用してタイルを提供し、gdal2tilesコマンドラインユーティリティを使用してタイルを生成し、Cesiumで開いて表示します。gdalinfoを使用して、画像の詳細の一部を次に示します。
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
私の最初の試みは、gdal_translateを使用して画像を地理参照し、次にgdalwarpを使用して投影をEPSG:3857に変更しました。
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
ただし、次のエラーの多くが発生します。
エラー1:緯度または経度が制限を超えています
私が試したもう1つの方法は、gdal2tilesを直接使用して、タイルを生成することでした。
gdal2tiles.py image.tif
これにより、タイルが作成された唯一のズームレベルである1つのサブフォルダー(ラベル18)を持つフォルダーが作成されました。ただし、ここで取得した画像は完全に「間違った」「ぼやけた」ものです。
タイルの例:
セシウムに読み込んで表示できるように、gdal2tilesを使用して特定の領域のこの画像の大きな画像のタイルを生成するための提案はありますか?
更新
したがって、@ iantの提案を試した後、次のコマンドを使用しました。
gdalwarp -co TILED=YES -co COMPRESS=DEFLATE -co BIGTIFF=YES -t_srs EPSG:3857 image.tif newImage.tif
このコマンドは、次のエラーが発生する最後まで完全に正常に機能しました。
エラー1:TIFFFillTile:行43520、列47104で読み取りエラー。35788250バイトを取得、37421449が必要
このエラーが何を意味するのかわからないので、私はしばらくそれを残しましたが、gdalwarpステップによって生成された最終的なイメージ「newImage.tif」をまだ取得しました。これを使用して、gdal2tiles.pyを呼び出しました
gdal2tiles.py newImage.tif
これにより、サブフォルダーが10〜18のフォルダーが作成されました(以前に取得したズームレベル18だけではありません)。また、コンソールエラーなしでCesiumに完全に正常に読み込まれますが、画像はまだ「正しくない」ように見えます。
@ user30184が「...ソースデータはgdal2tilesに適さない」と示唆しているように、私の問題が原因である可能性があると考えています。ただし、プロバイダーがgdalで使用できるものを提供できるようになるまでは、これですべてです。
おそらく、gdalが最後のバンドをアルファチャネルとして解釈しないように、バンドの1つを削除することを検討していました。助言がありますか?