Страница 3 из 7
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 12:30
Александр Мурый
trex, скачал я это дело, щас посмотрю, что и как. отпишусь.
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
- Интерполируем в растр 3D:
v.vol.rst input=supertest wcolumn=value elev=supertest_g3d dmin=0
dmin=0 для того, чтобы считалось по всем точкам
Результат скоро выложу.
P.S. написал сумбурно. будут вопросы -- прошу)
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 14:50
trex
ай спасибо!!!!! начал делать по вашему алгоритму, от треволнений ажно курить захотелось

....т.е. сообшение интерполятора
Невозможно получить информацию о слое для векторной карты все же из-за отсутсвия векторных точек в базе данных?
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
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 15:09
trex
Все беды из-за отсутствия нормальных аттрибутов в нормальном виде ))
Сами точки импортируются легко без всяких таблиц.
т.е. это я неправильно загрузил в Грасс точки с атрибутами или грасс сам по себе немного подглючивает на этом этапе?
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 15:19
Александр Мурый
И первое, и второе.
- Ты думал, что умная GRASS распознает сама типы полей в таблице с аттрибутами.
- По умолчанию стоит драйвер DBF, и он "сам по себе немного подглючивает".
- Третье: и я делаю что-то не так.
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 15:26
trex
йопсель, форум постоянно выбрасывает меня.....в смысле? а как тогда грузить точки с параметрами? там же ведь указывается последняя колонка- Номер столбца в которой указывается категория (cat) - я и предполагал что это параметр, а это оказывается ID....а куда тогда параметр затолкать? только вот так вот как вы описали с помощью SQLite?
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)
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 15:45
trex
понял, ща попробую, дык че с интерполяцией? чет красивое получилось ?:)
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 15:57
Александр Мурый
Вечером будет полный красочный отчет))
А пока немного:
- с помощью
r3.to.rast делаем серию растров-разрезов (получилось 40 штук, т.к. depth=40 в параметрах региона)
Код: Выделить всё
r3.to.rast input=supertest_g3d output=supertest_slices
Затем:
Добавляем векторные точки, верхний и нижний "разрезы"

- supertest.png (23.17 КБ) 12486 просмотров
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 16:11
trex
ок, сенкс, будем помсмотреть
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 16:17
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'
а где в таком случае тут описана колонка с параметром?
Re: Применение GRASS в геологии и геофизике
Добавлено: 01 июн 2010, 18:33
KolesovDmitry
Мне кажется, вы не с того конца заходите.
Дело в том, что v.in.ascii работает не с любыми текстовыми файлами, а с созданными в определенном формате. (Модуль создан, в первую очередь, для импорта собственных карт и поддерживает сложные геометрии - линии, полигоны и т.п., можно, конечно, импортировать, как вы и делаете, просто точки). Самое главное: этот модуль создает только векторные объекты. Атрибуты он не импортирует.
Почему? Да потому, что с любой векторной картой можно связать не одну таблицу атрибутов, а несколько. Поэтому таблицы атрибутов нужно импортировать отдельно. Связь между строками базы данных и векторным объектом идет по колонке "cat". Для импорта таблицы базы данных существует специальный модуль:
db.in.ogr.
После того, как вы импортировали векторную карту из текстового файла и соответствующую таблицу, нужно связать между собой вектор и атрибуты, делается это при помощи модуля
v.db.connect.
В общих чертах как-то так. Нужно будет подробнее -- спрашивайте.
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'
колонки параметра нет, это меня переклинило.
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 и проделать три хода (для создания точечного файла с аттрибутами), а потом выложить сюда команды? Заранее спасибо)