Changeset 10259 in ntrip
- Timestamp:
- Nov 27, 2023, 3:58:48 PM (12 months ago)
- Location:
- trunk/BNC
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/scripts/Bnc.pm
r10233 r10259 493 493 my $epochSec = 0; 494 494 my $epochDiff = 0; 495 my ( @hlp, @N, @E, @U, %SATNUM, @TRPs, @ G_CLKs, @R_CLKs, @E_CLKs, @C_CLKs);496 my ( @EPOCHs, @EPOCHs_ G_CLK, @EPOCHs_R_CLK, @EPOCHs_E_CLK, @EPOCHs_C_CLK);495 my ( @hlp, @N, @E, @U, %SATNUM, @TRPs, @CLKs, @OFF_GLOs, @OFF_GALs, @OFF_BDSs); 496 my ( @EPOCHs, @EPOCHs_CLK, @EPOCHs_OFF_GLO, @EPOCHs_OFF_GAL, @EPOCHs_OFF_BDS ); 497 497 my ( %AMB, %RES, %ELE, %ION, %BIA ); 498 498 my ( $station, $lki, $sys, $sat, $amb ); … … 584 584 push @{ $BIA{$lki}{$sys}{DATA} }, $hlp[4] + $hlp[5]; 585 585 } 586 elsif ( $ln =~ /\bREC_CLK G\b/ ){587 push ( @EPOCHs_ G_CLK, $epochSec);588 push ( @G_CLKs, $hlp[3] + $hlp[4] );589 } 590 elsif ( $ln =~ /\b REC_CLK R\b/ ){591 push ( @EPOCHs_ R_CLK, $epochSec);592 push ( @R_CLKs, $hlp[3] + $hlp[4] );593 } 594 elsif ( $ln =~ /\b REC_CLK E\b/ ){595 push ( @EPOCHs_ E_CLK, $epochSec);596 push ( @E_CLKs, $hlp[3] + $hlp[4] );597 } 598 elsif ( $ln =~ /\b REC_CLK C\b/ ){599 push ( @EPOCHs_ C_CLK, $epochSec);600 push ( @C_CLKs, $hlp[3] + $hlp[4] );586 elsif ( $ln =~ /\bREC_CLK\b/ ) { 587 push ( @EPOCHs_CLK, $epochSec ); 588 push ( @CLKs, $hlp[2] + $hlp[3] ); 589 } 590 elsif ( $ln =~ /\bOFF_GLO\b/ ) { # 2015-08... OFF_GLO 52.6806 -3.8042 +- 9.0077 591 push ( @EPOCHs_OFF_GLO, $epochSec ); 592 push ( @OFF_GLOs, $hlp[2] + $hlp[3] ); 593 } 594 elsif ( $ln =~ /\bOFF_GAL\b/ ) { # 2015-08... OFF_GAL 52.6806 -3.8042 +- 9.0077 595 push ( @EPOCHs_OFF_GAL, $epochSec ); 596 push ( @OFF_GALs, $hlp[2] + $hlp[3] ); 597 } 598 elsif ( $ln =~ /\bOFF_BDS\b/ ) { # 2015-08... OFF_BDS 52.6806 -3.8042 +- 9.0077 599 push ( @EPOCHs_OFF_BDS, $epochSec ); 600 push ( @OFF_BDSs, $hlp[2] + $hlp[3] ); 601 601 } 602 602 elsif ( $ln =~ /\bSATNUM\b/ ) { # 2015-09... SATNUM G 8 … … 620 620 . ", TRPs:" 621 621 . scalar @TRPs 622 . ", GPS CLKs:"623 . scalar @G_CLKs624 . ", GLO CLKs:"625 . scalar @R_CLKs626 . ", GAL CLKs:"627 . scalar @E_CLKs628 . ", BDS CLKs:"629 . scalar @E_CLKs630 622 ); 631 if ( $nof_epochs != scalar @N ) { LOGDIE "number of epochs and residuals not equal\n" } 632 if ( $nof_epochs != scalar @TRPs ) { LOGDIE "number of epochs and TRPs not equal\n" } 633 if ( @G_CLKs && scalar @EPOCHs_G_CLK != scalar @G_CLKs ) {LOGDIE "number of epochs and G_CLKs not equal\n";} 634 if ( @R_CLKs && scalar @EPOCHs_R_CLK != scalar @R_CLKs ) {LOGDIE "number of epochs and R_CLKs not equal\n";} 635 if ( @E_CLKs && scalar @EPOCHs_E_CLK != scalar @E_CLKs ) {LOGDIE "number of epochs and E_CLKs not equal\n";} 636 if ( @C_CLKs && scalar @EPOCHs_C_CLK != scalar @C_CLKs ) {LOGDIE "number of epochs and C_CLKs not equal\n";} 623 if ( $nof_epochs != scalar @N ) { LOGDIE "number of epochs and residuals not equal\n" } 624 if ( $nof_epochs != scalar @TRPs ) { LOGDIE "number of epochs and TRPs not equal\n" } 625 if ( @CLKs && scalar @EPOCHs_CLK != scalar @CLKs ) { LOGDIE "number of epochs and CLKs not equal\n" } 626 if ( @OFF_GLOs && scalar @EPOCHs_OFF_GLO != scalar @OFF_GLOs ) { LOGDIE "number of epochs and OFF_GLOs not equal\n" } 627 if ( @OFF_GALs && scalar @EPOCHs_OFF_GAL != scalar @OFF_GALs ) { LOGDIE "number of epochs and OFF_GALs not equal\n" } 628 if ( @OFF_BDSs && scalar @EPOCHs_OFF_BDS != scalar @OFF_BDSs ) { LOGDIE "number of epochs and OFF_BDSs not equal\n" } 629 637 630 if ( !$station ) { WARN "could not grep stationname from file: $file\n" } 638 631 … … 644 637 SATNUM => \%SATNUM, 645 638 TRPs => \@TRPs, 646 G_CLKs => \@G_CLKs,647 R_CLKs => \@R_CLKs,648 E_CLKs => \@E_CLKs,649 C_CLKs => \@C_CLKs,639 CLKs => \@CLKs, 640 OFF_GLOs => \@OFF_GLOs, 641 OFF_GALs => \@OFF_GALs, 642 OFF_BDSs => \@OFF_BDSs, 650 643 RES => \%RES, 651 644 AMB => \%AMB, -
trunk/BNC/scripts/pppPlot.pl
r10233 r10259 107 107 my ( $station, $file ) = Bnc::parsePPPLogfile( $file, $sampling ); 108 108 my $EPOCHS = $file->{'EPOCHS'}; 109 my $EPOCHS_ G_CLK = $file->{'EPOCHS_G_CLK'};110 my $EPOCHS_ R_CLK = $file->{'EPOCHS_R_CLK'};111 my $EPOCHS_ E_CLK = $file->{'EPOCHS_E_CLK'};112 my $EPOCHS_C _CLK = $file->{'EPOCHS_C_CLK'};109 my $EPOCHS_OFF_GLO = $file->{'EPOCHS_OFF_GLO'}; 110 my $EPOCHS_OFF_GAL = $file->{'EPOCHS_OFF_GAL'}; 111 my $EPOCHS_OFF_BDS = $file->{'EPOCHS_OFF_BDS'}; 112 my $EPOCHS_CLK = $file->{'EPOCHS_CLK'}; 113 113 my %AMB = %{ $file->{'AMB'} }; 114 114 my %RES = %{ $file->{'RES'} }; … … 212 212 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 213 213 214 ######### GPSCLK #####################215 if ( scalar @{ $file->{' G_CLKs'} } < 1 ) {216 DEBUG "No GPSCLKs found";214 ######### CLK ##################### 215 if ( scalar @{ $file->{'CLKs'} } < 1 ) { 216 DEBUG "No CLKs found"; 217 217 } 218 218 else { 219 DEBUG "Plot GPS CLKs"; 220 $pngName = sprintf ( "%s_CLK_G.png", $station ); 221 my $chartCLK = newChart($station); 222 $chartCLK->set( output => $pngName ); 223 $chartCLK->set( ylabel => "CLK [m]" ); 224 225 $dataset = Chart::Gnuplot::DataSet->new( 226 xdata => $EPOCHS_G_CLK, 227 ydata => $file->{'G_CLKs'}, 228 title => "GPS Receiver clock", 229 timefmt => '%s', 230 style => "points", 231 ); 232 $chartCLK->plot2d($dataset); 233 $y = $y - $dy; 234 235 if ( $y < 30 / mm ) { 236 $page = $pdf->page(); 237 $page->mediabox('A4'); 238 $y = $y0; 239 } 240 $png = $page->gfx(); 241 LOGDIE("Unable to find image file: $!\n") unless -e $pngName; 242 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 243 } 244 ######### GLONASS CLK ##################### 245 if ( scalar @{ $file->{'R_CLKs'} } < 1 ) { 246 DEBUG "No GLONASS CLKs found"; 247 } 248 else { 249 DEBUG "Plot GLONASS CLKs"; 250 $pngName = sprintf ( "%s_CLK_R.png", $station ); 251 my $chartCLK = newChart($station); 252 $chartCLK->set( output => $pngName ); 253 $chartCLK->set( ylabel => "CLK [m]" ); 254 255 $dataset = Chart::Gnuplot::DataSet->new( 256 xdata => $EPOCHS_R_CLK, 257 ydata => $file->{'R_CLKs'}, 258 title => "GLONASS Receiver clock", 259 timefmt => '%s', 260 style => "points", 261 ); 262 $chartCLK->plot2d($dataset); 263 $y = $y - $dy; 264 265 if ( $y < 30 / mm ) { 266 $page = $pdf->page(); 267 $page->mediabox('A4'); 268 $y = $y0; 269 } 270 $png = $page->gfx(); 271 LOGDIE("Unable to find image file: $!\n") unless -e $pngName; 272 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 273 } 274 ######### Galileo CLK ##################### 275 if ( scalar @{ $file->{'E_CLKs'} } < 1 ) { 276 DEBUG "No Galileo CLKs found"; 277 } 278 else { 279 DEBUG "Plot Galileo CLKs"; 280 $pngName = sprintf ( "%s_CLK_E.png", $station ); 281 my $chartCLK = newChart($station); 282 $chartCLK->set( output => $pngName ); 283 $chartCLK->set( ylabel => "CLK [m]" ); 284 285 $dataset = Chart::Gnuplot::DataSet->new( 286 xdata => $EPOCHS_E_CLK, 287 ydata => $file->{'E_CLKs'}, 288 title => "Galileo Receiver clock", 289 timefmt => '%s', 290 style => "points", 291 ); 292 $chartCLK->plot2d($dataset); 293 $y = $y - $dy; 294 295 if ( $y < 30 / mm ) { 296 $page = $pdf->page(); 297 $page->mediabox('A4'); 298 $y = $y0; 299 } 300 $png = $page->gfx(); 301 LOGDIE("Unable to find image file: $!\n") unless -e $pngName; 302 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 303 } 304 305 ######### Beidou CLK ##################### 306 if ( scalar @{ $file->{'C_CLKs'} } < 1 ) { 307 DEBUG "No BDS CLKs found"; 308 } 309 else { 310 DEBUG "Plot BDS CLKs"; 311 $pngName = sprintf ( "%s_CLK_C.png", $station ); 312 my $chartCLK = newChart($station); 313 $chartCLK->set( output => $pngName ); 314 $chartCLK->set( ylabel => "CLK [m]" ); 315 316 $dataset = Chart::Gnuplot::DataSet->new( 317 xdata => $EPOCHS_C_CLK, 318 ydata => $file->{'C_CLKs'}, 319 title => "BDS Receiver clock", 320 timefmt => '%s', 321 style => "points", 322 ); 323 $chartCLK->plot2d($dataset); 324 $y = $y - $dy; 325 326 if ( $y < 30 / mm ) { 327 $page = $pdf->page(); 328 $page->mediabox('A4'); 329 $y = $y0; 330 } 331 $png = $page->gfx(); 332 LOGDIE("Unable to find image file: $!\n") unless -e $pngName; 333 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 219 DEBUG "Plot CLKs"; 220 $pngName = sprintf ( "%s_CLK.png", $station ); 221 my $chartCLK = newChart($station); 222 $chartCLK->set( output => $pngName ); 223 $chartCLK->set( ylabel => "CLK [m]" ); 224 225 $dataset = Chart::Gnuplot::DataSet->new( 226 xdata => $EPOCHS, 227 ydata => $file->{'CLKs'}, 228 title => "Receiver clock", 229 timefmt => '%s', 230 style => "linespoints", 231 ); 232 $chartCLK->plot2d($dataset); 233 $y = $y - $dy; 234 235 if ( $y < 30 / mm ) { 236 $page = $pdf->page(); 237 $page->mediabox('A4'); 238 $y = $y0; 239 } 240 $png = $page->gfx(); 241 LOGDIE("could not find image file: $!\n") unless -e $pngName; 242 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 243 } 244 245 246 ######### OFF_GLO ##################### 247 if ( grep ( $_ eq "ALL", @plotTypes ) ) { 248 if ( scalar @{ $file->{'OFF_GLOs'} } < 1 ) { 249 DEBUG "No OFF_GLOs found"; 250 } 251 else { 252 DEBUG "Plot OFF_GLOs"; 253 my $pngName = sprintf ( "%s_OFF_R.png", $station ); 254 my $chartOFF_GLO = newChart($station); 255 $chartOFF_GLO->set( output => $pngName ); 256 $chartOFF_GLO->set( ylabel => "Offset GLONASS [m]" ); 257 258 $dataset = Chart::Gnuplot::DataSet->new( 259 xdata => $EPOCHS_OFF_GLO, 260 ydata => $file->{'OFF_GLOs'}, 261 title => "Receiver Offset GLONASS", 262 timefmt => '%s', 263 style => "linespoints", 264 ); 265 $chartOFF_GLO->plot2d($dataset); #system ("display $pngName&"); 266 $y = $y - $dy; 267 268 if ( $y < 30 / mm ) { 269 $page = $pdf->page(); 270 $page->mediabox('A4'); 271 $y = $y0; 272 } 273 $png = $page->gfx(); 274 LOGDIE("could not find image file: $!\n") unless -e $pngName; 275 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 276 } 277 } 278 279 ######### OFF_GAL ##################### 280 if ( grep ( $_ eq "ALL", @plotTypes ) ) { 281 if ( scalar @{ $file->{'OFF_GALs'} } < 1 ) { 282 DEBUG "No OFF_GALs found"; 283 } 284 else { 285 DEBUG "Plot OFF_GALs"; 286 my $pngName = sprintf ( "%s_OFF_E.png", $station ); 287 my $chartOFF_GAL = newChart($station); 288 $chartOFF_GAL->set( output => $pngName ); 289 $chartOFF_GAL->set( ylabel => "Offset Galileo [m]" ); 290 291 $dataset = Chart::Gnuplot::DataSet->new( 292 xdata => $EPOCHS_OFF_GAL, 293 ydata => $file->{'OFF_GALs'}, 294 title => "Receiver Offset Galileo", 295 timefmt => '%s', 296 style => "linespoints", 297 ); 298 $chartOFF_GAL->plot2d($dataset); #system ("display $pngName&"); 299 $y = $y - $dy; 300 301 if ( $y < 30 / mm ) { 302 $page = $pdf->page(); 303 $page->mediabox('A4'); 304 $y = $y0; 305 } 306 $png = $page->gfx(); 307 LOGDIE("could not find image file: $!\n") unless -e $pngName; 308 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 309 } 310 } 311 312 ######### OFF_BDS ##################### 313 if ( grep ( $_ eq "ALL", @plotTypes ) ) { 314 if ( scalar @{ $file->{'OFF_BDSs'} } < 1 ) { 315 DEBUG "No OFF_BDSs found"; 316 } 317 else { 318 DEBUG "Plot OFF_BDSs"; 319 my $pngName = sprintf ( "%s_OFF_C.png", $station ); 320 my $chartOFF_BDS = newChart($station); 321 $chartOFF_BDS->set( output => $pngName ); 322 $chartOFF_BDS->set( ylabel => "Offset Beidou [m]" ); 323 324 $dataset = Chart::Gnuplot::DataSet->new( 325 xdata => $EPOCHS_OFF_BDS, 326 ydata => $file->{'OFF_BDSs'}, 327 title => "Receiver Offset Beidou", 328 timefmt => '%s', 329 style => "linespoints", 330 ); 331 $chartOFF_BDS->plot2d($dataset); #system ("display $pngName&"); 332 $y = $y - $dy; 333 334 if ( $y < 30 / mm ) { 335 $page = $pdf->page(); 336 $page->mediabox('A4'); 337 $y = $y0; 338 } 339 $png = $page->gfx(); 340 LOGDIE("could not find image file: $!\n") unless -e $pngName; 341 $png->image( $pdf->image_png($pngName), $x, $y, $width, $height ); 342 } 334 343 } 335 344 -
trunk/BNC/src/PPP/pppClient.cpp
r10256 r10259 49 49 ////////////////////////////////////////////////////////////////////////////// 50 50 t_pppClient::t_pppClient(const t_pppOptions* opt) { 51 _running = true; 51 52 _output = 0; 52 53 _opt = new t_pppOptions(*opt); … … 75 76 ////////////////////////////////////////////////////////////////////////////// 76 77 t_pppClient::~t_pppClient() { 78 _running = false; 77 79 delete _log; 78 80 delete _opt; … … 279 281 } 280 282 281 while ( true) {283 while (_running) { 282 284 Matrix BB(numBancroft, 4); 283 285 int iObs = -1; … … 319 321 // Check Blunders 320 322 // -------------- 321 const double BLUNDER = 200.0;323 const double BLUNDER = 100.0; 322 324 double maxRes = 0.0; 323 325 unsigned maxResIndex = 0; … … 402 404 offGlo = 0.0; 403 405 } 404 if (fabs(maxRes) > OPT->_aprSigClkOff) {405 LOG << "t_pppClient::cmpOffG Routlier " << maxResPrn.toString() << " " << maxRes << endl;406 if (fabs(maxRes) > 100.0) { 407 LOG << "t_pppClient::cmpOffGlo outlier " << maxResPrn.toString() << " " << maxRes << endl; 406 408 delete obsVector.at(maxResIndex); 407 409 obsVector.erase(obsVector.begin() + maxResIndex); … … 455 457 } 456 458 457 if (fabs(maxRes) > OPT->_aprSigClkOff) {458 LOG << "t_pppClient::cmpOffG Eoutlier " << maxResPrn.toString() << " " << maxRes << endl;459 if (fabs(maxRes) > 100.0) { 460 LOG << "t_pppClient::cmpOffGal outlier " << maxResPrn.toString() << " " << maxRes << endl; 459 461 delete obsVector.at(maxResIndex); 460 462 obsVector.erase(obsVector.begin() + maxResIndex); … … 509 511 } 510 512 511 if (fabs(maxRes) > OPT->_aprSigClkOff) {512 LOG << "t_pppClient::cmpOff GCoutlier " << maxResPrn.toString() << " " << maxRes << endl;513 if (fabs(maxRes) > 100.0) { 514 LOG << "t_pppClient::cmpOffBDS outlier " << maxResPrn.toString() << " " << maxRes << endl; 513 515 delete obsVector.at(maxResIndex); 514 516 obsVector.erase(obsVector.begin() + maxResIndex); -
trunk/BNC/src/PPP/pppClient.h
r10256 r10259 39 39 double offGal() const {return _offGal;} 40 40 double offBds() const {return _offBds;} 41 void resetOffGlo() {_offGlo = 0.0;} 42 void resetOffGal() {_offGal = 0.0;} 43 void resetOffBds() {_offBds = 0.0;} 41 44 42 45 std::ostringstream& log() {return *_log;} … … 81 84 bool _pseudoObsIono; 82 85 QMap<char, int> _usedSystems; 86 bool _running; 83 87 }; 84 88 -
trunk/BNC/src/PPP/pppFilter.cpp
r10257 r10259 372 372 } 373 373 374 // Check Pre-Fit Residuals => switched off, because after a millisecond receiver clock jump, a cycle slip is detected for all satellites 374 // Check Pre-Fit Residuals 375 //=> switched off, because after a millisecond receiver clock jump, a cycle slip is detected for all satellites 375 376 /* ----------------------- 376 377 -
trunk/BNC/src/PPP/pppParlist.cpp
r10256 r10259 497 497 // GLONASS Clock Offset 498 498 // -------------------- 499 if (OPT->useSystem('R')) { 499 if ( _usedSystems.contains('R') && 500 (_usedSystems.contains('G') || _usedSystems.contains('E') || _usedSystems.contains('C'))) { 500 501 required.push_back(new t_pppParam(t_pppParam::offGlo, t_prn(), t_lc::dummy)); 502 } 503 else { 504 PPP_CLIENT->resetOffGlo(); 501 505 } 502 506 503 507 // Galileo Clock Offset 504 508 // -------------------- 505 if ( OPT->useSystem('E')) {509 if (_usedSystems.contains('E') && _usedSystems.contains('G')) { 506 510 required.push_back(new t_pppParam(t_pppParam::offGal, t_prn(), t_lc::dummy)); 511 } 512 else { 513 PPP_CLIENT->resetOffGal(); 507 514 } 508 515 509 516 // BDS Clock Offset 510 517 // ---------------- 511 if ( OPT->useSystem('C')) {518 if (_usedSystems.contains('C') && (_usedSystems.contains('G') || _usedSystems.contains('E'))) { 512 519 required.push_back(new t_pppParam(t_pppParam::offBds, t_prn(), t_lc::dummy)); 520 } 521 else { 522 PPP_CLIENT->resetOffBds(); 513 523 } 514 524 -
trunk/BNC/src/pppMain.cpp
r10257 r10259 528 528 opt->_aprSigAmb = 10000.0; 529 529 opt->_aprSigClk = 300000.0; 530 opt->_aprSigClkOff = 1000 00.0;530 opt->_aprSigClkOff = 1000.0; 531 531 opt->_aprSigIon = 1000.0; 532 532 opt->_noiseIon = 100.0;
Note:
See TracChangeset
for help on using the changeset viewer.