Обработка геофизических данных

Обработка сейсмограмм

Для обработки сейсмограмм существует достаточно мощная библиотека obspypip.

Подробное описание возможностей библиотеки с примерами приведено на официальном сайте.

Ключевые объекты obspy

UTCDateTime — формат времени повышенной точности. Похож на datetime, но всегда в UTC и может содержать информацию о времени с более высокой точностью.

Trace — непрерывный ряд наблюдений.

Stream — набор объектов типа Trace.

Пример работы

import obspy

# Загружаем данные
st = obspy.read('http://examples.obspy.org/RJOB_061005_072159.ehz.new')

# Обзор имеющихся трасс
print(st)

# Получаем отдельную трассу
tr = st[0]

# Общая информация о ней
print(tr)

# Метаинформация
print(tr.stats)

# Данные наблюдений в виде np.array
print(tr.data)

# График
tr.plot()

Работа с геопривязанными данными

Наиболее распространен формат векторных геопривязанными данных ESRI Shapefiles. В простейшем случае имеется два файла и индекс (shp, dbf, shx). В первом содержатся табличные данные, во втором — собственно геоданные (точки, линии, полигоны, …), причем в одном shp файле может быть только один тип геоданных.

Будем работать с shp файлами с помощью инструмента pyshppip.

Следует отметить, что Python не GIS, а потому, чтобы красиво нарисовать карту целесообразнее воспользоваться, например, QGis.

Открытие файла

import  shapefile

# Имя файла без расширения
shpfile = shapefile.Reader("data/polygons")

# Количество записей
print(len(shpfile))

# Тип записей
print(shpfile.shapeType)

# Описание полей таблицы
print(shpfile.fields)

Работа с записями

shapeRecs = shpfile.shapeRecords()

# Координаты точек
shapeRecs[25].shape

# Соответствующая запись в таблице
shapeRecs[25].record

Создание shp файла

Создание простейшего shp файла для точек.

import shapefile

# Создаем объект для записи данных
shpw = shapefile.Writer()

# Добавляем поле в таблицу
shpw.field('name', 'C')

# Добавляем точку и запись в таблицу
shpw.point(122, 37) 
shpw.record('point1')

# Сохраняем файл
w.save('shapefiles/test/point')