Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
Oceano2python
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
US191
Oceano2python
Commits
235f2a63
Commit
235f2a63
authored
6 years ago
by
f-nivert
Browse files
Options
Downloads
Patches
Plain Diff
Add of the script bt-all.pl and cruise.toml
parent
a7ee893f
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
btl-all.pl
+541
-0
541 additions, 0 deletions
btl-all.pl
cruise.toml
+44
-0
44 additions, 0 deletions
cruise.toml
with
585 additions
and
0 deletions
btl-all.pl
0 → 100644
+
541
−
0
View file @
235f2a63
#!/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
\n
Author:
$author
\n\n
";
exit
1
;
}
#------------------------------------------------------------------------------
# usage()
#------------------------------------------------------------------------------
sub
usage
()
{
print
STDERR
"
\n
usage: 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
\t
Station
\t
Type
\t
yyyy-mm-ddThh:mm:ss
\t
Longitude [degrees_east]
\t
Latitude [degrees_north]
\t
Bot. Depth [m]
\t
BTL
\t
Pres [db]
\t
TE01 [C]
\t
TE02 [C]
\t
PSA1 [Psu]
\t
PSA2 [Psu]
\t
DO12 [micromole/kg]
\t
DO22 [micromole/kg]
\t
FLU2 [milligram/m3]
\t
TUR3 [%]
\t
Potemp090 [C]
\t
CPotemp190C [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
"
\n
Lit:
$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
;
This diff is collapsed.
Click to expand it.
cruise.toml
0 → 100644
+
44
−
0
View file @
235f2a63
[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'
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment