Skip to content

Commit f1ddeba

Browse files
committed
Merge branch 'webobs-2.7'
2 parents 22c4498 + ec401ad commit f1ddeba

25 files changed

+142
-35
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,7 @@ PACK/*
1616
!PACK/fpm*
1717
!PACK/showi18id
1818
!PACK/CHECKLIST.txt
19+
*.swo
20+
*.swp
1921
.DS_Store
2022
**/.DS_Store

CODE/cgi-bin/formEXTENSO.pl

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ =head1 Query string parameter
5151

5252
die "You can't edit EXTENSO reports." if (!clientHasEdit(type=>"authforms",name=>"EXTENSO"));
5353

54-
my $FORM = new WebObs::Form('EXTENSO_LEG');
54+
my $FORM = new WebObs::Form('EXTENSO');
5555
my %Ns;
5656
my @NODESSelList;
5757
my %Ps = $FORM->procs;

CODE/cgi-bin/mailInfo_OVPF.pl

100644100755
File mode changed.

CODE/cgi-bin/mailInfo_REVOSIMA.pl

100644100755
File mode changed.

CODE/cgi-bin/showEXTENSO.pl

+2
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ =head1 Query string parameters
8181
# ---- standard FORMS inits ----------------------------------
8282
my $QP = $cgi->Vars;
8383

84+
$QP->{'form'} ||= "EXTENSO";
85+
8486
die "You can't view EXTENSO reports." if (!clientHasRead(type=>"authforms",name=>$QP->{form}));
8587
my $displayOnly = clientHasEdit(type=>"authforms",name=>$QP->{form}) ? 0 : 1;
8688

CODE/etc/rawformats.conf

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ winston|EARTHWORM|EarthWorm Winston Wave Server data request|
2121
gipsy|GNSS|JPL GIPSY-OASIS .tdp file|ANTENNA,RECEIVER,XYZ,CHAR9
2222
gipsyx|GNSS|JPL GipsyX .tdp file|ANTENNA,RECEIVER,CHAR9
2323
globkval|GNSS|MIT GAMIT/GLOBK VAL file|CHAR9
24+
spotgins-ippp|GNSS|SPOTGINS IPPP timeseries|CHAR9
25+
gamit-pos|GNSS|MIT GAMIT/GLOBL POS timeseries|CHAR9
2426
sbe37-ascii|GNSS|sbe37 OBP text file|DATA_ERROR,DATA_DECIMATE,CHAR9
2527
usgs-rneu|GNSS|USGS RNEU text file|CHAR9
2628
ics-neu|GNSS|ICS NEU text file|CHAR9

CODE/matlab/readfmtdata.m

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
%
2525
% Authors: François Beauducel, Jean-Marie Saurel, WEBOBS/IPGP
2626
% Created: 2013-12-29, in Guadeloupe, French West Indies
27-
% Updated: 2024-07-02
27+
% Updated: 2025-01-23
2828

2929
wofun = sprintf('WEBOBS{%s}',mfilename);
3030

@@ -72,7 +72,7 @@
7272
case {'miniseed','seedlink','arclink','combined','fdsnws-dataselect'}
7373
D(n) = readfmtdata_miniseed(WO,P,N(n),F);
7474

75-
case {'globkval','gipsy','gipsyx','gipsy-tdp','usgs-rneu','ies-neu','ogc-neu','ingv-gps','sbe37-ascii'}
75+
case {'globkval','gipsy','gipsyx','gipsy-tdp','usgs-rneu','ies-neu','ogc-neu','ingv-gps','sbe37-ascii','spotgins-ippp','gamit-pos'}
7676
D(n) = readfmtdata_gnss(WO,P,N(n),F);
7777

7878
case {'hyp71sum2k','fdsnws-event','scevtlog-xml'}

CODE/matlab/readfmtdata_gnss.m

