Обработка геофизических данных#
Обработка сейсмограмм#
Для обработки сейсмограмм существует достаточно мощная библиотека obspy
.
Подробное описание возможностей библиотеки с примерами приведено на официальном сайте.
Ключевые объекты 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()
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 1
----> 1 import obspy
3 # Загружаем данные
4 st = obspy.read('http://examples.obspy.org/RJOB_061005_072159.ehz.new')
ModuleNotFoundError: No module named 'obspy'
Работа с геопривязанными данными#
Наиболее распространен формат векторных геопривязанными данных ESRI Shapefiles. В простейшем случае имеется два файла и индекс (.shp
, .dbf
, .shx
). В первом содержатся табличные данные, во втором — собственно геоданные (точки, линии, полигоны, …), причем в одном .shp
файле может быть только один тип геоданных.
Будем работать с .shp
файлами с помощью инструмента pyshp
.
Следует отметить, что 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 файла#
import shapefile
# Создаем объект для записи данных
shpw = shapefile.Writer()
# Добавляем поле в таблицу
shpw.field('name', 'C')
# Добавляем точку и запись в таблицу
shpw.point(122, 37)
shpw.record('point1')
# Сохраняем файл
w.save('shapefiles/test/point')