О задаче конвертирования SEED файлов в форматы

advertisement
О задаче конвертирования SEED файлов в форматы, понимаемые программными
средствами океанологической информационно-аналитической системой (ОИАС)
1. Самое общее описание SEED-файлов есть в PDF документе. Нам не нужно все, надо
только научиться читать и переводить в файлы, которые получаются на сейсмической
станции на МЭС «м.Шульца» (зарегистрирована под именем MSH). Нам сейчас не нужны
параметры всех предварительных фильтров и подобная информация, которая
сопровождает файлы . Нам нужны :
количество разных каналов,
частота дискретизации (или время между отсчетами),
дата и время начала записи,
имена каналов (для текстовых файлов)
2. В общем случае в одном файле могут быть данные с нескольких сейсмических станций,
обычно по три канала на каждую станцию (сигналы микросейсмических колебаний земли
в направлениях на север, восток и вниз). Таким образом, каждый канал файла
идентифицируется указанием уникального имени станции и направлением регистрации
колебаний – N, E, Z.
В нашем случае данные будут с одной станции - MSH, а направления указываются
трехбуквенными аббревиатурами: BHE, BHZ, BHN. Первые 2 буквы наверное
идентифицируют какие-то особенности сейсморегистратора, у нас всегда BH.
3. Похоже, данные каждого канала записаны блоками фиксированной длины. В
нормальном режиме эти блоки следуют по времени один за другим, образуя слитную
запись, но встречаются ситуации, когда некоторые фрагменты данных в канале
пропущены. Эти пропуски в выходных файлах должны интерполироваться. В первом
приближении – линейно, потом подумаем о более интеллектуальных способах
интерполяции. Недостающие слева и справа концевые фрагменты тоже должны разумным
образом «восстанавливаться» - экстраполироваться.
4. Имена SEED-файлов обычно хранят дату-время начала записи (но более точное время
есть внутри самого файла), могут не иметь расширений, но иногда в расширение пишут
имя станции, т.е. возможны варианты
2008-10-5-15-52-00
2008-10-5-15-52-00.msh
5. Должны поддерживаться два нижеописанных формата выходных данных.
DAT-формат
Не самый удачный, но давно используется в ТОИ и поэтому поддерживается в ОИАС.
Файлы имеют расширение *.dat. Имена произвольные, часто тоже воспроизводят дату и
время начала записи.
Сначала идет заголовок файла, а затем сами данные.
Заголовок занимает 128 байт и представляет собой следующую структуру (С++):
struct DataHeader
{
float label; // метка файла (используется только при записи)
float n_points;
// количество отсчетов сигнала в одном канале
short int n_chan;
// количество каналов данных
float timecad;
// интервал дискретизации Т между отсчетами (в микросекундах)
char begtime[30]; // время начала записи файла
char endtime[30]; // время конца записи файла
float ws1; // зарезервировано под дополнительные служебные параметры
float ws2; // то же
short int PO; // параметр осреднения отсчетов сигнала перед записью в файл
char empty[44];
// место, зарезервированное для внесения дополнительной
информации
};
После заголовка идут данные, записанные покадрово: кадр 1, кадр 2, …, кадр
n_points. Кадр – совокупность значений сигналов всех каналов (1
n_chan),
соответствующих фиксированному моменту времени. Каждое значение сигнала
кодируется вещественным числом одинарной точности – тип float (4 байта). Общий объем
файла данных равен: 128 байт (“шапка”) + (n_points • n_chan • 4) байт (сами данные).
Поля “begtime” и “endtime” записаны как строковые переменные в формате
представления даты и времени, соответствующем версии операционной системы, которая
была установлена на регистрирующем компьютере в момент проведения измерений,
например, “Mon Oct 17 22:50:41 1994” , “1-2-1999 9:52:13” и т.д.
Параметр осреднения “PO” - размер “окна осреднения” отсчетов сигнала (система
регистрации рассчитывает среднее арифметическое каждых PO отсчетов с выхода АЦП и
записывает их в файл).
Примечание: В ранних версиях (до 1999 года) этот параметр должен был
применяться при расчете частоты дискретизации сигналов, записанных в файлах
PO  1000000
FD 
Гц . В поздних версиях этот параметр стал учитываться самой
timecad
системой регистрации путем перерасчета параметра timecad : timecad  timecad  PO .
Соответственно для расчета частоты дискретизации внешними программами должна
1000000
Гц .
применяться формула FD 
timecad
Примеры DAT-файлов приведены на нашем FTP
TXT - формат
Текстовый формат. Содержит шапку, сопровождаемую необязательными комментариями.
Дале идут данные в несколько столбцов – по числу каналов. Разделитель между отсчетами
– одни или несколько пробелов. См. пример :
# количество каналов
9
# количество точек
5843
# Частота дискретизации (Гц)
0.0333
# Дата начала записи (25-12-2009)
08-01-2009
# Время начала записи (17:34:36)
00:00:00
# Названия каналов (через ;)
Скор.ветра;В порывах;Напр.ветра;Темп.возд.;Давление;Т.почвы;T.точки росы;Ср.напр.
# Значения отсчётов сигнала (канал1 канал2 канал3 ...)
4.97
5.59 182.13
18.54
98.66 999.93
-8.03 18.32 182.11
5.13
5.28 183.54
18.54
98.66 999.93
-8.03 18.32 183.52
5.05
5.59 184.94
18.54
98.66 999.93
-8.03 18.32 184.92
5.05
5.05
4.82
4.74
5.05
5.59
5.28
5.28
5.28
5.59
187.40
184.59
183.18
184.24
188.46
18.54
18.54
18.54
18.54
18.54
98.66
98.66
98.66
98.66
98.66
999.93
999.93
999.93
999.93
999.93
-8.03
-8.03
-8.03
-8.03
-8.03
18.32
18.32
18.32
18.32
18.32
187.38
184.57
183.16
184.22
188.44
…
Примечание: в DAT-файлах нет имен каналов. В TXT – есть, в последней
информационной строке шапки, разделенные точкой с запятой. Поэтому в DAT файлы мы
имена не будем писать (разве что подумаем и задействуем неиспользованное поле char
empty[44] ). В TXT файлы имена писать будем, предлагаю на всякий случай имена
формировать из имени станции и направления, т.е. использовать такие: MSH-BHN, MSHBHE, MSH-BHZ.
6. Программа конвертирования должна работать под Windows, вызываться из командной
строки с параметрами. Например
SEED_to_OIAS <входной файл> <выходной файл> /опция1 /опция2 …
Нам надо различать тип выходного файла – DAT или TXT. Это можно реализовать на
основе анализа расширения указанного выходного файла, или использовать отдельную
опцию.
Очень актуальна опция для указания временного промежутка выбираемой записи (датывремени начала данных и длины записи, например, в секундах). Если этой опции нет – по
умолчанию выбирается все, что есть в файле.
Может быть будут актуальными опции явного указания имени станции (MSH, PET, YAC,
…), ориентации регистраторов (BHN, BHE, BHZ), составного имения канала (MSH-BHN,
PET-BHE, YAC-BHZ, .). ! Это не первоочередная опция, пока по умолчанию путь берутся
все каналы, которые есть в seed-файле.
С окончательным видом командной строки определитесь сами. Имейте ввиду, что
программа должна работать и как обычное пользовательское приложение, и в составе
нашей ОИАС, где будут автоматически генерироваться командные строки для
конвертирования файлов. Типовой запрос к ОИАС – предоставить в формате TXT или
DAT данные с сейсмостанции MSH за период c 23.02.2009 13:44:31 по 23.02.2009 16:14:22
. ОИАС должна будет найти соответствующий seed-файл и сформировать командную
строку на выборку заданного интервала. NB. Как вы понимаете, потенциально возможно,
что одного SEED-файла может не хватить, потом подумаем, как поступать в подобных
случаях.
7. Для отладки используйте программный комплекс DIMAS – его реально применяют
сейсмологи Камчатского филиала Геофизической службы РАН для локализации
положения эпицентра и оценки магнитуды землетрясений. Его надо распаковать в
директории C:/Dimas, вызвать программу Dimas.exe, далее все интуитивно понятно. В
частности можно открыть SEED-файлы, посмотреть на сигналы в разных видах
(используйте меню View), сохранить данные в текстовые ASC-файлы (у них отличный от
нашего текстовый формат), почитать справочную систему.
Пока все. Можно начинать.
PS. Игорь, оцените свою временную загруженность курсовой и прочими делами. Мне
минимально функциональный вариант программы желательно получить до конца марта,
лучше, если еще раньше. Может быть, порекомендуете еще кого-нибудь из своей группы,
кто менее загружен и при этом способен справиться с задачей. Может быть, будете
работать с кем-то в паре, хотя для этой задачи вполне достаточно одного программиста.
Будут вопросы – пишите.
ВК
Download