From 235f2a63cfac60f9b2bfc0702cadefad6e0eaf50 Mon Sep 17 00:00:00 2001 From: f-nivert <florian.nivert@hotmail.fr> Date: Fri, 8 Mar 2019 16:43:25 +0100 Subject: [PATCH] Add of the script bt-all.pl and cruise.toml --- btl-all.pl | 541 ++++++++++++++++++++++++++++++++++++++++++++++++++++ cruise.toml | 44 +++++ 2 files changed, 585 insertions(+) create mode 100644 btl-all.pl create mode 100644 cruise.toml diff --git a/btl-all.pl b/btl-all.pl new file mode 100644 index 0000000..0a9ac55 --- /dev/null +++ b/btl-all.pl @@ -0,0 +1,541 @@ +#!/usr/bin/perl -w +# +# btl-all.pl +# +# Genere un fichier btl avec tous les parametres a partir des fichiers +# Seabird .btl +# +# $Id J Grelet avril 2014$ +# +use strict; # necessite de declarer toutes les variables globales + +#use diagnostics; + +# use open qw(:std :utf8); +# binmode(STDERR, ":utf8"); +use Time::Local; +use Date::Manip; +use Getopt::Long; +use File::Basename; +use Data::Dumper; +use Oceano::Seawater; +use Oceano::Convert; +use Oceano::Seabird; +use Cwd; +use Config::Tiny; + +#use Tie::IxHash; + +#------------------------------------------------------------------------------ +# Les repertoires de sorties +#------------------------------------------------------------------------------ +my $ascii_dir = 'ascii/'; +my $odv_dir = 'odv/'; + +#------------------------------------------------------------------------------ +# Les variables globales +#------------------------------------------------------------------------------ +our $VERSION = "1.0"; +my $version; +my $help = undef; +my $author; +my $debug; +my $echo; +my $dtd; +my $dtdLocalPath; +my $encoding; + +my $hdr_file; +my $btl_file; +my $xml_file; +my $odv_file; + +my $header_file; +my $institute; +my $btlType; +my $btlSn; +my $pi; +my $creator; +my $acquisitionSoftware; +my $acquisitionVersion; +my $processingSoftware; +my $processingVersion; + +my $cycle_mesure; +my $plateforme; +my $contexte; +my $timezone; +my $format_date; +my $processing_code; +my $begin_date; +my $end_date; +my $cruisePrefix; +my $stationPrefixLength; +my $title_summary; +my $comment; +my $header; +my @header; +my $split; +my %split; +my $format; +my @format; +my %format; +my %data; +my @data; +my %sbe35; + +# sbe35 +my $t90sbe35; + +my $code = -1; # header code + +# fichiers bouteille seabird .btl +my $sbe_file; +my ( $s_date, $e_date, $e_time, $iso_date, $t_date ); +my ( $PRFL, $BOTL ); +my ( $lat, $lat_pos, $lat_deg, $lat_min, $lat_hemi ); +my ( $long, $long_pos, $long_deg, $long_min, $long_hemi ); +my ( $julien, $date, $month, $day, $year, $heure, $min, $time ); + +my $type_odv = 'B'; # station-type (either B, C or X for bottle, CTD or XBT data +my $bottom_depth = 1e36; + +#------------------------------------------------------------------------------ +# display_version() +# display program version +#------------------------------------------------------------------------------ +sub display_version() { + print "Version: $VERSION\nAuthor: $author\n\n"; + exit 1; +} + +#------------------------------------------------------------------------------ +# usage() +#------------------------------------------------------------------------------ +sub usage() { + print STDERR "\nusage: btl-all.pl [options] <files>\n\n"; + print STDERR + "Options:\n --help Display this help message\n"; + print STDERR " --version program version\n"; + print STDERR " --debug debug info\n"; + print STDERR " --echo display filenames processed\n"; + print STDERR " --dtd=[local|public] define DTD\n"; + print STDERR "examples:\n\$ perl btl-all.pl --echo data/btl/*.btl\n"; + exit 1; +} + +#------------------------------------------------------------------------------ +# get_options() +# analyse les options +#------------------------------------------------------------------------------ +sub get_options() { + + &GetOptions( + "echo" => \$echo, + "dtd=s" => \$dtd, + "debug" => \$debug, + "version" => \$version, + "help" => \$help + ) or &usage; + + &display_version if $version; + &usage if $help; +} + +#------------------------------------------------------------------------------ +# read string key inside section in config file +#------------------------------------------------------------------------------ +sub read_config_string() { + my ( $Config, $section, $key ) = @_; + + my $value = $Config->{$section}->{$key}; + if ( !defined $value ) { + die "Missing string '$key' in section '$section' $!"; + } + return $value; +} + +#------------------------------------------------------------------------------ +# read config.ini file where cruise parameter are defined +#------------------------------------------------------------------------------ +sub read_config() { + my ($configFile) = @_; + + # Create a config + my $Config = Config::Tiny->new; + + $Config = Config::Tiny->read($configFile) + or die "Could not open '$configFile' $!"; + + $author = &read_config_string( $Config, 'global', 'author' ); + $debug = &read_config_string( $Config, 'global', 'debug' ); + $echo = &read_config_string( $Config, 'global', 'echo' ); + $dtd = &read_config_string( $Config, 'xml', 'dtd' ); + $dtdLocalPath = &read_config_string( $Config, 'xml', 'dtdLocalPath' ); + $encoding = &read_config_string( $Config, 'xml', 'encoding' ); + $cycle_mesure = &read_config_string( $Config, 'cruise', 'cycle_mesure' ); + $plateforme = &read_config_string( $Config, 'cruise', 'plateforme' ); + $contexte = &read_config_string( $Config, 'cruise', 'context' ); + $timezone = &read_config_string( $Config, 'cruise', 'timezone' ); + $format_date = &read_config_string( $Config, 'cruise', 'format_date' ); + $processing_code = + &read_config_string( $Config, 'cruise', 'processing_code' ); + $begin_date = &read_config_string( $Config, 'cruise', 'begin_date' ); + $end_date = &read_config_string( $Config, 'cruise', 'end_date' ); + $institute = &read_config_string( $Config, 'cruise', 'institute' ); + $pi = &read_config_string( $Config, 'cruise', 'pi' ); + $creator = &read_config_string( $Config, 'cruise', 'creator' ); + $acquisitionSoftware = + &read_config_string( $Config, 'ctd', 'acquisitionSoftware' ); + $acquisitionVersion = + &read_config_string( $Config, 'ctd', 'acquisitionVersion' ); + $processingSoftware = + &read_config_string( $Config, 'ctd', 'processingSoftware' ); + $processingVersion = + &read_config_string( $Config, 'ctd', 'processingVersion' ); + $cruisePrefix = &read_config_string( $Config, 'ctd', 'cruisePrefix' ); + $stationPrefixLength = + &read_config_string( $Config, 'ctd', 'stationPrefixLength' ); + $btlType = &read_config_string( $Config, 'btl', 'type' ); + $btlSn = &read_config_string( $Config, 'btl', 'sn' ); + $title_summary = &read_config_string( $Config, 'btl', 'title_summary' ); + $comment = &read_config_string( $Config, 'btl', 'comment' ); + $header = &read_config_string( $Config, 'btl', 'header' ); + $split = &read_config_string( $Config, 'btl', 'split' ); + $format = &read_config_string( $Config, 'btl', 'format' ); +} + +#------------------------------------------------------------------------------ +# write XML header to output _ctd.xml file using oceano.dtd +#------------------------------------------------------------------------------ +sub write_xml_header { + my $today = &dateFormat( undef, "%d/%m/%Y" ); + + print XML_BTL_FILE "<?xml version=\"1.0\" encoding=\"$encoding\"?>\n"; + + # les commentaires ne sont pas acceptés par XML Toolbox Matlab de Geodise + if ( $dtd eq 'local' ) { + print XML_BTL_FILE +"<!DOCTYPE OCEANO SYSTEM \"$dtdLocalPath/$cycle_mesure/local/oceano.dtd\">\n"; + } + else { + print XML_BTL_FILE +'<!DOCTYPE OCEANO PUBLIC "-//US191//DTD OCEANO//FR" "http://www.brest.ird.fr/us191/database/oceano.dtd">' + . "\n"; + } + print XML_BTL_FILE '<OCEANO TYPE="PROFIL">' . "\n"; + print XML_BTL_FILE " <ENTETE>\n"; + print XML_BTL_FILE " <PLATEFORME>\n"; + print XML_BTL_FILE " <LIBELLE>$plateforme</LIBELLE>\n"; + print XML_BTL_FILE " </PLATEFORME>\n"; + print XML_BTL_FILE +" <CYCLE_MESURE CONTEXTE=\"$contexte\" TIMEZONE=\"$timezone\" FORMAT=\"$format_date\">\n"; + print XML_BTL_FILE " <LIBELLE>$cycle_mesure</LIBELLE>\n"; + print XML_BTL_FILE " <DATE_DEBUT>$begin_date</DATE_DEBUT>\n"; + print XML_BTL_FILE " <DATE_FIN>$end_date</DATE_FIN>\n"; + print XML_BTL_FILE " <INSTITUT>$institute</INSTITUT>\n"; + print XML_BTL_FILE " <RESPONSABLE>$pi</RESPONSABLE>\n"; + print XML_BTL_FILE +" <ACQUISITION LOGICIEL=\"$acquisitionSoftware\" version=\"$acquisitionVersion\"></ACQUISITION>\n"; + print XML_BTL_FILE +" <TRAITEMENT LOGICIEL=\"$processingSoftware\" version=\"$processingVersion\"></TRAITEMENT>\n"; + print XML_BTL_FILE +" <VALIDATION LOGICIEL=\"$0\" VERSION=\"$VERSION\" DATE=\"$today\" OPERATEUR=\"$creator\" CODIFICATION=\"OOPC\">\n"; + print XML_BTL_FILE " <CODE>$processing_code</CODE>\n"; + print XML_BTL_FILE " <COMMENTAIRE>$comment</COMMENTAIRE>\n"; + print XML_BTL_FILE " <COMMENTAIRE>$title_summary</COMMENTAIRE>\n"; + print XML_BTL_FILE " </VALIDATION>\n"; + print XML_BTL_FILE " </CYCLE_MESURE>\n"; + print XML_BTL_FILE + " <INSTRUMENT TYPE=\"$btlType\" NUMERO_SERIE=\"$btlSn\">\n"; + print XML_BTL_FILE " </INSTRUMENT>\n"; + print XML_BTL_FILE " </ENTETE>\n"; + print XML_BTL_FILE " <DATA>\n"; +} + +#------------------------------------------------------------------------------ +# fonctions de calcul de la position/date +#------------------------------------------------------------------------------ +sub position { + my ( $deg, $min, $hemi ) = @_; + my $sign = 1; + if ( $hemi eq "S" || $hemi eq "W" ) { + $sign = -1; + } + my $tmp = $min; + $min = abs $tmp; + my $sec = ( $tmp - $min ) * 100; + return ( ( $deg + ( $min + $sec / 100 ) / 60 ) * $sign ); +} + +#------------------------------------------------------------------------------ +#------------------------------------------------------------------------------ +#sub julian { +# my($jj,$h,$m) = @_; +# my $tmp = (($h * 60) + $m ) / 1440; +# return( $jj + $tmp ); +#} + +#------------------------------------------------------------------------------ +# entete ODV +#------------------------------------------------------------------------------ +sub entete_odv { + my $today = &dateFormat( undef, "%Y-%m-%dT%H:%M:%S" ); + my $cwd = getcwd(); + + print ODV_FILE "//ODV Spreadsheet file : $odv_file\n"; + print ODV_FILE "//Data treated : $today\n"; + print ODV_FILE "//<DataType>Profiles</DataType>\n"; + print ODV_FILE "//<InstrumentType>$btlType</InstrumentType>\n"; + print ODV_FILE "//<Source>$cwd</Sources>\n"; + print ODV_FILE "//<Creator>$creator</Creator>\n"; + print ODV_FILE "//\n"; + print ODV_FILE +"Cruise\tStation\tType\tyyyy-mm-ddThh:mm:ss\tLongitude [degrees_east]\tLatitude [degrees_north]\tBot. Depth [m]\tBTL\tPres [db]\tTE01 [C]\tTE02 [C]\tPSA1 [Psu]\tPSA2 [Psu]\tDO12 [micromole/kg]\tDO22 [micromole/kg]\tFLU2 [milligram/m3]\t TUR3 [%]\tPotemp090 [C]\tCPotemp190C [C]\n"; +} + +#------------------------------------------------------------------------------ +# Debut du programme principal +#------------------------------------------------------------------------------ +#&Date_Init( "TZ=UTC" ); +&Date_Init('SetDate=now,UTC'); +&read_config('../config.ini'); +&usage if ( $#ARGV == -1 ); +&get_options; + +# define files name +$hdr_file = lc $ascii_dir . $cycle_mesure . '-all.btl'; +$btl_file = lc $ascii_dir . $cycle_mesure . '-all_btl'; +$xml_file = lc $ascii_dir . $cycle_mesure . '-all_btl.xml'; +$odv_file = lc $odv_dir . $cycle_mesure . '-all_btl-odv.txt'; + +# get variables liste order from header +@header = split /\s+/, $header; + +# convert variable $split from config.ini to hash, ex $split = bottle,1,month,2,... +%split = split /,/, $split; + +# convert output format fron config.ini to hash +@format = split /\s+/, $format; + +# build hash %format with key: PRES, value: %7.3f +my @tmp = @format; +foreach my $key (@header) { + $format{$key} = shift @tmp; +} + +# test if output dirs exist and create them if not +mkdir($odv_dir) unless ( -d $odv_dir ); +mkdir($ascii_dir) unless ( -d $ascii_dir ); + +# ouvre les fichiers de sortie +open( HDR_BTL_FILE, "+> $hdr_file" ) or die "Can't open file : $hdr_file\n"; +open( BTL_FILE, "+> $btl_file" ) or die "Can't open file : $btl_file\n"; +open( XML_BTL_FILE, "+> $xml_file" ) or die "Can't open file : $xml_file\n"; +open( ODV_FILE, "+> $odv_file" ) or die "Can't open file : $odv_file\n"; + +print HDR_BTL_FILE +" St Date_deb Heure_deb Date_fin Heure_fin Latitude Longitude Nb_btl\n\n"; +&entete_odv; +&write_xml_header; +print XML_BTL_FILE "$header\n"; +$header_file = "$cycle_mesure $plateforme $institute $btlType $btlSn $pi"; +print BTL_FILE "$header_file\n"; +print BTL_FILE "$header\n"; + +# read SBE35 files +my $dir_sbe35 = 'data/sbe35/'; + +#my @files = grep ( -f ,<*.txt>); +## see: https://stackoverflow.com/questions/1510305/how-can-i-get-a-list-of-all-files-with-a-certain-extension-from-a-specific-direc + +foreach my $file_sbe35 ( grep ( -f, <data/sbe35/*.asc> ) ) { + + # recupere le numero de la station dans le nom du fichier + ($PRFL) = ( $file_sbe35 =~ m/$cruisePrefix(\d{$stationPrefixLength})/i ); + + # ouverture du fichier + open( SBE35_FILE, $file_sbe35 ); + print STDERR "Lit: $file_sbe35\n" if $debug; + my $i = 1; + while (<SBE35_FILE>) { + if ( not( /^[*#]/ || /^\s*$/ || /^dd/ ) ) { + + # print STDERR $_; + if (/t90\s*=\s*(\d*\.\d*)/) { + $t90sbe35 = ($1 >= 99.999) ? 1e+36 : $1; + $sbe35{"$PRFL:$i"} = $t90sbe35; + print STDERR $sbe35{"$PRFL:$i"} . "\n" if $debug; + $i++; + } + } + } + close SBE35_FILE; +} + +# parcourt des fichiers .btl passes en argument sur la ligne de commande +for ( my $i = 0 ; $i <= $#ARGV ; $i++ ) { + my $fileName = $ARGV[$i]; + + # ouverture du fichier + open( DATA_FILE, $fileName ); + print STDERR "\nLit: $fileName " if $debug; + + # recupere le numero de la station dans le nom du fichier + ($PRFL) = ( $fileName =~ m/$cruisePrefix(\d{$stationPrefixLength})/i ); + + $BOTL = 0; + + # on lit le fichier bouteille + while (<DATA_FILE>) { + + # decode la date et heure de debut de station + if (/System UpLoad Time =\s+(\.*)/) { # a modifier suivant le contexte + ($time) = /System UpLoad Time =\s+(\w+\s+\d+\s+\d+\s+\d+:\d+:\d+)/; + $date = &ParseDate($time); + + # transforme le day_of_year en julian day + $julien = &UnixDate( $time, "%j" ) - 1; + $julien = &julian( + $julien, + &UnixDate( $date, "%H" ), + &UnixDate( $date, "%M" ), + &UnixDate( $date, "%S" ) + ); + $s_date = &UnixDate( $date, "%d/%m/%Y %H:%M:%S" ); + + #$t_date = &UnixDate($date,"%Y%m%d%H%M%S"); + $t_date = &UnixDate( $date, "%q" ); + } + if (/NMEA Latitude\s*=\s*(\d+\s+\d+.\d+\s+\w)/) { + ( $lat_deg, $lat_min, $lat_hemi ) = split " ", $1; + $lat_pos = &position( $lat_deg, $lat_min, $lat_hemi ); + } + if (/NMEA Longitude\s*=\s*(\d+\s+\d+.\d+\s+\w)/) { + ( $long_deg, $long_min, $long_hemi ) = split " ", $1; + $long_pos = &position( $long_deg, $long_min, $long_hemi ); + + # print header and add 1e36 to complement columns + printf XML_BTL_FILE "%05d %d %7.3f %7.4f %8.4f %s", $PRFL, $code, + $julien, $lat_pos, $long_pos, $t_date; + printf XML_BTL_FILE " 1e36" x ( @header - 6 ); + printf XML_BTL_FILE "\n"; + printf BTL_FILE "%05d %d %7.3f %7.4f %8.4f %s", $PRFL, $code, $julien, + $lat_pos, $long_pos, $t_date; + printf BTL_FILE " 1e36" x ( @header - 6 ); + printf BTL_FILE "\n"; + } + + # decodage du fond (sonde) + if (/Bottom Depth\s*:\s*(\d*)\s*\S*/i) { + $bottom_depth = ( $1 eq '' ) ? 1e+36 : $1; + } + +# decode la date de chaque prelevement et extrait les donnees dans la ligne correspondante +# les parametres suivants doivent etre presents: +# Bottle Date Sal00 Sal11 Sbeox0ML/L Sbeox0Mm/Kg Sbeox1ML/L Sbeox1Mm/Kg Sbeox0dOV/dT Sbeox1dOV/dT PrDM DepSM +# T090C T190C C0S/m C1S/m Sbeox0V Sbeox1V (optionnels) FlECO-AFL Xmiss +# amop +# Bottle Date Sal00 Sal11 Sbeox0ML/L Sbeox0Mm/Kg Sbeox1ML/L Sbeox1Mm/Kg TimeJ PrDM DepSM T090C T190C +# C0S/m C1S/m Sbeox0V Sbeox1V Upoly0 FlC CStarAt0 CStarTr0 Spar Par Cpar Sbeox0dOV/dT Sbeox1dOV/dT +# Position Time +# TUR3 -> CStarTr0 (transmissiometre Wetlab %) +# TUR4 -> Upoly0 (turbidimètre) +# LGHT;LIGHT IRRADIANCE IMMERGED PAR;micromole photon/(m2.s);0;4000;%8.3lf;9999.999; +# LGH3;float32;light irradiance corrected par;;micromole photon/(m2.s);;TIME DEPTH LATITUDE LONGITUDE;;0;3000;%8.3f;1E+36;;0.001;;;;;;; +# LGH4;LIGHT IRRADIANCE SURFACE PAR;micromole photon/(m2.s);0;3000;%8.3lf;9999.999; +# LGH5 -> CPar (%) +# #LGHT;LIGHT IRRADIANCE IMMERGED PAR;micromole photon/(m2.s);0;4000;%8.3lf; +# FLU2 -> FlC (Chelsea Acquatracka III) +# + if (/^\s+\d+\s+\w+\s+\d+\s+\d+/) { + +# extract values and fill hash %data with position give by hash %split from config.ini + @data = split /\s+/; + while ( my ( $key, $value ) = each(%split) ) { + $data{$key} = $data[$value]; + } + $date = + &ParseDate( $data{'month'} . ' ' . $data{'day'} . ' ' . $data{'year'} ); + $e_date = &UnixDate( $date, "%d/%m/%Y" ); + $iso_date = &UnixDate( $date, "%Y-%m-%dT" ); + + # a changer eventuellement si LADCP et choix "table driven" dans seaseave + $BOTL += 1; + + # only for profile number or station + $data{'PRFL'} = $PRFL; + +# print for each value from hash %data with format from hash %format describe in config.ini + foreach my $key (@header) { + if ( $key eq 'TE35' ) { + my $TE35 = defined $sbe35{"$PRFL:$BOTL"} ? $sbe35{"$PRFL:$BOTL"} : 1e36; + printf XML_BTL_FILE "$format{$key} ", $TE35; + printf BTL_FILE "$format{$key} ", $TE35; + } + else { + printf XML_BTL_FILE "$format{$key} ", $data{$key}; + printf BTL_FILE "$format{$key} ", $data{$key}; + } + } + printf XML_BTL_FILE "\n"; + printf BTL_FILE "\n"; + } + + # decode l'heure sur la ligne suivante + if (/\s+(\d+:\d+:\d+)/) { + ($time) = /\s+(\d+:\d+:\d+)/; + $date = &ParseDate($time); + $e_time = &UnixDate( $date, "%H:%M:%S" ); + if ( $BOTL >= 1 ) { + printf ODV_FILE "%s\t%05d\t%s\t%s\t%8.4f\t%7.4f", + $cycle_mesure, $PRFL, $type_odv, + $iso_date . &UnixDate( $date, "%H:%M:%S" ), + $long_pos, $lat_pos; + printf ODV_FILE ( $bottom_depth > 1e35 ) ? "\t" : "\t%6.1f", + $bottom_depth; + printf ODV_FILE "\t$format{'BOTL'}", $data{'BOTL'}; + printf ODV_FILE "\t$format{'PRES'}", $data{'PRES'}; + printf ODV_FILE ( $data{'TE01'} > 1e35 ) ? "\t" : "\t$format{'TE01'}", + $data{'TE01'}; + printf ODV_FILE ( $data{'TE02'} > 1e35 ) ? "\t" : "\t$format{'TE02'}", + $data{'TE02'}; + printf ODV_FILE ( $data{'PSA1'} > 1e35 ) ? "\t" : "\t$format{'PSA1'}", + $data{'PSA1'}; + printf ODV_FILE ( $data{'PSA2'} > 1e35 ) ? "\t" : "\t$format{'PSA2'}", + $data{'PSA2'}; + printf ODV_FILE "\t$format{'DO21'}", $data{'DO21'}; + printf ODV_FILE "\t$format{'DO22'}", $data{'DO22'}; + printf ODV_FILE "\t$format{'FLU2'}", $data{'FLU2'}; + printf ODV_FILE "\t$format{'TUR3'}", $data{'TUR3'}; + + #printf ODV_FILE "\t$format{'Potemp090C'}", $data{'Potemp090C'}; + #printf ODV_FILE "\t$format{'Potemp190C'}\n", $data{'Potemp190C'}; + } + } + } + + # pour chaque fichier, on garde la date et heure de la derniere bouteille + # impression a l'ecran + printf STDERR "%05d %s %s %s %02d%c%05.2f %s %03d\xB0%05.2f %s %2d", + $PRFL, + $s_date, $e_date, $e_time, $lat_deg, 176, $lat_min, $lat_hemi, $long_deg, + $long_min, $long_hemi, $BOTL + if $echo; + printf STDERR "\n" if not $debug and $echo; + + # impression dans le fichier + printf HDR_BTL_FILE "%05d %s %s %s %02d%c%05.2f %s %03d%c%05.2f %s %2d\n", + $PRFL, $s_date, $e_date, $e_time, $lat_deg, 176, $lat_min, $lat_hemi, + $long_deg, 176, $long_min, $long_hemi, $BOTL; +} + +printf STDERR "\n"; + +print XML_BTL_FILE " </DATA>\n"; +print XML_BTL_FILE "</OCEANO>\n"; + +close HDR_BTL_FILE; +close XML_BTL_FILE; +close BTL_FILE; +close ODV_FILE; diff --git a/cruise.toml b/cruise.toml new file mode 100644 index 0000000..e89a637 --- /dev/null +++ b/cruise.toml @@ -0,0 +1,44 @@ +[global] +author = "jgrelet IRD jmarch 2019 PIRATA-FR29 cruise" +debug = false +echo = true + +[cruise] +cycleMesure = "PIRATA-FR29" +plateforme = "THALASSA" +callsign = "FNFP" +institute = "IRD" +timezone = "GMT" +beginDate = "01/03/2019" +endDate = "04/04/2019" +pi = "BOURLES" +creator = "Jacques.Grelet@ird.fr" + +[ctd] +cruisePrefix = "fr29" +# profile name : fr29xxx +station = 'Station\s*:\s*\D*(\d*)' +stationPrefixLength = 3 +titleSummary = "CTD profiles processed during PIRATA-FR29 cruise" +typeInstrument = "SBE911+" +instrumentNumber = "09P1263" +isHeader = '^[*#]' +isDevice = [ '^\*\s+(Sea-Bird)','(\*END\*)' ] +latitude = ['Latitude\s*:\s*(\d+)\s+(\d+.\d+)\s+(\w)','NMEA Latitude\s*=\s*(\d+\s+\d+.\d+\s+\w)'] +longitude = ['Longitude\s*:\s*(\d+)\s+(\d+.\d+)\s+(\w)','NMEA Longitude\s*=\s*(\d+\s+\d+.\d+\s+\w)'] +date = 'Date\s*:\s*(\d+)/(\d+)/(\d+)' +hour = '[Heure|Hour]\s*:\s*(\d+)[:hH](\d+):(\d+)' +bottomDepth = 'Bottom Depth\s*:\s*(\d*\.?\d+?)\s*\S*' +operator = 'Operator\s*:\s*(.*)' +type = 'Type\s*:\s*(.*)' +split = "ETDD,2,PRES,3,DEPTH,4,TEMP,5,PSAL,18,DENS,20,SVEL,22,DOX2,16,FLU2,14,FLU3,15,TUR3,13,NAVG,24" +splitAll = "ETDD,2,PRES,3,DEPH,4,TE01,5,TE02,6,CND1,7,CND2,8,DOV1,9,DOV2,10,DVT1,11,DVT2,12,TUR3,13,FLU2,14,FLU3,15,DO12,16,DO22,17,PSA1,18,PSA2,19,DEN1,20,DEN2,21,SVEL,22,NAVG,24" + +[btl] +typeInstrument = "SBE32 standard 24 Niskin bottles" +instrumentNumber = "unknown" +titleSummary = "Water sample during PIRATA-FR29 cruise with 20 levels" +comment = "CTD bottles water sampling with temperature, salinity and oxygen from primary and secondary sensors" +split = ' BOTL,1,month,2,day,3,year,4,PSA1,5,PSA2,6,DO11,7,DO12,8,DO21,9,DO22,10,Potemp090C,11,Potemp190C,12,ETDD,13,PRES,14,DEPH,15,TE01,16,TE02,17,CND1,18,CND2,19,DOV1,20,DOV2,21,DVT1,22,DVT2,23,TUR3,24,FLU2,25' + + -- GitLab