Как можно "натянуть" вектор на растр?

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Как можно "натянуть" вектор на растр?

Сообщение Olga_@@@ » 12 ноя 2010, 19:37

Подскажите, пожалуйста, какой-нибудь способ подтягивания вектора к растру.
Нам дали растр 1: 25000 и вектор 1:100000. Работу выпускаем на 25-ке. Сравнили сегодня речную сеть, принципиально все совпадает, но точно не садится и ошибка идет не за счет некорректоного пересчета из одной СК в другую, а просто 100-ка по какой-то другой основе оцифрована. Особенно хорошо на меандре видно - рисунок петель заметно отличается, т.е. проблема не в СК. Хотелось бы как-то подтянуть вектор к растру, потому что цифровать и заново вводить семантику будет очень долго, территория не маленькая.

ЗЫ получить готовый вектор на 25-ку пока нереально, хотя всем понятно, что это было бы лучшим решением проблемы
У меня из Apple дома только компот.

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

Re: Как можно "натянуть" вектор на растр?

Сообщение gamm » 12 ноя 2010, 20:42

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) Смотрим, что получилось. Боюсь, локальные вещи типа меандров придется все равно руками доводить ...

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Как можно "натянуть" вектор на растр?

Сообщение Донецков » 12 ноя 2010, 20:51

Вектор на растр - используйте Autodesk Map 3D - позволяет совместить вектр по набору точек (исходная - конечная) с растром или другим вектром...

Нечто похожее есть в MapInfo и в ArcView (в утилитах), но более простой вариант...

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

Re: Как можно "натянуть" вектор на растр?

Сообщение gamm » 12 ноя 2010, 21:00

Донецков писал(а):Вектор на растр - используйте Autodesk Map 3D - позволяет совместить вектр по набору точек (исходная - конечная) с растром или другим вектром...

Нечто похожее есть в MapInfo и в ArcView (в утилитах), но более простой вариант...
особенно хорошо уродует вектор Мапинфо. Для реальных работ от всей души не рекомендую. Остальные не знаю, но наверняка полином, который даст проблемы при экстраполяции.

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

Re: Как можно "натянуть" вектор на растр?

Сообщение Boris » 12 ноя 2010, 21:30

не хотелось бы портить научную дискуссию, но рисунок петель ничего не определяет в различии векторов, поднятых с разных масштабов. Надо бы что-то более "человечное" сравнить. Дороги, железные дороги, мосты и т.п. Все таки масштабы прилично разняться, и за счет разных коэффициенотов генерализации карт различия в кривизне и должны быть такими.

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

Re: Как можно "натянуть" вектор на растр?

Сообщение gamm » 12 ноя 2010, 21:43

Boris писал(а):не хотелось бы портить научную дискуссию, но рисунок петель ничего не определяет в различии векторов, поднятых с разных масштабов. Надо бы что-то более "человечное" сравнить. Дороги, железные дороги, мосты и т.п. Все таки масштабы прилично разняться, и за счет разных коэффициенотов генерализации карт различия в кривизне и должны быть такими.
а это лечится только автокоррелятором, но я не знаю, есть ли он в промышленных системах (это вопрос скорее к товарищам из EasyTrace) :D

То, что написал, лечит только неравномерность протяжки сканера и пр. аналогичные вещи.

Аватара пользователя
syroezhka
Завсегдатай
Сообщения: 290
Зарегистрирован: 21 апр 2008, 21:22
Репутация: 5
Откуда: 50°26'N 30°31'E
Контактная информация:

Re: Как можно "натянуть" вектор на растр?

Сообщение syroezhka » 12 ноя 2010, 22:49

А вот этот аргисовский способ не подойдет?
http://gis-lab.info/qa/shapewarp.html
Boris писал(а):не хотелось бы портить научную дискуссию, но рисунок петель ничего не определяет в различии векторов, поднятых с разных масштабов. Надо бы что-то более "человечное" сравнить. Дороги, железные дороги, мосты и т.п. Все таки масштабы прилично разняться, и за счет разных коэффициенотов генерализации карт различия в кривизне и должны быть такими.
И может действительно речную сеть притяивать к снимку какому-нибуть свежему? Она-то наиболлее изменчивый элемент и различия в картах могут быть из-за различных годов издания, а не из-за масштаба.

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Как можно "натянуть" вектор на растр?

