Изменение масштаба у слоя

MapInfo, MapBasic
Ответить
Mitncik
Новоприбывший
Сообщения: 7
Зарегистрирован: 17 янв 2014, 19:28
Репутация: 0

Изменение масштаба у слоя

Сообщение Mitncik » 17 янв 2014, 19:32

Всем привет. Случилась не особо приятная проблема - привязал растр, оцифровал карту и тут всплыла ошибка в привязке(ошибся в масштабе карты). Сам растр перерегистрировал, но все остальные слои остались в прежнем масштабе. Соответственно возникает вопрос: возможно ли их также масштабировать или придётся оцифровывать заново?

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: Изменение масштаба у слоя

Сообщение ginpetr » 17 янв 2014, 19:57

одно время пользовался утилитами афинного преобразования, их две было одного автора. одна преобразовывала только одну таблицу, другая осуществляла пакетное преобразование. там сначала создавалось три пары соответствующих точек, а потом с их помощью трансформировались таблицы.
пользовались, когда только изучали мапинфо, сейчас уже забыли про них. Но они работали, проблемы, кажется, только с текстовыми объектами были.

[ Сообщение с мобильного устройства ]

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

Re: Изменение масштаба у слоя

Сообщение Boris » 17 янв 2014, 21:51

есть как минимум 3 варианта решения проблемы, которые зависят от того была ли неверно указана и начальная точка, т.е. она подвергается масштабной коррекции или остается неизменной ( в этом случае это уже не масштабирование, а пересчет по 2-м точкам):
а) в заголовке MIF можно указать масштаб в каждом из квадарантов
б) в описании координатной системы Coordsys в MIF файле можно указать аффинное преобразование
в) сторонние программы: FME Universal Translator
---
самый незамысловатый вариант - открыть MIF файл пересчитать указанные в нем координаты
---
все перечисленное имеет смысл, если вам известны числовые искажения, если же они вычисляемые путем расстановки пар точек, то упомянутая выше программа аффинного преобразования делает это хорошо. единственный минус, что в случае известных числовых погрешностей, она не дает вводить точки в ручную, а требует указать их с пары карт.

Mitncik
Новоприбывший
Сообщения: 7
Зарегистрирован: 17 янв 2014, 19:28
Репутация: 0

Re: Изменение масштаба у слоя

Сообщение Mitncik » 17 янв 2014, 22:02

Boris писал(а):есть как минимум 3 варианта решения проблемы, которые зависят от того была ли неверно указана и начальная точка, т.е. она подвергается масштабной коррекции или остается неизменной ( в этом случае это уже не масштабирование, а пересчет по 2-м точкам)
В моём случае, наверное, не правильно введены были все точки при регистрации растра. Для расчёта угловых координат растра был использован масштаб 1:25000, ошибка оказалась в том, что в действительности масштаб 1:2500(увы, закралась опечатка). И, соответственно, все четыре точки, координаты которых задавались для привязки, не правильны.

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

Re: Изменение масштаба у слоя

Сообщение Boris » 17 янв 2014, 23:58

не понял - начальные точки имеют правильную координату или их координаты то же надо уменьшить изменить в 10 раз?
В остальном работы на 5 минут, если работали в план-схеме. В MIF файле меняем метры на миллиметры, импортируем, сохраняем таблицу в сантиметры, выгружаем в MIF, и заменяем сантиметры на метры, импортируем в Mapinfo.

Mitncik
Новоприбывший
Сообщения: 7
Зарегистрирован: 17 янв 2014, 19:28
Репутация: 0

Re: Изменение масштаба у слоя

Сообщение Mitncik » 18 янв 2014, 00:29

Boris писал(а):не понял - начальные точки имеют правильную координату или их координаты то же надо уменьшить изменить в 10 раз?
Ну вот файл по которому рассчитывались координаты точек для привязки растра
Boris писал(а): В остальном работы на 5 минут, если работали в план-схеме.
Работал как раз в план-схеме, но ваш вариант на 5 минут вряд ли подойдёт

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

Re: Изменение масштаба у слоя

Сообщение Boris » 18 янв 2014, 02:52

присланный файл не говорит ни о чем, кроме того, что-то не так. Это точно не привязка растра, используемая в мапинфо. И другие пакеты то же так растр по центру не привязывают. Выложите файла TAB в исходной и в правильной привязке. Размер вы его уже указали. Тогда и ясно будет какая операция по изменению координат была использована. Пока, предположительно, это масштабирование и смещение. А там может и поворот вылезет.

Mitncik
Новоприбывший
Сообщения: 7
Зарегистрирован: 17 янв 2014, 19:28
Репутация: 0

Re: Изменение масштаба у слоя

Сообщение Mitncik » 18 янв 2014, 14:24

