gdalwarp вырезать вместе с shapefile

26

Я пытаюсь обрезать свой растровый файл в соответствии с геометрией шейп-файла. Я использую следующий код

gdalwarp -cutline INPUT.shp INPUT.tif OUTPUT.tif

Но это приводит к черному цвету за пределами геометрии шейп файла. Я привожу пример здесь. В первом изображении, которое я хочу обрезать. Второе изображение - результирующий растр, но я хочу третий растр, где внешняя часть геометрии будет нулевой.

1-е изображение: INPUT Raster

1-е изображение: INPUT Raster

2-е изображение: OUTPUT Raster

2-е изображение: OUTPUT Raster

введите описание изображения здесь

3-е изображение: я хочу получить такой вывод

Devils Dream
источник

Ответы:

34

Вам нужно использовать -dstalphaопцию, gdalwarpнапример:

gdalwarp -cutline INPUT.shp -crop_to_cutline -dstalpha INPUT.tif OUTPUT.tif

Это добавит альфа-полосу к выходному потоку, который маскирует область, выходящую за пределы линии разреза.

Поздний ответ, но, надеюсь, он поможет кому-то еще с той же проблемой.

Homme Zwaagstra
источник
2
без подсказки Керлью -srcnodata <in> -dstnodata <out> это не сработало для меня.
Дженс
2
Хорошо, -dstalphaэто нормально для использования с изображениями (он в основном добавляет альфа-полосу в GeoTIFF и маскирует область). Тем не менее, значения данных остаются в исходном диапазоне (в этом случае я предполагаю, что это значение 0). Если вы хотите работать с этим как с растровыми значениями (не с изображениями), -dstalphaэто НЕПРАВИЛЬНЫЙ подход. Ответ @ Curlew является гораздо более предпочтительным вариантом. Кроме того, я нашел -crop_to_cutlineвариант очень опасным, если вам нужно сохранить точное наложение (размер пикселя и интервал) с входным растром. Я предпочитаю устанавливать -teпараметры (ограничивающий прямоугольник), чтобы держать координаты под полным контролем.
Юрайб
20

Попробуйте указать значение nodata из входного растра и установить его для вывода. Кроме того, добавьте опцию -crop_to_cutline, чтобы сделать точные кадрирования. Подробнее о вариантах здесь .

gdalwarp -srcnodata <in> -dstnodata <out> -crop_to_cutline -cutline INPUT.shp INPUT.tif OUTPUT.tif
кроншнеп
источник
1
Можете ли вы уточнить немного больше? Что используется как <in> и <out>?
Devils Dream
<in> - это значение входного растра nodata, а <out> - выходной растр. Пожалуйста, посмотрите на предоставленную ссылку, где вы можете найти всю информацию и опции (формат вывода, источник, экстент, ...)
Curlew
2

Вы можете использовать опцию растрового клипа в QGIS, которая запускает gdalwarp в фоновом режиме и настраивает нужные вам параметры.

http://www.qgistutorials.com/en/docs/raster_mosaicing_and_clipping.html

spatialthoughts
источник
Я хочу формат ***. Tif
Devils Dream
Шаги, описанные в приведенной выше ссылке, должны дать вам вывод .tif.
spatialthoughts
1
Ссылка кажется мертвой.
Вадим Овчинников
1
@VadimOvchinnikov немного просмотрел и обнаружил, куда он был перемещен, исправил его
DarkCygnus