Обработка геофизических данных
Обработка сейсмограмм
Для обработки сейсмограмм существует достаточно мощная библиотека obspy
pip.
Подробное описание возможностей библиотеки с примерами приведено на официальном сайте.
Ключевые объекты 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 файлами с помощью инструмента pyshp
pip.
Следует отметить, что 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')