Обрезка растров по вектору

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: Обрезка растров по вектору

Сообщение Juls » 02 авг 2010, 15:53

Здравствуйте

Помогите решить задачу обрезки растра по векторному слою. Растр чернобелый(формат*.jpg, или *.bmp). векторный слой - таблица mapinfo.
нашел информацию про команды

gdal_translate с параметром [-projwin ulx uly lrx lry]. Я так понимаю, что экстент выходного растра прямоугольник? а как поступить, если нужно обрезать по произвольноиу контуру?

попробовал gdal_rasterize,

Код: Выделить всё

gdal_rasterize -i -b 1-burn 255 -l crop crop.shp rastr.bmp
выходной файл был записан без изменений.
кроме того windows ругнулась на gdal_rasterize.exe.
можно ли как то использовать в этой команде не shp-файлы, а tab?
не воспринимаются русские буквы в имени файлов? можно это как-нибудь обойти?

большое спасибо

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Обрезка растров по вектору

Сообщение Максим Дубинин » 02 авг 2010, 17:59

Да, охват - прямоугольник. Насчет кириллицы и tab - так переведите просто, чтобы без кириллицы и в shape. Вот еще два способа, попробуйте.

Способ 1 (возможно cutline поддерживает и tab, пробуйте)

gdal_translate -projwin ulx uly lrx lry rasterin.tif raster_clip.tif
gdalwarp -cutline shape_file raster_clip.tif raster_clip2.tif

Способ 2
http://trac.osgeo.org/gdal/wiki/FAQRast ... eGDAL1.8.0
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: Обрезка растров по вектору

Сообщение Juls » 03 авг 2010, 15:00

Большое спасибо за ответ
попробовал
gdalwarp -cutline shape_file raster_clip.tif raster_clip2.tif
tab принимает в обработку
но выходной растр пустой. и возникает предупреждение: vector layer has a srs, source rastr dataset does not.
это изза несовпадения проекций? как узнать проекцию растра?

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Обрезка растров по вектору

Сообщение Mavka » 03 авг 2010, 15:23

Посмотреть:

Код: Выделить всё

gdalinfo raster_clip2.tif
Если автоматически не определилась проекция, то задайте вручную:

Код: Выделить всё

gdalwarp ... -s_srs "EPSG:4326" ... 
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: Обрезка растров по вектору

Сообщение Juls » 03 авг 2010, 15:55

gdalinfo выдает Coordynate system is ''
это значит растр не имеет географической системы координат чтоли?

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Обрезка растров по вектору

Сообщение Максим Дубинин » 03 авг 2010, 19:30

это значит что система координат не указана явным образом

пропишите систему координат, сделайте так, чтобы таб и растры были в одной системе координат (т.е. если они в разной, перепроецируйте либо растр либо вектор).
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
asgs
Участник
Сообщения: 89
Зарегистрирован: 04 авг 2010, 06:35
Репутация: 1
Контактная информация:

Re: Обрезка растров по вектору

Сообщение asgs » 04 авг 2010, 12:21

Вот тут http://asgs.narod.ru/programs.html лежит программа TiffMosaic. Вообще, как видно из названия, разрабатывалась для создания мозаики в MapInfo из ортофотопланов или космоснимков, но можно использовать и для обрезки растров, и как раз по вектору. Может и пригодится кому :)
Злобный йожег

Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: Обрезка растров по вектору

Сообщение Juls » 09 авг 2010, 11:03

Как определить охват векторного объекта/слоя, чтобы потом по нему обрезать?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Обрезка растров по вектору

Сообщение Denis Rykov » 09 авг 2010, 11:13

Код: Выделить всё

ogrinfo -al -so altay-a.shp
Пример результата:

Код: Выделить всё

