#ifndef GLOBE_H #define GLOBE_H #include /////////////////////////////////////////////////////////消息定义//////////////////////////////////////////////////////////// const UINT WM_SET_LAYER_STATUS = WM_USER+1056; //设置图层的显示状态 const UINT WM_CLOSE_LONLAT_DIALOG = WM_USER+1057; //关闭经度、纬度显示的界面 const UINT WM_CLOSE_DISTANCE_DIALOG = WM_USER+1058; //关闭显示2点之间的测量距离的界面 const UINT WM_CLOSE_LINEDESIGN_DIALOG = WM_USER+1059; //关闭航线设计对话框 const UINT WM_ADD_LINE_POINT = WM_USER+1060; //增加航点 const UINT WM_EDIT_LINE_POINT = WM_USER+1061; //编辑航点 const UINT WM_DELETE_LINE_POINT = WM_USER+1062; //删除航点 const UINT WM_SAVE_LINE_POINTS = WM_USER+1063; //保存航线 const UINT WM_CHECK_FLY_LINE_STATUS = WM_USER+1064; //检查航线的显示状态 const UINT WM_SEL_UAV = WM_USER+1065; //切换飞机 const UINT WM_DRAW_TARGET = WM_USER+1066; //标绘目标点 const UINT WM_SEND_SELECTTARGET = WM_USER+1067; //在地图上选点 const UINT WM_SEND_CLOSEDEMALT = WM_USER+1068; //关闭高程分析对话框 const UINT WM_SEND_DRAWMARKER = WM_USER+1069; //绘制标记点 const UINT WM_SEND_DRAWUAV = WM_USER+1070; //绘制无人机 //可视域分析相关消息 const UINT WM_SEND_REGIONTOGIS = WM_USER+1073; //可视域分析对话框到GISDlg的消息 const UINT WM_SEND_UPDATEDIALOG = WM_USER+1074; //更新可视域对话框信息 const UINT WM_SHOW_POINTINMAP = WM_USER+1075; //显示通视分析目标点 const UINT WM_SHOW_ISVISIBLE = WM_USER+1076; //显示可视点 const UINT WM_SHOW_NOTVISIBLE = WM_USER+1077; //显示不可视点 const UINT WM_SEND_CLEARSHAPE = WM_USER+1078; //清除图层 const UINT WM_SHOW_VISI_REALTIME = WM_USER+1079; //实时显示可视区域 const UINT WM_SHOW_NOTVISI_REALTIME = WM_USER+1080; //实时显示不可视区域 const UINT WM_SHOW_VISI_DELETE = WM_USER+1081; //清除实时区域 const UINT WM_DEL_LINELAYER = WM_USER+1082; //删除通视等高线图层 const UINT WM_ADD_LINELAYER = WM_USER+1083; //添加点到通视等高线图层 const UINT WM_DRAW_LINEPOINT = WM_USER+1084; //标绘航线上的点 const UINT WM_SHOW_CRASH_REALTIME = WM_USER+1085; //实时显示碰撞检测区域 const UINT WM_SEND_DRAWFIGHT = WM_USER+1086; //绘制作用范围 const UINT WM_SEND_DRAWDEMREGION = WM_USER+1087; //绘制高程数据区域 const UINT WM_SEND_MAPLOCATION = WM_USER+1088; //在线地图定位 const UINT WM_SEND_MAPCURSORMODE = WM_USER+1089; //设置Map CursorMode const UINT WM_SEND_SHOWSURVEYLINE = WM_USER+1090; //显示测绘航线 const UINT WM_SEND_SHOWSURVEYREGION = WM_USER+1091; //显示测绘区域 const UINT WM_BIND_SURVEYLINE = WM_USER+1092; //装订测绘航线 const UINT WM_CLEAR_TMPSURVEYFEATURE = WM_USER+1093; //清除临时测绘要素 /////////////////////////////////////////////////////////消息定义//////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////数据结构体定义//////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////数据结构体定义//////////////////////////////////////////////////////////// //视图类句柄 extern HWND g_viewHwnd; //红绿灯的位图实例 extern CBitmap g_bmpRed; extern CBitmap g_bmpGreen; //黄灯 extern CBitmap g_bmpYellow; //灰灯 extern CBitmap g_bmpGray; //数据刷新显示的间隔 extern int g_refreshTimes; //地图显示区软件界面句柄 extern HWND g_mapHwnd; //地面站位置 extern double g_gcsLon; //经度 extern double g_gcsLat; //纬度 extern double g_gcsAlt; //高度 //航线设计时航点模式:0为置点;1为航点编辑和删除模式 extern int g_ptModeInLineDesign; struct UAVState { UAVState() { pitch = pitchPreset = 0.0; roll = rollPreset = 0.0; drift = 0.0; wflypt = 0; flyPtH = 0; wflyDis = 0.0; orgptDis = 0.0; } float pitch; //俯仰角 float pitchPreset; //俯仰给定 float roll; //滚转角 float rollPreset; //滚转给定 float drift; //偏航角 int wflypt; //待飞点 float flyPtH; //航点高度 float wflyDis; //待飞距 float orgptDis; //原点距离 }; struct TargetPt { int id; double lon; double lat; }; ///////////////////////////////////////////////以下为全局函数/////////////////////////////////////////// //功能:获得软件的运行目录 extern CString GetSoftwareCurrentDirectory(); //功能:在文件夹中查找文件,看其是否存在 //输入:文件或文件夹名称strDir //返回值:true——存在该文件或文件夹 // false——不存在该文件或文件夹 extern bool SearchDirectory(const CString &strDir); //功能:新建文件夹 //输入:文件夹名称strDir //返回值:true——创建成功 // false——创建失败 extern bool CreateDirectory(const CString &strDir); //功能:一个字节分成8位,分别存储到数组中 //输入:字节oneByte //输出:8位的位集合bitArray extern void BYTE2BitArray(int *bitArray, const BYTE oneByte); //功能:无符号2个字节的整数转换成位数组(16个数据) //输入:无符号的整数usValue //返回值:含16个数据的一维数组 extern void UnsignedShort2BitArray(int *pBitArray, const unsigned short usValue); //功能:GPS UTC时间转换成北京时间 //输入:GPS UTC时间utcTime //返回值:北京时间 extern CString GPSUTCTime2BeijingTime(const double utcTime); //获得航线文件名,输入航线号(1、2、3、4、5) extern CString GetFlyLineName( const int lineID ); const int LINEPTNUM = 256; //可视域分析相关变量 /************************************************************************/ struct structPoint { double lon; double lat; }; extern structPoint g_structPointVisible[360]; extern structPoint g_structPointNotVisible[722]; extern structPoint g_structPointVisiReal[180]; extern structPoint g_structPointNotVisiReal[180]; extern structPoint g_structPointCrashReal[360]; extern long m_longGroundID; //地面站标绘图层 extern long m_visbleCircleLayerID; //可视区域图层 extern long m_notVisibleCircleLayerID; //不可视区域图层 extern long m_visiRealCircleLayerID; //实时可视区域图层 extern long m_notVisiRealCircleLayerID; //实时不可视区域图层 extern long m_RealCircleLayerID; //实时圆图层 extern long m_longContourLineID[20]; //通视等高线图层 每500米一条 500 1000 1500 2000 2500 .... 10000 extern long m_longContourTextID[20]; //通视等高线标签图层 extern bool g_bSelectDropPoint; //可视域分析对话框是否在选点 extern long m_longSelectLineID; //地面站与目标点连线图层 extern long m_longLabelPlotID; //地面站与目标点连线标注图层 extern long m_longLinePointID; //航线上的点标绘图层 extern long m_crashAreaLayerID; //实时碰撞检测区域图层 extern long m_fightRegionLayerID; //作用范围图层 extern long m_DemRegionLayerID[500]; //高程数据图层 /************************************************************************/ //多点高程分析相关变量 /************************************************************************/ extern bool g_bDemAnalysising; //是否在高程分析中 extern int g_iDemPointNum; //参与高程分析的点数 //限制参与高程分析的点数 const int g_iDemAltPtNum = 10; extern double g_dDemPtLon[g_iDemAltPtNum]; extern double g_dDemPtLat[g_iDemAltPtNum]; //两点所连线段图层 extern long g_lDemAltLayerID[g_iDemAltPtNum]; //两点所连线段标注距离方位图层 extern long g_lDemAltDisLayerID[g_iDemAltPtNum]; //点序号的标注图层 extern long g_lDemPtNumLayerID[g_iDemAltPtNum]; /************************************************************************/ /*------------------------------------------------------------------------------------------------------------- 说明:标记点相关变量 -------------------------------------------------------------------------------------------------------------*/ //是否在移动鼠标选择标记点 extern bool g_bSelectMarker; //最大支持的标记点数 const int g_iMarkerPtNum = 120; //标记点图层 extern long g_lMarkerLayerID[g_iMarkerPtNum]; //已经标记的点数 extern int g_iHaveMarkedPts; extern CString g_iMarkerName[g_iMarkerPtNum]; extern double g_iMarkerLon[g_iMarkerPtNum]; extern double g_iMarkerLat[g_iMarkerPtNum]; extern bool g_bMarkerPlot[g_iMarkerPtNum]; /*------------------------------------------------------------------------------------------------------------- 说明:不同型号变量,用于控制是否启用个性功能 -------------------------------------------------------------------------------------------------------------*/ extern bool g_b981ADesktop; // 981A电脑端 extern bool g_b981APad; // 981A平板端 extern bool g_b981CDesktop; // 981C电脑端 #endif