GNSS卫星编号PRN

在一个系统(GPS或BD)里,一颗卫星对应唯一的prn,也对应唯一一组伪随机码。

GPS : 2020-7 , PRN为1-32 ,在轨卫星包括BLOCK IIA(淘汰)、IIR( 11颗)、IIR-
M ( 7颗, 5/7/12/15/17/29/31). IIF (12颗)、II(1颗,4)

GPS SBAS :标识为33-64 ( PRN为120-158 ,标识=PRN-87 )

GLONASS :可以使用65-96 ,在轨24颗(编号65-88)。Uragan-M ( 23颗) ,
Uragan-K1 ( 1颗)

日本QZSS卫星为193-199

北斗:卫星号201-261 ( PRN+ 200 )

伽利略:卫星号301-336 ( PRN+300 )

IRNSS :卫星号901-918 ( PRN+900 )

### GNSS .obs 文件格式说明 GNSS观测文件(.obs)是一种标准的数据文件,主要用于存储来自全球导航卫星系统的原始测量数据。这类文件遵循特定的结构化格式,便于不同软件和硬件平台之间的互操作性。 #### 文件头信息 文件头部包含有关站点、接收机、天线的信息以及其他元数据。特别需要注意的是以`SYS / # / OBS TYPES`结尾的行[^3]。这一部分定义了后续数据块中的观测类型及其排列顺序,对于正确解释数据至关重要。 #### 观测数据体 主体部分由多个周期性的观测记录组成,每条记录代表一次完整的卫星采样时刻下的所有可用通道的状态报告。每个观测时段内会列出参与此次定位计算的具体卫星编号以及对应的伪距(Pseudorange)、载波相位(Carrier Phase)等物理量。 ```plaintext > TIME OF FIRST OBS 2021 7 5 0 0 0.0000000 0 > OBSERVATION DATA (GPS SYSTEM) GpsTime WeekNo SecOfWeek NumSats PRN LLI SNR PseudoRange CarrierPhase Doppler ... 0 0 0 8 1 0 40 X Y Z ... ``` 上述示例展示了典型的 Rinex 格式的开头几行,其中包含了时间戳和其他必要的参数来描述观测条件。 ### 解析方法 为了有效地解析`.obs`文件,在编程层面需执行如下操作: 1. **读取并理解文件头** - 提取出关于站名、仪器型的关键字段。 - 记录下所使用的坐标系及时钟模型等相关设置。 2. **遍历观测数据区** - 对于每一组新的观测时间段,提取出精确的时间标记。 - 处理各个卫星的相关观测量,包括但不限于伪距、多普勒频移及信噪比(SNR)。 以下是利用 Python 进行基本 `.obs` 文件解析的一个简化版本代码片段: ```python def parse_obs_file(file_path): with open(file_path, 'r') as f: lines = f.readlines() header_info = {} observation_data = [] is_header_section = True for line in lines: stripped_line = line.strip() if not stripped_line or stripped_line.startswith('%'): continue if "END OF HEADER" in stripped_line.upper(): is_header_section = False continue if is_header_section: key_value_pair = stripped_line.split(':') if len(key_value_pair) >= 2: key = key_value_pair[0].strip().replace(' ', '_').lower() value = ':'.join(key_value_pair[1:]).strip() header_info[key] = value else: parts = stripped_line.split() epoch_time = { 'year': int(parts[0]), 'month': int(parts[1]), 'day': int(parts[2]), 'hour': int(parts[3]), 'minute': int(parts[4]), 'second': float(parts[5]) } num_sats = int(parts[-1]) satellites = [] start_index = 6 while start_index < len(parts)-num_sats*4+start_index: prn_id = int(parts[start_index]) lli = int(parts[start_index + 1]) snr = int(parts[start_index + 2]) pseudo_range = float(parts[start_index + 3]) satellite_entry = {'prn': prn_id, 'lli': lli, 'snr': snr, 'pseudo_range': pseudo_range} satellites.append(satellite_entry) start_index += 4 entry = dict(epoch=epoch_time, satellites=satellites) observation_data.append(entry) return header_info, observation_data ``` 此函数接受一个路径作为输入,并返回两个字典列表——一个是保存文件头部信息的对象;另一个则是按照时间序列组织起来的实际观测数据集。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值