Я использую gdalwarp для манипулирования плитками SRTM рядом с датой (т.е. 180 °, иначе антимеридиан). Плитки SRTM имеют очень небольшое (1/2 пикселя) перекрытие с меридианом. Вы можете увидеть это с помощью gdalinfo:
gdalinfo S16W180.hgt
Driver: SRTMHGT/SRTMHGT File Format
Files: S16W180.hgt
Size is 1201, 1201
[...]
Lower Left (-180.0004167, -16.0004167) (180d 0' 1.50"W, 16d 0' 1.50"S)
Upper Right (-178.9995833, -14.9995833) (178d59'58.50"W, 14d59'58.50"S)
[...]
Таким образом, источник охватывает линию даты на небольшое количество.
Это вызывает проблемы с gdalwarp, который в конечном итоге создает огромные выходные данные.
gdalwarp -t_srs "epsg:900913" S16W180.hgt test.tif
gdalinfo test.tif
Driver: GTiff/GeoTIFF
Files: test.tif
Size is 1703, 5
[...]
Lower Left (-20037508.330,-1806798.473) (180d 0' 0.00"W, 16d 7'13.00"S)
Upper Right (20032839.451,-1689152.120) (179d57'29.01"E, 15d 5'45.84"S)
Обратите внимание, что долготы охватывают (почти) весь земной шар, а также количество линий неожиданно мало (5)
Это ошибка в gdalwarp? Если нет, то какие правильные варианты передать gdalwarp, чтобы получить разумный вывод?
Ответы:
Одним из простых обходных путей было бы указать систему координат «вручную» в виде строки PROJ. Это позволяет вам использовать
+over
переключатель, который отключает наложение на антимеридиан:Когда я делаю это, а затем делаю
gdalinfo
на результат, я получаю это:Я получил строку PROJ (без
+over
), глядя на исходный выводgdalinfo
. Он был включен вEXTENSION[...]
блок системы координат.источник
Работает в два этапа:
Первая команда запускает лишнюю половину пикселя на изнаночной стороне меридиана 180 °. Вы получите выходной файл размером 1178P x 1222L.
В качестве альтернативы, с gdal_translate:
Создание выходного файла размером 1179P x 1223L.
источник
Поскольку я столкнулся с той же проблемой, я написал небольшой сценарий оболочки, который определяет, пересекает ли растровый файл линию даты. Если true, в gdalwarp добавляется следующая опция:
Вот как скрипт работает шаг за шагом:
ОБНОВЛЕНИЕ Лучшая версия скрипта, требует GDAL 2.0+ и Python: Старая версия ниже.
источник
Это проблема в библиотеке GDAL. Похоже, что GDALSuggestedWarpOutput () дает странный вывод для ширины и высоты выходного файла.
Я еще не нашел способ обойти это.
источник