www.map-info.ru :: Просмотр темы - Помогите убрать искажения геометрии
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
batmax



Зарегистрирован: 03.06.2009
Сообщения: 14

СообщениеДобавлено: Ср Окт 14, 2009 8:43 am    Заголовок сообщения: Помогите убрать искажения геометрии Добавить ответ со ссылкой на данный текст

Есть проект с двумя слоями - растровым и векторным (можно скачать на http://files.mail.ru/04M9BS). Когда они открываются вместе (в одном рабочем наборе), то искажений нет. Но если открыть отдельно векторный слой либо экспортировать его в MIF-формат, то он будет искажён - растянут по диагонали и перевёрнут. Пожалуйста, подскажите, как мне экспортировать векторный слой в том виде, как он представлен, когда открывается вместе с растром.
P.S.: Очень интересная ситуация, непонятно, откуда берутся искажения, точнее, куда они исчезают, когда набор включает и векторный, и растровый слои. Кстати, растровый слой, открытый в ГИС ObjectLand, имеет точно такие же искажения, как и векторный. То есть имеем два искажённых слоя, которые в одном рабочем наборе открываются нормально.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Ср Окт 14, 2009 5:05 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Все очень просто - неправильно привязан растр.
Если включить показ координат курсора (в строке статуса) и поездить мышой вверх-низ и понаблюдать за изменением Y координаты то обнаружатся следующие закономерности:
На карте с растром начало координат находится в левом-верхнем углу.
На карте с границей (проекция план-схема) начало координат находится в левом-нижнем углу.

Нужно заново привязать растр, чтобы начало координат всетаки было в левом-нижнем углу.

P.S. растр вроде 50 000 масштаба. Не боитесь фсб? Мне тут на днях объясняли, что обрезка зарамочного не спасет если поймают. + я думаю еще и привязан в гос. системе координат.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
batmax



Зарегистрирован: 03.06.2009
Сообщения: 14

СообщениеДобавлено: Ср Окт 14, 2009 5:53 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

to spawner
То есть, насколько я понял, привязка растра задаёт эти искажения ? Непонятно, почему в MapInfo растр (отдельно от вектора) отображается правильно, а в ObjectLand (он умеет импортировать растры с привязкой в формате TAB) - искажённо ? Хочется разобраться всё-таки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
spawner



Зарегистрирован: 01.04.2009
Сообщения: 77

СообщениеДобавлено: Ср Окт 14, 2009 6:26 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

да, привязка неправильная. низ и верх перепутан, а мапинфо не умеет вращать растры -> она переворачивает вектор -> получается перевернутый вектор.
а если программа умеет переворачивать растр, то она его перевернет вверх ногами. вместе с вектором.

еще раз:
точка 1 находится в верхнем-левом угру растра, ее реальная Y координата =385792
точка 2 находится в нижнем-левом углу растра,ее Y=390455

при такой привязке реальная координата Y при движении вверх по растру (от точки 2 до точки 1)будет уменьшаться. а она должна расти (начало реальных координат в левом-нижнем углу, а не в левом-верхнем как у растра)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arhara



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Чт Окт 15, 2009 4:55 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Странно. Я на днях лечил такой же случай по просьбе автора. Если - это другой, то что это эпидемия?
---
MI старых версий (< 8.0) и новых, если это не задано в системных настройках или настройках окна - "перепроецировать растр", всегда:
1) привязывает раст по трем точкам, или среднему от всех точек приведенному к аффинному преобразованию
2) при совместном отображении растра и вектора устанавливает систему координат окна, так, что бы растр, занимающий большую часть экрана, по отношению к остальным отображаемым или включенным в слои(!) растрам, был параллелен сторонам экрана
3) верх у растра будет таким, что точка (0;0) или (1;1) растра будет располагаться в верхнем левом углу.
ДАЖЕ если это исказит систему координат, в случае, если растр был повернут относительно исходной систему координат.
Поэтому MI - плохой векторизатор.
И все искажения, если НЕ нарушен масштаб, который приводит уже к искажениям за счет проекции, должны быть аффинными.
Поэтому достаточно применить включенную в MI программку "Трансформация вектора" по 3-м точкам и все будет нормально.
Возможны сложности, если масштаб исзодного и конечного вектора разниться на порядки (от масштаба 100 и выше). Поскольку в этом случае происходит сохранение в таблицу с аналогичными установками границ и минимальной единицы проекта, то плавные ломанные могут превратиться в "грубо" ломанные за счет округления координат.
---
ПО моему, мы уже как-то решали аналогичную проблему, когда плюс надо было заменить на минус на этом форуме.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
batmax



Зарегистрирован: 03.06.2009
Сообщения: 14

СообщениеДобавлено: Пт Окт 16, 2009 7:28 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

to Arhara:
Спасибо, что нормально объяснил, как MapInfo привязывает растры.

to All:
Из вышеописанной ситуации я выкрутился так:
1) импортировал и вектор, и растр в ObjectLand (растр импортировал как TAB, начиная с версии 2.6.9 ObjectLand это делает);
2) Применил к вектору и растру аффинную трансформацию, а координаты взял из TAB-файла растра (открыл TAB-файл в Блокноте), только надо X и Y поменять местами. Таким образом, привёл вектор и растр в систему координат растра, при этом они оба оказались в начале координат и отзеркаленными относительно оси OX (потому что у растра ось ординат направлена сверху вниз). После этого шага искажения уже убраны.
3) Ещё одним тривиальным аффинным преобразованием отзеркалил растр и вектор относительно оси OX.

Дальше надо применить трансформацию, чтобы привязать вектор и растр в реальную карту, но это уже выходит за рамки поставленной задачи - убрать искажения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - ГИС 'MapInfo' Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru