Я немного изо всех сил пытался сгенерировать плитки для изображения с высоким разрешением, которое у нас есть. В настоящее время у нас есть очень большое (+ 20 ГБ) изображение, сохраненное в виде файла GeoTiff.
Я хотел бы сгенерировать плитки с помощью утилиты командной строки gdal2tiles, а затем открыть и просмотреть их в Cesium, используя поставщик изображений TMS для предоставления плиток. Используя 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, как того требует Цезий (см. Ссылку 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
Однако я получаю много следующих ошибок:
ОШИБКА 1: широта или долгота превысили пределы
Другой метод, который я попробовал, состоял в том, чтобы использовать gdal2tiles напрямую и генерировать плитки:
gdal2tiles.py image.tif
Это создало папку с одной подпапкой (помеченной 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
Не зная, что означала эта ошибка, я на мгновение оставил ее и все еще получил окончательное изображение «newImage.tif», созданное с помощью шага gdalwarp. Используя это, я назвал gdal2tiles.py
gdal2tiles.py newImage.tif
Это создало папку с подпапками 10-18 (а не только один уровень масштабирования 18, как я получил ранее). Он также отлично читает в Cesium, без каких-либо ошибок консоли, но изображение все равно выглядит «неправильно»:
Я думаю, что моя проблема может быть в том, что @ user30184 предложил "... исходные данные плохо подходят для gdal2tiles". Однако, пока наш провайдер не сможет предоставить нам что-то для использования с gdal, это все, что у меня есть.
Я подумывал, возможно, удалить одну из полос, чтобы не допустить того, чтобы последняя полоса перешла в альфа-канал. Какие-либо предложения?