Применение GRASS в геологии и геофизике
- 
				Александр Мурый
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
trex, скачал я это дело, щас посмотрю, что и как. отпишусь.
			
			
									
						
							Редактор материалов, модератор форума
			
						- 
				Александр Мурый
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
trex, завел таки я интерполяцию.. уже 60% сделалось.
Теперь о том, как. Как я понял, драйвер DBF -- довольно глючная штука (у меня и раньше его колбасило).
Поэтому после возни с DBF (он не хочет создавать нужную таблицу из файла Vel.csv) я пошел другим путем.
Это можно делать из GRASS, но удобнее в чем-то для работы с SQLite. Здесь я использовал SQLiteman
- Для начала в Gnumeric (можно в Excel) я добавил к Vel.csv столбец cat, "протянул" вниз до последней точки. Получилось от 1 до 3456.
- С помощью SQLiteman создал базу данных supertest.sqlitedb, в ней таблицу supertest с полями:
где
cat --> столбец "категорий", т.е. личного "номера" точки, без них GRASS не будет работать с интерполяцией
x --> это первый столбец в файле Vel.csv
y --> второй..
z --> третий
value --> параметр
и т.д.
Импортируем файл Vel.csv в таблицу supertest.
- Присоединяем таблицу supertest к слою точек:
Подключаем драйвер SQLite (лучше указать полный путь к созданной ранее базе данных):  
Подсоединяем слой supertest к таблице supertest:
- Подгоняем регион под наш слой точек, делаем не очень большое 3D-разрешение -- 100
   
- Интерполируем в растр 3D:
Результат скоро выложу.
P.S. написал сумбурно. будут вопросы -- прошу)
			
			
									
						
							Теперь о том, как. Как я понял, драйвер 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 PRECISIONcat --> столбец "категорий", т.е. личного "номера" точки, без них 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Код: Выделить всё
g.region vect=supertest res3=100 -3p- Интерполируем в растр 3D:
dmin=0 для того, чтобы считалось по всем точкамv.vol.rst input=supertest wcolumn=value elev=supertest_g3d dmin=0
Результат скоро выложу.
P.S. написал сумбурно. будут вопросы -- прошу)
Редактор материалов, модератор форума
			
						- 
				trex
- Участник
- Сообщения: 58
- Зарегистрирован: 14 май 2010, 13:54
- Репутация: 0
Re: Применение GRASS в геологии и геофизике
ай спасибо!!!!! начал делать по вашему алгоритму, от треволнений ажно курить захотелось   ....т.е. сообшение интерполятора Невозможно получить информацию о слое для векторной карты все же из-за отсутсвия векторных точек в базе данных?
 ....т.е. сообшение интерполятора Невозможно получить информацию о слое для векторной карты все же из-за отсутсвия векторных точек в базе данных?
			
			
									
						
										
						 ....т.е. сообшение интерполятора Невозможно получить информацию о слое для векторной карты все же из-за отсутсвия векторных точек в базе данных?
 ....т.е. сообшение интерполятора Невозможно получить информацию о слое для векторной карты все же из-за отсутсвия векторных точек в базе данных?- 
				Александр Мурый
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
Курить вредно)
Все беды из-за отсутствия нормальных аттрибутов в нормальном виде ))
Сами точки импортируются легко без всяких таблиц.
Сейчас пробую визуализировать полученный volume.
Вот вывод команды r3.info supertest_g3d:
А вот базовая статистика по объему:
r3.stats -e input=supertest_g3d
			
			
									
						
							Все беды из-за отсутствия нормальных аттрибутов в нормальном виде ))
Сами точки импортируются легко без всяких таблиц.
Сейчас пробую визуализировать полученный 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 в геологии и геофизике
Все беды из-за отсутствия нормальных аттрибутов в нормальном виде ))
Сами точки импортируются легко без всяких таблиц.
т.е. это я неправильно загрузил в Грасс точки с атрибутами или грасс сам по себе немного подглючивает на этом этапе?
			
			
									
						
										
						Сами точки импортируются легко без всяких таблиц.
т.е. это я неправильно загрузил в Грасс точки с атрибутами или грасс сам по себе немного подглючивает на этом этапе?
- 
				Александр Мурый
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
И первое, и второе.
- Ты думал, что умная GRASS распознает сама типы полей в таблице с аттрибутами.
- По умолчанию стоит драйвер DBF, и он "сам по себе немного подглючивает".
- Третье: и я делаю что-то не так.
			
			
									
						
							- Ты думал, что умная GRASS распознает сама типы полей в таблице с аттрибутами.
- По умолчанию стоит драйвер DBF, и он "сам по себе немного подглючивает".
- Третье: и я делаю что-то не так.
Редактор материалов, модератор форума
			
						- 
				trex