+107-11
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,18 @@
3434
% data format: extract from SmoothFinal.tdp output file (grep "Station.SSSS.State.pos.[XYZ]" lines)
3535
% node calibration: no .CLB file or 4 components (East, North, Up) in meters and (Orbit)
3636
%
37+
% format 'gins-ippp'
38+
% type: GINS IPPP solutions
39+
% filename/url: P.RAWDATA (use $FID to point the right file/url)
40+
% data format: yyyymmdd hhmmss yyyy.yyyyyyyyy jjjjj.jj X Y Z dX dY dZ E N V dE dN dV
41+
% node calibration: no .CLB file or 4 components (East, North, Up) in meters and (Orbit)
42+
%
43+
% format 'gamit-pos'
44+
% type: GAMIT/GLOBK POS file
45+
% filename/url: P.RAWDATA (use $FID to point the right file/url)
46+
% data format: yyyymmdd jjjjj.jjjj E N U dE dN dU
47+
% node calibration: no .CLB file or 4 components (East, North, Up) in meters and (Orbit)
48+
%
3749
% format 'usgs-rneu'
3850
% type: USGS GPS results ITRF08
3951
% filename/url: P.RAWDATA (use $FID to point the right file/url)
@@ -55,10 +67,12 @@
5567
%
5668
% Authors: François Beauducel and Jean-Bernard de Chabalier, WEBOBS/IPGP
5769
% Created: 2016-07-10, in Yogyakarta (Indonesia)
58-
% Updated: 2021-11-12
70+
% Updated: 2025-01-23
5971

6072
wofun = sprintf('WEBOBS{%s}',mfilename);
6173

74+
% minimum decent error is 0.1 mm (!)
75+
min_error = 1e-4;
6276

6377
switch F.fmt
6478
% -----------------------------------------------------------------------------
@@ -118,6 +132,50 @@
118132
%end
119133
%D.ITRF_YEAR = itrf;
120134

135+
136+
% -----------------------------------------------------------------------------
137+
case 'gamit-pos'
138+
% format example
139+
% yyyymmdd jjjjj.jjjj E N U dE dN dU
140+
% 20100101 55197.4993 -0.09875 -0.11953 0.00075 0.00198 0.00161 0.00645
141+
142+
fdat = sprintf('%s/%s.dat',F.ptmp,N.ID);
143+
wosystem(sprintf('rm -f %s',fdat),P);
144+
for a = 1:length(F.raw)
145+
fraw = F.raw{a};
146+
cmd0 = sprintf('awk ''/^[^!]/ {print}'' >> %s',fdat); % removes header lines
147+
if strncmpi('http',fraw,4)
148+
s = wosystem(sprintf('curl -s -S "%s" | %s',fraw,cmd0),P);
149+
if s ~= 0
150+
break;
151+
end
152+
else
153+
s = wosystem(sprintf('cat %s | %s',fraw,cmd0),P);
154+
end
155+
if s ~= 0
156+
fprintf('%s: ** WARNING ** Raw data "%s" not found.\n',wofun,fraw);
157+
end
158+
end
159+
160+
% load the file
161+
if exist(fdat,'file')
162+
dd = load(fdat);
163+
else
164+
dd = [];
165+
end
166+
if ~isempty(dd)
167+
t = dd(:,2) + 678941.5007; % converts MJD to datenum
168+
d = [dd(:,3:5),zeros(size(dd,1),1)]; % North(mm),East(mm),Up(mm) => E(m),N(m),U(m),Orbit
169+
e = dd(:,6:8);
170+
e(e<min_error) = min_error;
171+
fprintf('%d data imported.\n',size(dd,1));
172+
else
173+
fprintf('no data found!\n')
174+
t = [];
175+
d = [];
176+
e = [];
177+
end
178+
121179
% -----------------------------------------------------------------------------
122180
case {'gipsy','gipsy-tdp','gipsyx'}
123181

