CDSLayerF.cpp 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSLayerF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSMapF.h"
  6. #include "AppGlobalF.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. TItsLayer::TItsLayer()
  10. {
  11. }
  12. TItsLayer::TItsLayer(bool AUse, int AZOOM, String ALINK_TYPE, int ALEVL, bool ADefault)
  13. {
  14. Use = AUse;
  15. ZOOM = AZOOM;
  16. LINK_TYPE = ALINK_TYPE;
  17. LEVL = ALEVL;
  18. Default = ADefault;
  19. }
  20. //---------------------------------------------------------------------------
  21. TItsLayer::~TItsLayer()
  22. {
  23. }
  24. //---------------------------------------------------------------------------
  25. //---------------------------------------------------------------------------
  26. TItsLayerManager *ItsLayerManager = NULL;
  27. //---------------------------------------------------------------------------
  28. /*
  29. * Layer Manager
  30. */
  31. TItsLayerManager::TItsLayerManager()
  32. {
  33. FFacilityLayers.Push("CCTV", new TLayerIdx("CCTV", 5, 1));
  34. FFacilityLayers.Push("VMS", new TLayerIdx("VMS", 6, 1));
  35. FFacilityLayers.Push("VDS", new TLayerIdx("VDS", 7, 1));
  36. FFacilityLayers.Push("WCAM", new TLayerIdx("WCAM", 21, 1));
  37. FFacilityLayers.Push("CCAM", new TLayerIdx("CCAM", 22, 1));
  38. FFacilityLayers.Push("PARK", new TLayerIdx("PARK", 16, 1));
  39. }
  40. //---------------------------------------------------------------------------
  41. TItsLayerManager::~TItsLayerManager()
  42. {
  43. }
  44. //---------------------------------------------------------------------------
  45. int TItsLayerManager::GetLayerIndex(String ALayerType)
  46. {
  47. TLayerIdx *pLayer = FFacilityLayers.Find(ALayerType);
  48. if (pLayer) return pLayer->Index;
  49. if (ALayerType.Pos("±³Â÷·Î°¨½Ã")) return 22;
  50. if (ALayerType.Pos("CCTV")) return 5;
  51. return -1;
  52. }
  53. //---------------------------------------------------------------------------
  54. String TItsLayerManager::GetLayerType(int ALayerIndex)
  55. {
  56. String sLayerType[] =
  57. {
  58. "TRAFFIC",
  59. "LINK",
  60. "IFSC",
  61. "ROAD",
  62. "NODE",
  63. "CCTV",
  64. "VMS",
  65. "VDS",
  66. "VDSDET",
  67. "VDSR",
  68. "VDSRDET",
  69. "VDSC",
  70. "VDSCDET",
  71. "AVI",
  72. "RSE",
  73. "DSRC",
  74. "PARK",
  75. "PVMS",
  76. "BIT",
  77. "SIG",
  78. "SIGDET",
  79. "WCAM",
  80. "CCAM",
  81. "EVENT",
  82. "WTHR",
  83. "ATMP",
  84. "INCD",
  85. "SELECT",
  86. };
  87. if (ALayerIndex < 0 || ALayerIndex > LyrTp_Select) return "";
  88. return sLayerType[ALayerIndex];
  89. }
  90. //---------------------------------------------------------------------------
  91. bool TItsLayerManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  92. {
  93. #if 1
  94. FLists.Push(12, new TItsLayer(true, 12, "R", 3, false));
  95. FLists.Push(13, new TItsLayer(true, 13, "R", 4, true));
  96. FLists.Push(14, new TItsLayer(true, 14, "I", 2, false));
  97. FLists.Push(15, new TItsLayer(true, 15, "I", 2, true));
  98. FLists.Push(16, new TItsLayer(true, 16, "L", 1, false));
  99. FLists.Push(17, new TItsLayer(true, 17, "L", 1, false));
  100. FLists.Push(18, new TItsLayer(true, 18, "L", 1, false));
  101. FLists.Push(19, new TItsLayer(true, 19, "L", 1, false));
  102. FLists.Push(20, new TItsLayer(true, 20, "L", 1, true));
  103. #else
  104. String sQry;
  105. TADOQuery *pADO = NULL;
  106. sQry = "SELECT * \r\n"
  107. " FROM TB_LAYER_INFO \r\n";
  108. FLists.Lock();
  109. try
  110. {
  111. FLists.RemoveAll();
  112. try
  113. {
  114. pADO = new TADOQuery(NULL);
  115. pADO->Close();
  116. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  117. pADO->SQL->Clear();
  118. pADO->SQL->Text = sQry;
  119. pADO->Prepared = true;
  120. pADO->Open();
  121. //int nRows = pADO->RecordCount;
  122. for( ; !pADO->Eof; pADO->Next())
  123. {
  124. TItsLayer *pLayer = new TItsLayer();
  125. pLayer->Use = pADO->FieldByName("LINK_TYPE")->AsString == "X" ? false : true;
  126. pLayer->ZOOM = pADO->FieldByName("ZOOM")->AsInteger;
  127. pLayer->LINK_TYPE = pADO->FieldByName("LINK_TYPE")->AsString;
  128. pLayer->LEVL = pADO->FieldByName("LEVL")->AsInteger;
  129. pLayer->Default = pADO->FieldByName("DFLT_YN")->AsString == "Y" ? true : false;
  130. FLists.Push(pLayer->ZOOM, pLayer);
  131. if (pLayer->Use)
  132. {
  133. TItsVrtxList *pVrtx = new TItsVrtxList();
  134. pVrtx->ZOOM = pLayer->ZOOM;
  135. FVrtxs.Push(pVrtx->ZOOM, pVrtx);
  136. }
  137. }
  138. }
  139. catch(EDatabaseError &E)
  140. {
  141. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  142. DBERRORMSG("TItsLayerManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  143. throw Exception(String(E.ClassName()) + E.Message);
  144. }
  145. catch(Exception &exception)
  146. {
  147. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  148. DBERRORMSG("TItsLayerManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  149. throw Exception(String(exception.ClassName()) + exception.Message);
  150. }
  151. }
  152. __finally
  153. {
  154. if (pADO)
  155. {
  156. pADO->Close();
  157. delete pADO;
  158. }
  159. FLists.UnLock();
  160. }
  161. #endif
  162. return true;
  163. }
  164. //---------------------------------------------------------------------------
  165. int TItsLayerManager::GetDefaultLinkLayer()
  166. {
  167. int nLayerIdx = -1;
  168. FOR_STL(TItsLayer*, pObj, FLists)
  169. {
  170. if (pObj->LINK_TYPE == "L" && pObj->Default)
  171. {
  172. nLayerIdx = pObj->LEVL;
  173. break;
  174. }
  175. }
  176. return nLayerIdx;
  177. }
  178. //---------------------------------------------------------------------------
  179. int TItsLayerManager::GetDefaultIfscLayer()
  180. {
  181. int nLayerIdx = -1;
  182. FOR_STL(TItsLayer*, pObj, FLists)
  183. {
  184. if (pObj->LINK_TYPE == "I" && pObj->Default)
  185. {
  186. nLayerIdx = pObj->LEVL;
  187. break;
  188. }
  189. }
  190. return nLayerIdx;
  191. }
  192. //---------------------------------------------------------------------------
  193. int TItsLayerManager::GetDefaultRoadLayer()
  194. {
  195. int nLayerIdx = -1;
  196. FOR_STL(TItsLayer*, pObj, FLists)
  197. {
  198. if (pObj->LINK_TYPE == "R" && pObj->Default)
  199. {
  200. nLayerIdx = pObj->LEVL;
  201. break;
  202. }
  203. }
  204. return nLayerIdx;
  205. }
  206. //---------------------------------------------------------------------------
  207. #if 0
  208. SELECT A.LINK_ID, A.LEVL, A.X_CRDN_ARR, A.Y_CRDN_ARR
  209. FROM TB_LINK_VRTX_ARR A,
  210. TB_LINK B
  211. WHERE A.LINK_ID = B.LINK_ID
  212. AND A.LEVL IN (SELECT DISTINCT LEVL
  213. FROM TB_LAYER_INFO
  214. WHERE LINK_TYPE = 'L')
  215. #endif