Layer name: altay-a
Geometry: Polygon
Feature Count: 2
Extent: (77.802216, 49.083084) - (89.869980, 54.489159)
Layer SRS WKT:
GEOGCS["GCS_WGS_1984",
    DATUM["WGS_1984",
        SPHEROID["WGS_1984",6378137,298.257223563]],
    PRIMEM["Greenwich",0],
    UNIT["Degree",0.017453292519943295]]
ID: Real (32.3)
F_CODE: String (80.0)
F_CODE_DES: String (80.0)
NAM: String (80.0)
NA2: String (80.0)
NA2_DESCRI: String (80.0)
NA3: String (80.0)
NA3_DESCRI: String (80.0)
TILE_ID: Integer (10.0)
FAC_ID: Real (32.3)
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Juls
Интересующийся
Сообщения: 49
Зарегистрирован: 02 авг 2010, 10:30
Репутация: 1

Re: Обрезка растров по вектору

Сообщение Juls » 09 авг 2010, 11:26

подскажите еще, как отсюда вытащить экстент? чтобы загнать их в gdal_translate -projwin ulx uly lrx lry

lady_green
Новоприбывший
Сообщения: 7
Зарегистрирован: 27 окт 2010, 15:04
Репутация: 0

Re: Обрезка растров по вектору

Сообщение lady_green » 27 окт 2010, 15:08

Добрый день! Объясните кто-нибудь популярно и доступно, пошагово на выполнить обрезку растра и какие в этом процессе "подводные камни".Help!

Аватара пользователя
nadiopt
Гуру
Сообщения: 4744
Зарегистрирован: 29 янв 2009, 13:27
Репутация: 495
Ваше звание: хрюкало
Откуда: Санкт-Петербург
Контактная информация:

Re: Обрезка растров по вектору

Сообщение nadiopt » 27 окт 2010, 15:19

типо читайте выше
ин гроссен фамилен нихт клювен клац клац

kryl
Завсегдатай
Сообщения: 324
Зарегистрирован: 14 фев 2010, 20:42
Репутация: 0

Re: Обрезка растров по вектору

Сообщение kryl » 01 ноя 2010, 13:37

На самом деле подводные камни есть.

Код: Выделить всё

gdal_rasterize -i -b 1 -b 2 -b 3 -burn 255 -l 1 D:/1.shp D:/2.img
при сложном векторе дает артефакты.

Код: Выделить всё

gdalwarp -cutline shape_file raster_clip.tif raster_clip2.tif
артефактов не дает, но никак не могу заставить заливать отрезаемое белым цветом (вернее заливать то заливает(-dstnodata "255 255 255" ), но вместе с полями прихватывает все пиксели, где хотя бы в 1 канале есть 255). По-моему это баг.

Озарян Юлия
Активный участник
Сообщения: 134
Зарегистрирован: 22 май 2013, 01:35
Репутация: 13

Re: Обрезка растров по вектору

Сообщение Озарян Юлия » 14 дек 2015, 09:55

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.
Пример результата:
Все сделала, сработало! Интересно, что растр, созданный по вектору был в виде определенной фигуры, обрисованной по интересующей территории, а в итоге получился прямоугольный растр, в который попала вся обрисованная территория. В-принципе устраивает, но почему так получилось? В вашем примере обрезка была четко по заданному полю.

prospektor
Интересующийся
Сообщения: 34
Зарегистрирован: 02 фев 2015, 10:46
Репутация: 8

Re: Обрезка растров по вектору

Сообщение prospektor » 15 дек 2015, 04:04

Озарян Юлия писал(а):
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.
Пример результата:
Все сделала, сработало! Интересно, что растр, созданный по вектору был в виде определенной фигуры, обрисованной по интересующей территории, а в итоге получился прямоугольный растр, в который попала вся обрисованная территория. В-принципе устраивает, но почему так получилось? В вашем примере обрезка была четко по заданному полю.
Еще, в качестве варианта, все элементарно делается в SAGA:
в инструментах вкладки: shapes\grid\spatial extent\ clip grid with rectangle

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей