Страница 3 из 4

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

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

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

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

Что значит поменять оси местами? Вы хотите их повернуть на 90 градусов или нужно сделать так, как показано на рисунке или еще как?

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

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

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

P.S. На картинке мы меняем X на Y?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 20 дек 2010, 10:10
Trace
нет попробовал экспортировать используя команду
Спойлер
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

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

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

Добавлено: 21 дек 2010, 11:24
Trace
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

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

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

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

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

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

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