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

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 23 ноя 2010, 08:46

В продолжении темы применение "Применение GRASS в геологии и геофизике" возник вопрос об подмене осей местами.
Например есть геологические разрезы по линиям. хотелось бы развернуть (поменять местами X>Y, Y>Z, Х=const - это частный случай, когда линия разреза в плане проходит параллельно оси Х) и увеличить (изменить масштаб).
Приведенный пример является не совсем стандартным случаем, но часто встречающемся. Для него надо ось Z взять из оси Y с уменьшением в 10 раз, т.е. Z=Y/10, оси X и Y расчитываются по формуле вида Y=aX+b. Описание внутри (примечание в экселевском файле в ОпенОфис не читаются)
Часть атрибутивной информации убрана.

Область для грасс создана amuriy и размещена на 3 странице этой темы
Вложения
рисунок.png
рисунок.png (18.33 КБ) 15621 просмотр
primer.rar
(119.39 КБ) 542 скачивания
Последний раз редактировалось Trace 20 дек 2010, 11:32, всего редактировалось 6 раз.

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 23 ноя 2010, 09:22

уже было - делаете линейное преобразование координат, X_new=0*X +1*Y, Y_new=1*X + 0*Y.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 23 ноя 2010, 09:57

Создал область (ну или "проект") GRASS с двумя этими слоями.

Trace, как соотносятся сам разрез и линия разреза? Линия разреза -- в географ. координатах, сам разрез -- в условных? Или это всё неважно, главное
(поменять местами X>Y, Y>Z, Х=const) и увеличить (изменить масштаб)
?
Последний раз редактировалось Александр Мурый 30 ноя 2010, 09:41, всего редактировалось 1 раз.
Редактор материалов, модератор форума

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 23 ноя 2010, 13:29

вы правы, координаты разреза условные, в основном все разрезы начинаются с 0 для X и для Z - отметка высоты в точке начала маршрута и далее в соответствии с масштабом. координаты метровые. начало разреза на плоскости - крайняя левая точка. Координаты оси Z = Z*2000
gamm писал(а):уже было - делаете линейное преобразование координат, X_new=0*X +1*Y, Y_new=1*X + 0*Y.
я с вами не согласен там не все так просто. потому что для расчета координат надо применит формулу по которой можно узнать приращение для X и для Y. и не возникнет ли проблем при сборке полигонов. я волнуюсь за сохранность атрибутивной информации...
Последний раз редактировалось Trace 30 ноя 2010, 08:59, всего редактировалось 1 раз.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 24 ноя 2010, 12:46

Trace, объясните подробнее, как должен идти разрез (желательно на русском с примерами и картинками..:))
Покрутил разрез туда-сюда с помощью v.transform, ничего не понял..
Координаты оси Z = Z*2000
В вект. карте razrez (top=0.000000 bottom=0.000000), что делать с высотой? 0*2000=0 :)
Редактор материалов, модератор форума

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 25 ноя 2010, 07:17

Разрез идёт из точки А в точку В. координаты точек указаны на рисунке. соотношение вертикальных масштабов видно на рисунке (справа единици шейп-файла, слева метры, получается 1:10, т.е. координату Z надо разделить на 10) соотношение горизонтальных масштабов 1 к 1 (единицы измерения - метры).
Заменил файл "razrez_xy.shp" не заметил лишних точек на линии :oops:
Вложения
пример.png
пример расположения разреза
пример.png (93.94 КБ) 15973 просмотра

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 26 ноя 2010, 11:48

Покрутил ещё. Мне кажется, или такая задача не для ГИС в принципе? В том числе, не для GRASS?

Просьба: опишите конечный разрез (как он должен идти и т.д.) Как понять X>Y, Y>Z, Х=const? X>Y понятно, Y>Z уже хуже, как при этом Х=const ?
я так понимаю Х и У можно расчитать по формуле
Формулу в студию.
Редактор материалов, модератор форума

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 29 ноя 2010, 10:02

Экспортировал разрез в грасс. сделал все шаги из предыдущей темы загнал в эксель, расчитал формулу для перевода координат, экспортировал-импортировал в грасс обратно. но что то у меня не получилось создать 3Д. и не совсем понятно как потом соодинить все обратно в полигоны?!
Последний раз редактировалось Trace 29 ноя 2010, 13:17, всего редактировалось 1 раз.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 29 ноя 2010, 11:19

