Erdas 9.1 файл высот

Программы и алгоритмы для обработки данных дистанционного зондирования: ERDAS, ENVI и другие.
Ответить
Nik4
Новоприбывший
Сообщения: 3
Зарегистрирован: 27 ноя 2010, 21:43
Репутация: 0

Erdas 9.1 файл высот

Сообщение Nik4 » 28 ноя 2010, 00:37

Вот такая проблема. Пытаюсь в Erdas 9.1 отредактировать файл высот (формат IMG 15 метров). Задача состоит в следующем, нужно опустить дно озера на несколько метров. В erdas есть инструменты, с помощью которых это можно сделать, Area Fill, Area Offset. Здесь в принципе все работает правильно, но они делают острую грань по контуру береговой линии (обрыв), а контуры берега должны быть заглажены. То есть сетка береговой линии, которая очерчена AOI, должна иметь гладкую фаску (плавный спуск к воде). Есть еще инструмент Interpolate который ближе к решению этой задачи. Тут можно делать мягкий градиент, но этот инструмент работает не по вектору AOI, а работает по точкам, которые имеют радиус сглаживания. А это значит, что ломка сетки получается на 360 градусов вокруг каждой точки. Пробовал построить углубление точками, но береговая линия нарушается. Этот инструмент в данной задаче работает грубо.
Контур береговой линии должен быть совершено четким. Углубление дна должно быть с плавным скосом (закруглением) во внутрь замкнутого вектора AOI.
Собственно это и есть мой вопрос. Возможно ли, это реализовать в Erdas.

Nik4
Новоприбывший
Сообщения: 3
Зарегистрирован: 27 ноя 2010, 21:43
Репутация: 0

Re: Erdas 9.1 файл высот

Сообщение Nik4 » 28 ноя 2010, 12:35

Может быть эту задачу можно реализовать в какой-то другой программе ?

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

Re: Erdas 9.1 файл высот

Сообщение gamm » 28 ноя 2010, 13:05

Nik4 писал(а):Может быть эту задачу можно реализовать в какой-то другой программе ?
можно, и не в одной, но у вас их вряд ли есть (они из геологии в основном).

Рассказываю, как собрать решение из подручных средств.

1) Рисуем два контура - кромку воды (внутренний), и верхний край брега, где рельеф сохраняется (внешний).
2) Ставим на контурах много точек (с частым шагом). На первом - отметку уреза воды, на втором - снимаем с рельефа.
3) Строим по этим точкам TIN, вставив контура как структурные линии. Можно еще построить дистанционное перобразование от контуров, и интерполировать по линиям тока - но это сложнее.
4) Растеризуем TIN на целевую сетку и впечатываем его по внешнему контуру (внутрь).
5) Если не все слова знакомы, идем учить матчасть (ArcGIS, Surfer, R, C/C++, Fortran - по выбору). Возможно, на сайте ESRI уже есть скрипт, который все это делает.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Erdas 9.1 файл высот

Сообщение Александр Мурый » 28 ноя 2010, 13:12

На первый взгляд кажется, что это можно сделать в любой растровой ГИС. Не знаю, как в Erdas, но в GRASS я бы сделал так:
- создать векторный контур дна озера
- перевести его в растр
- сделать из этого растра маску
- сделать копию общего растра и "пересчитать" (resample) его; получится растр, вырезанный по контуру дна озера
- растровым калькулятором "понизить" дно на заданную величину
- вырезать "старое" дно из общего растра (?)
- соединить (r.patch) общий растр "без дна" и растр "нового дна"
- если в конечном растра будут "дыры", заделать их интерполяцией (r.fillnulls)

P.S. С приложенным к посту файлом было бы понятнее..
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Erdas 9.1 файл высот

Сообщение Александр Мурый » 28 ноя 2010, 13:15

gamm, интересно, а зачем TIN? Если всё равно потом переводить в DEM?
Редактор материалов, модератор форума

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

Re: Erdas 9.1 файл высот

Сообщение gamm » 28 ноя 2010, 15:51

amuriy писал(а):gamm, интересно, а зачем TIN? Если всё равно потом переводить в DEM?
если вы пробовали интерполировать между изолиниями, то ответ, я думаю, знаете :-)

получается проще и надежнее, и думать не надо.

По уму, конечно, нужно взять изолинию выше озера (иначе получим артефакт с кривизной), и "просадить" рельеф по направлению потока до новой кромки воды. Но для этого нужно построить направления потока, а потом вдоль них раскидать "просадку" - не факт, что это можно сделать даже в Арке.