@@ -183,8 +241,7 @@
183241
% converts cartesian geocentric (X,Y,Z) to UTM, estimating errors
184242
[enu,e] = cart2utm(dd(:,[2,6,10])*kmfact,dd(:,[3,7,11])*kmfact);
185243
d = [enu,dd(:,4)];
186-
% minimum decent error is 1 mm (!)
187-
e(e<1e-3) = 1e-3;
244+
e(e<min_error) = min_error;
188245
fprintf(' %d data imported.\n',size(dd,1));
189246
else
190247
fprintf(' no data found!\n')
@@ -194,6 +251,49 @@
194251
end
195252
%D.ITRF_YEAR = 'ITRF08';
196253

254+
% -----------------------------------------------------------------------------
255+
case 'spotgins-ippp'
256+
% format example
257+
% !yyyymmdd hhmmss yyyy.yyyyyyyyy jjjjj.jj X_position Y_position Z_position dX dY dZ E N V dE dN dV
258+
% 20160723 65619 2016.558521561 57592.29 4182067.152057 570976.439258 4765940.539811 0.000611 0.000218 0.000673 -0.006574 -0.008848 -0.014844 0.000205 0.000307 0.000859
259+
260+
fdat = sprintf('%s/%s.dat',F.ptmp,N.ID);
261+
wosystem(sprintf('rm -f %s',fdat),P);
262+
for a = 1:length(F.raw)
263+
fraw = F.raw{a};
264+
cmd0 = sprintf('awk ''/^[^!]/ {print}'' >> %s',fdat); % removes header lines
265+
if strncmpi('http',fraw,4)
266+
s = wosystem(sprintf('curl -s -S "%s" | %s',fraw,cmd0),P);
267+
if s ~= 0
268+
break;
269+
end
270+
else
271+
s = wosystem(sprintf('cat %s | %s',fraw,cmd0),P);
272+
end
273+
if s ~= 0
274+
fprintf('%s: ** WARNING ** Raw data "%s" not found.\n',wofun,fraw);
275+
end
276+
end
277+
278+
% load the file
279+
if exist(fdat,'file')
280+
dd = load(fdat);
281+
else
282+
dd = [];
283+
end
284+
if ~isempty(dd)
285+
t = datenum(dd(:,3),1,1,0,0,0);
286+
d = [dd(:,11:13),zeros(size(dd,1),1)]; % North(mm),East(mm),Up(mm) => E(m),N(m),U(m),Orbit
287+
e = dd(:,14:16);
288+
e(e<min_error) = min_error;
289+
fprintf('%d data imported.\n',size(dd,1));
290+
else
291+
fprintf('no data found!\n')
292+
t = [];
293+
d = [];
294+
e = [];
295+
end
296+
197297
% -----------------------------------------------------------------------------
198298
case 'usgs-rneu'
199299
% format example
@@ -230,8 +330,7 @@
230330
t = datenum(ty,tm,td,12,0,0); % date is YYYYMMDD and we force time to 12:00:00
231331
d = [dd(:,[3,2,4])/1e3,dd(:,5)]; % North(mm),East(mm),Up(mm),Orbit => E(m),N(m),U(m),O
232332
e = dd(:,[7,6,8])/1e3;
233-
% minimum decent error is 1 mm (!)
234-
e(e<1e-3) = 1e-3;
333+
e(e<min_error) = min_error;
235334
fprintf('%d data imported.\n',size(dd,1));
236335
else
237336
fprintf('no data found!\n')
@@ -274,8 +373,7 @@
274373
t = datenum(dd(:,1),1,1,0,0,0); % date is decimal year
275374
d = [dd(:,[4,2,6]),zeros(size(dd,1),1)]; % North(mm),East(mm),Up(mm),Orbit => E(m),N(m),U(m),O
276375
e = dd(:,[5,3,7]);
277-
% minimum decent error is 1 mm (!)
278-
e(e<1e-3) = 1e-3;
376+
e(e<min_error) = min_error;
279377
fprintf('%d data imported.\n',size(dd,1));
280378
else
281379
fprintf('no data found!\n')
@@ -318,8 +416,7 @@
318416
t = datenum(dd(:,2),dd(:,3),dd(:,4),12,0,0); % here we force time to noon
319417
d = [dd(:,[6,5,7]),zeros(size(dd,1),1)]; % North(mm),East(mm),Up(mm) => E(m),N(m),U(m),Orbit
320418
e = dd(:,[9,8,10]);
321-
% minimum decent error is 1 mm (!)
322-
e(e<1e-3) = 1e-3;
419+
e(e<min_error) = min_error;
323420
fprintf('%d data imported.\n',size(dd,1));
324421
else
325422
fprintf('no data found!\n')
@@ -367,8 +464,7 @@
367464
t = datenum(dd(:,1),1,1); % here we force time to January 1st!
368465
d = [dd(:,2:4),zeros(size(dd,1),1)];
369466
e = dd(:,5:7);
370-
% minimum decent error is 1 mm (!)
371-
e(e<1e-3) = 1e-3;
467+
e(e<min_error) = min_error;
372468
fprintf('%d data imported.\n',size(dd,1));
373469
else
374470
fprintf('no data found!\n')

