@@ -1466,16 +1466,16 @@ def out_log(self, obs=None, eph=None, geph=None, seph=None):
14661466 self .fh .write (f" Number of Area Points: { self .integ .narea :} \n " )
14671467 self .fh .write (" Number of Azimuth Slices: " +
14681468 f"{ self .integ .naz :} \n " )
1469- self .fh .write (" Area Points (lat, long, alt):\n " )
1469+ self .fh .write (" Area Points (lat, long, alt), naz :\n " )
14701470 for k in range (self .integ .narea ):
1471- self .fh .write (" {:2d}\t {:12.9f}\t {:12.9f}\t {:4.0f}\n " .format
1471+ self .fh .write (" {:2d}\t {:12.9f}\t {:12.9f}\t {:4.0f}\t {:2d} \ n " .format
14721472 (k + 1 , self .integ .pos [k , 0 ], self .integ .pos [k , 1 ],
1473- self .integ .pos [k , 2 ]))
1473+ self .integ .pos [k , 2 ], self . integ . naz [ k ] ))
14741474
1475- self .fh .write (" Visibility mask (az, el):\n " )
1476- for k in range (self .integ .naz ):
1477- self .fh .write (" {:3.0f}\t {:3.0f}\n " .format
1478- (self .integ .azel [k ][0 ], self .integ .azel [k ][1 ]))
1475+ self .fh .write (" Visibility mask (az, el):\n " )
1476+ for j in range (self .integ .naz [ k ] ):
1477+ self .fh .write (" {:3.0f}\t {:3.0f}\n " .format
1478+ (self .integ .azel [k ][j ][ 0 ], self .integ .azel [k ][ j ][1 ]))
14791479 elif self .subtype == 10 :
14801480 self .fh .write (f" TOF (s): { self .integ .tow :9.3f} \n " )
14811481 self .fh .write (f" Number of Area Points: { self .integ .narea :} \n " )
@@ -2477,7 +2477,7 @@ def decode_ssr_trop(self, msg, i, inet=0):
24772477 trop .gnh = gnh * 0.01e-3 # south-north gradient [m/deg]
24782478 # wet
24792479 trop .ofstw = ofstw * 0.1e-3 + 0.252 # offset [m]
2480- trop .gew = gew * 0.1e -3 # west-east gradient [m/deg]
2480+ trop .gew = gew * 0.01e -3 # west-east gradient [m/deg]
24812481 trop .gnw = gnw * 0.01e-3 # south-north gradient [m/deg]
24822482
24832483 if rmi : # residual information part
@@ -2544,6 +2544,9 @@ def decode_ssr_iono(self, msg, i, inet=0):
25442544 # Resolution Scale Factor Exponent
25452545 sf = bs .unpack_from ('u3' , msg , i )[0 ] # DF+073
25462546 i += 3
2547+ scl = 1e-3 * (2 ** sf )
2548+ else :
2549+ scl = 1.0
25472550
25482551 self .lc [inet ].stec = {}
25492552 fmt = 's' + str (rlen )
@@ -2554,7 +2557,6 @@ def decode_ssr_iono(self, msg, i, inet=0):
25542557 for j in range (ofst , ofst + ng ):
25552558 res = bs .unpack_from (fmt , msg , i )[0 ] # DF+062
25562559 i += rlen
2557- scl = 1e-3 * (2 ** sf )
25582560 self .lc [inet ].stec [sat_ ][j ] = self .sval (res , rlen , scl )
25592561
25602562 self .gid = gid
@@ -3088,40 +3090,44 @@ def decode_integrity_vmap(self, msg, i):
30883090
30893091 # GPS Epoch Time (TOW) DFi008
30903092 # number of area points DFi201
3091- # Number of Azimuth Slices DFi205
30923093 # Message Continuation Flag DFi021
30933094
3094- tow , narea , naz , mi = bs .unpack_from ('u30u8u6u1 ' , msg , i )
3095- i += 45
3095+ tow , narea , mi = bs .unpack_from ('u30u8u1 ' , msg , i )
3096+ i += 39
30963097 # Multiple Message Sequence Number DFi079
30973098 self .integ .seq = bs .unpack_from ('u5' , msg , i )[0 ]
30983099 i += 5
30993100
31003101 self .integ .tow = tow * 1e-3
31013102 self .integ .narea = narea
3102- self .integ .naz = naz
31033103 self .mi = mi
31043104 self .integ .pos = np .zeros ((narea , 3 ))
3105+ self .integ .naz = np .zeros (narea , dtype = int )
3106+ self .integ .azel = {}
31053107
31063108 for k in range (narea ):
31073109 # Area Point - Lat DFi202
31083110 # Area Point - Lon DFi203
31093111 # Area Point - Height DFi204
3110- lat , lon , alt = bs .unpack_from ('s34s35s14' , msg , i )
3111- i += 83
3112+ # Number of Azimuth Slices DFi205
3113+ lat , lon , alt , naz = bs .unpack_from ('s34s35s14u6' , msg , i )
3114+ i += 89
31123115
31133116 self .integ .pos [k , :] = [lat * 1.1e-8 , lon * 1.1e-8 , alt ]
3117+ self .integ .naz [k ] = naz
31143118
3115- self . integ . azel = np .zeros ((naz , 2 ))
3119+ azel = np .zeros ((naz , 2 ))
31163120
3117- # Azimuth DFi206
3118- # Elevation Mask DFi208
3119- az = 0
3120- for k in range (naz ):
3121- daz , mask_el = bs .unpack_from ('u9u7' , msg , i )
3122- i += 16
3123- az += daz
3124- self .integ .azel [k , :] = [az , mask_el ]
3121+ # Azimuth DFi206
3122+ # Elevation Mask DFi208
3123+ az = 0
3124+ for j in range (naz ):
3125+ daz , mask_el = bs .unpack_from ('u9u7' , msg , i )
3126+ i += 16
3127+ az += daz
3128+ azel [j , :] = [az , mask_el ]
3129+
3130+ self .integ .azel [k ] = azel
31253131
31263132 return i
31273133
0 commit comments