Применение GRASS в геологии и геофизике

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

Re: Применение GRASS в геологии и геофизике

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

trex, скачал я это дело, щас посмотрю, что и как. отпишусь.
Редактор материалов, модератор форума

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

Re: Применение GRASS в геологии и геофизике

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

trex, завел таки я интерполяцию.. уже 60% сделалось.
Теперь о том, как. Как я понял, драйвер DBF -- довольно глючная штука (у меня и раньше его колбасило).
Поэтому после возни с DBF (он не хочет создавать нужную таблицу из файла Vel.csv) я пошел другим путем.

Это можно делать из GRASS, но удобнее в чем-то для работы с SQLite. Здесь я использовал SQLiteman

- Для начала в Gnumeric (можно в Excel) я добавил к Vel.csv столбец cat, "протянул" вниз до последней точки. Получилось от 1 до 3456.

- С помощью SQLiteman создал базу данных supertest.sqlitedb, в ней таблицу supertest с полями:

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

 "cat" INTEGER,
    "x" INTEGER,
    "y" INTEGER,
    "z" INTEGER,
    "value" DOUBLE PRECISION
где

cat --> столбец "категорий", т.е. личного "номера" точки, без них GRASS не будет работать с интерполяцией
x --> это первый столбец в файле Vel.csv
y --> второй..
z --> третий
value --> параметр
и т.д.

Импортируем файл Vel.csv в таблицу supertest.

- Присоединяем таблицу supertest к слою точек:

Подключаем драйвер SQLite (лучше указать полный путь к созданной ранее базе данных):

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

db.connect driver=sqlite database=/home/user/grassdata/spearfish60/user1/supertest.sqlitedb


Подсоединяем слой supertest к таблице supertest:

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

v.db.connect map=supertest driver=sqlite table=supertest
- Подгоняем регион под наш слой точек, делаем не очень большое 3D-разрешение -- 100

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

g.region vect=supertest res3=100 -3p


- Интерполируем в растр 3D:
v.vol.rst input=supertest wcolumn=value elev=supertest_g3d dmin=0
dmin=0 для того, чтобы считалось по всем точкам

Результат скоро выложу.

P.S. написал сумбурно. будут вопросы -- прошу)
Редактор материалов, модератор форума

trex
Участник
Сообщения: 58
Зарегистрирован: 14 май 2010, 13:54
Репутация: 0

Re: Применение GRASS в геологии и геофизике

Сообщение trex » 01 июн 2010, 14:50

ай спасибо!!!!! начал делать по вашему алгоритму, от треволнений ажно курить захотелось :mrgreen: ....т.е. сообшение интерполятора Невозможно получить информацию о слое для векторной карты все же из-за отсутсвия векторных точек в базе данных?

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

Re: Применение GRASS в геологии и геофизике

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

Курить вредно)
Все беды из-за отсутствия нормальных аттрибутов в нормальном виде ))
Сами точки импортируются легко без всяких таблиц.

Сейчас пробую визуализировать полученный volume.

Вот вывод команды r3.info supertest_g3d:

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

+----------------------------------------------------------------------------+
 | Layer:    supertest_g3d                  Date: Tue Jun  1 08:01:55 2010    |
 | Mapset:   user1                          Login of Creator: user            |
 | Location: spearfish60                                                      |
 | DataBase: /media/Elements/GRASSDATA                                        |
 | Title:     ( supertest_g3d )                                               |
 | Timestamp: none                                                            |
 |----------------------------------------------------------------------------|
 |                                                                            |
 |   Type of Map:  3d cell              Number of Categories: 0               |
 |   Data Type:    double                                                     |
 |   Rows:         1273                                                       |
 |   Columns:      1872                                                       |
 |   Depths:       40                                                         |
 |   Total Cells:  95322240                                                   |
 |        Projection: UTM (zone 13)                                           |
 |            N:   45659.88    S:  -81665.95   Res: 100.02029065              |
 |            E:      53115    W: -134122.95   Res: 100.02027244              |
 |            T:     -20.11    B:      -3980   Res: 98.99725                  |
 |   Range of data:   min = 1576.92663574 max = 3003.9934082                  |
 |                                                                            |
 |   Data Source:                                                             |
 |                                                                            |
 |                                                                            |
 |                                                                            |
 |   Data Description:                                                        |
 |    generated by v.vol.rst                                                  |
 |                                                                            |
 |   Comments:                                                                |
 |    v.vol.rst input="supertest" wcolumn="value" tension=40. smooth=0.1 s\   |
 |    egmax=50 npmin=200 dmin=0 wmult=1.0 zmult=1.0 elev="supertest_g3d"      |
 |                                                                            |
 +----------------------------------------------------------------------------+