CODE/matlab/superprocs/gridmaps.m

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function gridmaps(grids,outd,varargin)
4040
%
4141
% Author: F. Beauducel, C. Brunet, WEBOBS/IPGP
4242
% Created: 2013-09-13 in Paris, France
43-
% Updated: 2024-12-04
43+
% Updated: 2025-01-23
4444

4545

4646
WO = readcfg;
@@ -211,11 +211,11 @@ function gridmaps(grids,outd,varargin)
211211

212212
% looks for supplementary maps (MAP*_XYLIM|LON1,LON2,LAT1,LAT2 keys)
213213
if merge
214-
maps(1,:) = {'MAP',mmaplim};
214+
maps = {'MAP',mmaplim};
215215
else
216216
fd = fieldnames(G);
217217
k = find(~cellfun(@isempty,regexp(fd,'^MAP\d+_XYLIM$')));
218-
maps(1,:) = {'MAP',[]};
218+
maps = {'MAP',[]};
219219
for ii = 1:length(k)
220220
x = split(fd{k(ii)},'_');
221221
v = G.(fd{k(ii)});

SETUP/DATA/NODES/GCSBCM1/GCSBCM1.clb

Whitespace-only changes.

SETUP/DATA/NODES/GCSBJN1/GCSBJN1.clb

Whitespace-only changes.

SETUP/DATA/NODES/GCSCC21/GCSCC21.clb

Whitespace-only changes.

SETUP/DATA/NODES/GCSREV1/GCSREV1.clb

Whitespace-only changes.

