国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
在VC++中嵌入MapX的集成二次開(kāi)發(fā)

在VC++中嵌入MapX的集成二次開(kāi)發(fā)
整理時(shí)間 [2005-03-19]   閱讀次數(shù) [3403]
作者:胡殿宇 黃鐘 金寧   

文字大?。骸?a href="javascript:SetFontSize(16)">大】【】【】 
    結(jié)合GIS工具軟件與當(dāng)今可視化開(kāi)發(fā)語(yǔ)言的集成二次開(kāi)發(fā)方式是GIS應(yīng)用開(kāi)發(fā)的主流。它的優(yōu)點(diǎn)是既可以充分利用GIS工具軟件對(duì)空間數(shù)據(jù)庫(kù)的管理、分析功能,又可以利用其它可視化開(kāi)發(fā)語(yǔ)言具有的高效、方便等編程優(yōu)點(diǎn),集二者之所長(zhǎng)……

  MapX是MapInfo公司向用戶(hù)提供的具有強(qiáng)大地圖分析功能的ActiveX控件產(chǎn)品。由于它是一種基于Windows操作系統(tǒng)的標(biāo)準(zhǔn)控件,因而能支持絕大多數(shù)標(biāo)準(zhǔn)的可視化開(kāi)發(fā)環(huán)境如Visual C++、Visual Basic、Delphi、PowerBuilder等。編程人員在開(kāi)發(fā)過(guò)程中可以選用自己最熟悉的開(kāi)發(fā)語(yǔ)言,輕松地將地圖功能嵌入到應(yīng)用中,并且可以脫離MapInfo的軟件平臺(tái)運(yùn)行。這里談到的VC++嵌入MapX進(jìn)行二次開(kāi)發(fā)可分為以下幾個(gè)步驟來(lái)實(shí)現(xiàn):

  1 對(duì)應(yīng)用工程的預(yù)設(shè)置

  在創(chuàng)建MapX控件之前,必須將MapX.h和MapX.cpp文件加入到工程中。對(duì)于Visual C++5.0及以上版本,從Project菜單中選擇Add To Project -> Files命令,打開(kāi)InsertFiles into Project對(duì)話(huà)框,選擇MapX.cpp和MapX.h文件加入到工程中(在MapX自帶的C++例子中有這兩個(gè)文件)。

  注意:不要選擇Project菜單中的Add TO Project->Components And Controls命令。如果選擇該命令加入MapX控件,將創(chuàng)建一新的.cpp文件,但是該文本沒(méi)有包括所有的MapX對(duì)象。

  2 對(duì)MapX屬性的操作

  對(duì)于C++程序來(lái)說(shuō),每個(gè)MapX對(duì)象(Objects)都在MapX.h 和 MapX.cpp中用一個(gè)類(lèi)來(lái)實(shí)現(xiàn),類(lèi)的名字和MapX對(duì)象的名字相同,且已經(jīng)在CmapX中定義了。

  例如,DataSet對(duì)象用類(lèi)CmapXDataset實(shí)現(xiàn)。這和C++類(lèi)的定義相一致。而每個(gè)MapX對(duì)象的屬性(Properties)是用類(lèi)的成員函數(shù)來(lái)實(shí)現(xiàn)的。比如DataSet對(duì)象的名字(Name),就是用Name()函數(shù)來(lái)實(shí)現(xiàn)的,不過(guò),Name()有兩種使用方法,即Get和Set。如:

  CString GetName();//獲取對(duì)象名字

  void SetName(LPCTSTR);//設(shè)置對(duì)象名字 

  3 部分MapX工具的應(yīng)用

  (1) “全圖”工具的改進(jìn)

  一般全圖工具的代碼為:

  m_ctrlMapX.SetZoom(m_ctrlMapX.GetGeoSetWidth());

  此方法的缺點(diǎn)是重新顯示全圖后,實(shí)際上是以上一個(gè)視圖的中心作為屏幕中心進(jìn)行顯示,如果上一個(gè)視圖在全圖中的邊緣位置,點(diǎn)擊全圖工具后實(shí)際上不是初始設(shè)置的全圖。因此可以用如下代碼實(shí)現(xiàn):

  CString mapname=m_ctrlMapX.GetGeoSet();//取得當(dāng)前地圖的名字

  m_ctrlMapX.SetGeoSet(mapname);//設(shè)置該地圖為主視區(qū)顯示圖

  (2) 創(chuàng)建“信息”工具

  MapX沒(méi)有提供信息工具,該工具是自定制工具。有兩種實(shí)現(xiàn)方法,其基本思想是:

  (1)創(chuàng)建工具的鼠標(biāo)指針類(lèi)型(一般為“+”),當(dāng)在工具欄上選擇此工具后,設(shè)置為當(dāng)前工具,然后跟蹤鼠標(biāo)在地圖上點(diǎn)擊的位置,觸發(fā)ToolUsed事件,根據(jù)位置信息確定相應(yīng)的對(duì)象,然后讀取對(duì)象屬性或綁定的數(shù)據(jù)庫(kù),彈出對(duì)話(huà)框,實(shí)現(xiàn)信息顯示。此種方法只適用于顯示地圖的最上層對(duì)象(在MapX自帶的C++例子“Buffer”中有具體實(shí)現(xiàn)代碼)。

  (2) 用選擇工具選中地圖上所要顯示信息的對(duì)象,然后再點(diǎn)擊工具欄上的信息工具,彈出對(duì)話(huà)框,實(shí)現(xiàn)信息顯示。此信息工具的實(shí)現(xiàn)代碼與(1)不同,沒(méi)有鼠標(biāo)指針,實(shí)際上就是讀取選中對(duì)象的屬性或綁定的數(shù)據(jù)庫(kù)的操作。此方法適合顯示地圖上的任意圖層。

  兩種方法各有特點(diǎn),第一種方法直接,但在實(shí)際應(yīng)用中容易出現(xiàn)異常,第二種方法要多點(diǎn)擊一次,但應(yīng)用穩(wěn)定,而且適用地圖上的任意圖層。

  (3) “測(cè)距”工具的使用注意事項(xiàng)

  MapX的Distance()函數(shù)是針對(duì)地球地圖的,在非地球地圖中使用要注意數(shù)值轉(zhuǎn)換。否則測(cè)出的數(shù)據(jù)與實(shí)際相差甚遠(yuǎn)。


  4 用MapX進(jìn)行GIS二次開(kāi)發(fā)


  (1) 創(chuàng)建數(shù)據(jù)庫(kù)

  空間數(shù)據(jù)庫(kù)可以通過(guò)兩種方法創(chuàng)建,一種是通過(guò)MapX的圖層生成功能創(chuàng)建。MapX生成的每一圖層都對(duì)應(yīng)一張表(table),該表中除了存有地理對(duì)象的位置坐標(biāo)以外,還可以包含其他屬性字段;另一種方法是通過(guò)導(dǎo)入帶有地理位置信息的其他數(shù)據(jù)庫(kù)生成。 MapX可以通過(guò)數(shù)據(jù)綁定把這些數(shù)據(jù)庫(kù)中的地理信息映射到地圖圖層上,MapX支持對(duì)多種常用數(shù)據(jù)庫(kù)的訪問(wèn)。

  (2) 設(shè)置圖層控制和地圖投影

  在把地圖加入到MapX之前,我們可以使用MapX附帶的圖層管理工具Geoset Manager把要加入的圖層匹配在一起,建成一個(gè)圖層組,該圖層組規(guī)定了其中各個(gè)圖層的名稱(chēng)、內(nèi)容、屬性及各圖層之間的顯示順序。MapX中可以給圖層設(shè)置四種屬性:可顯示、可選擇、可編輯和自動(dòng)標(biāo)注。一般圖層的屬性是可顯示的,需要查詢(xún)的圖層設(shè)置為可選擇,需要修改的圖層設(shè)置為可編輯,而自動(dòng)標(biāo)注可以自動(dòng)顯示圖層中地理對(duì)象的標(biāo)簽。合理地設(shè)置這些屬性將有助于系統(tǒng)實(shí)現(xiàn)地理信息的維護(hù)和查詢(xún)功能。在匹配各個(gè)圖層時(shí),應(yīng)該注意各個(gè)圖層投影的設(shè)置。全部圖層必須使用一致的投影方法才能精確匹配。MapX中的地圖分為地球地圖和非地球地圖,地球地圖中對(duì)象的坐標(biāo)用經(jīng)緯度來(lái)表示,非地球地圖中對(duì)象的坐標(biāo)通常是相對(duì)坐標(biāo),是相對(duì)于圖中的某個(gè)基準(zhǔn)點(diǎn)來(lái)設(shè)置的。如果圖層的坐標(biāo)不一致的話(huà),必須先轉(zhuǎn)換坐標(biāo)才能進(jìn)行匹配。

  (3) 設(shè)計(jì)編輯功能

  MapX提供標(biāo)準(zhǔn)的地理對(duì)象類(lèi)型定義,在MapX所提供的點(diǎn)、線、面類(lèi)型選擇對(duì)話(huà)框中可以方便地選擇地理對(duì)象的類(lèi)型,包括所使用的符號(hào)的形狀、顏色、大小等屬性。利用MapX提供的畫(huà)圖工具,可以為用戶(hù)設(shè)計(jì)出多種多樣的地理對(duì)象生成工具。利用MapX提供的多種地理信息對(duì)象的選擇工具(如矩形、圓形選擇工具),用戶(hù)可以調(diào)用這些選擇工具并和MapX所提供的編輯(刪除、修改等)地理對(duì)象功能相結(jié)合,以完成地理信息系統(tǒng)中地理對(duì)象的編輯操作。但要注意,對(duì)于地理數(shù)據(jù)和非地理數(shù)據(jù)要分別對(duì)待。

  (4) 設(shè)計(jì)查詢(xún)功能和分析統(tǒng)計(jì)功能

  對(duì)于地理信息系統(tǒng)中所要求的有關(guān)地理信息查詢(xún)功能和分析統(tǒng)計(jì)功能,MapX提供了一定的查詢(xún)和分析手段,如MapX可以根據(jù)圖層表中的字段值查詢(xún)相對(duì)應(yīng)的地理對(duì)象;可以提供對(duì)應(yīng)于圖層表中某個(gè)或某幾個(gè)字段的分析餅圖等。對(duì)于非地理信息,就要依據(jù)系統(tǒng)的具體要求用面向?qū)ο蟮恼Z(yǔ)言設(shè)計(jì)查詢(xún)和分析統(tǒng)計(jì)功能。

  結(jié)束語(yǔ)

  在開(kāi)發(fā)GIS的過(guò)程中,首先要考慮的就是選擇好的開(kāi)發(fā)工具。單獨(dú)使用可視化的編程語(yǔ)言不能方便地實(shí)現(xiàn)地理地圖功能,而通常的GIS軟件是一個(gè)非常專(zhuān)業(yè)的界面,并且不能完全滿(mǎn)足各種GIS用戶(hù)的需要,而使用“GIS組件 + 面向?qū)ο罂梢暬幊陶Z(yǔ)言”的模式就比較適合于各種應(yīng)用的需要。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MapInfo教程
Mapx
TITAN GIS 地理信息系統(tǒng) CIO俱樂(lè)部
如何制作簡(jiǎn)單的電子地圖
MapX開(kāi)發(fā)概述:MapX開(kāi)發(fā)基礎(chǔ)教程(1)
ArcGIS中文基礎(chǔ)教程-92a128eb551810a6f52486b4
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服