附录C. C API
下表展示了RTKLIB库函数列表。关于库函数的详细API(调用约定、函数描述、输入和输出参数及其类型、返回值及其类型),请参考源程序中每个函数的头部注释,位于<install dir>\rtklib_<ver>\src
。关于API相关数据类型的定义,请参考<install dir>\rtklib_<ver>\src
中的头文件rtklib.h。
RTKLIB API参考手册也将提供API使用的详细规范和一些示例。
Table C-1 RTKLIB API 函数列表
函数 | 描述 | 源码 | 备注 |
---|---|---|---|
卫星存储编号/卫星系统函数 | |||
satno() | 卫星系统与PRN(或槽号)转换为卫星存储编号 | rtkcmn.c | 槽号通常指GLO卫星在轨道中的位置 卫星存储编号是一种方便算法存储与运算的自定义编号。 |
satsys() | 卫星存储编号转换为卫星系统 | rtkcmn.c | |
satid2no() | 卫星ID转换为卫星存储编号 | rtkcmn.c | 卫星ID如"G01" |
satno2id() | 卫星存储编号转换为卫星ID | rtkcmn.c | |
obs2code() | 观测信号类型字符串转换为CODE_宏 | rtkcmn.c | 观测信号类型字符串如"1C",两者表示相同含义,不过CODE_宏用于代码处理更方便 |
code2obs() | CODE_宏转换为观测信号类型字符串 | rtkcmn.c | |
satexclude() | 检测卫星是否被剔除 | rtkcmn.c | 主要依据配置信息与卫星自身数据中的健康标识 |
testsnr() | 检测卫星SNR是否符合条件 | rtkcmn.c | |
setcodepri() | 设置卫星系统中多个频率信号的码优先级 | rtkcmn.c | 并未看到哪里使用了它 |
getcodepri() | 获取卫星系统中多个频率信号的码优先级 | rtkcmn.c | |
矩阵和向量操作 | |||
mat() | 新建矩阵 | rtkcmn.c | |
imat() | 新建整数矩阵 | rtkcmn.c | |
zeros() | 新建零矩阵 | rtkcmn.c | |
eye() | 新建单位矩阵 | rtkcmn.c | |
dot() | 内积 | rtkcmn.c | |
norm() | 欧几里得范数 | rtkcmn.c | |
cross3() | 三维向量的外积 | rtkcmn.c | |
normv3() | 归一化三维向量 | rtkcmn.c | |
matcpy() | 复制矩阵 | rtkcmn.c | |
matmul() | 矩阵乘法 | rtkcmn.c | |
matinv() | 矩阵求逆 | rtkcmn.c | |
solve() | 求解线性方程 | rtkcmn.c | |
lsq() | 最小二乘估计 | rtkcmn.c | |
filter() | 卡尔曼滤波状态更新 | rtkcmn.c | |
smoother() | 区间平滑器 | rtkcmn.c | |
matprint() | 打印矩阵 | rtkcmn.c | |
matfprint() | 打印矩阵到文件 | rtkcmn.c | |
时间和字符串操作函数 | |||
str2num() | 字符串转数字 | rtkcmn.c | |
str2time() | 字符串转时间 | rtkcmn.c | |
time2str() | 时间转字符串 | rtkcmn.c | |
epoch2time() | 日历时间转gtime_t | rtkcmn.c | 日历时间为年月日时分秒 |
time2epoch() | gtime_t转日历时间 | rtkcmn.c | |
gpst2time() | GPS时间周、周内秒格式转gtime_t | rtkcmn.c | |
time2gpst() | GPS时间gtime_t格式转周、周内秒 | rtkcmn.c | |
gst2time() | GAL时间周、周内秒格式转gtime_t | rtkcmn.c | |
time2gst() | GAL时间gtime_t格式转周、周内秒 | rtkcmn.c | |
bdt2time() | BDS时间周、周内秒格式转gtime_t | rtkcmn.c | |
time2bdt() | BDS时间gtime_t格式转周、周内秒 | rtkcmn.c | |
time_str() | 获取时间字符串 | rtkcmn.c | |
timeadd() | 求时间和 | rtkcmn.c | |
timediff() | 求时间差 | rtkcmn.c | |
gpst2utc() | GPS时间转UTC时间 | rtkcmn.c | 输入输出均为gtime_t |
utc2gpst() | UTC时间转GPS时间 | rtkcmn.c | 输入输出均为gtime_t |
gpst2bdt() | GPS Time to BDT | rtkcmn.c | |
bdt2gpst() | BDT时间转GPS时间 | rtkcmn.c | |
timeget() | 获取当前UTC时间 | rtkcmn.c | |
timeset() | 设置当前UTC时间 | rtkcmn.c | |
time2doy() | 将传入时间转换为年内天数 | rtkcmn.c | |
utc2gmst() | 将UTC时间转换为格林威治平均恒星时(GMST) | rtkcmn.c | |
adjgpsweek() | 通过当前的 CPU 时间来调整 GPS 周数 | rtkcmn.c | GPS时间每1024周(约19.7年)会重置一次,因此需要通过外部信息(如当前时间)来调整GPS周数 |
tickget() | 获取当前时间的毫秒级时间戳(tick) | rtkcmn.c | |
sleepms() | 让程序暂停执行指定的毫秒数 | rtkcmn.c | |
reppath() | 替换文件路径 | rtkcmn.c | |
reppaths() | 替换多个文件路径 | rtkcmn.c | |
坐标转换函数 | |||
ecef2pos() | ECEF转地理坐标系 | rtkcmn.c | |
pos2ecef() | 地理坐标系转ECEF坐标系 | rtkcmn.c | |
ecef2enu() | ECEF转ENU坐标系 | rtkcmn.c | |
enu2ecef() | ENU转ECEF坐标系 | rtkcmn.c | |
covenu() | 将ECEF坐标系中的协方差矩阵转换至ENU坐标系 | rtkcmn.c | |
covecef() | 将ENU坐标系中的协方差矩阵转换至ECEF坐标系 | rtkcmn.c | |
xyz2enu() | 计算ECEF到ENU的转换矩阵 | rtkcmn.c | |
eci2ecef() | 计算ECI到ECEF的转换矩阵 | rtkcmn.c | |
deg2dms() | 将十进制度表示的经纬度转换为度、分、秒(DMS)格式 | rtkcmn.c | |
dms2deg() | 将度、分、秒(DMS)转换为十进制度表示的经纬度格式 | rtkcmn.c | |
输入/输出函数 | |||
readpos() | 从位置文件中读取接收机位置信息 | rtkcmn.c | |
sortobs() | 对观测数据进行排序和去重 | rtkcmn.c | |
uniqnav() | 删除重复的星历数据 | rtkcmn.c | |
screent() | 根据时间及其间隔进行筛选 | rtkcmn.c | |
readnav() | 从文件中读取星历数据 | rtkcmn.c | |
savenav() | 保存星历数据到文件 | rtkcmn.c | |
freeobs() | 释放观测数据内存 | rtkcmn.c | |
freenav() | 释放星历数据内存 | rtkcmn.c | |
调试跟踪函数 | |||
traceopen() | 打开跟踪调试文件 | rtkcmn.c | |
traceclose() | 关闭跟踪调试文件 | rtkcmn.c | |
trace() | 输出跟踪调试信息 | rtkcmn.c | |
tracet() | 输出带时间戳的跟踪调试信息 | rtkcmn.c | |
tracemat() | 输出矩阵跟踪调试信息 | rtkcmn.c | |
traceobs() | 输出观测数据的跟踪调试信息 | rtkcmn.c | |
traceonav() | 输出GPS导航电文的跟踪调试信息 | rtkcmn.c | |
tracegnav() | 输出GLONASS导航电文的跟踪调试信息 | rtkcmn.c | |
tracehnav() | 输出GEO导航电文的跟踪调试信息 | rtkcmn.c | |
tracepeph() | 输出精密星历的跟踪调试信息 | rtkcmn.c | |
tracepclk() | 输出精密时钟的跟踪调试信息 | rtkcmn.c | |
traceb() | 将二进制数据以十六进制格式输出到跟踪调试文件 | rtkcmn.c | |
平台相关的函数 | |||
execcmd() | 执行命令 | rtkcmn.c | |
expath() | 展开文件路径(其中的通配符*) | rtkcmn.c | |
createdir() | 新建文件夹 | rtkcmn.c | |
定位模型 | |||
satwavelen() | 获取卫星信号载波波长 | rtkcmn.c | 已被删除 |
satazel() | 计算卫星的仰角与水平角 | rtkcmn.c | |
geodist() | 计算接收机到卫星的几何距离及其单位向量 | rtkcmn.c | |
dops() | 计算DOP | rtkcmn.c | |
csmooth() | 载波平滑 | rtkcmn.c | 已被删除 |
大气模型 | |||
ionmodel() | 电离层模型 | rtkcmn.c | |
ionmapf() | 计算电离层延迟映射函数 | rtkcmn.c | |
ionppp() | 计算电离层穿刺点位置 | rtkcmn.c | |
tropmodel() | 对流层模型 | rtkcmn.c | |
tropmapf() | 对流层映射函数 | rtkcmn.c | |
iontec() | 通过电离层总电子含量(TEC)网格数据计算电离层延迟 | ionex.c | |
readtec() | 读取IONEX TEC网格文件 | ionex.c | |
ionocorr() | 电离层校正 | pntpos.c | |
tropcorr() | 对流层校正 | pntpos.c | |
天线模型 | |||
readpcv() | 读取天线参数 | rtkcmn.c | |
searchpcv() | 读取天线相位中心位置 | rtkcmn.c | |
antmodel() | 通过天线相位中心参数计算天线偏移 | rtkcmn.c | |
antmodel_s() | 计算卫星天线相位中心参数 | rtkcmn.c | |
地球潮汐模型 | |||
sunmoonpos() | 获取太阳和月亮在地心地固坐标系(ECEF)中的位置 | rtkcmn.c | |
tidedisp() | 计算由地球潮汐引起的位移 | ppp.c | |
大地水准面模型 | |||
opengeoid() | 打开外部大地水准面文件 | geoid.c | |
closegeoid() | 关闭外部大地水准面文件 | geoid.c | |
geoidh() | 从大地水准面模型中获取大地水准面高度 | geoid.c | |
基准转换 | |||
loaddatump() | 加载基准转换参数 | datum.c | |
tokyo2jgd() | 将东京基准(Tokyo Datum)下的位置转换为日本2000大地基准(JGD2000 Datum)下的位置 | datum.c | |
jgd2tokyo() | 将JGD2000基准下的位置转换为东京基准(Tokyo Datum)下的位置 | datum.c | |
RINEX相关函数 | |||
readrnx() | 读取RINEX文件 | rinex.c | |
readrnxt() | 在指定时间范围内/按时间间隔读取RINEX文件 | rinex.c | |
readrnxc() | 读取RINEX时钟文件 | rinex.c | |
outrnxobsh() | 输出RINEX观测文件头 | rinex.c | |
outrnxobsb() | 输出RINEX观测文件主体 | rinex.c | |
outrnxnavh() | 输出RINEX星历文件头 | rinex.c | |
outrnxgnavh() | 输出RINEX GLONASS卫星星历文件头 | rinex.c | |
outrnxhnavh() | 输出RINEX GEO卫星星历文件头 | rinex.c | |
outrnxlnavh() | 输出RINEX Galileo卫星星历文件头 | rinex.c | |
outrnxqnavh() | 输出INEX QZSS卫星星历文件头 | rinex.c | |
outrnxcnavh() | 输出RINEX BeiDou卫星星历文件头 | rinex.c | |
outrnxnavb() | 输出RINEX导航电文主体 | rinex.c | |
outrnxgnavb() | 输出RINEX GLONASS导航电文主体 | rinex.c | |
outrnxhnavb() | 输出RINEX地球静止轨道(GEO)导航电文主体 | rinex.c | |
uncompress() | 解压文件 | rinex.c | |
init_rnxctr() | Initialize RINEX control | rinex.c | |
free_rnxctr() | 初始化RINEX控制结构体 | rinex.c | |
open_rnxctr() | 释放RINEX控制结构体 | rinex.c | |
input_rnxctr() | 通过RINEX控制结构体输入下一条RINEX数据 | rinex.c | |
convrnx() | 将接收机日志文件转换为RINEX观测文件和导航文件,以及SBAS日志文件 | convrnx.c | |
星历相关函数 | |||
eph2clk() | 将广播星历转换为卫星钟差 | ephemeris.c | |
geph2clk() | 将GLONASS星历转换为卫星钟差 | ephemeris.c | |
seph2clk() | 将GEO星历转换为卫星钟差 | ephemeris.c | |
eph2pos() | 将广播星历转换为卫星位置和钟差 | ephemeris.c | |
geph2pos() | 将GLONASS星历转换为卫星位置和钟差 | ephemeris.c | |
seph2pos() | 将GEO星历转换为卫星位置和钟差 | ephemeris.c | |
peph2pos() | 将精密星历转换为卫星位置和钟差 | preceph.c | |
satantoff() | 卫星天线相位中心偏移 | ephemeris.c | |
satpos() | 计算卫星位置和钟差 | ephemeris.c | |
satposs() | 卫星位置和钟差(批处理) | ephemeris.c | |
readsp3() | 读取SP3文件 | preceph.c | |
readsap() | 读取卫星天线相位中心参数 | preceph.c | |
readdcb() | 读取DCB参数 | preceph.c | |
alm2pos() | 将星历概要转换为卫星位置和钟差 | preceph.c | |
tle_read() | 读取TLE数据文件 | tle.c | |
tle_name_read() | 读取TLE卫星名称文件 | tle.c | |
tle_pos() | 使用TLE数据计算卫星位置和速度 | tle.c | |
接收机原始数据处理函数 | |||
getbitu() | 提取无符号位 | rtkcmn.c | |
getbits() | 提取有符号位 | rtkcmn.c | |
setbitu() | 设置无符号位 | rtkcmn.c | |
setbits() | 设置有符号位 | rtkcmn.c | |
crc32() | 计算CRC32校验 | rtkcmn.c | |
crc24q() | 计算CRC24Q校验 | rtkcmn.c | |
crc16() | 计算CRC16校验 | rtkcmn.c | |
decode_word() | D解码导航数据字 | rcvraw.c | |
decode_frame() | 解码导航数据帧 | rcvraw.c | |
init_raw() | 初始化接收机原始数据控制结构体 | rcvraw.c | |
free_raw() | 释放接收机原始数据控制结构体 | rcvraw.c | |
input_raw() | 从数据流中输入接收机原始数据 | rcvraw.c | |
input_rawf() | 从文件中输入接收机原始数据 | rcvraw.c | |
接收机相关函数 | |||
input_oem4() | 从数据流中输入OEM4/V原始数据 | rcv/novatel.c | |
input_oem3() | 从数据流中输入OEM3原始数据 | rcv/novatel.c | |
input_ubx() | 从数据流中输入u-blox原始数据 | rcv/ublox.c | |
input_ss2() | 从数据流中输入Superstar II原始数据 | rcv/ss2.c | |
input_cres() | 从数据流中输入Crescent原始数据 | rcv/crescent.c | |
input_stq() | 从数据流中输入SkyTraq原始数据 | rcv/skytraq.c | |
input_gw10() | 从数据流中输入Furuno GW-10-II/III原始数据 | rcv/gw10.c | |
input_javad() | 从数据流中输入JAVAD GRIL/GREIS原始数据m | rcv/javad.c | |
input_nvs() | 从数据流中输入NVS BINR原始数据 | rcv/nvs.c | |
input_binex() | 从数据流中输入BINEX数据 | rcv/binex.c | |
input_oem3f() | 从文件中输入OEM3原始数据 | rcv/novatel.c | |
input_oem4f() | 从文件中输入OEM4/V原始数据 | rcv/novatel.c | |
input_ubxf() | 从文件中输入u-blox原始数据 | rcv/ublox.c | |
input_ss2f() | 从文件中输入Superstar II原始数据 | rcv/ss2.c | |
input_cresf() | 从文件中输入Crescent原始数据 | rcv/crescent.c | |
input_stqf() | 从文件中输入SkyTraq原始数据 | rcv/skytraq.c | |
input_gw10f() | 从文件中输入Furuno GW-10-II/III原始数据 | rcv/gw10.c | |
input_javadf() | 从文件中输入JAVAD GRIL/GREIS原始数据 | rcv/javad.c | |
input_nvsf() | 从文件中输入NVS BINR原始数据 | rcv/nvs.c | |
input_binexf() | 从文件中输入BINEX数据 | rcv/binex.c | |
gen_ubx() | 生成u-blox二进制命令 | rcv/ublox.c | |
gen_stq() | 生成SkyTraq二进制命令 | rcv/skytraq.c | |
gen_nvs() | 生成NVS BINR二进制命令 | rcv/nvs.c | |
RTCM相关函数 | |||
init_rtcm() | 初始化RTCM控制结构体 | rtcm.c | |
free_rtcm() | 释放RTCM控制结构体 | rtcm.c | |
rtcm.c | 从数据流中输入RTCM 2消息 | rtcm.c | |
input_rtcm3() | 从数据流中输入RTCM 3消息 | rtcm.c | |
input_rtcm2f() | 从文件中输入RTCM 2消息 | rtcm.c | |
input_rtcm3f() | 从文件中输入RTCM 3消息 | rtcm.c | |
gen_rtcm2() | 生成RTCM 2消息 | rtcm.c | |
gen_rtcm3() | 生成RTCM 3消息 | rtcm.c | |
解算结果函数 | |||
initsolbuf() | 初始化解算结果缓冲区 | solution.c | |
freesolbuf() | 释放解算结果缓冲区 | solution.c | |
getsol() | 从解算结果缓冲区获取解算数据r | solution.c | |
addsol() | 将解算数据添加到解算结果缓冲区r | solution.c | |
readsol() | 从解算结果文件中读取解算数据 | solution.c | |
readsolt() | 在指定时间范围内/按时间间隔读取解算数据 | solution.c | |
readsolstat() | 从文件中读取解算状态 | solution.c | |
readsolstatt() | 在指定时间范围内/按时间间隔读取解算状态 | solution.c | |
inputsol() | 从数据流中输入解算数据 | solution.c | |
outprcopts() | 将处理选项输出为字符串 | solution.c | |
outsolheads() | 将解算结果头部信息输出为字符串 | solution.c | |
outsols() | 将解算结果主体输出为字符串 | solution.c | |
outsolexs() | 将扩展解算结果输出为字符串 | solution.c | |
outprcopt() | 将处理选项输出到文件 | solution.c | |
outsolhead() | 将解算结果头部信息输出到文件 | solution.c | |
outsol() | 将解算结果主体输出到文件 | solution.c | |
outsolex() | 将扩展解算结果输出到文件e | solution.c | |
outnmea_rmc() | 输出NMEA GPRMC语句 | solution.c | |
outnmea_gga() | 输出NMEA GPGGA语句 | solution.c | |
outnmea_gsa() | 输出NMEA GPGSA、GLGSA、GAGSA语句 | solution.c | |
outnmea_gsv() | 输出NMEA GPGSV、GLGSV、GAGSV语句s | solution.c | |
转换解算结果为Google Earth KML文件 | |||
convkml() | 将解算结果转换为Google Earth KML文件 | convkml.c | |
SBAS相关函数 | |||
sbsreadmsg() | 读取SBAS消息文件 | sbas.c | |
sbsreadsmgt() | 在指定时间范围内读取SBAS消息文件 | sbas.c | |
sbsoutmsg() | 输出SBAS消息 | sbas.c | |
sbsdecodemsg() | 解码SBAS消息 | sbas.c | |
sbsupdatecorr() | 更新SBAS修正信息 | sbas.c | |
sbssatcorr() | SBAS卫星修正 | sbas.c | |
sbsioncorr() | SBAS电离层修正n | sbas.c | |
sbstropcorr() | SBAS对流层修正 | sbas.c | |
配置选项相关函数 | |||
searchopt() | 搜索选项 | options.c | |
str2opt() | 将字符串转换为选项值 | options.c | |
opt2str() | 将选项值转换为字符串g | options.c | |
opt2buf() | 将选项转换为字符串 | options.c | |
loadopts() | 从文件中加载选项 | options.c | |
saveopts() | 将选项保存到文件 | options.c | |
resetsysopts() | 将系统选项重置为默认值 | options.c | |
getsysopts() | 获取系统选项 | options.c | |
setsysopts() | 设置系统选项 | options.c | |
输入/输出流处理函数 | |||
strinitcom() | 初始化数据流通信环境 | stream.c | |
strinit() | 初始化数据流 | stream.c | |
strlock() | 锁定数据流 | stream.c | |
strunlock() | 解锁数据流 | stream.c | |
stropen() | 打开数据流 | stream.c | |
strclose() | 关闭数据流 | stream.c | |
strread() | 从数据流中读取数据 | stream.c | |
strwrite() | 向数据流中写入数据 | stream.c | |
strsync() | 数据流时间同步 | stream.c | |
strstat() | 获取数据流状态 | stream.c | |
strsum() | 获取数据流统计摘要 | stream.c | |
strsetopt() | 设置数据流选项 | stream.c | |
strgettime() | 从数据流中获取当前时间 | stream.c | |
strsendnmea() | 向数据流发送NMEA消息 | stream.c | |
strsendcmd() | 向数据流发送接收机命令 | stream.c | |
strsettimeout() | 设置数据流超时参数 | stream.c | |
strsetdir() | 设置本地目录 | stream.c | |
strsetproxy() | 设置代理地址 | stream.c | |
整数模糊度解算* | |||
lambda() | LAMBDA/MLAMBDA整数最小二乘估计 | lambda.c | |
标准定位(伪距单点定位) | |||
pntpos() | 标准定位(伪距单点定位) | pntpos.c | |
精密定位 | |||
rtkinit() | 初始化RTK控制结构体 | rtkpos.c | |
rtkfree() | 释放RTK控制结构体 | rtkpos.c | |
rtkpos() | 精密定位 | rtkpos.c | |
rtkopenstat() | 打开解算状态文件 | rtkpos.c | |
rtkclosestat() | 关闭解算状态文件 | rtkpos.c | |
精密单点定位(PPP) | |||
pppos() | 精密单点定位(PPP) | ppp.c | |
pppnx() | PPP估计状态的数量 | ppp.c | |
pppoutsolstat() | 输出PPP解算统计信息 | ppp.c | |
windupcorr() | 相位缠绕修正 | rtkcmn.c | |
pppamb() | PPP整数模糊度解算 | ppp_ar.c | |
后处理定位 | |||
postpos() | 后处理定位 | postpos.c | |
数据流服务器功能 | |||
strsvrinit() | 初始化数据流服务器 | streamsvr.c | |
strsvrstart() | 启动数据流服务器r | streamsvr.c | |
strsvrstop() | 停止数据流服务器 | streamsvr.c | |
strsvrstat() | 获取数据流服务器状态 | streamsvr.c | |
strconvnew() | 生成数据流转换器 | streamsvr.c | |
strconvfree() | 释放数据流转换器 | streamsvr.c | |
RTK服务器函数 | |||
rtksvrinit() | 初始化RTK服务器 | rtksvr.c | |
rtksvrstart() | 启动RTK服务器 | rtksvr.c | |
rtksvrstop() | 停止RTK服务器 | rtksvr.c | |
rtksvropenstr() | 打开输出/日志数据流 | rtksvr.c | |
rtksvrclosestr() | 关闭输出/日志数据流 | rtksvr.c | |
rtksvrlock() | 锁定RTK服务器 | rtksvr.c | |
rtksvrunlock() | 解锁RTK服务器 | rtksvr.c | |
rtksvrostat() | 获取RTK观测数据状态 | rtksvr.c | |
rtksvrsstat() | 获取RTK数据流状态 | rtksvr.c | |
数据下载功能 | |||
dl_readurls() | 读取GNSS数据的URL地址列表文件 | download.c | |
dl_readstas() | 读取下载用的测站列表文件 | download.c | |
dl_exec() | 执行GNSS数据下载 | download.c | |
dl_test() | 执行GNSS数据的本地文件测试 | download.c | |
QZSS LEX功能 | |||
lexupdatecorr() | 更新LEX修正信息 | qzslex.c | |
lexreadmsg() | 读取LEX消息日志文件 | qzslex.c | |
lexoutmsg() | 输出LEX消息日志 | qzslex.c | |
lexconvbin() | 将LEX二进制数据转换为LEX消息日志 | qzslex.c | |
lexeph2pos() | LEX卫星星历和钟差修正 | qzslex.c | |
lexioncorr() | LEX电离层修正 | qzslex.c |