SETUP/DATA/NODES/ISBFDF0/ISBFDF0.clb

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# WebObs - DEV : calibration file ISBFDF0
2-
# [2014-07-22 !]
3-
1998-11-25|00:00|1|LHE|nm/s|STS-2|LHE|0|3.9736e-1|1|||90|14.734971|-61.146311|467|0|1||00
4-
1998-11-25|00:00|2|LHN|nm/s|STS-2|LHN|0|3.9736e-1|1|||0|14.734971|-61.146311|467|0|1||00
5-
1998-11-25|00:00|3|LHZ|nm/s|STS-2|LHZ|0|3.9736e-1|1|||0|14.734971|-61.146311|467|0|1||00
6-
1998-11-25|00:00|4|LKI|�C|PT1000|LKI|20.78|2.841e-3|1|||0|14.734971|-61.146311|467|0|1||00
7-
1998-11-25|00:00|5|LDI|kPa|EFFA|LDI|90|0.6143e-3|1|||0|14.734971|-61.146311|467|0|1||00
2+
# [2020-02-05 !]
3+
=key|DATE|TIME|nv|nm|un|ns|cd|of|et|ga|vn|vm||||al|dp|sf|db|lc
4+
1|1998-11-25|00:00|1|LHE|m/s|STS-2|LHE|0|3.9736e-10|1|||90|14.734971|-61.146311|467|0|1||00
5+
2|1998-11-25|00:00|2|LHN|m/s|STS-2|LHN|0|3.9736e-10|1|||0|14.734971|-61.146311|467|0|1||00
6+
3|1998-11-25|00:00|3|LHZ|m/s|STS-2|LHZ|0|3.9736e-10|1|||0|14.734971|-61.146311|467|0|1||00
7+
4|1998-11-25|00:00|4|LKI|�C|PT1000|LKI|20.78|2.841e-3|1|||0|14.734971|-61.146311|467|0|1||00
8+
5|1998-11-25|00:00|5|LDI|Pa|EFFA|LDI|90000|0.6143|1|||0|14.734971|-61.146311|467|0|1||00
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
# WebObs - DEV : calibration file ISBFDFM
2-
# [2021-01-21 !]
3-
2019-10-24|00:00|1|LHE|nm/s|STS-2|LHE|0|3.9736e-1|1|||90|14.734971|-61.146311|467|0|1||00
4-
2019-10-24|00:00|2|LHN|nm/s|STS-2|LHN|0|3.9736e-1|1|||0|14.734971|-61.146311|467|0|1||00
5-
2019-10-24|00:00|3|LHZ|nm/s|STS-2|LHZ|0|3.9736e-1|1|||0|14.734971|-61.146311|467|0|1||00
6-
2019-10-24|00:00|4|LKO|�C|EFFA|LDI|0|0.6143|1|||0|14.734971|-61.146311|467|0|1||00
7-
2019-10-24|00:00|5|LDI|kPa|EFFA|LDI|90|0.6143e-3|1|||0|14.734971|-61.146311|467|0|1||00
1+
# WebObs - DEV-MARENGO : calibration file PROC.GEOSCOPE.ISBFDFM
2+
# [2024-04-26 !]
3+
=key|DATE|TIME|nv|nm|un|ns|cd|of|et|ga|vn|vm|az|la|lo|al|dp|sf|db|lc
4+
1|2019-10-24|00:00|1|LHE|nm/s|STS-2|LHE|0|3.9736e-1|1|||90|14.734971|-61.146311|467|0|1||00|
5+
2|2019-10-24|00:00|2|LHN|nm/s|STS-2|LHN|0|3.9736e-1|1|||0|14.734971|-61.146311|467|0|1||00|
6+
3|2019-10-24|00:00|3|LHZ|nm/s|STS-2|LHZ|0|3.9736e-1|1|||0|14.734971|-61.146311|467|0|1||00|
7+
4|2019-10-24|00:00|4|LKO|�C|EFFA|LDI|0|0.6143|1|||0|14.734971|-61.146311|467|0|1||00|
8+
5|2019-10-24|00:00|5|LDI|kPa|EFFA|LDI|90|0.6143e-3|1|||0|14.734971|-61.146311|467|0|1||00|

SETUP/DATA/NODES/WDCABD0/WDCABD0.clb

Whitespace-only changes.

SETUP/DATA/NODES/WDCBIM0/WDCBIM0.clb

Whitespace-only changes.

SETUP/DATA/NODES/WDCCBE0/WDCCBE0.clb

Whitespace-only changes.

SETUP/DATA/NODES/WDCDHS0/WDCDHS0.clb

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# WEBOBS - DEV IPGP : calibration file WDCDHS0
22
# [2013-04-03 FB]
3-
2008-06-21|00:00|1|Eastern|m||E|0|1|1|||0|16.27268|-61.76509|618|0|||
4-
2008-06-21|00:00|2|Northern|m||N|0|1|1|||0|16.27268|-61.76509|618|0|||
5-
2008-06-21|00:00|3|Vertical|m||U|0|1|1|||0|16.27268|-61.76509|618|0|||
3+
=key|DATE|TIME|nv|nm|un|ns|cd|of|et|ga|vn|vm|az|la|lo|al|dp|sf|db|lc
4+
1|2008-06-21|00:00|1|Eastern|m||E|0|1|1|||0|16.27268|-61.76509|618|0|||
5+
2|2008-06-21|00:00|2|Northern|m||N|0|1|1|||0|16.27268|-61.76509|618|0|||
6+
3|2008-06-21|00:00|3|Vertical|m||U|0|1|1|||0|16.27268|-61.76509|618|0|||