А вот базовая статистика по объему:

r3.stats -e input=supertest_g3d

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

total null and non-null cells: 95322240
total null cells: 0

Of the non-null cells:
----------------------
n: 95322240
minimum: 1576.93
maximum: 3003.99
range: 1427.07
mean: 2108.34
mean of absolute values: 2108.34
standard deviation: 106.11
variance: 11259.3
variation coefficient: 5.03286 %
sum: 200971724123.3463134766
1st quartile: 2034.34
median (even number of cells): 2102.22
3rd quartile: 2182.09
90th percentile: 2227.09
Редактор материалов, модератор форума

trex
Участник
Сообщения: 58
Зарегистрирован: 14 май 2010, 13:54
Репутация: 0

Re: Применение GRASS в геологии и геофизике

Сообщение trex » 01 июн 2010, 15:09

Все беды из-за отсутствия нормальных аттрибутов в нормальном виде ))
Сами точки импортируются легко без всяких таблиц.


т.е. это я неправильно загрузил в Грасс точки с атрибутами или грасс сам по себе немного подглючивает на этом этапе?

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

Re: Применение GRASS в геологии и геофизике

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

И первое, и второе.
- Ты думал, что умная GRASS распознает сама типы полей в таблице с аттрибутами.
- По умолчанию стоит драйвер DBF, и он "сам по себе немного подглючивает".
- Третье: и я делаю что-то не так.
Редактор материалов, модератор форума

trex
Участник
Сообщения: 58
Зарегистрирован: 14 май 2010, 13:54
Репутация: 0

Re: Применение GRASS в геологии и геофизике

Сообщение trex » 01 июн 2010, 15:26

йопсель, форум постоянно выбрасывает меня.....в смысле? а как тогда грузить точки с параметрами? там же ведь указывается последняя колонка- Номер столбца в которой указывается категория (cat) - я и предполагал что это параметр, а это оказывается ID....а куда тогда параметр затолкать? только вот так вот как вы описали с помощью SQLite?

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

Re: Применение GRASS в геологии и геофизике

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

Как по-нормальному -- надо разобраться еще. Я сделал просто "грязный хак". Чтоб заработало.

По идее, аттрибуты точек должны нормально импортироваться как в DBF, так и в SQLite, MySQL, PostgreSQL..

Грузить точки с параметрами можно через тот же v.in.ascii, но с указанием типов полей (как в мануале написано). Желательно, чтоб в ascii-файле столбик cat уже был, а то будет геморрой.
Пример:

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

v.in.ascii -z input=Vel.csv output=supertest x=1 y=2 z=3 cat=4 fs=',' columns='cat int, x int, y int, z int, value double precision'
Надо попробовать импорт точек с пом. v.in.ogr (там есть тип CSV)
Редактор материалов, модератор форума

trex
Участник
Сообщения: 58
Зарегистрирован: 14 май 2010, 13:54
Репутация: 0

Re: Применение GRASS в геологии и геофизике

Сообщение trex » 01 июн 2010, 15:45

понял, ща попробую, дык че с интерполяцией? чет красивое получилось ?:)

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

Re: Применение GRASS в геологии и геофизике

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

