Обрезка растров по вектору
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Обрезка растров по вектору
Подскажите пожалуйста, можно ли в QGIS/GRASS/GDAL организовать удобную обрезку растров по векторным полигонам( например отрезать зарамочное оформление топокарт по разграфке).
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Обрезка растров по вектору
Не уверен, что правильно, но как вариант:
1. Открываем в QGIS вектор, по которому нужно произвести обрезку. В свойствах символики выставляем сплошную заливку. Для определенности будем считать, что цвет заливки 255 0 0 (красный).
2. File - Save As Image..., сохраняем в tiff.
3. Создаем новый проект.
4. Добавляем растр, который нужно обрезать и сверху накладываем растр, созданный по вектору.
5. Заходим в свойства растра, который был создан по вектору и задаем 100% прозрачность для цвета 255 0 0.
6. File - Save As Image.
Пример результата:
1. Открываем в QGIS вектор, по которому нужно произвести обрезку. В свойствах символики выставляем сплошную заливку. Для определенности будем считать, что цвет заливки 255 0 0 (красный).
2. File - Save As Image..., сохраняем в tiff.
3. Создаем новый проект.
4. Добавляем растр, который нужно обрезать и сверху накладываем растр, созданный по вектору.
5. Заходим в свойства растра, который был создан по вектору и задаем 100% прозрачность для цвета 255 0 0.
6. File - Save As Image.
Пример результата:
- Вложения
-
- modis.jpg (904.65 КБ) 24351 просмотр
-
- result.png (524.35 КБ) 24351 просмотр
Spatial is now, more than ever, just another column- The Geometry Column.
- SS_Rebelious
- Гуру
- Сообщения: 1304
- Зарегистрирован: 24 фев 2009, 16:51
- Репутация: 99
- Ваше звание: GIS pro-fan
- Откуда: Lahti / Газ-ПУТИНбург
- Контактная информация:
Re: Обрезка растров по вектору
Аналогичным способом я как-то пользовался для мапинфо, только там есть опция "врезка" - которая позволяет скрыть на экране всё, что выходит за пределы определённого многоугольника. Может имеет смысл предложить разработчикам сделать аналогичный инструмент для QGIS? Тогда вышеописанную процедуру можно будет осуществить гораздо быстрее.
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Обрезка растров по вектору
"Правильный" способ заключается в использовании утилиты gdal_rasterize:
Внимание! Изменения вносятся непосредственно в растр, так что не забудьте сделать бэкап.
Вот несколько примеров использования утилиты (в комментариях - команда, которой был получен результат):
Код: Выделить всё
gdal_rasterize -i -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp modis.tif
Вот несколько примеров использования утилиты (в комментариях - команда, которой был получен результат):
- Вложения
-
- gdal_rasterize -i -b 1 -b 2 -b 3 -burn 0 -burn 0 -burn 255 -l admin admin.shp modis.tif
Ключ -i указывает на то, что запись будет вестись вне векторной маски.
-burn 0 -burn 0 -burn 255 - записывает в 3-й канал значение 255, в остальные - 0 - gdal_rasterize-03.gif (210 КБ) 24341 просмотр
- gdal_rasterize -i -b 1 -b 2 -b 3 -burn 0 -burn 0 -burn 255 -l admin admin.shp modis.tif
-
- gdal_rasterize -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp modis.tif
-burn 255 - записывает во все каналы маски значение 255 - gdal_rasterize-02.gif (147.49 КБ) 24341 просмотр
- gdal_rasterize -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp modis.tif
-
- gdal_rasterize -i -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp modis.tif
Ситуация, о которой речь шла в первом посте топика. - gdal_rasterize-01.gif (209.6 КБ) 24341 просмотр
- gdal_rasterize -i -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp modis.tif
Spatial is now, more than ever, just another column- The Geometry Column.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Обрезка растров по вектору
Можно использовать и различные условия, например:
Результат:
Код: Выделить всё
gdal_rasterize -i -b 1 -b 2 -b 3 -burn 255 -l admin admin.shp -where "NAME='Новосибирская область'" modis.tif
- Вложения
-
- gdal_rasterize-04.gif (78.41 КБ) 24331 просмотр
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Re: Обрезка растров по вектору
Спасибо! Попробуем. Вот бы еще соответствующий пунктик добавить в GDAL-tools когда-нибудь.
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Re: Обрезка растров по вектору
А с индекстными цветами работать будет?
- taimyr
- IT-моторист
- Сообщения: 460
- Зарегистрирован: 14 окт 2003, 12:36
- Репутация: 17
- Откуда: Москва
- Контактная информация:
Re: Обрезка растров по вектору
Господа, давайте договоримся о терминах - это все НЕ ЕСТЬ ОБРЕЗКА, это СКРЫТИЕ ЧАСТИ растра. Обрезка - это то что делает инструмент image clipper - а именно - удаление лишнего на растре, но к сожалению, только по прямоугольному....
И оставшиеся в живых позавидуют мёртвым....
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Обрезка растров по вектору
taimyr, строго говоря да.
Однако, если дополнить то, что предлагает DR, определением охвата векторного объекта/слоя и обрезкой результата скрытия по нему, это будет то, о чем говоришь ты.
Однако, если дополнить то, что предлагает DR, определением охвата векторного объекта/слоя и обрезкой результата скрытия по нему, это будет то, о чем говоришь ты.
пристегивайтесь, турбулентность прямо по курсу
- taimyr
- IT-моторист
- Сообщения: 460
- Зарегистрирован: 14 окт 2003, 12:36
- Репутация: 17
- Откуда: Москва
- Контактная информация:
Re: Обрезка растров по вектору
Тут почти согласен - но как я понял, нулевые значения все же остаются за пределами обрезки, а не обрезаются по крайним точкамsim писал(а):taimyr, строго говоря да.
Однако, если дополнить то, что предлагает DR, определением охвата векторного объекта/слоя и обрезкой результата скрытия по нему, это будет то, о чем говоришь ты.
И оставшиеся в живых позавидуют мёртвым....
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Обрезка растров по вектору
Да, будет, например:kryl писал(а):А с индекстными цветами работать будет?
Код: Выделить всё
gdal_rasterize -i -b 1 -burn 0 -l cutting cutting.shp k-52-06.tif
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Re: Обрезка растров по вектору
Способ мне понравился, только артефакты при обрезке ландсата вылезают. Полосы всякие.
строка:
строка:
Код: Выделить всё
gdal_rasterize -i -b 1 -b 2 -b 3 -b 4 -b 5 -b 6 -burn 255 -l clip clip.shp LT51720192009208MOR00.img
- Вложения
-
- clip.jpg (111.01 КБ) 24285 просмотров
-
- Завсегдатай
- Сообщения: 324
- Зарегистрирован: 14 фев 2010, 20:42
- Репутация: 0
Re: Обрезка растров по вектору
Разобрался снимок в 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.
Если резать шейпом в той же проекции что и растр, то все нормально.
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.
Если резать шейпом в той же проекции что и растр, то все нормально.
-
- Активный участник
- Сообщения: 153
- Зарегистрирован: 14 окт 2009, 05:07
- Репутация: 0
- Откуда: Красноярск
- Контактная информация:
Re: Обрезка растров по вектору
Столкнулся с подобной задачей. пришлось обрезать много растров. написал маленький скрипт работает из папки с растрами. запускается из под 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
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Обрезка растров по вектору
забавно, что если мы создаем в кугис растр из вектора и потом подгружаем его в проект, то привязка правильная, а вот в Эрдасе и ЭНВИ она теряется.
ин гроссен фамилен нихт клювен клац клац
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей