Страница 1 из 2

поменять X и Y местами. Как?

Добавлено: 07 дек 2011, 23:17
Slinger
Подобный вопрос давно меня интересовал как таковой, а тут на днях подвалила и задача. Был проект, выполненный в панораме. Экспортировали в .mif/.mid, однако, так как панорама работает с геодезической системой координат, .mif/.mid тоже получились некорректными в плане "перевёрнотости" X и Y. Сам проект был утерян. Соответственно в итоге я имею .tab файл с кучей объектов (тип геометрии разный) с перевёрнутыми координатами.

Каким образом можно попытаться "пересчитать" геометрию так, чтобы получились корректные координаты? Была мысль воспользоваться каким-нибудь приложением, где можно было бы при экспорте указывать математическую/геодезическую систему (проще говоря, перевернуть объекты при экспорте)

Имею в наличии различные гис и сапр системы (MI, arcgis, qgis, cad/cad map 3d).

Re: поменять X и Y местами. Как?

Добавлено: 08 дек 2011, 13:40
Алекс
Выгрузите в Панораму, разверните координаты (есть специальная процедура) и верните обратно.

Re: поменять X и Y местами. Как?

Добавлено: 08 дек 2011, 13:49
nadiopt
а если попробовать тупо из мифа запихать координаты в эксель и поменять местами колонки, потом шапку мифа сверху дописать?

Re: поменять X и Y местами. Как?

Добавлено: 08 дек 2011, 14:36
novia
тип геометрии у вас какой?

Re: поменять X и Y местами. Как?

Добавлено: 08 дек 2011, 16:42
Slinger
Алекс писал(а):Выгрузите в Панораму, разверните координаты (есть специальная процедура) и верните обратно.
Попробую найти, спасибо. Хотя по возможности лучше без Панорамы попытаться обойтись
nadiopt писал(а):а если попробовать тупо из мифа запихать координаты в эксель и поменять местами колонки, потом шапку мифа сверху дописать?
Помимо шапки, перед каждыми координатами, присутствует описание объекта. То есть отдельное описание для сммвола, фонта, полигона и прочего. Их много, описания везде разные, и явно без какого-никакого программинга там не обойтись. А программить не позволяет опыт и время :(
novia писал(а):тип геометрии у вас какой?
Там результаты топосъемки, так что геометрия самая разношёрстная

Re: поменять X и Y местами. Как?

Добавлено: 08 дек 2011, 18:09
novia
берите точечные объекты. добавляйте два поля с типом double.
считайте координаты командой вычислить геометрию.

потом на основе таблицы атрибутов - создайте слой точек (команда Добавить данные XY) где используйте правильные x и y

а после - панель инструментов Векторная трансформация
делайте связи смещения точка (id_в старом наборе = id_в новом наборе) - точка.
применяйте трансформацию ко всем слоям

profit.

з.ы. алгоритм рассчитан на ArcGIS. знаете как сделать то же самое в другом ПО, делайте в нем.

Re: поменять X и Y местами. Как?

Добавлено: 08 дек 2011, 20:00
Boris
Не стоит ли прочитать документацию? Хотя бы к формату MIF/MID. В ней указано два варианта решения задачи:
а) манипуляции с масштабами и направлениями осей
на пример здесь http://mapinfo.forum.hut2.ru/viewtopic.php?id=32
Предложение Transform (Преобразование)
б) задание аффинной трансформации для системы координат
Syntax 1
CoordSys Earth
[ Projection type, datum, unitname
[ , origin_longitude ] [ , origin_latitude ]
[ , standard_parallel_1 [ , standard_parallel_2 ] ]
[ , azimuth ] [ , scale_factor ]
[ , false_easting ] [ , false_northing ]
[ , range ] ]
[ Affine Units unitname, A, B, C, D, E, F ]
[ Bounds ( minx, miny ) ( maxx, maxy ) ]

Re: поменять X и Y местами. Как?

Добавлено: 08 дек 2011, 20:38
Slinger
Алекс писал(а):Выгрузите в Панораму, разверните координаты (есть специальная процедура) и верните обратно.
Опцию нашёл, свою задачу решил, ещё раз спасибо.
novia писал(а):берите точечные объекты. добавляйте два поля с типом double.
считайте координаты командой вычислить геометрию.