- Участник
- Сообщения: 58
- Зарегистрирован: 14 май 2010, 13:54
- Репутация: 0
Re: Применение GRASS в геологии и геофизике
йопсель, форум постоянно выбрасывает меня.....в смысле? а как тогда грузить точки с параметрами? там же ведь указывается последняя колонка- Номер столбца в которой указывается категория (cat)  - я и предполагал что это параметр, а это оказывается ID....а куда тогда параметр затолкать? только вот так вот как вы описали с помощью SQLite?
			
			
									
						
										
						- 
				Александр Мурый
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
Как по-нормальному -- надо разобраться еще. Я сделал просто "грязный хак". Чтоб заработало.
По идее, аттрибуты точек должны нормально импортироваться как в DBF, так и в SQLite, MySQL, PostgreSQL..
Грузить точки с параметрами можно через тот же v.in.ascii, но с указанием типов полей (как в мануале написано). Желательно, чтоб в ascii-файле столбик cat уже был, а то будет геморрой.
Пример:
Надо попробовать импорт точек с пом. v.in.ogr (там есть тип CSV)
			
			
									
						
							По идее, аттрибуты точек должны нормально импортироваться как в 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'Редактор материалов, модератор форума
			
						- 
				trex
- Участник
- Сообщения: 58
- Зарегистрирован: 14 май 2010, 13:54
- Репутация: 0
Re: Применение GRASS в геологии и геофизике
понял, ща попробую, дык че с интерполяцией? чет красивое получилось ?:)
			
			
									
						
										
						- 
				Александр Мурый
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
Вечером будет полный красочный отчет))
А пока немного:
- с помощью r3.to.rast делаем серию растров-разрезов (получилось 40 штук, т.к. depth=40 в параметрах региона)
Затем:
Добавляем векторные точки, верхний и нижний "разрезы"
			
			
									
						
							А пока немного:
- с помощью r3.to.rast делаем серию растров-разрезов (получилось 40 штук, т.к. depth=40 в параметрах региона)
Код: Выделить всё
r3.to.rast input=supertest_g3d output=supertest_slicesКод: Выделить всё
nviz vol=supertest_g3dРедактор материалов, модератор форума
			
						- 
				trex
- Участник
- Сообщения: 58
- Зарегистрирован: 14 май 2010, 13:54
- Репутация: 0
Re: Применение GRASS в геологии и геофизике
ок, сенкс, будем помсмотреть
			
			
									
						
										
						- 
				trex
- Участник
- Сообщения: 58
- Зарегистрирован: 14 май 2010, 13:54
- Репутация: 0
Re: Применение GRASS в геологии и геофизике
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
- Репутация: 123
- Откуда: Казань
Re: Применение GRASS в геологии и геофизике
Мне кажется, вы не с того конца заходите.
Дело в том, что v.in.ascii работает не с любыми текстовыми файлами, а с созданными в определенном формате. (Модуль создан, в первую очередь, для импорта собственных карт и поддерживает сложные геометрии - линии, полигоны и т.п., можно, конечно, импортировать, как вы и делаете, просто точки). Самое главное: этот модуль создает только векторные объекты. Атрибуты он не импортирует.
Почему? Да потому, что с любой векторной картой можно связать не одну таблицу атрибутов, а несколько. Поэтому таблицы атрибутов нужно импортировать отдельно. Связь между строками базы данных и векторным объектом идет по колонке "cat". Для импорта таблицы базы данных существует специальный модуль: db.in.ogr.
После того, как вы импортировали векторную карту из текстового файла и соответствующую таблицу, нужно связать между собой вектор и атрибуты, делается это при помощи модуля v.db.connect.
В общих чертах как-то так. Нужно будет подробнее -- спрашивайте.
			
			
									
						
										
						Дело в том, что v.in.ascii работает не с любыми текстовыми файлами, а с созданными в определенном формате. (Модуль создан, в первую очередь, для импорта собственных карт и поддерживает сложные геометрии - линии, полигоны и т.п., можно, конечно, импортировать, как вы и делаете, просто точки). Самое главное: этот модуль создает только векторные объекты. Атрибуты он не импортирует.
Почему? Да потому, что с любой векторной картой можно связать не одну таблицу атрибутов, а несколько. Поэтому таблицы атрибутов нужно импортировать отдельно. Связь между строками базы данных и векторным объектом идет по колонке "cat". Для импорта таблицы базы данных существует специальный модуль: db.in.ogr.
После того, как вы импортировали векторную карту из текстового файла и соответствующую таблицу, нужно связать между собой вектор и атрибуты, делается это при помощи модуля v.db.connect.
В общих чертах как-то так. Нужно будет подробнее -- спрашивайте.
- 
				Александр Мурый
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
Спасибо, Дима. Меня действительно занесло не в те дебри ..   
То есть алгоритм импорта точек с определенным параметром из ascii-файла такой:
1) v.in.ascii -- импортируется одна геометрия, причем указываем cat=0, чтобы добавился столбец категорий
2) db.in.ogr -- отдельно импортируем аттрибуты
3) v.db.connect -- подключаем таблицу к вект. слою
Потом интерполировать в объемный растр --> в NVIZ или в *.vtk, например.
P.S. trex , в
			
			
									
						
							То есть алгоритм импорта точек с определенным параметром из 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
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Применение GRASS в геологии и геофизике
Почитал мануал db.in.ogr, у OGR слабая поддержка CSV, с типом поля сложно.
Вопрос:
? на каком этапе и как лучше создавать таблицу (DBF или SQLite) с нужными типами полей ?
- С db.in.ogr нужную таблицу создать не получится, тип поля ставится везде "CHARACTER"
- Если создавать таблицу отдельно, например,
то db.in.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Просьба: Дима, ты не мог бы скачать вышележащий файлик *csv и проделать три хода (для создания точечного файла с аттрибутами), а потом выложить сюда команды? Заранее спасибо)
Редактор материалов, модератор форума
			
						Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость