====== Обработка геофизических данных ====== ===== Обработка сейсмограмм ===== Для обработки сейсмограмм существует достаточно мощная библиотека ''obspy''pip. Подробное описание возможностей библиотеки с примерами приведено [[https://docs.obspy.org/contents.html|на официальном сайте]]. ==== Ключевые объекты 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')