...
Спасибо, суть понял, обязательно попробую
Boris писал(а): а) манипуляции с масштабами и направлениями осей
Про трансформ в курсе, однако каким образом задание квадрантов и обычных смещений поможет поменять местами X/Y - понять не смог.
Boris писал(а):б) задание аффинной трансформации для системы координат
Если честно - вообще не понял. Можно чуть более конкретно?

Re: поменять X и Y местами. Как?

Добавлено: 09 дек 2011, 01:24
Boris
можно.
аффинная трансформация - способ линейного отображения двух систем координат друг на друга. поддерживает: масштабирование по каждой оси, поворот, отражнение.
Коэффициенты (6 штук) находятся путем решения линейного уравнения о трех точках. В случае замены осей они составляют : 0, -1, 0, -1, 0, 0. Что в соответсвии с хелпом задает:
x1 = 0*x + -1*y +0
y1 = -1*x + 0*y +0

Re: поменять X и Y местами. Как?

Добавлено: 09 янв 2012, 21:28
Slinger
Запоздал я с ответом на месяц, однако решить Вашим методом не получилось. Пробую следуя синтаксису:
Синтаксис 2
CoordSys Nonearth
[ Affine Units unitname, A, B, C, D, E, F ]
Units unitname
[ Bounds ( minx, miny ) ( maxx, maxy ) ]
Мой заголовок в .mif файле:

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

CoordSys NonEarth Affine Units "m", 0, -1, 0, -1, 0, 0 Units "m" Bounds (-10000000, -10000000) (10000000, 10000000)
В результате получаю ошибку, что "встретилось Affine, где ожидается Units". Так что синтаксис с NonEarth почему-то не прокатывает.

Пробовал с первым синтаксисом, там где Earth Projection. MI код съел, однако координаты не перевернул.

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

CoordSys Earth Projection 8, 1001, "m", 38.48333333333, 0, 1, 3250000, -12900.566000000001 Affine Units "m", 0, -1, 0, -1, 0, 0 Bounds (-10000000, -10000000) (10000000, 10000000)

Re: поменять X и Y местами. Как?

Добавлено: 10 янв 2012, 05:50
Petruxin
Опцию нашёл, свою задачу решил, ещё раз спасибо.

Не могу опцию найти. Подскажите "где у нее кнопка" :D (панорама 10.6.)

Re: поменять X и Y местами. Как?

Добавлено: 10 янв 2012, 06:42
Алекс
Выделить все объекты. потом:
В прикладных задачах, в группе "Контроль и исправление данных" задачка "Исправление метрики объектов".

Re: поменять X и Y местами. Как?

Добавлено: 10 янв 2012, 12:41
Petruxin
Спасибо.

Re: поменять X и Y местами. Как?

Добавлено: 10 янв 2012, 22:19
Olga_@@@
эх... поздно тему увидела.
Это в AutoCAD Map или Civil очень просто делается.
Импортируте mif/mid (команда _mapimport с нужными настройками), потом в командную строку скопируйте это выражение: _MIRROR _ALL 0,0 1000,1000 _Y '_.zoom _e

ps после _.zoom _e пробел стоит не случайно, копируйте вместе с ним. Проверьте, чтобы после ALL стояло 2 пробела.
Если операцию надо повторять часто, есть смысл посадить этот макрос на кнопку.

Re: поменять X и Y местами. Как?

Добавлено: 12 янв 2012, 00:18
Slinger
Olga_@@@

Огромное спасибо, всё получилось. Правда не так, как хотелось, так как после операции "_mirror _all" автокад всё ещё ждет подтверждения в плане нажатия волшебного Enter, а в макросе этого не указано. Или может быть какую-то настройку для када провести надо было. Так что пришлось в первый раз всё вручную вводить. В любом случае я этот замечательный макрос переписал для AutoHook'a и теперь всё работает. Вот бы ещё разгадать загадку, почему вторая точка зеркала 1000/1000...