123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading.Tasks;
- namespace DW5S.KxcApi
- {
- public static class GDOPApi
- {
- private const string GDOPDll = @"AddIns\GDOP误差椭圆\GDOP_Draw_11.dll";
- private const string ErrellipDll = @"AddIns\GDOP误差椭圆\DLL_GDOP_Analysis0415";
- /// <summary>
- /// 两星一地误差椭圆
- /// </summary>
- /// <param name="main_eph">主星位置 长度6</param>
- /// <param name="neigh_eph">邻星位置 长度6</param>
- /// <param name="cdbAnt">超短波 长度3</param>
- /// <param name="refStation">参考站 长度3</param>
- /// <param name="Select_Point">定位点 长度3</param>
- /// <param name="dto_err">时差误差(s)</param>
- /// <param name="eph_err"></param>
- /// <param name="Pe">0.5</param>
- /// <param name="LOP_Len"></param>
- /// <returns></returns>
- [DllImport(ErrellipDll, EntryPoint = "Error_Ellipse_2X1D", CallingConvention = CallingConvention.Cdecl)]
- public extern static IntPtr Error_Ellipse_2X1D(double[] main_eph, double[] neigh_eph, double[] cdbAnt, double[] refStation, double[] Select_Point, double dto_err,
- double eph_err, double Pe, ref int LOP_Len);
- ///
- /// 获取三星双时差GDOP 带参考
- /// mainxyz :xyz vx vy vz
- /// adaj1xyz :xyz vx vy vz
- /// adaj2xyz :xyz vx vy vz
- /// refPos: 参考经度,纬度
- /// dtousErr: 时差误差
- /// ephLocErr: 星历位置误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "Gdop3SatRefByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop3SatRefByXyz(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz, double[] refPos
- , double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- [DllImport(GDOPDll, EntryPoint = "Gdop3SatRefByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop3SatRefByXyz_new(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz, double[] refPos
- , double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[] satllh);
- ///
- /// 获取三星双时差GDOP 无参考
- /// mainxyz :xyz vx vy vz
- /// adaj1xyz :xyz vx vy vz
- /// adaj2xyz :xyz vx vy vz
- /// dtousErr: 时差误差
- /// ephLocErr: 星历位置误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "Gdop3SatNoRefByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop3SatNoRefByXyz(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz
- , double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- [DllImport(GDOPDll, EntryPoint = "Gdop3SatNoRefByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop3SatNoRefByXyz_new(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz
- , double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[] satllh);
- ///
- /// 获取双星GDOP
- /// mainxyz :xyz vx vy vz
- /// adajxyz :xyz vx vy vz
- /// refPos: 参考经度,纬度
- /// fuHz1: 主上行
- /// fuHz2: 邻上行
- /// dtousErr: 时差误差
- /// dfoHzErr: 频差误差
- /// ephLocErr: 星历位置误差
- /// ephVLocErr: 星历速度误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "Gdop2SatDRefByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop2SatDRefByXyz(double[] mainxyz, double[] adajxyz, double[] refPos
- , double fuHz1, double fuHz2, double dtousErr, double dfoHzErr, double ephLocErr, double ephVLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- [DllImport(GDOPDll, EntryPoint = "Gdop2SatDRefByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop2SatDRefByXyz_new(double[] mainxyz, double[] adajxyz, double[] refPos
- , double fuHz1, double fuHz2, double dtousErr, double dfoHzErr, double ephLocErr, double ephVLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[] satllh);
- ///
- /// 获取三星双频差GDOP
- /// mainxyz :xyz vx vy vz
- /// adaj1xyz :xyz vx vy vz
- /// adaj2xyz :xyz vx vy vz
- /// refPos: 参考经度,纬度
- /// fuHz1: 主上行
- /// fuHz2: 邻上行
- /// dfo_err: 频差误差
- /// eph_pos_err: 星历位置误差
- /// eph_vel_err: 星历速度误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "Gdop3SatDFByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop3SatDFByXyz(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz, double[] refPos
- , double fuHz1, double fuHz2, double dfo_err, double eph_pos_err, double eph_vel_err
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- [DllImport(GDOPDll, EntryPoint = "Gdop3SatDFByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop3SatDFByXyz_new(double[] mainxyz, double[] adaj1xyz, double[] adaj2xyz, double[] refPos
- , double fuHz1, double fuHz2, double dfo_err, double eph_pos_err, double eph_vel_err
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[] satllh);
- ///
- /// 获取2X1D GDOP
- /// mainxyz :xyz vx vy vz
- /// adajxyz :xyz vx vy vz
- /// cdbPos: 地面站经度,纬度
- /// refPos: 参考经度,纬度
- /// dtousErr: 时差误差
- /// ephLocErr: 星历位置误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置 长度6
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DRefByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop2Sat1DRefByXyz(double[] mainxyz, double[] adajxyz, double[] cdbPos
- , double[] refPos, double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DRefByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop2Sat1DRefByXyz_new(double[] mainxyz, double[] adajxyz, double[] cdbPos
- , double[] refPos, double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[] satllh);
- ///
- /// 获取2X1D no ref GDOP
- /// mainxyz :xyz vx vy vz
- /// adajxyz :xyz vx vy vz
- /// cdbPos: 地面站经度,纬度
- /// dtousErr: 时差误差
- /// ephLocErr: 星历位置误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置 长度6
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DNoRefByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop2Sat1DNoRefByXyz(double[] mainxyz, double[] adajxyz, double[] cdbPos
- , double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- [DllImport(GDOPDll, EntryPoint = "Gdop2Sat1DNoRefByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int Gdop2Sat1DNoRefByXyz_new(double[] mainxyz, double[] adajxyz, double[] cdbPos
- , double dtousErr, double ephLocErr
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[] satllh);
-
- ///
- /// 获取XD_CX ref GDOP
- /// mainxyz :xyz vx vy vz
- /// cdbPos: 地面站经度,纬度
- /// cxPos: 侧向站经度,纬度
- /// refPos: 参考经度,纬度
- /// dto_err: 时差误差
- /// doa_err: 侧向误差
- /// eph_err: 星历位置误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置 长度6
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "GdopXDCXRefByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int GdopXDCXRefByXyz(double[] mainxyz, double[] cdbPos, double[] cxPos, double[] refPos
- , double dto_err, double doa_err, double eph_err
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- [DllImport(GDOPDll, EntryPoint = "GdopXDCXRefByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int GdopXDCXRefByXyz_new(double[] mainxyz, double[] cdbPos, double[] cxPos, double[] refPos
- , double dto_err, double doa_err, double eph_err
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[] satllh);
- ///
- /// 获取XD_CX no ref GDOP
- /// mainxyz :xyz vx vy vz
- /// cdbPos: 地面站经度,纬度
- /// cxPos: 侧向站经度,纬度
- /// refPos: 参考经度,纬度
- /// dto_err: 时差误差
- /// doa_err: 侧向误差
- /// eph_err: 星历位置误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置 长度6
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "GdopXDCXNoRefByXyz", CallingConvention = CallingConvention.Cdecl)]
- public static extern int GdopXDCXNoRefByXyz(double[] mainxyz, double[] cdbPos, double[] cxPos
- , double dto_err, double doa_err, double eph_err
- , double[] level, int levlen, int[] resCount, out IntPtr res, double[] satllh);
- ///
- /// 获取XD_CX no ref GDOP
- /// mainxyz :xyz vx vy vz
- /// cdbPos: 地面站经度,纬度
- /// cxPos: 侧向站经度,纬度
- /// refPos: 参考经度,纬度
- /// dto_err: 时差误差
- /// doa_err: 侧向误差
- /// eph_err: 星历位置误差
- /// level: gdop输出等级
- /// levlen:level 长度
- /// resCount:每一级的数据个数
- /// res :数据
- /// satllh :卫星位置 长度6
- /// 返回值:0 成功
- ///
- [DllImport(GDOPDll, EntryPoint = "GdopXDCXNoRefByXyz_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int GdopXDCXNoRefByXyz_new(double[] mainxyz, double[] cdbPos, double[] cxPos
- , double dto_err, double doa_err, double eph_err
- , double[] level, int levlen, int[] resCount, out IntPtr lpoints, out IntPtr res, double[]satllh);
- /////
- ///// XD时差线
- ///// main_sat_pos 卫星星历 xyz
- ///// mbwx_rec_pos 目标接收站位置 llh
- ///// ckwx_rec_pos 参考接收站位置 llh
- ///// cdb_rec_pos 地面接收站位置 llh
- ///// ref_pos 参考位置 llh
- ///// target_dto 目标时差 llh
- ///// ref_dto 参考时差 llh
- ///// reslen 时差线个数
- ///// res 值
- /////
- //[DllImport(GDOPDll, EntryPoint = "SCX_XD", CallingConvention = CallingConvention.Cdecl)]
- //public static extern int SCX_XD(double[] mainxyz, double[] mbrecPos, double[] ckrefPos, double[] cdbPos, double[] refPos,
- // double target_dto, double ref_dto,ref int resCount, out IntPtr res);
- ///
- /// XD时差线
- /// main_sat_pos 卫星星历 xyz
- /// mbwx_rec_pos 目标接收站位置 llh
- /// ckwx_rec_pos 参考接收站位置 llh
- /// cdb_rec_pos 地面接收站位置 llh
- /// ref_pos 参考位置 llh
- /// target_dto 目标时差 llh
- /// ref_dto 参考时差 llh
- /// linecount 线条数
- /// reslen 线条数对应点数
- /// res 总点数
- ///
- [DllImport(GDOPDll, EntryPoint = "SCX_XD_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int SCX_XD_new(double[] mainxyz, double[] mbrecPos, double[] ckrefPos, double[] cdbPos, double[] refPos,
- double target_dto, double ref_dto,ref int linecount, out IntPtr reslen,out IntPtr res);
- ///
- /// XD时差线
- /// main_sat_pos 卫星星历 xyz
- /// mbwx_rec_pos 目标接收站位置 llh
- /// cdb_rec_pos 地面接收站位置 llh
- /// target_dto 目标时差 llh
- /// ref_dto 参考时差 llh
- /// reslen 时差线个数
- /// res 值
- ///
- [DllImport(GDOPDll, EntryPoint = "SCX_XD_NoRef", CallingConvention = CallingConvention.Cdecl)]
- public static extern int SCX_XD_NoRef(double[] mainxyz, double[] mbrecPos, double[] cdbPos,
- double target_dto,ref int resCount, out IntPtr res);
- ///
- /// XD时差线
- /// main_sat_pos 卫星星历 xyz
- /// mbwx_rec_pos 目标接收站位置 llh
- /// cdb_rec_pos 地面接收站位置 llh
- /// target_dto 目标时差 llh
- /// ref_dto 参考时差 llh
- /// reslen 时差线个数
- /// res 值
- ///
- [DllImport(GDOPDll, EntryPoint = "SCX_XD_NoRef_new", CallingConvention = CallingConvention.Cdecl)]
- public static extern int SCX_XD_NoRef_new(double[] mainxyz, double[] mbrecPos, double[] cdbPos,
- double target_dto, ref int linecount, out IntPtr reslen, out IntPtr res);
- //单星、星地、低轨、
- //GDOP_EXPORT int SCX_XD_NoRef_new(double* main_sat_pos, double* mbwx_rec_pos, double* cdb_rec_pos,
- //double target_dto, int* linecount, int** reslen, double** res);
- [DllImport(GDOPDll, EntryPoint = "FreeGDOPBuf", CallingConvention = CallingConvention.Cdecl)]
- public static extern void FreeGDOPBuf(IntPtr val);
- }
- }
|