Страница 1 из 3
Обрезка растров по вектору
Добавлено: 20 мар 2010, 12:43
kryl
Подскажите пожалуйста, можно ли в QGIS/GRASS/GDAL организовать удобную обрезку растров по векторным полигонам( например отрезать зарамочное оформление топокарт по разграфке).
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 16:17
Denis Rykov
Не уверен, что правильно, но как вариант:
1. Открываем в QGIS вектор, по которому нужно произвести обрезку. В свойствах символики выставляем сплошную заливку. Для определенности будем считать, что цвет заливки 255 0 0 (красный).
2. File - Save As Image..., сохраняем в tiff.
3. Создаем новый проект.
4. Добавляем растр, который нужно обрезать и сверху накладываем растр, созданный по вектору.
5. Заходим в свойства растра, который был создан по вектору и задаем 100% прозрачность для цвета 255 0 0.
6. File - Save As Image.
Пример результата:
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 19:49
SS_Rebelious
Аналогичным способом я как-то пользовался для мапинфо, только там есть опция "врезка" - которая позволяет скрыть на экране всё, что выходит за пределы определённого многоугольника. Может имеет смысл предложить разработчикам сделать аналогичный инструмент для QGIS? Тогда вышеописанную процедуру можно будет осуществить гораздо быстрее.
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 20:21
Denis Rykov
"Правильный" способ заключается в использовании утилиты gdal_rasterize:
Код: Выделить всё
gdal_rasterize -i -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp modis.tif
Внимание! Изменения вносятся непосредственно в растр, так что не забудьте сделать бэкап.
Вот несколько примеров использования утилиты (в комментариях - команда, которой был получен результат):
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 20:39
Denis Rykov
Можно использовать и различные условия, например:
Код: Выделить всё
gdal_rasterize -i -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp -where "NAME='Новосибирская область'" modis.tif
Результат:
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 20:44
kryl
Спасибо! Попробуем. Вот бы еще соответствующий пунктик добавить в GDAL-tools когда-нибудь.
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 21:06
kryl
А с индекстными цветами работать будет?
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 21:30
taimyr
Господа, давайте договоримся о терминах - это все НЕ ЕСТЬ ОБРЕЗКА, это СКРЫТИЕ ЧАСТИ растра. Обрезка - это то что делает инструмент image clipper - а именно - удаление лишнего на растре, но к сожалению, только по прямоугольному....
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 21:57
Максим Дубинин
taimyr, строго говоря да.
Однако, если дополнить то, что предлагает DR, определением охвата векторного объекта/слоя и обрезкой результата скрытия по нему, это будет то, о чем говоришь ты.
Re: Обрезка растров по вектору
Добавлено: 20 мар 2010, 22:05
taimyr
sim писал(а):taimyr, строго говоря да.
Однако, если дополнить то, что предлагает DR, определением охвата векторного объекта/слоя и обрезкой результата скрытия по нему, это будет то, о чем говоришь ты.
Тут почти согласен - но как я понял, нулевые значения все же остаются за пределами обрезки, а не обрезаются по крайним точкам
Re: Обрезка растров по вектору
Добавлено: 21 мар 2010, 04:45
Denis Rykov
kryl писал(а):А с индекстными цветами работать будет?
Да, будет, например:
Код: Выделить всё
gdal_rasterize -i -b 1 -burn 0 -l cutting cutting.shp k-52-06.tif
где
-burn 0 - одно из значений, присутствующих в палитре, и используемое в качестве цвета обрезанной области.
Re: Обрезка растров по вектору
Добавлено: 22 мар 2010, 10:32
kryl
Способ мне понравился, только артефакты при обрезке ландсата вылезают. Полосы всякие.
строка:
Код: Выделить всё
gdal_rasterize -i -b 1 -b 2 -b 3 -b 4 -b 5 -b 6 -burn 255 -l clip clip.shp LT51720192009208MOR00.img
Re: Обрезка растров по вектору
Добавлено: 22 мар 2010, 10:48
kryl
Разобрался снимок в UTM, а шейп в ДД на WGS о чем GDAL честно предупреждает.
Warning : the output raster dataset and the input vector layer do not have the s
ame SRS.
Results might be incorrect (no on-the-fly reprojection of input data).
0...10...20...30...40...50...60...70...80...90...100 - done.
Если резать шейпом в той же проекции что и растр, то все нормально.
Re: Обрезка растров по вектору
Добавлено: 14 апр 2010, 09:12
Trace
Столкнулся с подобной задачей. пришлось обрезать много растров. написал маленький скрипт работает из папки с растрами. запускается из под msys (OSGeo4W) обрезает индексные растры. Если кому поможет выкладываю скрипт...
Код: Выделить всё
#!/bin/bash
for i in $( ls *.tif ); do # расширение tif можно заменить на любое другое
gdal_rasterize -i -b 1 -burn 0 -l list /d/list.shp -where "OBREZKA=$i" $i # list - название обрезки в формате шейп
done
Re: Обрезка растров по вектору
Добавлено: 25 май 2010, 11:32
nadiopt
забавно, что если мы создаем в кугис растр из вектора и потом подгружаем его в проект, то привязка правильная, а вот в Эрдасе и ЭНВИ она теряется.