Skip to content

附录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()卫星存储编号转换为卫星IDrtkcmn.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_trtkcmn.c日历时间为年月日时分秒
time2epoch()gtime_t转日历时间rtkcmn.c
gpst2time()GPS时间周、周内秒格式转gtime_trtkcmn.c
time2gpst()GPS时间gtime_t格式转周、周内秒rtkcmn.c
gst2time()GAL时间周、周内秒格式转gtime_trtkcmn.c
time2gst()GAL时间gtime_t格式转周、周内秒rtkcmn.c
bdt2time()BDS时间周、周内秒格式转gtime_trtkcmn.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 BDTrtkcmn.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.cGPS时间每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()计算DOPrtkcmn.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 controlrinex.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原始数据mrcv/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()从解算结果缓冲区获取解算数据rsolution.c
addsol()将解算数据添加到解算结果缓冲区rsolution.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()将扩展解算结果输出到文件esolution.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语句ssolution.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电离层修正nsbas.c
sbstropcorr()SBAS对流层修正sbas.c
配置选项相关函数
searchopt()搜索选项options.c
str2opt()将字符串转换为选项值options.c
opt2str()将选项值转换为字符串goptions.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()启动数据流服务器rstreamsvr.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