Страница 1 из 1
Как можно "натянуть" вектор на растр?
Добавлено: 12 ноя 2010, 19:37
Olga_@@@
Подскажите, пожалуйста, какой-нибудь способ подтягивания вектора к растру.
Нам дали растр 1: 25000 и вектор 1:100000. Работу выпускаем на 25-ке. Сравнили сегодня речную сеть, принципиально все совпадает, но точно не садится и ошибка идет не за счет некорректоного пересчета из одной СК в другую, а просто 100-ка по какой-то другой основе оцифрована. Особенно хорошо на меандре видно - рисунок петель заметно отличается, т.е. проблема не в СК. Хотелось бы как-то подтянуть вектор к растру, потому что цифровать и заново вводить семантику будет очень долго, территория не маленькая.
ЗЫ получить готовый вектор на 25-ку пока нереально, хотя всем понятно, что это было бы лучшим решением проблемы
Re: Как можно "натянуть" вектор на растр?
Добавлено: 12 ноя 2010, 20:42
gamm
Olga_@@@ писал(а):Подскажите, пожалуйста, какой-нибудь способ подтягивания вектора к растру.
Нам дали растр 1: 25000 и вектор 1:100000. Работу выпускаем на 25-ке. Сравнили сегодня речную сеть, принципиально все совпадает, но точно не садится и ошибка идет не за счет некорректоного пересчета из одной СК в другую, а просто 100-ка по какой-то другой основе оцифрована. Особенно хорошо на меандре видно - рисунок петель заметно отличается, т.е. проблема не в СК. Хотелось бы как-то подтянуть вектор к растру, потому что цифровать и заново вводить семантику будет очень долго, территория не маленькая.
если умеете программировать, то несложно.
1) Строим "вектора сдвига" - кого куда нужно подвинуть, получаем табличку (Xold,Yold,Xnew,Ynew)
2) Убираем систематическую составляющую (либо "жесткий" поворот с переносом, либо линейное-афинное преобразование). Получаем систематически "повернутые" координаты Xold.t,Yold.t и поправки к ним, полученные вычитанием "повернутых" из Xnew,Ynew => (Xold.t,Yold.t,dX,dY)
3) Строим модель dX=f(Xold.t,Yold.t), dY=g(Xold.t,Yold.t). Здесь дело вкуса, лучше использовать что-нибудь консервативное, например метод Акина поверх триангуляции Делоне. Чтобы избежать чудес при экстраполяции, лучше задать "на бесконечности" (по кругу, далеко от области) нулевые сдвиги. Геологи звали это "прижать крылышки". Можно использовать gam() из пакета mgcv (R), типа gam(dX~s(Xold.t,Yold.t,bs="cs",k=7) ...); ,k=7 (или 5) и bs="cs" добавит консерватизьма. Ну, и крылышки прижать.
4) Берем вектор, вытаскиваем координаты, "поворачиваем", применяем поправки, записываем координаты взад
5) Все это можно делать в R.
6) Смотрим, что получилось. Боюсь, локальные вещи типа меандров придется все равно руками доводить ...
Re: Как можно "натянуть" вектор на растр?
Добавлено: 12 ноя 2010, 20:51
Донецков
Вектор на растр - используйте Autodesk Map 3D - позволяет совместить вектр по набору точек (исходная - конечная) с растром или другим вектром...
Нечто похожее есть в MapInfo и в ArcView (в утилитах), но более простой вариант...
Re: Как можно "натянуть" вектор на растр?
Добавлено: 12 ноя 2010, 21:00
gamm
Донецков писал(а):Вектор на растр - используйте Autodesk Map 3D - позволяет совместить вектр по набору точек (исходная - конечная) с растром или другим вектром...
Нечто похожее есть в MapInfo и в ArcView (в утилитах), но более простой вариант...
особенно хорошо уродует вектор Мапинфо. Для реальных работ от всей души не рекомендую. Остальные не знаю, но наверняка полином, который даст проблемы при экстраполяции.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 12 ноя 2010, 21:30
Boris
не хотелось бы портить научную дискуссию, но рисунок петель ничего не определяет в различии векторов, поднятых с разных масштабов. Надо бы что-то более "человечное" сравнить. Дороги, железные дороги, мосты и т.п. Все таки масштабы прилично разняться, и за счет разных коэффициенотов генерализации карт различия в кривизне и должны быть такими.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 12 ноя 2010, 21:43
gamm
Boris писал(а):не хотелось бы портить научную дискуссию, но рисунок петель ничего не определяет в различии векторов, поднятых с разных масштабов. Надо бы что-то более "человечное" сравнить. Дороги, железные дороги, мосты и т.п. Все таки масштабы прилично разняться, и за счет разных коэффициенотов генерализации карт различия в кривизне и должны быть такими.
а это лечится только автокоррелятором, но я не знаю, есть ли он в промышленных системах (это вопрос скорее к товарищам из EasyTrace)
То, что написал, лечит только неравномерность протяжки сканера и пр. аналогичные вещи.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 12 ноя 2010, 22:49
syroezhka
А вот этот аргисовский способ не подойдет?
http://gis-lab.info/qa/shapewarp.html
Boris писал(а):не хотелось бы портить научную дискуссию, но рисунок петель ничего не определяет в различии векторов, поднятых с разных масштабов. Надо бы что-то более "человечное" сравнить. Дороги, железные дороги, мосты и т.п. Все таки масштабы прилично разняться, и за счет разных коэффициенотов генерализации карт различия в кривизне и должны быть такими.
И может действительно речную сеть притяивать к снимку какому-нибуть свежему? Она-то наиболлее изменчивый элемент и различия в картах могут быть из-за различных годов издания, а не из-за масштаба.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 13 ноя 2010, 19:03
Донецков
По поводу экстраполяции - сильно зависит от количество вводимых реперных точек, чем больше тем лучше, но меру знать надо, на практике вводил ок. 400 в Map 3D на территорию 70 на 30 км...
Re: Как можно "натянуть" вектор на растр?
Добавлено: 13 ноя 2010, 20:02
gamm
Донецков писал(а):По поводу экстраполяции - сильно зависит от количество вводимых реперных точек, чем больше тем лучше, но меру знать надо, на практике вводил ок. 400 на территорию 70 на 30 км...
результат экстраполяции зависит не столько от числа точек, сколько от использованной модели (в частности, интерполяция это или аппроксимация) и расположения точек. И для нормальных методов чем больше точек, тем лучше - мы и тысячи точек использовали (с коррелятора).
Re: Как можно "натянуть" вектор на растр?
Добавлено: 14 ноя 2010, 00:15
Olga_@@@
Спасибо всем, кто откликнулся. Но, проблема пока не решилась. Механическая подтяжка и трансформация вектора по набору точек в этом случае не поможет - это очень долго и все равно не совпадет, т.к. прорисовка разная.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 15 ноя 2010, 07:32
gamm
Olga_@@@ писал(а):Спасибо всем, кто откликнулся. Но, проблема пока не решилась. Механическая подтяжка и трансформация вектора по набору точек в этом случае не поможет - это очень долго и все равно не совпадет, т.к. прорисовка разная.
аналогичная задача решалась в свое время для SPOT (видел статью). Там выделяли гидросеть на снимке (у вас - на "базовой" карте), а потом запускали коррелятор (snake) для того, чтобы поменять конфигурацию того, что "натягивают". Выделить "базовую" гидросеть можно, я думаю, использовав EasyTrace или цветоделение. Промышленных программ, реализующих snake, я не знаю, но исследовательских видел много. Может быть, проще оттрасировать гидросеть с растра ...
Re: Как можно "натянуть" вектор на растр?
Добавлено: 15 ноя 2010, 07:41
Olga_@@@
gamm писал(а):Может быть, проще оттрасировать гидросеть с растра ...
Да, это было бы проще, но жалко терять заполненные атрибутивные данные.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 15 ноя 2010, 13:58
gamm
Olga_@@@ писал(а):gamm писал(а):Может быть, проще оттрасировать гидросеть с растра ...
Да, это было бы проще, но жалко терять заполненные атрибутивные данные.
тогда ищите snake ... я это делал руками (в смысле программу), работает более-менее, но контроль "глазками" нужен. Другой вариант, если речь про атрибуты, векторизация растра, и указание (руками или по признаку пересечения), кто кому соответствует, это можно сделать в любой ГИС.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 15 ноя 2010, 16:15
Olga_@@@
Понятно, спасибо. Но, все равно, повторной векторизации мучительно хочется избежать

По-гуглила, нашлась
статья с упоминанием о
snake и больше ничего пока.
Re: Как можно "натянуть" вектор на растр?
Добавлено: 15 ноя 2010, 16:36
gamm
Olga_@@@ писал(а):Понятно, спасибо. Но, все равно, повторной векторизации мучительно хочется избежать

По-гуглила, нашлась
статья с упоминанием о
snake и больше ничего пока.
я не советую искать и читать по русски, это обычно школярские перепевы того, что кто-то прочитал по английцки.
вам скорее нужно искать snake line match image source, только отключите русские сайты. Получите что-то типа
http://goliath.ecnext.com/coms2/gi_0199 ... h-for.html
http://www.thefreelibrary.com/A+snake-b ... 0158683391
но искать можно долго ...