SETUP/DATA/NODES/WDCDSD0/WDCDSD0.clb

Whitespace-only changes.

SETUP/DATA/NODES/WDCILAM/WDCILAM.clb

Whitespace-only changes.

SETUP/DATA/NODES/WDCMGL0/WDCMGL0.clb

Whitespace-only changes.

SETUP/DATA/NODES/WDCMPOM/WDCMPOM.clb

Whitespace-only changes.

SETUP/DATA/NODES/WDCTDB0/WDCTDB0.clb

Whitespace-only changes.

release-notes.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ The latest release contains improvements, new features, bug fixes, and sometimes
88

99
Sections with `!!` prefix must be carefully read in case of upgrade. It usually means that the upgrade could change some behavior from previous release installations (i.e., not a bug fix). An appropriate configuration to keep the former behavior is usually proposed.
1010

11-
## v2.7.1 (December 2024)
11+
## v2.7.2 (January 2025)
1212

1313
### New features
1414
1. **Generic forms**: see section *Under development* below.
@@ -40,6 +40,7 @@ REPORT_FOOTNOTE|Si vous avez ressenti ce séisme, merci de témoigner sur le sit
4040
1. Better check of the consistency of node start/end dates when editing the configuration.
4141
1. Exported list of geolocated nodes as KML file has now extended data (start/end dates, active flag).
4242
1. Metadata can now be uploaded to the Theia|OZCAR data portal. A checkbox has been added to select and save channels to be uploaded.
43+
1. New GNSS solutions data formats: `spotgins-ippp`and `gamit-pos`.
4344

4445
### Fixed issues
4546
1. ``!!`` WebObs Perl modules have been moved from CODE/cgi-bin/WebObs to CODE/perl/lib. The system-wide installation **MUST** be executed when upgrading (answer Y to the appropriate question during setup) in order to make all CGI working.
@@ -54,9 +55,10 @@ REPORT_FOOTNOTE|Si vous avez ressenti ce séisme, merci de témoigner sur le sit
5455
1. Fix an issue with data files Campbell binary format TOB1 that contain no data but a header.
5556
1. Fix an issue in **gridmaps** with inactive nodes plotted over active ones.
5657
1. Fix a possible issue with **scevtlog-xml** data format (ignoring events created late after origin time).
58+
1. Fix forgotten binaries for Arclink rawformat.
5759

5860
### Under development
59-
1. **Generic forms**: it is now possible to create any user-defined manual database associated to a form (for entering new data and editing), a table display, and CSV export of data, using SQLite database. This new feature will replace all the actuel forms (EAUX, GAZ, EXTENSO, FISSURO, DISTANCE, NOVAC, SOILSOLUTIONS, and RAINWATER) in future release, with an automatic migration tool. Creating and using the new forms is functional, but reading the data from PROCS is not yet implemented. See the user manual documentation for details.
61+
1. **Generic forms**: it is now possible to create any user-defined manual database associated to a form (for entering new data and editing), a table display, and CSV export of data, using SQLite database. This new feature will replace all the actuel forms (EAUX, GAZ, EXTENSO, FISSURO, DISTANCE, SOILSOLUTIONS, and RAINWATER) in future release, with an automatic migration tool. Creating and using the new forms is functional, but reading the data from PROCS is not yet implemented. See the user manual documentation for details.
6062

6163
## v2.6.4 (December 2023)
6264

0 commit comments

Comments
 (0)