Вечером будет полный красочный отчет))
А пока немного:

- с помощью r3.to.rast делаем серию растров-разрезов (получилось 40 штук, т.к. depth=40 в параметрах региона)

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

r3.to.rast input=supertest_g3d output=supertest_slices
Затем:

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

nviz vol=supertest_g3d
Добавляем векторные точки, верхний и нижний "разрезы"
supertest.png
supertest.png (23.17 КБ) 6078 просмотров
Редактор материалов, модератор форума

trex
Участник
Сообщения: 58
Зарегистрирован: 14 май 2010, 13:54
Репутация: 0

Re: Применение GRASS в геологии и геофизике

Сообщение trex » 01 июн 2010, 16:11

ок, сенкс, будем помсмотреть

trex
Участник
Сообщения: 58
Зарегистрирован: 14 май 2010, 13:54
Репутация: 0

Re: Применение GRASS в геологии и геофизике

Сообщение trex » 01 июн 2010, 16:17

v.in.ascii -z input=Vel.csv output=supertest x=1 y=2 z=3 cat=4 fs=',' columns='cat int, x int, y int, z int, value double precision'

а где в таком случае тут описана колонка с параметром?

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

Re: Применение GRASS в геологии и геофизике

Сообщение KolesovDmitry » 01 июн 2010, 18:33

Мне кажется, вы не с того конца заходите.
Дело в том, что v.in.ascii работает не с любыми текстовыми файлами, а с созданными в определенном формате. (Модуль создан, в первую очередь, для импорта собственных карт и поддерживает сложные геометрии - линии, полигоны и т.п., можно, конечно, импортировать, как вы и делаете, просто точки). Самое главное: этот модуль создает только векторные объекты. Атрибуты он не импортирует.

Почему? Да потому, что с любой векторной картой можно связать не одну таблицу атрибутов, а несколько. Поэтому таблицы атрибутов нужно импортировать отдельно. Связь между строками базы данных и векторным объектом идет по колонке "cat". Для импорта таблицы базы данных существует специальный модуль: db.in.ogr.

После того, как вы импортировали векторную карту из текстового файла и соответствующую таблицу, нужно связать между собой вектор и атрибуты, делается это при помощи модуля v.db.connect.

В общих чертах как-то так. Нужно будет подробнее -- спрашивайте.

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

Re: Применение GRASS в геологии и геофизике

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

Спасибо, Дима. Меня действительно занесло не в те дебри ..
То есть алгоритм импорта точек с определенным параметром из ascii-файла такой:

1) v.in.ascii -- импортируется одна геометрия, причем указываем cat=0, чтобы добавился столбец категорий
2) db.in.ogr -- отдельно импортируем аттрибуты
3) v.db.connect -- подключаем таблицу к вект. слою

Потом интерполировать в объемный растр --> в NVIZ или в *.vtk, например.


P.S. trex , в
v.in.ascii -z input=Vel.csv output=supertest x=1 y=2 z=3 cat=4 fs=',' columns='cat int, x int, y int, z int, value double precision'
колонки параметра нет, это меня переклинило.
Редактор материалов, модератор форума

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

Re: Применение GRASS в геологии и геофизике

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

Почитал мануал db.in.ogr, у OGR слабая поддержка CSV, с типом поля сложно.

Вопрос:
? на каком этапе и как лучше создавать таблицу (DBF или SQLite) с нужными типами полей ?

- С db.in.ogr нужную таблицу создать не получится, тип поля ставится везде "CHARACTER"
- Если создавать таблицу отдельно, например,

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

echo 'create table supertest (id int, x integer, y integer, z integer, value double precision)' | db.execute
то db.in.ogr хочет ее перезаписать

Просьба: Дима, ты не мог бы скачать вышележащий файлик *csv и проделать три хода (для создания точечного файла с аттрибутами), а потом выложить сюда команды? Заранее спасибо)
Редактор материалов, модератор форума

Ответить

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

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

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