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

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

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

Сообщение Trace » 17 дек 2010, 14:16

я думаю надо занести координаты Yуслов в таблицу и через column присвоить их коорденате Z а через параметр zscale уменьшить в 10 раз...
Я прав?

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

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

Сообщение KolesovDmitry » 17 дек 2010, 20:38

Объясните, пожалуйста, что вы делаете, а то уже третья страница идет, а я никак врубиться не могу.

Что значит поменять оси местами? Вы хотите их повернуть на 90 градусов или нужно сделать так, как показано на рисунке или еще как?
Вложения
transform.png
Трансформация
transform.png (16.26 КБ) 12386 просмотров

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

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

Сообщение Александр Мурый » 17 дек 2010, 21:54

В общем: геологический разрез в локальных координатах перевести из "плана" в собственно "разрез" (находящийся в метровых координатах EPSG:28476). Т.е. надо, чтобы от разреза на обычном экране в 2D была видна только линия, а сам он уходил вниз (короче, как в природе :)) Объяснение не очень умно, но как сам понимаю..

Все файлы с примерами в теме, могу скинуть область, сделанную для этого.

P.S. На картинке мы меняем X на Y?
Последний раз редактировалось Александр Мурый 17 дек 2010, 22:11, всего редактировалось 1 раз.
Редактор материалов, модератор форума

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

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

Сообщение Александр Мурый » 17 дек 2010, 22:01

Пробовал просто вертеть в v.transform -- не выходит, чтобы разрез "ушёл" вниз. Фишка ещё в том, что в исходном shp-файле координаты Z нет, её надо брать из исходных Y.
Редактор материалов, модератор форума

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

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

Сообщение KolesovDmitry » 17 дек 2010, 22:13

amuriy писал(а): Все файлы с примерами в теме, могу скинуть область, сделанную для этого.
Лучше скинь, а то ничего не понимаю...
P.S. На картинке мы меняем X на Y?
Да, X на Y. Но я уже понял, что у вас еще и Z участвует...

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

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

Сообщение Александр Мурый » 17 дек 2010, 22:21

Вот грассовская область в локальных координатах исходного разреза.
razrez_copy.tar.gz
(300.06 КБ) 1083 скачивания
Я убрал всякий мусор оттуда, оставил только начальную векторную карту разреза (из shp-файла) razrez и вектор razrez_transform_3d -- то, что должно получиться в итоге (посчитано Trace'ом в экселе и импортировано в GRASS).

В папке "_primer_" -- shp-файлы, экселевский файл с расчётами и т.д.
Редактор материалов, модератор форума

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

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

Сообщение Trace » 20 дек 2010, 08:18

Думаю модуль v.transform здесь не поможет. Надо либо собирать полигоны как-то, либо писать программу... но это уже другой вопрос. а вот насчет сборки полигинов можно попробовать с помощью экспорта-импорта в шейп файл :wink:

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

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

Сообщение KolesovDmitry » 20 дек 2010, 08:59

amuriy писал(а):Пробовал просто вертеть в v.transform -- не выходит, чтобы разрез "ушёл" вниз. Фишка ещё в том, что в исходном shp-файле координаты Z нет, её надо брать из исходных Y.
Да, крутил-вертел, то же самое. В v.transform не полностью поддерживает трехмерку. Все-таки сказывается, что это, в первую очередь, инструмент для привязки карт.

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

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

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

помощью экспорта-импорта в шейп файл
Я думаю, можно обойтись и без тяжелых перверсий..:) Для этого есть формат GRASS-ASCII, который хранит всю информацию о геометрии в читаемой форме.

Вот для таких "расчётных" случаев, когда "вручную" выведены коэффициенты в уравнениях, но так и не понятно, как применить стандартный v.transform, нужен скрипт типа v.out.ascii --> формула --> v.in.ascii . Понял, тогда добью в v.ascii.calc ввод произвольной формулы (с функциями, поддерживаемыми awk). Вообще, лучше даже было бы исп-ть питон, но его пока не умею.
Редактор материалов, модератор форума

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

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

Сообщение Trace » 20 дек 2010, 09:30

Мне тут пришла мысль...
а что если воспользоваться ogr2ogr (по мотивам этой статьи). добавить 3-е (т.е. 2-е) поле равное "0" и потом экспортировать в grass полученный csv. а уже v.transorm'ом привязать разрез и уменьшить по оси z в нужное количество раз (конечно если он не сожмет его пропорционально, а не относительно верхней точки, тогда нужно это действие будет поручить скрипту...
а вообще бы сдеалать экспорт в csv из grass, но у меня вылез тока пустой файл... видать что то из опций неправильно написал :oops:
Как Вам такой вариант? единствоенное надо в импорте убрать параметр с минимальной площадью.

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

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

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

Попытка -- не пытка. Можно попробовать и через OGR / CSV, хотя я не совсем ясно представил себе ход процесса. ASCII как-то милее глазу и мозгу :)

GRASS --> v.out.ogr --> CSV, но дело в том, что OGR, который идёт с грассом, обычно старый (древнее версии 1.6). Так что в этом может быть проблема.
Редактор материалов, модератор форума

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

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

Сообщение Trace » 20 дек 2010, 10:10

нет попробовал экспортировать используя команду
Спойлер
v.out.ogr -p input=razrez@PERMANENT type=area dsn=c:/Temp/razrez layer=1 format=CSV lco=GEOMETRY=AS_WKT lco=CREATE_CSVT=YES
набор грасс использовал Ваш. Выбор пал на CSV , потому что при импорте собираются полигоны... попробовал подкорректировать файл в ручную.
чуть подумал и воспользовался следющей командой:

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

cat razrez.csv | sed 's/ 0,/,/g' | sed 's/ / 0 /g' | sed 's/ 0 0))/))/g' | sed 's/N 0/N/g' > razre.csv | mv razre.csv razrez.csv
команда убирает "0", и вставляет его в середину, т.е. меняет местами Y и Z.
не получается импорт файла в грасс...
Думаю дальнейшего смысла в работе с CSV нет. и Ваш выбор Ascii является в данном случае наилучшим :D

Кстати немного поправил начало темы :) думаю Вы не против, и внесете свои коррективы

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

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

Сообщение Trace » 21 дек 2010, 11:24

amuriy
Спойлер

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

 ./v.ascii.calc -help

Description:
 Simple calculations with coordinates of vector map using ASCII files and awk

Usage:
 v.ascii.calc input=string [layer=string] output=string [--overwrite]
   [--verbose] [--quiet]

Flags:
 --o   Allow output files to overwrite existing files
 --v   Verbose module output
 --q   Quiet module output

Parameters:
   input   Input vector name
   layer   Input's layer
  output   Output vector name
не совсем понятно как работает Ваш скрипт... он у меня спрашивает формулу. а куда ее ввести я незнаю.

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

ERROR: Missing formula!
ERROR: Please enter a formula in the field formula

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

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

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

Моя ошибка, каюсь :? Сейчас подправил скрипт, сделал параметр "formula" необязательным), перевыложил.
Теперь можно набрать

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

sh ./v.ascii.calc in=razrez out=razrez_new
-- и посчитается.
Пока считается только по формулам из примера. Если соображу, как, то скоро доделаю ввод произвольной формулы.
Редактор материалов, модератор форума

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

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

Сообщение KolesovDmitry » 21 дек 2010, 13:57

amuriy писал(а): Если соображу, как, то скоро доделаю ввод произвольной формулы.
какой-нибудь eval ?

Ответить

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

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

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