Запутываюсь всё больше..
В экселевском файле пересчитываются координаты разреза XY из условных в географические? А коорд. Z делится на 10, так? И все оси уже повёрнуты как надо?

Просто, чтобы загнать что-то в GRASS (ос-но в 3D), надо понять, что мы загоняем-то..;)
Редактор материалов, модератор форума

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 29 ноя 2010, 12:31

В экселевском файле пересчитываются координаты разреза XY из условных в географические? А коорд. Z делится на 10, так? И все оси уже повёрнуты как надо?
Вы правы, координаты в метрах. В предыдущем файле все оси повернуты как надо.
осталось только теперь собрать полигоны и все... но что то я думаю что это не так просто.
Появился вопрос???
Если экспоритровать через команду

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

"v.out.ascii input=razrez_xy@primer output=C:/Temp/razrez.dat format=standard fs=| dp=8 layer=1 " 
и потом перевернув оси как надо экспортировать назад

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

"v.in.ascii input=C:/Temp/razrez.dat output=razrez_xyz format=standard {fs=  } skip=0 x=1 y=2 z=0 cat=0 --overwrite" 
то возможно создать 3Д полигональный слой? у меня опять проблема с настройкой региона для 3Д :oops:
привожу вам полученный файл. возможно у Вас получится его визуализировать.
могу показать что у меня получается при визуализации точек с помощью арквью
Последний раз редактировалось Trace 30 ноя 2010, 09:00, всего редактировалось 2 раза.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 29 ноя 2010, 12:49

v.out.ascii с опцией format=standard экспортирует не точки, а векторные объекты целиком (т.е. должны быть полигоны)

Надо попробовать сделать ещё одну область с EPSG:28476, туда импортировать razrez.dat со сменой осей.
Редактор материалов, модератор форума

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 29 ноя 2010, 13:07

я это и сделал. но видать где то промахнулся с настройками региона
вот что я имею ввиду (см картинку) но для точек, когда говорю "повернуть" и "поменять местами" (координаты осей метровые) не пойму как из точек сделать полигоны
Вложения
viewer1.jpg
визуализация
viewer1.jpg (137.57 КБ) 15879 просмотров
Последний раз редактировалось Trace 29 ноя 2010, 13:18, всего редактировалось 1 раз.

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 29 ноя 2010, 13:16

УРА! у меня все получилось. завтра распишу что делал, приведу пример и конкретизирую вопрос который вызывает у меня сложности.

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый » 29 ноя 2010, 13:23

А я тем временем импортировал в GRASS razrez.dat без смены осей (т.к. это только для "точечного" режима), задал по нему 3D-регион. Вот что получилось в NVIZ (сетка сверху имеет высоту 200 м, снизу разрез в усл. коорд-х):
razrez_transform_3d.png
razrez_transform_3d.png (42.58 КБ) 15877 просмотров
Редактор материалов, модератор форума

Trace
Активный участник
Сообщения: 153
Зарегистрирован: 14 окт 2009, 05:07
Репутация: 0
Откуда: Красноярск
Контактная информация:

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

Сообщение Trace » 30 ноя 2010, 09:16

У нас с Вами одинаковый результат...
проделал следующие действия (привожу пример без команд потому что они указаны в этой теме и предыдущих):
  • 1. импортировал шейп-файл в Грасс
    2. экспоритовал шейп-файл из грасс в текстовый формат
    3. произвел расчет в экселе и экспортировал полученные данные назад в текстовый файл
    4. импортировал текстовый файл в грасс
    5. визуализировал в грасс с помощью NVIZ
Возникли следующие вопросы:
  • 1. Как присвоит атрибутивную информацию полученным полигонам (по идее поле "cat" осталось прежним)
    2. Как перенести расчет данных в грасс для автоматизации действий (вместе с расчетом формулы)
Пример файлов см. в начале этой темы...
Вложения
primer.rar
пример
(119.39 КБ) 594 скачивания
Последний раз редактировалось Trace 18 дек 2010, 17:49, всего редактировалось 2 раза.

Ответить

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

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

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