На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

[MAPAPI] Получение данных о проекции растра

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: Пред. 1 2 3
RSS
[MAPAPI] Получение данных о проекции растра, [MAPAPI] Получение данных о проекции растра
 
Спасибо.
 
Цитата
Dmitry_ написал:
Если в функциях привязки растра параметр hmap задать равным 0, то растр будет открыт в отдельном документе:
Функция RswTransformingBySquareMethod не запускается (возвращает 0) если ей передать первым параметром 0, то есть открывать растр в отдельном документе нужно самому.
И все другие функции из семейства функций привязок вроде тоже без hmap не запускаются.

Но это в версии 12.5.0 gisdesigner.

Может в следующих версиях уже по другому будет.


По поводу разницы алгоритмов.
Насколько я понял,
AttachRswWithScalingAndRotation - это линейное преобразование, сдвиг - масштаб - поворот, двух точек достаточно для вычисления параметров.
RswTransformingBySquareMethod - это линейное преобразование, афинное (A0, A1, A2; B0, B1, B2) X = A0 + A1*Xi + A2*Yi; Y = B0 + B1*Xi + B2*Yi.  Шесть параметров вычисляются методом наименьших квадратов, поэтому нужно минимум 4 точки (чтобы количество строк в матрице было больше чем количество столбцов = 3)

RswTransformingByBorderMethod - это нелинейное преобразование (видимо, "нелинейный резиновый лист", как описано здесь: http://help.gisserver.ru/ru/rswtrans/rtip.html), не уверен.

И насколько я понял, для этого метода важно, чтобы опорные точки распологались на рамке листа ( 4 угла), а если опорных точек больше 4, то они должны распологаться равномерно.


Далее, для растров уже спроецированных на плоскость (то есть, находящихся в какой-то локальной прямоугольной системе координат) лучше применять линейные преобразования.
Так же, линейные преобразования есть смысл применять для растров, немного сдвинутых относительно векторной карты (или более точной растровой).
То есть, это случаи когда у вас уже привязанный растр при наложении на основную карту немного смещён/повернут.
Или, когда у вас есть скриншот района из гугло/яндекс карт, и вы хотите его привязать.

Нелинейные преобразования (которое RswTransformingByBorderMethod) лучше применять для отсканированных бумажных листов топографической карты, когда привязка идёт по рамке и/или точкам пересечения километровой сетки. И в этом случае чем больше точек, тем лучше.


Поправьте меня пожалуйста,  если я неправильно что-нибудь написал.
 
Цитата
Владимир Егоров написал:
При этом вручную внести эти данные в Rsw файл я не могу, так как функция picexLoadRasterToRswUn создаёт файл в формате 1.04, который закрыт, я нашёл только описание формата версии 2.00 и 2.01
Я нашёл упоминание этой версии в mappicex.h, с декабря 2018-го года получается искал =)
Код
//========================================================================
// Привязка растра с масштабированием по двум точкам
// Внимание: Возможна устанавка отличных друг от друга размеров пикселя по X и по Y
//
// ВАЖНО:
// Если размеры пикселя по X и по Y отличаются друг от друга, то в растр
// устанавливается версия  1.04 (0x0104).
// Растры версии 1.04 открываются в ПО начинаяя с 11-ой версии.
//
// hMap        - карта, содержащая векторные данные;
// rswName     - имя файла растра
// pointMet1   - Координаты первой точки  в метрах
// pointMet1   - Координаты первой точки в метрах
// pointMet2   - Координаты второй точки  в метрах
// pointMet2   - Координаты второй точки в метрах
// message     - флаг на выдачу сообщений (0\1)
// При ошибке возвращает ноль
//========================================================================
_PICIMP long int _PICAPI AttachRswWithScaling(HMAP hMap, const char* rswName,
                                             DOUBLEPOINT *pointMet1, DOUBLEPOINT *pointMetNew1,
                                             DOUBLEPOINT *pointMet2, DOUBLEPOINT *pointMetNew2,
                                             int message);

То есть на сайте в документации к rsw/mtw не хватает пометки про эту особенность.
 
Цитата
Владимир Егоров написал:
RswTransformingByBorderMethod
полином 4 коэффициента - минимум 4 точки
Цитата
Владимир Егоров написал:
RswTransformingBySquareMethod
тоже самое - устаревшая
Цитата
Владимир Егоров написал:
AttachRswWithScalingAndRotation
сдвиг,масштаб, поворот - минимум 2 точки
Функции, трансформирующей растр по резиновому листу нет.
Страницы: Пред. 1 2 3
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности