GDOP.h 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. #pragma once
  2. #ifdef _WIN32
  3. # if defined(GDOP_LIB)
  4. # define GDOP_EXPORT __declspec(dllexport)
  5. # else
  6. # define GDOP_EXPORT __declspec(dllimport)
  7. # endif
  8. #else
  9. # define GDOP_EXPORT
  10. #endif
  11. extern "C"
  12. {
  13. ///
  14. /// 获取三星双时差GDOP 带参考
  15. /// mainxyz :xyz vx vy vz
  16. /// adaj1xyz :xyz vx vy vz
  17. /// adaj2xyz :xyz vx vy vz
  18. /// refPos: 参考经度,纬度
  19. /// dtousErr: 时差误差
  20. /// ephLocErr: 星历位置误差
  21. /// level: gdop输出等级
  22. /// levlen:level 长度
  23. /// resCount:每一级的数据个数
  24. /// res :数据
  25. /// satllh :卫星位置
  26. /// 返回值:0 成功
  27. ///
  28. GDOP_EXPORT int Gdop3SatRefByXyz(double *mainxyz, double *adaj1xyz, double *adaj2xyz, double *refPos
  29. , double dtousErr, double ephLocErr
  30. , double *level, int levlen, int *resCount, double **res, double *satllh);
  31. GDOP_EXPORT int Gdop3SatRefByXyz_new(double *mainxyz, double *adaj1xyz, double *adaj2xyz, double *refPos
  32. , double dtousErr, double ephLocErr
  33. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  34. ///
  35. /// 获取三星双时差GDOP 无参考
  36. /// mainxyz :xyz vx vy vz
  37. /// adaj1xyz :xyz vx vy vz
  38. /// adaj2xyz :xyz vx vy vz
  39. /// dtousErr: 时差误差
  40. /// ephLocErr: 星历位置误差
  41. /// level: gdop输出等级
  42. /// levlen:level 长度
  43. /// resCount:每一级的数据个数
  44. /// res :数据
  45. /// satllh :卫星位置
  46. /// 返回值:0 成功
  47. ///
  48. GDOP_EXPORT int Gdop3SatNoRefByXyz(double *mainxyz, double *adaj1xyz, double *adaj2xyz
  49. , double dtousErr, double ephLocErr
  50. , double *level, int levlen, int *resCount, double **res, double *satllh);
  51. GDOP_EXPORT int Gdop3SatNoRefByXyz_new(double *mainxyz, double *adaj1xyz, double *adaj2xyz
  52. , double dtousErr, double ephLocErr
  53. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  54. ///
  55. /// 获取双星GDOP
  56. /// mainxyz :xyz vx vy vz
  57. /// adajxyz :xyz vx vy vz
  58. /// refPos: 参考经度,纬度
  59. /// fuHz1: 主上行
  60. /// fuHz2: 邻上行
  61. /// dtousErr: 时差误差
  62. /// dfoHzErr: 频差误差
  63. /// ephLocErr: 星历位置误差
  64. /// ephVLocErr: 星历速度误差
  65. /// level: gdop输出等级
  66. /// levlen:level 长度
  67. /// resCount:每一级的数据个数
  68. /// res :数据
  69. /// satllh :卫星位置
  70. /// 返回值:0 成功
  71. ///
  72. GDOP_EXPORT int Gdop2SatDRefByXyz(double *mainxyz, double *adajxyz, double *refPos
  73. , double fuHz1, double fuHz2, double dtousErr, double dfoHzErr, double ephLocErr, double ephVLocErr
  74. , double *level, int levlen, int *resCount, double **res, double *satllh);
  75. GDOP_EXPORT int Gdop2SatDRefByXyz_new(double *mainxyz, double *adajxyz, double *refPos
  76. , double fuHz1, double fuHz2, double dtousErr, double dfoHzErr, double ephLocErr, double ephVLocErr
  77. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  78. ///
  79. /// 获取三星双频差GDOP
  80. /// mainxyz :xyz vx vy vz
  81. /// adaj1xyz :xyz vx vy vz
  82. /// adaj2xyz :xyz vx vy vz
  83. /// refPos: 参考经度,纬度
  84. /// fuHz1: 主上行
  85. /// fuHz2: 邻上行
  86. /// dfo_err: 频差误差
  87. /// eph_pos_err: 星历位置误差
  88. /// eph_vel_err: 星历速度误差
  89. /// level: gdop输出等级
  90. /// levlen:level 长度
  91. /// resCount:每一级的数据个数
  92. /// res :数据
  93. /// satllh :卫星位置
  94. /// 返回值:0 成功
  95. ///
  96. GDOP_EXPORT int Gdop3SatDFByXyz(double *mainxyz, double *adaj1xyz, double *adaj2xyz, double *refPos
  97. , double fuHz1, double fuHz2, double dfo_err, double eph_pos_err, double eph_vel_err
  98. , double *level, int levlen, int *resCount, double **res, double *satllh);
  99. GDOP_EXPORT int Gdop3SatDFByXyz_new(double *mainxyz, double *adaj1xyz, double *adaj2xyz, double *refPos
  100. , double fuHz1, double fuHz2, double dfo_err, double eph_pos_err, double eph_vel_err
  101. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  102. ///
  103. /// 获取2X1D GDOP
  104. /// mainxyz :xyz vx vy vz
  105. /// adajxyz :xyz vx vy vz
  106. /// cdbPos: 地面站经度,纬度
  107. /// refPos: 参考经度,纬度
  108. /// dtousErr: 时差误差
  109. /// ephLocErr: 星历位置误差
  110. /// level: gdop输出等级
  111. /// levlen:level 长度
  112. /// resCount:每一级的数据个数
  113. /// res :数据
  114. /// satllh :卫星位置 长度6
  115. /// 返回值:0 成功
  116. ///
  117. GDOP_EXPORT int Gdop2Sat1DRefByXyz(double *mainxyz, double *adajxyz, double *cdbPos
  118. , double *refPos, double dtousErr, double ephLocErr
  119. , double *level, int levlen, int *resCount, double **res, double *satllh);
  120. GDOP_EXPORT int Gdop2Sat1DRefByXyz_new(double *mainxyz, double *adajxyz, double *cdbPos
  121. , double *refPos, double dtousErr, double ephLocErr
  122. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  123. ///
  124. /// 获取2X1D no ref GDOP
  125. /// mainxyz :xyz vx vy vz
  126. /// adajxyz :xyz vx vy vz
  127. /// cdbPos: 地面站经度,纬度
  128. /// dtousErr: 时差误差
  129. /// ephLocErr: 星历位置误差
  130. /// level: gdop输出等级
  131. /// levlen:level 长度
  132. /// resCount:每一级的数据个数
  133. /// res :数据
  134. /// satllh :卫星位置 长度6
  135. /// 返回值:0 成功
  136. ///
  137. GDOP_EXPORT int Gdop2Sat1DNoRefByXyz(double *mainxyz, double *adajxyz, double *cdbPos
  138. , double dtousErr, double ephLocErr
  139. , double *level, int levlen, int *resCount, double **res, double *satllh);
  140. GDOP_EXPORT int Gdop2Sat1DNoRefByXyz_new(double *mainxyz, double *adajxyz, double *cdbPos
  141. , double dtousErr, double ephLocErr
  142. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  143. ///
  144. /// 获取XD_CX ref GDOP
  145. /// mainxyz :xyz vx vy vz
  146. /// cdbPos: 地面站经度,纬度
  147. /// cxPos: 侧向站经度,纬度
  148. /// refPos: 参考经度,纬度
  149. /// dto_err: 时差误差
  150. /// doa_err: 侧向误差
  151. /// eph_err: 星历位置误差
  152. /// level: gdop输出等级
  153. /// levlen:level 长度
  154. /// resCount:每一级的数据个数
  155. /// res :数据
  156. /// satllh :卫星位置 长度6
  157. /// 返回值:0 成功
  158. ///
  159. GDOP_EXPORT int GdopXDCXRefByXyz(double *mainxyz, double *cdbPos, double *cxPos, double *refPos
  160. , double dto_err, double doa_err, double eph_err
  161. , double *level, int levlen, int *resCount, double **res, double *satllh);
  162. GDOP_EXPORT int GdopXDCXRefByXyz_new(double *mainxyz, double *cdbPos, double *cxPos, double *refPos
  163. , double dto_err, double doa_err, double eph_err
  164. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  165. ///
  166. /// 获取XD_CX no ref GDOP
  167. /// mainxyz :xyz vx vy vz
  168. /// cdbPos: 地面站经度,纬度
  169. /// cxPos: 侧向站经度,纬度
  170. /// refPos: 参考经度,纬度
  171. /// dto_err: 时差误差
  172. /// doa_err: 侧向误差
  173. /// eph_err: 星历位置误差
  174. /// level: gdop输出等级
  175. /// levlen:level 长度
  176. /// resCount:每一级的数据个数
  177. /// res :数据
  178. /// satllh :卫星位置 长度6
  179. /// 返回值:0 成功
  180. ///
  181. GDOP_EXPORT int GdopXDCXNoRefByXyz(double *mainxyz, double *cdbPos, double *cxPos
  182. , double dto_err, double doa_err, double eph_err
  183. , double *level, int levlen, int *resCount, double **res, double *satllh);
  184. GDOP_EXPORT int GdopXDCXNoRefByXyz_new(double *mainxyz, double *cdbPos, double *cxPos
  185. , double dto_err, double doa_err, double eph_err
  186. , double *level, int levlen, int *resCount, int **lpoints, double **res, double *satllh);
  187. ///
  188. /// 获取XD_CX no ref GDOP
  189. /// cx1Pos: 侧向站经度,纬度
  190. /// cx2Pos: 侧向站经度,纬度
  191. /// doa_err1: 侧向1误差
  192. /// doa_err2: 侧向2误差
  193. /// level: gdop输出等级
  194. /// levlen:level 长度
  195. /// resCount:每一级的数据个数
  196. /// res :数据
  197. /// satllh :卫星位置 长度6
  198. /// 返回值:0 成功
  199. ///
  200. GDOP_EXPORT int Gdop2CX(double *cx1Pos, double *cx2Pos
  201. , double doa_err1, double doa_err2
  202. , double *level, int levlen, int *resCount, double **res);
  203. GDOP_EXPORT int Gdop2CX_new(double *cx1Pos, double *cx2Pos
  204. , double doa_err1, double doa_err2
  205. , double *level, int levlen, int *resCount, int **lpoints, double **res);
  206. //
  207. // 计算理论频差
  208. //tarpos 目标位置
  209. //recpos 接收站位置
  210. //eph1 星历 x y z vx vy vz
  211. //eph2 星历 x y z vx vy vz
  212. //fu 上行
  213. //fd 下行
  214. //
  215. GDOP_EXPORT double theryDfo(double *tarpos, double *recpos, double *eph1, double *eph2, double fu, double fd);
  216. ///
  217. /// XD时差线
  218. /// main_sat_pos 卫星星历 xyz
  219. /// mbwx_rec_pos 目标接收站位置 llh
  220. /// ckwx_rec_pos 参考接收站位置 llh
  221. /// cdb_rec_pos 地面接收站位置 llh
  222. /// ref_pos 参考位置 llh
  223. /// target_dto 目标时差 llh
  224. /// ref_dto 参考时差 llh
  225. /// reslen 时差线个数
  226. /// res 值
  227. ///
  228. GDOP_EXPORT int SCX_XD(double *main_sat_pos, double *mbwx_rec_pos, double *ckwx_rec_pos, double *cdb_rec_pos,
  229. double *ref_pos, double target_dto, double ref_dto, int *reslen, double **res);
  230. GDOP_EXPORT int SCX_XD_new(double *main_sat_pos, double *mbwx_rec_pos, double *ckwx_rec_pos, double *cdb_rec_pos,
  231. double *ref_pos, double target_dto, double ref_dto, int *linecount, int **reslen, double **res);
  232. ///
  233. /// XD时差线
  234. /// main_sat_pos 卫星星历 xyz
  235. /// mbwx_rec_pos 目标接收站位置 llh
  236. /// ckwx_rec_pos 参考接收站位置 llh
  237. /// cdb_rec_pos 地面接收站位置 llh
  238. /// ref_pos 参考位置 llh
  239. /// target_dto 目标时差 llh
  240. /// ref_dto 参考时差 llh
  241. /// reslen 时差线个数
  242. /// res 值
  243. ///
  244. GDOP_EXPORT int SCX_XD_NoRef(double *main_sat_pos, double *mbwx_rec_pos, double *cdb_rec_pos,
  245. double target_dto, int *reslen, double **res);
  246. GDOP_EXPORT int SCX_XD_NoRef_new(double *main_sat_pos, double *mbwx_rec_pos, double *cdb_rec_pos,
  247. double target_dto, int *linecount, int **reslen, double **res);
  248. ///
  249. /// 释放
  250. ///
  251. GDOP_EXPORT void FreeGDOPBuf(double *val);
  252. }