Страница 1 из 1
массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 02:59
Boris
Подскажите как и чем в пакетном режиме решить следующую задачу:
- имеем много растров трапециевидной формы а ля планшет карты
- все растры геокодированы и составляют некоторое непрерывное поле
- имеем слой с полигональной сеткой, где каждый векторный полигон задает границу соответствующего растра, отсекающую внутреннюю значимую часть, от внешней балластной, образованной за счет его прямоугольности растра
- края растров за пределами такого полигона имеют одноцветное оформление, как правило белое (255), сам растр - серый, иногда зарамочный цвет - черный, совсем редко - близкий к крайним цветам, но не равный им. На пример, 1 или 3 для черного.
- в значимой области растра существуют пиксели с тем же значением, что и пиксели зарамочного офрмления
Задача минимум:
- присвоить растру за границей рамки значение 0 (черный)
- всем пикселям со значением 0 присвоить значение 1
Задача максимум:
- создать растры более крупного размера, на пример, 3 на 3 или 3 на 4 или 4 на 6, без учета зарамочных областей при компоновке растров, т.к. на зарамочное оформление приходится пересечение соседних растров - значимой области и балластной зарамочной
- нарезать полученные растры на более мелкие прямоугольные фрагменты равного размера
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 07:33
asgs
Для MapInfo есть самописная программа TiffMosaic, которая решает первую часть программы-максимум. Взять можно тут:
http://asgs.narod.ru/programs.html. В принципе, не сильно сложно решить и вторую часть той же программы.
Особенность - программа корректно работает с растрами в формате TIFF, в которых внутренняя система координат (пикселы в смысле) выровнены по метровой СК.
Если сильно надо, могу прислать исходники, все равно собирался выложить под GPL
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 07:45
gamm
asgs писал(а):Для MapInfo есть самописная программа TiffMosaic, которая решает первую часть программы-максимум. Взять можно тут:
http://asgs.narod.ru/programs.html. В принципе, не сильно сложно решить и вторую часть той же программы.
Особенность - программа корректно работает с растрами в формате TIFF, в которых внутренняя система координат (пикселы в смысле) выровнены по метровой СК.
Если сильно надо, могу прислать исходники, все равно собирался выложить под GPL
небольшое добавление - нарезать можно GDAL-ом, он же позволяет брать подобласти. Я писал скрипт на R, генерировал *.bat файл (с заданием для GDAL), и запускал его.
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 12:49
Пётр Дубоделов
Можно использовать GlobalMapper, и для обрезки и для нарезки
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 14:52
Boris
asgs писал(а):Для MapInfo есть самописная программа TiffMosaic, которая решает первую часть программы-максимум. Взять можно тут:
http://asgs.narod.ru/programs.html. В принципе, не сильно сложно решить и вторую часть той же программы.
Особенность - программа корректно работает с растрами в формате TIFF, в которых внутренняя система координат (пикселы в смысле) выровнены по метровой СК.
Если сильно надо, могу прислать исходники, все равно собирался выложить под GPL
Спасибо за предложение. Посмотрю и программу и исходники, если выложите.
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 14:54
Boris
gamm писал(а):
небольшое добавление - нарезать можно GDAL-ом, он же позволяет брать подобласти. Я писал скрипт на R, генерировал *.bat файл (с заданием для GDAL), и запускал его.
Если выложите образец BAT-Файла, то я с удовольствием с ним ознакомлюсь. использование R было принципиальным по каким-то причинам или подойдет любой язык для генерации BAT-файла?
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 15:02
kryl
Я генерировал bat-файл для GDAL в Excel, а мозайку собирал в ERDAS.
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 18:35
asgs
Boris писал(а):Посмотрю и программу и исходники, если выложите.
Ок, займусь выкладыванием исходников на выходных. Саму программу скачать уже можно, ссылка выше.
Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 19:58
gamm
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

Re: массовая обрезка / сбор растров
Добавлено: 23 дек 2010, 21:47
Boris
Я что-то не так объяснил - мне же еще надо растр вектором порезать или покрасить. Планшет он же трапеция, мне надо за пределами трапеции планшета все сделать абсолютно черным.
Re: массовая обрезка / сбор растров
Добавлено: 24 дек 2010, 07:34
gamm
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., который запускаете после нарезки и окраски.
Re: массовая обрезка / сбор растров
Добавлено: 24 дек 2010, 09:01
kryl
gdal_rastrezate часто дает артефакты (желтые полосы)
я использую
Код: Выделить всё
gdalwarp -cutline d:/2.shp d:/2.img d:/2i.img
Re: массовая обрезка / сбор растров
Добавлено: 21 янв 2011, 12:50
asgs
asgs писал(а):Boris писал(а):Посмотрю и программу и исходники, если выложите.
Ок, займусь выкладыванием исходников на выходных. Саму программу скачать уже можно, ссылка выше.
Программу выложил. Сайт
http://asgs.narod.ru, раздел "Программы GPL".