freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vc的電子導(dǎo)航系統(tǒng)_畢業(yè)論文-在線瀏覽

2024-09-12 09:16本頁(yè)面
  

【正文】 來越多的用戶所接受,成為人們工作、 生活中一個(gè)強(qiáng)有力的工具。 本設(shè)計(jì)以 VC++為開發(fā)平臺(tái) ,以 MapX 控件為圖形平臺(tái) , 以 MSComm 控件為通信平臺(tái) , 設(shè)計(jì) 具有電子導(dǎo)航的基本功能 (如地圖的放大縮小、 全圖、漫游等 ) 、 自定義工具測(cè)量折線 距離、圖層控制、 最優(yōu)路徑分析 、 GPS 導(dǎo)航 等功能的 GIS 應(yīng)用軟件 。在集成二次開發(fā)的基礎(chǔ)上,首先實(shí)現(xiàn)了地圖的導(dǎo)入、地圖 放大縮小及 圖層控制等 電子導(dǎo)航 的 基本功能, 其次 以測(cè)量 折線 距離為例實(shí)現(xiàn)了自定義工具的功能, 再次 介紹了最優(yōu)路徑分析,最后實(shí)現(xiàn) GPS 導(dǎo)航功能。 GIS Development。 MapX control。 目前用于 GIS 應(yīng)用軟件開發(fā)的模式有很多,其中組件式 GIS 軟件開發(fā)是目前較為流行、高效、快速的開發(fā)模式。 VC++是目前較流行的可視化開發(fā)編程工具之一,支持面向?qū)ο蠛褪录?qū)動(dòng)機(jī)制的程序開發(fā),利用其強(qiáng)大的集成開發(fā)環(huán)境,程序員僅需要較少代碼即可生成標(biāo)準(zhǔn)的“ Windows” 界面,并且能在 VC 開發(fā)平臺(tái)下 可以較為方便的集成組件。 MapX 是 MapInfo 公司向用戶提供的具有強(qiáng)大地圖分析功能的 ActiveX 控件產(chǎn)品。 編程人員在開發(fā)過程中可以選用自己最熟悉的開發(fā)語(yǔ)言,輕松地將地圖功能嵌入到應(yīng)用中,并且可以脫離 MapInfo 的軟件平臺(tái)運(yùn)行。 MapX采用基于 MapInfo Professional的相同的地圖化技術(shù),可以實(shí)現(xiàn) MapInfo Professional具有的絕大部分地圖編輯和空間分析功能。 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 2 MapX 為開發(fā)人員提供了一個(gè)快速、易用、功能強(qiáng)大的地圖化組件。 MapX 定義了一個(gè)類體系,以有效的組織圖形元素,圖層,屬性數(shù)據(jù)等對(duì)象。 VC++是 微軟公司 開發(fā)的一個(gè) IDE(集成開發(fā)環(huán)境 ),換句話說,就是使用 C++的一個(gè)開發(fā)平臺(tái)。但是,VC++是 Windows 平臺(tái)上的 C++編程環(huán)境,學(xué)習(xí) VC 要了解很多 Windows 平臺(tái)的特性并且還要掌握 MFC、 ALT、 COM 等的知識(shí) 。 VC++應(yīng)用程序的開發(fā)主要有兩種模式,一種是 WIN API 方式 ,另一種則是 MFC方式,傳統(tǒng)的 WIN API 開發(fā)方式比較繁瑣,而 MFC 則是對(duì) WIN API 再次封裝,所以MFC 相對(duì)于 WIN API 開發(fā)更具備效率優(yōu)勢(shì)。 MSComm 作為一個(gè)串行通訊控件為程序員串口通訊編程節(jié)省了很多時(shí)間。只需進(jìn)行以下操作即可: 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 3 打開 “ProjectAdd To ProjectComponents and ControlsRegistered Activex Controls”,然后選擇控件: Microsoft Communication Control,version 插入到當(dāng)前的工程中。編程時(shí)只需將控件對(duì)話中的 MSComm 控件拖至你的應(yīng)用對(duì)話框中就 OK 了。例如,當(dāng)在 CD(Carrier Detect)線或 RTS(Request To Send)線上有字符到達(dá)或發(fā)生了改變,在這種情況下,可以使用 MSComm 控件的 OnComm 事件捕獲和處理這些通信事件。 2. 可以在每個(gè)重要的程序功能之后檢查 CommEvent 屬性的值來檢測(cè)事件和通信錯(cuò)誤。如果在應(yīng)用程序中需要訪問多個(gè)串口,必須使用多個(gè) MSComm控件,可以在 Windows 控制面板中修改串口地址的中斷地址。 RThreshold 屬性:在 MSComm 控件設(shè)置 CommEvent 屬性為 EReceive 并產(chǎn)生OnComm之前,設(shè)置并返回的要接收的字符數(shù)。Clear To Send 是調(diào)制解調(diào)器發(fā)送到相聯(lián)計(jì)算機(jī)的信號(hào),指示傳輸可以進(jìn)行。 SThreshold 屬性:在 MSComm 控件設(shè)置 CommEvent 屬性為 EvSend 并產(chǎn)生OnComm事件之前,設(shè)置并返回傳輸緩沖區(qū)中允許的最小字符數(shù)。內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 4 Carrier Detect 是從調(diào)制解調(diào)器發(fā)送到相聯(lián)計(jì)算機(jī)的一個(gè)信號(hào),指示調(diào)制解調(diào)器正在聯(lián)機(jī)。 DSRHolding 屬性:確定 Data Set Ready (DSR)線的狀態(tài)。該屬 性在設(shè)計(jì)時(shí)無效,在運(yùn)行時(shí)為只讀。 InputLen 屬性:設(shè)置并返回 Input 屬性從接收緩沖區(qū)讀取的字符數(shù)。這種方式的好處在于無須依賴任何商業(yè) GIS 工具軟件,減少了開發(fā)成本 ,但一方面對(duì)于大多數(shù)開發(fā)者來說,能力、時(shí)間、財(cái)力方面的限制使其開發(fā)出來的產(chǎn)品很難在功能上與商業(yè)化 GIS 工具軟件相比,而且在購(gòu)買 GIS工具軟件上省下的錢可能還抵不上開發(fā)者在開發(fā)過程中絞盡腦汁所花的代價(jià)。 GIS 工具軟件大多提供了可供用戶進(jìn)行二次開發(fā)的宏語(yǔ)言,如 ESRI 的 ArcView 提供了 Avenue 語(yǔ)言, MapInfo公司研制的 MapInfo Professional 提供了 MapBasic 語(yǔ)言等等。這種方式省時(shí)省心,但進(jìn)行二次開發(fā)的宏語(yǔ)言,作為編程語(yǔ)言只能算是二流,功能極弱,用它們內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 5 來開發(fā)應(yīng)用程序仍然不盡如人意。 集成二次開發(fā)目前主要有兩種方式: 1) OLE/DDE 采用 OLE Automation 技術(shù)或利用 DDE 技術(shù),用軟件開發(fā)工具開發(fā)前臺(tái)可執(zhí)行應(yīng)用程序,以 OLE 自動(dòng)化方式或 DDE 方式啟動(dòng) GIS 工具軟件在后臺(tái)執(zhí)行,利用回調(diào)技術(shù)動(dòng)態(tài)獲取其返回信息,實(shí)現(xiàn)應(yīng)用程序中的地理信息處理功能。 三種實(shí)現(xiàn)方式的分析 由于獨(dú)立開發(fā)難度 太大,單純二次開發(fā)受 GIS 工具提供的編程語(yǔ)言的限制差強(qiáng)人意,因此結(jié)合 GIS 工具軟件與當(dāng)今可視化開發(fā)語(yǔ)言的集成二次開發(fā)方式就成為 GIS 應(yīng)用開發(fā)的主流。 由于上述優(yōu)點(diǎn),集成二次開發(fā)正成為應(yīng)用 GIS 開發(fā)的主流方向。目前許多軟件公司都開發(fā)了很多 ActiveX 控件,合理選擇和運(yùn)用現(xiàn)成的控件,減少了開發(fā)者的編程工作量,使開發(fā)者避開某些應(yīng)用的具體編程,直接調(diào)用控件,實(shí)現(xiàn)這些具體應(yīng)用,不僅可以縮短程序開發(fā)周期,使編程過程更簡(jiǎn)潔,用戶界面更友好,可以使程序更加靈活、簡(jiǎn)便。 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 7 第二章 電子導(dǎo)航 基本功能 在 VC++中的實(shí)現(xiàn) 利用 MapX 實(shí)現(xiàn) GIS 基本功能 在進(jìn)行 MapX 開發(fā)之前, 首先要 在計(jì)算機(jī)中正確的安裝了 MapX 控件 和 VC++應(yīng)用程序 。 將 MapX 支持類庫(kù)加入工程 利用 VC++環(huán)境下的應(yīng)用程序生成向?qū)?chuàng)建一單文檔界面應(yīng)用程序 VCDZDH。 地圖的顯示 在 VCDZDH 文件夾下新建文件夾 map, map 中復(fù)制 MapInfo 格式的地圖文件及Geoset(.GST)文件 。通過以下步驟,就可以實(shí)現(xiàn)地圖的顯示 [5]。方法如下: include“ ” Class CVCDZDHView::publicCView { protected: CMapX m_ctrlMapX。選擇 View Resource Symbols, 并點(diǎn)擊 New 按鈕,輸入名稱 IDC_MAP,值取默認(rèn)數(shù)值。通過類向?qū)?chuàng)建消息映射函數(shù) WM_CREATE。從類名中選擇 CVCDZDHView 類,在消息框中選擇 WM_CREATE 消息,然后添加函數(shù),編輯代碼創(chuàng)建 MapX 對(duì)象。 } 4) 采用同樣的方法創(chuàng)建 WM_SIZE 消息映射函數(shù)。具體代碼如下 : void CVCDZDHView::OnSize(UINT nType,int cx,int cy) { CView::OnSize(nType,cx,cy)。//調(diào)整地圖大小 } 5) 采用同樣的方法創(chuàng)建 WM_SETFOCUS 消息映射函數(shù)。具體代碼如下。 ()。 如圖 所示: 圖 地圖的顯示 使用地圖標(biāo)準(zhǔn)工具 在地圖顯示出來后,用戶通常要以各種比例查看地圖的全局、局部或細(xì)部,必須提供諸 如放大、縮小和漫游等功能。設(shè)定 MapX 使用標(biāo)準(zhǔn)工具的方法很簡(jiǎn)單,只需設(shè)定地圖對(duì)象的 CulrentTool 屬性。 添加新菜單項(xiàng)資源,輸入標(biāo)題“工具”,在“工具”下添加子菜單,輸入標(biāo)題“放大”及 ID 為 ID_ZOOM_ IN。 void CVCDZDHView::OnZoomIn() { (miZoomInToo1)。 如圖 所示: 圖 放大功能演示 可用相同方法實(shí)現(xiàn)縮小、漫游、全圖等標(biāo)準(zhǔn)工具的功能。表 中列出了 部分 MapX 工具的指示常量 [9]。 在菜單中建立圖層控制菜單,設(shè)置圖層控制 ID 為 ID_VIEW_LAYERCONTROL,然后建立類向?qū)?,選擇 CVCDZDHView 類,添加如下函數(shù): void CVCDZDHView::OnViewLayercontrol() { try { VARIANT vHelpFile, vHelpID。 = DISP_E_PARAMNOTFOUND。 = DISP_E_PARAMNOTFOUND。 (vHelpFile, vHelpID)。 eDelete()。 eDelete()。因此, MapX 提供了用戶自定義工具的方法,這樣可以大大擴(kuò)展 MapX 的應(yīng)用范圍。下面是用自定義工具實(shí)現(xiàn)折線距離的計(jì)算。方法如下: 首先,在 文件中定義常量。 int CVCDZDHView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if(CView:: OnCreate(1pCreateStruct) = = 1) return 1; …… (MYTOOL_DISTANCE,miToolTypePoly,miCrossCursor)。要處理 MapX 事件,首先需要為要處理的事件創(chuàng)建一事件槽,其方法如下。 DECLARE_EVENTSINK_MAP() 然后在 文件中,加入如下代碼。 END_EVENTSINK_MAP() BEGIN_EVENTSINK_MAP(CVCDZDHView,CView) 和 END_EVENTSINK_MAP()兩行代碼之間加入的,就是要處理的事件。 void OnPolyToolUsedMap(short ToolNum, long Flags, LPDISPATCH Points, BOOL bShift, BOOL bCtrl, BOOL FAR*EnableDefauh) 然后在 中加入函數(shù)的實(shí)現(xiàn)代碼。 { 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 15 CMapXPoints pts。 long i。 double dDistanceTot=。 for(i=1。i++) { CMapXPoint pt1=(i)。 Double d=((),(),(),())。 } CString str。 ((CMainFrame*)AfxGetMainWnd())(0,str)。 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 16 eDelete()。 eDelete()。 include“ ” 并且將 CMainFrame 類中的 mwndStatusBar 由受保護(hù)的變量改為全局變量。打開類向?qū)?,選擇視圖類 CVCDZDHView,為菜單項(xiàng) ID_DISTANCE_TOOL 添加COMMAND 消息映射函數(shù) OnPolydistancetool(),添加代碼如下。//調(diào)用自定義工具 } 內(nèi)蒙古科技大學(xué)畢業(yè)設(shè)計(jì) 說明書(畢業(yè) 論文 ) 17 編譯并運(yùn)行程序,如 圖 所示為使用“折線距離”工具的應(yīng)用程序界面。在實(shí)際應(yīng)用中,道路網(wǎng)的表現(xiàn)形式一般為數(shù)字化的矢量地圖,其網(wǎng)絡(luò)空間特征中的交叉路口坐標(biāo)和道路位置坐標(biāo)是在地圖上借助圖形來識(shí)別和解釋的 ; 而為了能夠高效率地進(jìn)行最短路徑分析,必須首先將其按結(jié)點(diǎn)和弧的關(guān)系抽象為圖的結(jié)構(gòu)。 下面介紹一種 Dijkstra 算法。主要特點(diǎn)是以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止。 Dijkstra 算法 一般的表述通常有兩種方式,一種用永久和臨時(shí)標(biāo)號(hào)方式,一種是用OPEN, CLOSE 表方式 。 OPEN 表保存所有已生成而未考察的節(jié)點(diǎn), CLOSED 表中記錄已訪問過的節(jié)點(diǎn)。 2. 從 OPEN 表中找出距起始點(diǎn)最近的點(diǎn),找出這個(gè)點(diǎn)的所有子節(jié)點(diǎn),把這個(gè)點(diǎn)放到 CLOSE 表中。求出這些子節(jié)點(diǎn)距起始點(diǎn)的距離值,放子節(jié)點(diǎn)到OPEN 表中。 Dijkstra 算法的基本思路是:假設(shè)每個(gè)點(diǎn)都有一對(duì)標(biāo)號(hào) (dj, pj),其中 dj 是從起源點(diǎn)s 到點(diǎn) j 的最短路徑的長(zhǎng)度 (從頂點(diǎn)到其本身的最短路徑是零路 (沒有弧的路 ),其長(zhǎng)度等于零 ); pj 則是從 s 到 j 的最短路徑中 j 點(diǎn)的前一點(diǎn)。起源點(diǎn)設(shè)置為:① ds=0, ps 為空 ; ② 所有其他點(diǎn) : di=∞ ,pi=?; ③ 標(biāo)記起源點(diǎn) s,記 k=s,其他所有點(diǎn)設(shè)為未標(biāo)記的。 3) 選取下一個(gè)點(diǎn)。 4) 找到點(diǎn) i 的前一點(diǎn)。 5) 標(biāo)記點(diǎn) i。 為了
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1