массовая обрезка / сбор растров

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

массовая обрезка / сбор растров

Сообщение Boris » 23 дек 2010, 02:59

Подскажите как и чем в пакетном режиме решить следующую задачу:
  • имеем много растров трапециевидной формы а ля планшет карты
  • все растры геокодированы и составляют некоторое непрерывное поле
  • имеем слой с полигональной сеткой, где каждый векторный полигон задает границу соответствующего растра, отсекающую внутреннюю значимую часть, от внешней балластной, образованной за счет его прямоугольности растра
  • края растров за пределами такого полигона имеют одноцветное оформление, как правило белое (255), сам растр - серый, иногда зарамочный цвет - черный, совсем редко - близкий к крайним цветам, но не равный им. На пример, 1 или 3 для черного.
  • в значимой области растра существуют пиксели с тем же значением, что и пиксели зарамочного офрмления
Задача минимум:
  • присвоить растру за границей рамки значение 0 (черный)
  • всем пикселям со значением 0 присвоить значение 1
Задача максимум:
  • создать растры более крупного размера, на пример, 3 на 3 или 3 на 4 или 4 на 6, без учета зарамочных областей при компоновке растров, т.к. на зарамочное оформление приходится пересечение соседних растров - значимой области и балластной зарамочной
  • нарезать полученные растры на более мелкие прямоугольные фрагменты равного размера

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

Re: массовая обрезка / сбор растров

Сообщение asgs » 23 дек 2010, 07:33

Для MapInfo есть самописная программа TiffMosaic, которая решает первую часть программы-максимум. Взять можно тут: http://asgs.narod.ru/programs.html. В принципе, не сильно сложно решить и вторую часть той же программы.
Особенность - программа корректно работает с растрами в формате TIFF, в которых внутренняя система координат (пикселы в смысле) выровнены по метровой СК.
Если сильно надо, могу прислать исходники, все равно собирался выложить под GPL
Злобный йожег

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: массовая обрезка / сбор растров

Сообщение gamm » 23 дек 2010, 07:45

asgs писал(а):Для MapInfo есть самописная программа TiffMosaic, которая решает первую часть программы-максимум. Взять можно тут: http://asgs.narod.ru/programs.html. В принципе, не сильно сложно решить и вторую часть той же программы.
Особенность - программа корректно работает с растрами в формате TIFF, в которых внутренняя система координат (пикселы в смысле) выровнены по метровой СК.
Если сильно надо, могу прислать исходники, все равно собирался выложить под GPL
небольшое добавление - нарезать можно GDAL-ом, он же позволяет брать подобласти. Я писал скрипт на R, генерировал *.bat файл (с заданием для GDAL), и запускал его.

Аватара пользователя
Пётр Дубоделов
Завсегдатай
Сообщения: 271
Зарегистрирован: 21 апр 2009, 13:58
Репутация: 12
Откуда: Бурашево
Контактная информация:

Re: массовая обрезка / сбор растров

Сообщение Пётр Дубоделов » 23 дек 2010, 12:49

Можно использовать GlobalMapper, и для обрезки и для нарезки
"Если карта не соответствует местности, доверяй местности."

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: массовая обрезка / сбор растров

Сообщение Boris » 23 дек 2010, 14:52

asgs писал(а):Для MapInfo есть самописная программа TiffMosaic, которая решает первую часть программы-максимум. Взять можно тут: http://asgs.narod.ru/programs.html. В принципе, не сильно сложно решить и вторую часть той же программы.
Особенность - программа корректно работает с растрами в формате TIFF, в которых внутренняя система координат (пикселы в смысле) выровнены по метровой СК.
Если сильно надо, могу прислать исходники, все равно собирался выложить под GPL
Спасибо за предложение. Посмотрю и программу и исходники, если выложите.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: массовая обрезка / сбор растров

Сообщение Boris » 23 дек 2010, 14:54

gamm писал(а): небольшое добавление - нарезать можно GDAL-ом, он же позволяет брать подобласти. Я писал скрипт на R, генерировал *.bat файл (с заданием для GDAL), и запускал его.
Если выложите образец BAT-Файла, то я с удовольствием с ним ознакомлюсь. использование R было принципиальным по каким-то причинам или подойдет любой язык для генерации BAT-файла?

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

Re: массовая обрезка / сбор растров

Сообщение kryl » 23 дек 2010, 15:02

Я генерировал bat-файл для GDAL в Excel, а мозайку собирал в ERDAS.

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

Re: массовая обрезка / сбор растров

Сообщение asgs » 23 дек 2010, 18:35

Boris писал(а):Посмотрю и программу и исходники, если выложите.
Ок, займусь выкладыванием исходников на выходных. Саму программу скачать уже можно, ссылка выше.
Злобный йожег

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: массовая обрезка / сбор растров

Сообщение gamm » 23 дек 2010, 19:58

Boris писал(а):
gamm писал(а): небольшое добавление - нарезать можно GDAL-ом, он же позволяет брать подобласти. Я писал скрипт на R, генерировал *.bat файл (с заданием для GDAL), и запускал его.
Если выложите образец BAT-Файла, то я с удовольствием с ним ознакомлюсь. использование R было принципиальным по каким-то причинам или подойдет любой язык для генерации BAT-файла?

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

gdalwarp -t_srs "+proj=utm +zone=39 +ellps=WGS84 +datum=WGS84 +units=m +no_defs" -te 749460 6217620 759780 6226410 -r near test.tif test_sub1.tif 
документация gdalwarp
в версии 1.8 вроде можно перезаписать (если выходной существует), у меня 1.5

я еще проекцию менял, поэтому warp - скорее всего, в GDAL есть утилиты, которые просто вырезают область.

Проверил, если не указывать выходную проекцию, то берет входную. Так что нужен только MBR:
gdalwarp -te 749460 6217620 759780 6226410 -r near test.tif test_sub1.tif

R не принципиален, просто на нем обработка делается - у него скорость вполне приличная, если вызывать встроенные функции, а не писать циклы. Он у меня вместо shell :D

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: массовая обрезка / сбор растров

Сообщение Boris » 23 дек 2010, 21:47

Я что-то не так объяснил - мне же еще надо растр вектором порезать или покрасить. Планшет он же трапеция, мне надо за пределами трапеции планшета все сделать абсолютно черным.

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: массовая обрезка / сбор растров

Сообщение gamm » 24 дек 2010, 07:34

Boris писал(а):Я что-то не так объяснил - мне же еще надо растр вектором порезать или покрасить. Планшет он же трапеция, мне надо за пределами трапеции планшета все сделать абсолютно черным.
я же сразу писал только про вторую часть - нарезать полученные растры на более мелкие прямоугольные фрагменты равного размера, это про нее.

чтобы за пределами трапеции планшета все сделать абсолютно черным, есть gdal_rasterize:
This program burns vector geometries (points, lines and polygons) into the raster band(s) of a raster image. Vectors are read from OGR supported vector formats.

Note that the vector data must in the same coordinate system as the raster data; on the fly reprojection is not provided.


делаете БООООЛЬШОЙ квадратный полигон (границы мира) в нужной проекции, и вырезаете в нем вашу трапецию. Потом растеризуете его с нужным значением во все каналы.

Для первой части "марлезонского балета" (мозаики) есть gdal_merge.py, This utility will automatically mosaic a set of images. All the images must be in the same coordinate system and have a matching number of bands, but they may be overlapping, and at different resolutions. In areas of overlap, the last image will be copied over earlier ones., который запускаете после нарезки и окраски.

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

Re: массовая обрезка / сбор растров

Сообщение kryl » 24 дек 2010, 09:01

gdal_rastrezate часто дает артефакты (желтые полосы)
я использую

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

gdalwarp -cutline d:/2.shp d:/2.img d:/2i.img

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

Re: массовая обрезка / сбор растров

Сообщение asgs » 21 янв 2011, 12:50

asgs писал(а):
Boris писал(а):Посмотрю и программу и исходники, если выложите.
Ок, займусь выкладыванием исходников на выходных. Саму программу скачать уже можно, ссылка выше.
Программу выложил. Сайт http://asgs.narod.ru, раздел "Программы GPL".
Злобный йожег

Ответить

Вернуться в «Общий - ПО»

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

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