Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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.
Дальше надо применить трансформацию, чтобы привязать вектор и растр в реальную карту, но это уже выходит за рамки поставленной задачи - убрать искажения. |
|
Вернуться к началу |
|
|
|