Страница 1 из 4
Как поменять оси местами?
Добавлено: 23 ноя 2010, 08:46
Trace
В продолжении темы применение
"Применение GRASS в геологии и геофизике" возник вопрос об подмене осей местами.
Например есть геологические разрезы по линиям. хотелось бы развернуть (поменять местами X>Y, Y>Z, Х=const - это частный случай, когда линия разреза в плане проходит параллельно оси Х) и увеличить (изменить масштаб).
Приведенный пример является не совсем стандартным случаем, но часто встречающемся. Для него надо ось Z взять из оси Y с уменьшением в 10 раз, т.е. Z=Y/10, оси X и Y расчитываются по формуле вида Y=aX+b. Описание внутри (примечание в экселевском файле в ОпенОфис не читаются)
Часть атрибутивной информации убрана.
Область для грасс создана
amuriy и размещена на 3 странице этой темы
Re: Как поменять оси местами?
Добавлено: 23 ноя 2010, 09:22
gamm
уже было - делаете линейное преобразование координат, X_new=0*X +1*Y, Y_new=1*X + 0*Y.
Re: Как поменять оси местами?
Добавлено: 23 ноя 2010, 09:57
Александр Мурый
Создал область (ну или "проект") GRASS с двумя этими слоями.
Trace, как соотносятся сам разрез и линия разреза? Линия разреза -- в географ. координатах, сам разрез -- в условных? Или это всё неважно, главное
(поменять местами X>Y, Y>Z, Х=const) и увеличить (изменить масштаб)
?
Re: Как поменять оси местами?
Добавлено: 23 ноя 2010, 13:29
Trace
вы правы, координаты разреза условные, в основном все разрезы начинаются с 0 для X и для Z - отметка высоты в точке начала маршрута и далее в соответствии с масштабом. координаты метровые. начало разреза на плоскости - крайняя левая точка. Координаты оси Z = Z*2000
gamm писал(а):уже было - делаете линейное преобразование координат, X_new=0*X +1*Y, Y_new=1*X + 0*Y.
я с вами не согласен там не все так просто. потому что для расчета координат надо применит формулу по которой можно узнать приращение для X и для Y. и не возникнет ли проблем при сборке полигонов. я волнуюсь за сохранность атрибутивной информации...
Re: Как поменять оси местами?
Добавлено: 24 ноя 2010, 12:46
Александр Мурый
Trace, объясните подробнее, как должен идти разрез (желательно на русском с примерами и картинками..

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

Re: Как поменять оси местами?
Добавлено: 25 ноя 2010, 07:17
Trace
Разрез идёт из точки
А в точку
В. координаты точек указаны на рисунке. соотношение вертикальных масштабов видно на рисунке (справа единици шейп-файла, слева метры, получается 1:10, т.е. координату Z надо разделить на 10) соотношение горизонтальных масштабов 1 к 1 (единицы измерения - метры).
Заменил файл "razrez_xy.shp" не заметил лишних точек на линии

Re: Как поменять оси местами?
Добавлено: 26 ноя 2010, 11:48
Александр Мурый
Покрутил ещё. Мне кажется, или такая задача не для ГИС в принципе? В том числе, не для GRASS?
Просьба: опишите конечный разрез (как он должен идти и т.д.) Как понять
X>Y, Y>Z, Х=const? X>Y понятно, Y>Z уже хуже, как при этом Х=const ?
я так понимаю Х и У можно расчитать по формуле
Формулу в студию.
Re: Как поменять оси местами?
Добавлено: 29 ноя 2010, 10:02
Trace
Экспортировал разрез в грасс. сделал все шаги
из предыдущей темы загнал в эксель, расчитал формулу для перевода координат, экспортировал-импортировал в грасс обратно. но что то у меня не получилось создать 3Д. и не совсем понятно как потом соодинить все обратно в полигоны?!
Re: Как поменять оси местами?
Добавлено: 29 ноя 2010, 11:19
Александр Мурый
Запутываюсь всё больше..
В экселевском файле пересчитываются координаты разреза XY из условных в географические? А коорд. Z делится на 10, так? И все оси уже повёрнуты как надо?
Просто, чтобы загнать что-то в GRASS (ос-но в 3D), надо понять, что мы загоняем-то..;)
Re: Как поменять оси местами?
Добавлено: 29 ноя 2010, 12:31
Trace
В экселевском файле пересчитываются координаты разреза 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Д
привожу вам полученный файл. возможно у Вас получится его визуализировать.
могу показать что у меня получается при визуализации точек с помощью арквью
Re: Как поменять оси местами?
Добавлено: 29 ноя 2010, 12:49
Александр Мурый
v.out.ascii с опцией format=standard экспортирует не точки, а векторные объекты целиком (т.е. должны быть полигоны)
Надо попробовать сделать ещё одну область с EPSG:28476, туда импортировать razrez.dat со сменой осей.
Re: Как поменять оси местами?
Добавлено: 29 ноя 2010, 13:07
Trace
я это и сделал. но видать где то промахнулся с настройками региона
вот что я имею ввиду (см картинку) но для точек, когда говорю "повернуть" и "поменять местами" (координаты осей метровые) не пойму как из точек сделать полигоны
Re: Как поменять оси местами?
Добавлено: 29 ноя 2010, 13:16
Trace
УРА! у меня все получилось. завтра распишу что делал, приведу пример и конкретизирую вопрос который вызывает у меня сложности.
Re: Как поменять оси местами?
Добавлено: 29 ноя 2010, 13:23
Александр Мурый
А я тем временем импортировал в GRASS
razrez.dat без смены осей (т.к. это только для "точечного" режима), задал по нему 3D-регион. Вот что получилось в NVIZ (сетка сверху имеет высоту 200 м, снизу разрез в усл. коорд-х):

- razrez_transform_3d.png (42.58 КБ) 17591 просмотр
Re: Как поменять оси местами?
Добавлено: 30 ноя 2010, 09:16
Trace
У нас с Вами одинаковый результат...
проделал следующие действия (привожу пример без команд потому что они указаны в этой теме и предыдущих):
- 1. импортировал шейп-файл в Грасс
2. экспоритовал шейп-файл из грасс в текстовый формат
3. произвел расчет в экселе и экспортировал полученные данные назад в текстовый файл
4. импортировал текстовый файл в грасс
5. визуализировал в грасс с помощью NVIZ
Возникли следующие вопросы:
- 1. Как присвоит атрибутивную информацию полученным полигонам (по идее поле "cat" осталось прежним)
2. Как перенести расчет данных в грасс для автоматизации действий (вместе с расчетом формулы)
Пример файлов см. в начале этой темы...