Можно и проще, сделать дистанционное преобразование от верхней и нижней линий, и все ячейки между ними "просадить" линейной интерполяцией - если верх и низ суть изолинии, то значения на них известны, а расстояния до верха и низа нормируем на сумму=1, вычисляем дельту (на которую просадить), и отнимаем от текущего значения ячейки рельефа. Это вроде а Арке можно сделать (нужен итератор по маске), и выглядит нормально :lol:

P.S. кстати, ваш совет - это вроде то, что товарищъ и делал, и ему не понравилось.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Erdas 9.1 файл высот

Сообщение Александр Мурый » 28 ноя 2010, 16:10

если вы пробовали интерполировать между изолиниями

Постоянно этим занят, особых проблем с рельефом не возникает. Видно, здесь вопрос в способах интерполяции.
ваш совет - это вроде то, что товарищъ и делал
Тогда прош.прощ., какгрицца, в Erdas не работаю, не понял мысль..
Редактор материалов, модератор форума

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

Re: Erdas 9.1 файл высот

Сообщение gamm » 28 ноя 2010, 17:15

amuriy писал(а):
если вы пробовали интерполировать между изолиниями
Постоянно этим занят, особых проблем с рельефом не возникает. Видно, здесь вопрос в способах интерполяции.
а чем работаете?

я просто знаю, что для равнинного рельефа проблемы возникают всегда, и не знаю, кто с этим умеет бороться. То, что встроено в Арку, не есть самый лучший вариант, хотя Хатчинсон поработал славно. В МГУ делали систему MAG, добились определенных успехов. У нас товарищ диссер писал, как восстановить поле направлений (нормалей) из изолиний, поскольку интерполировать нужно именно вдоль них. Но полного успеха я нигде не видел, особенно на равнинах, при большим расстоянием между изолиниями и наличии холмистости. Все равно при построении кривизны хорошо видно, где были изолинии.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Erdas 9.1 файл высот

Сообщение Александр Мурый » 28 ноя 2010, 22:26

gamm писал(а): а чем работаете?
Оговорюсь: работаю гл. обр. с горными районами, хотя попадаются всякие =)
Модули GRASS r.surf.contour (лин. интерп-я), v.surf.rst ("regularized spline with tension"), r.surf.nnbathy (ос-но хорош "natural neighbor")

P.S. ..чего и топикстартеру советую попробовать.
Редактор материалов, модератор форума

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

Re: Erdas 9.1 файл высот

Сообщение gamm » 29 ноя 2010, 05:32

amuriy писал(а):
gamm писал(а): а чем работаете?
Оговорюсь: работаю гл. обр. с горными районами, хотя попадаются всякие =)
я догадался, потому и написал про равнину :-)
Модули GRASS r.surf.contour (лин. интерп-я), v.surf.rst ("regularized spline with tension"), r.surf.nnbathy (ос-но хорош "natural neighbor")
понятно - я все эти методы (и многие другие) сам писал, для геологов. Кстати, последний метод дает иногда артефакты при переключении носителя (ячеек Вороного, если окрестность первого порядка). Есть глобальные интерполирующие сплайны Ренке (Renke) поверх триангуляции (исходник есть в архиве ACM), это типа TIN, но С2 гладкая поверхность (с непрерывной 2 производной), и позволяет встраивать структурные линии.

Nik4
Новоприбывший
Сообщения: 3
Зарегистрирован: 27 ноя 2010, 21:43
Репутация: 0

Re: Erdas 9.1 файл высот

Сообщение Nik4 » 30 ноя 2010, 19:58

Огромное спасибо за помощь. Правда, сначала все было как-то запутано, без матчасти не обошлось :) , денек пришлось потратить. Зато результат получился блестящий именно то, что нужно было.
Вот еще проблема. На озерах есть острова, которые нужно как-то изолировать от общего контура AOI. Приходится от берега к каждому острову прорубать своеобразную дорожку. Тем самым я делаю из острова, полуостров. А потом в конце технологического процесса эту дорожку просаживаю.
Вопрос. Я подозреваю, что в Erdas можно как-то объединять два замкнутых вектора AOI которые находятся один в другом, чтоб в результате наружный замкнутый вектор имел внутри отверстие в виде (внутреннего меньшего) замкнутого вектора. В учебнике есть описание только как объединять в группу, но группа просаживает сетку файла высот по наружному контуру, и остров тоже исчезает.

Ответить

Вернуться в «Обработка ДДЗ»

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

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