Сообщение Донецков » 13 ноя 2010, 19:03

По поводу экстраполяции - сильно зависит от количество вводимых реперных точек, чем больше тем лучше, но меру знать надо, на практике вводил ок. 400 в Map 3D на территорию 70 на 30 км...
Последний раз редактировалось Донецков 13 ноя 2010, 20:16, всего редактировалось 1 раз.

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

Re: Как можно "натянуть" вектор на растр?

Сообщение gamm » 13 ноя 2010, 20:02

Донецков писал(а):По поводу экстраполяции - сильно зависит от количество вводимых реперных точек, чем больше тем лучше, но меру знать надо, на практике вводил ок. 400 на территорию 70 на 30 км...
результат экстраполяции зависит не столько от числа точек, сколько от использованной модели (в частности, интерполяция это или аппроксимация) и расположения точек. И для нормальных методов чем больше точек, тем лучше - мы и тысячи точек использовали (с коррелятора).

Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Re: Как можно "натянуть" вектор на растр?

Сообщение Olga_@@@ » 14 ноя 2010, 00:15

Спасибо всем, кто откликнулся. Но, проблема пока не решилась. Механическая подтяжка и трансформация вектора по набору точек в этом случае не поможет - это очень долго и все равно не совпадет, т.к. прорисовка разная.
У меня из Apple дома только компот.

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

Re: Как можно "натянуть" вектор на растр?

Сообщение gamm » 15 ноя 2010, 07:32

Olga_@@@ писал(а):Спасибо всем, кто откликнулся. Но, проблема пока не решилась. Механическая подтяжка и трансформация вектора по набору точек в этом случае не поможет - это очень долго и все равно не совпадет, т.к. прорисовка разная.
аналогичная задача решалась в свое время для SPOT (видел статью). Там выделяли гидросеть на снимке (у вас - на "базовой" карте), а потом запускали коррелятор (snake) для того, чтобы поменять конфигурацию того, что "натягивают". Выделить "базовую" гидросеть можно, я думаю, использовав EasyTrace или цветоделение. Промышленных программ, реализующих snake, я не знаю, но исследовательских видел много. Может быть, проще оттрасировать гидросеть с растра ...

Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Re: Как можно "натянуть" вектор на растр?

Сообщение Olga_@@@ » 15 ноя 2010, 07:41

gamm писал(а):Может быть, проще оттрасировать гидросеть с растра ...
Да, это было бы проще, но жалко терять заполненные атрибутивные данные.
У меня из Apple дома только компот.

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

Re: Как можно "натянуть" вектор на растр?

Сообщение gamm » 15 ноя 2010, 13:58

Olga_@@@ писал(а):
gamm писал(а):Может быть, проще оттрасировать гидросеть с растра ...
Да, это было бы проще, но жалко терять заполненные атрибутивные данные.
тогда ищите snake ... я это делал руками (в смысле программу), работает более-менее, но контроль "глазками" нужен. Другой вариант, если речь про атрибуты, векторизация растра, и указание (руками или по признаку пересечения), кто кому соответствует, это можно сделать в любой ГИС.

Аватара пользователя
Olga_@@@
Гуру
Сообщения: 715
Зарегистрирован: 24 фев 2009, 15:42
Репутация: 0
Ваше звание: городошник
Откуда: Екатеринбург
Контактная информация:

Re: Как можно "натянуть" вектор на растр?

Сообщение Olga_@@@ » 15 ноя 2010, 16:15

Понятно, спасибо. Но, все равно, повторной векторизации мучительно хочется избежать :)
По-гуглила, нашлась статья с упоминанием о snake и больше ничего пока.
У меня из Apple дома только компот.

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

Re: Как можно "натянуть" вектор на растр?

Сообщение gamm » 15 ноя 2010, 16:36

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

но искать можно долго ...

Ответить

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

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

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