Boris писал(а):Выложите файла TAB в исходной и в правильной привязке.
я закинул файлы TAB правильной и исходной. К исходной также докинул один из слоёв которые как раз и нужно смаштабировать.

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

Re: Изменение масштаба у слоя

Сообщение Boris » 19 янв 2014, 05:03

Вот так должна выглядеть строка с координатной системой во всех ваших файлах:

Код: Выделить всё

CoordSys NonEarth Units "m" Affine Units "m", 7.5, 0, -33553, 0, 7.5, -33553 Bounds (-1902.375, -2864.796875) (12226.375, 13188.79688)
Порядок действий описан выше, но я его повторю:
1. экспортируйте все ранее введенные слои в формат MIF/MID. По одному или используйте имеющиеся в сети утилиты, что бы сделать это массово, т.к. мапинфо делает экспорт-импорт по одному файлу/слою за раз.
2. во всех полученных MIF файлах строку с Coordsys замените на строку, приведенную выше. Для присланного файла строка

Код: Выделить всё

CoordSys NonEarth Units "m" Bounds (-1902.375, -2864.796875) (12226.375, 13188.79688)
меняется на

Код: Выделить всё

CoordSys NonEarth Units "m" Affine Units "m", 7.5, 0, -33553, 0, 7.5, -33553 Bounds (-1902.375, -2864.796875) (12226.375, 13188.79688)
или вставьте вот эту подстроку

Код: Выделить всё

 Affine Units "m", 7.5, 0, -33553, 0, 7.5, -33553
между "m" и Bounds
3. Импортируйте исправленные MIF файлы MapInfo, предварительно закройте исходные слои;
4. Сохраните полученные слои в новые файлы. При сохранении обязательно выберите новую координатную систему "План-схема". Границы укажите такие от 4000 до 63000, и для X, и для Y - одинаковые.
---
Не забудьте сделать копии исходных файлов, т.к. при сохранении Мапинфо может их затереть.
---
Хочу обратить ваше внимание на то, что растр привязан неверно. Т.к. у него (видимо) заданы координаты, в которых X - север, а Y - восток, т.е. левосторонняя система координат (принятая в геодезии), в то время как мапинфо оперирует правосторонней системой координат, X - восток, а Y - север. В этом легко убедится, если сперва открыть векторный слой, а потом растр. В этом случае растр будет изображен зеркально.
В случае, если вы будете использовать слои без растра, или без специальных ухищрений, заменяющих систему координат окна карты на зеркальную, ваши слои будут изображаться в непривычном виде.

Mitncik
Новоприбывший
Сообщения: 7
Зарегистрирован: 17 янв 2014, 19:28
Репутация: 0

Re: Изменение масштаба у слоя

Сообщение Mitncik » 19 янв 2014, 12:45

Boris писал(а):Вот так должна выглядеть строка с координатной системой во всех ваших файлах
Премного благодарен, всё получилось. А можете рассказать еще именно про это аффинное преобразование? Каким образом были определены эти поправки? Просто на будущее.
Boris писал(а):Хочу обратить ваше внимание на то, что растр привязан неверно.
Хм, действительно. Не обратил внимание как-то сразу. В дальнейшем учту, а сейчас оно еще не критично так как эту карту я оцифровываю на курсовой проект и данная ошибка не будет сильно влиять не итог.

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

Re: Изменение масштаба у слоя

Сообщение Boris » 19 янв 2014, 18:44

Mitncik писал(а): А можете рассказать еще именно про это аффинное преобразование? Каким образом были определены эти поправки? Просто на будущее.
Аффинное преобразование вскользь (как очевидное) описано в руководстве и справке по мапифно. Оно сводится к добавлению указанной мной вставки "Affine" в координатную строку. Согласно руководству это 6 параметров линейного преобразования.
Само аффинное преобразование описано многократно в разных местах. Нахождение параметров аффинного преобразования требует решения системы линейных уравнений на 3-х известных двумерных точках. Что я собственно и проделал с вашими данными. Единственное допущение, что точки вы ввели точно, и следовательно 4-я точка может быть получена после нахождения параметров, как проверочная. Так и вышло. В случае, когда точки введены с погрешностью, и их больше минимально необходимых 3-х, решение требует усреднения, как правило методом наименьших квадратов. В этом случае имеет место программирование. В случае 3-х точек, все сводится к решению линейной системы уравнений. Я это делаю в Excel путем перемножения матриц.
---
Единственное "НО", состоит в том, как я читаю справку и руководство, выходит, что надо искать параметры перехода от неправильных точек, координаты которых и сохранены в таблице мапинфо, к реальным. По факту выходит, что надо найти параметры обратного перехода от правильных к неправильным. Но это "НО" требует проверки по разным источникам. Хотя в вашем случае было именно так.

Ответить

Вернуться в «MapInfo»

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

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