//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSLayerF.h" #include "ITSUtilF.h" #include "ITSMapF.h" #include "AppGlobalF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) TItsLayer::TItsLayer() { } TItsLayer::TItsLayer(bool AUse, int AZOOM, String ALINK_TYPE, int ALEVL, bool ADefault) { Use = AUse; ZOOM = AZOOM; LINK_TYPE = ALINK_TYPE; LEVL = ALEVL; Default = ADefault; } //--------------------------------------------------------------------------- TItsLayer::~TItsLayer() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TItsLayerManager *ItsLayerManager = NULL; //--------------------------------------------------------------------------- /* * Layer Manager */ TItsLayerManager::TItsLayerManager() { FFacilityLayers.Push("CCTV", new TLayerIdx("CCTV", 5, 1)); FFacilityLayers.Push("VMS", new TLayerIdx("VMS", 6, 1)); FFacilityLayers.Push("VDS", new TLayerIdx("VDS", 7, 1)); FFacilityLayers.Push("WCAM", new TLayerIdx("WCAM", 21, 1)); FFacilityLayers.Push("CCAM", new TLayerIdx("CCAM", 22, 1)); FFacilityLayers.Push("PARK", new TLayerIdx("PARK", 16, 1)); } //--------------------------------------------------------------------------- TItsLayerManager::~TItsLayerManager() { } //--------------------------------------------------------------------------- int TItsLayerManager::GetLayerIndex(String ALayerType) { TLayerIdx *pLayer = FFacilityLayers.Find(ALayerType); if (pLayer) return pLayer->Index; if (ALayerType.Pos("±³Â÷·Î°¨½Ã")) return 22; if (ALayerType.Pos("CCTV")) return 5; return -1; } //--------------------------------------------------------------------------- String TItsLayerManager::GetLayerType(int ALayerIndex) { String sLayerType[] = { "TRAFFIC", "LINK", "IFSC", "ROAD", "NODE", "CCTV", "VMS", "VDS", "VDSDET", "VDSR", "VDSRDET", "VDSC", "VDSCDET", "AVI", "RSE", "DSRC", "PARK", "PVMS", "BIT", "SIG", "SIGDET", "WCAM", "CCAM", "EVENT", "WTHR", "ATMP", "INCD", "SELECT", }; if (ALayerIndex < 0 || ALayerIndex > LyrTp_Select) return ""; return sLayerType[ALayerIndex]; } //--------------------------------------------------------------------------- bool TItsLayerManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { #if 1 FLists.Push(12, new TItsLayer(true, 12, "R", 3, false)); FLists.Push(13, new TItsLayer(true, 13, "R", 4, true)); FLists.Push(14, new TItsLayer(true, 14, "I", 2, false)); FLists.Push(15, new TItsLayer(true, 15, "I", 2, true)); FLists.Push(16, new TItsLayer(true, 16, "L", 1, false)); FLists.Push(17, new TItsLayer(true, 17, "L", 1, false)); FLists.Push(18, new TItsLayer(true, 18, "L", 1, false)); FLists.Push(19, new TItsLayer(true, 19, "L", 1, false)); FLists.Push(20, new TItsLayer(true, 20, "L", 1, true)); #else String sQry; TADOQuery *pADO = NULL; sQry = "SELECT * \r\n" " FROM TB_LAYER_INFO \r\n"; FLists.Lock(); try { FLists.RemoveAll(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); //int nRows = pADO->RecordCount; for( ; !pADO->Eof; pADO->Next()) { TItsLayer *pLayer = new TItsLayer(); pLayer->Use = pADO->FieldByName("LINK_TYPE")->AsString == "X" ? false : true; pLayer->ZOOM = pADO->FieldByName("ZOOM")->AsInteger; pLayer->LINK_TYPE = pADO->FieldByName("LINK_TYPE")->AsString; pLayer->LEVL = pADO->FieldByName("LEVL")->AsInteger; pLayer->Default = pADO->FieldByName("DFLT_YN")->AsString == "Y" ? true : false; FLists.Push(pLayer->ZOOM, pLayer); if (pLayer->Use) { TItsVrtxList *pVrtx = new TItsVrtxList(); pVrtx->ZOOM = pLayer->ZOOM; FVrtxs.Push(pVrtx->ZOOM, pVrtx); } } } catch(EDatabaseError &E) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); DBERRORMSG("TItsLayerManager::LoadFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); DBERRORMSG("TItsLayerManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry); throw Exception(String(exception.ClassName()) + exception.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } #endif return true; } //--------------------------------------------------------------------------- int TItsLayerManager::GetDefaultLinkLayer() { int nLayerIdx = -1; FOR_STL(TItsLayer*, pObj, FLists) { if (pObj->LINK_TYPE == "L" && pObj->Default) { nLayerIdx = pObj->LEVL; break; } } return nLayerIdx; } //--------------------------------------------------------------------------- int TItsLayerManager::GetDefaultIfscLayer() { int nLayerIdx = -1; FOR_STL(TItsLayer*, pObj, FLists) { if (pObj->LINK_TYPE == "I" && pObj->Default) { nLayerIdx = pObj->LEVL; break; } } return nLayerIdx; } //--------------------------------------------------------------------------- int TItsLayerManager::GetDefaultRoadLayer() { int nLayerIdx = -1; FOR_STL(TItsLayer*, pObj, FLists) { if (pObj->LINK_TYPE == "R" && pObj->Default) { nLayerIdx = pObj->LEVL; break; } } return nLayerIdx; } //--------------------------------------------------------------------------- #if 0 SELECT A.LINK_ID, A.LEVL, A.X_CRDN_ARR, A.Y_CRDN_ARR FROM TB_LINK_VRTX_ARR A, TB_LINK B WHERE A.LINK_ID = B.LINK_ID AND A.LEVL IN (SELECT DISTINCT LEVL FROM TB_LAYER_INFO WHERE LINK_TYPE = 'L') #endif