基于MapX的多字段專題餅圖的設計_第1頁
基于MapX的多字段專題餅圖的設計_第2頁
基于MapX的多字段專題餅圖的設計_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于MapX的多字段專題餅圖的設計

摘要:本文以小靈通路測系統中同步與漂移測試數據為例,提出如何在VC++開發環境中利用MapX創建多字段的專題餅圖,特別是如何利用安全數組進行數據綁定創建多字段的專題餅圖。關鍵字:MapX安全數組專題地圖引言組件式軟件技術已經成為當今軟件技術的潮流之一,組件式GIS技術將給整個GIS技術體系和應用模式帶來巨大的影響。MapX是MapInfo公司提供的具有強大地圖分析功能的ActiveX控件,支持大多數標準的可視化開發環境并且可以脫離MapInfo的軟件平臺運行。利用MapX,能夠簡單快速地在企業應用中嵌入地圖功能,增強應用的空間分析能力。在MapX中,專題地圖是用來分析和表現數據的一種強有力的方式。利用專題地圖,可根據表中特定的值來賦予地圖對象顏色、圖案和符號,從而把各種數據圖形化,很直觀地顯示在地圖上,為用戶的決策支持提供依據。專題地圖數據通常在創建地圖時所基于的表中或在ODBC支持的外部數據源中,也可以在COM數據集安全數組中。在小靈通信號的測試分析系統中,地圖格式支持柵格圖與矢量地圖,為提高效率、滿足實時性的要求,相關待處理數據存放在安全數組中,創建專題地圖時利用安全數組進行數據綁定。1

安全數組(SAFEARRAY)MapX既是一個自動化對象,也是一個標準的COM對象,它支持結構化存儲技術、自動化技術等。自動化繼承了COM的語言無關性、進程透明性等優點,也簡化了COM的一些底層細節。但自動化技術有一組專用于自動化的數據類型,SAFEARRAY便是Automation中的標準數組存儲方式。SAFEARRAY類型實際是一個結構類型,但它可用于描述各種數組,指定了數組每一維的邊界信息。安全數組類型的使用主要是要定義一個安全數組及維數與維的邊界。COM提供了一套API用于處理SAFEARRAY。為了保證程序和SAFEARRAY結構無關,程序中建立、讀取、更改和釋放SAFEARRAY都應該通過這些API進行,而不應該直接讀寫SAFEARRAY結構。其方法如下:⑴定義安全數組ColeSafeArraytheData;//或SAFEARRAYtheData,用SAFEARRAYBOUND來設定維中的元素的個數及維的下界。⑵設定維中元素的個數unsignedlongdims[2]={row,col};//row是行數,col為列數。⑶創建安全數組theData.Create(VT_VARIANT,2,dims);//創建一個二維的存放任意類型的安全數組,邊界值為dims。⑷定義安全數組元素索引longindex[2];//index[0]為行標,index[1]為列標。⑸數據的存放theData.putElement(index,ColeVariant(data));//把data放入安全數組中index單元內。2

數據綁定數據綁定是將數據源中的數據導入MapX的過程。為了增強GIS系統數據處理的靈活性,系統分開存儲涉及的圖形矢量數據及空間屬性數據。MapX通過數據集集合(Datasets)對象,可以將用戶的屬性數據與地圖的空間數據連接起來,屬性數據與幾何數據的關聯是通過數據綁定實現的。數據綁定的數據源可以是ODBC數據源、MapInfoTable文件、安全數組等。要綁字一個數據源,首先要指定所綁定的圖層,然后需要指定與圖層中地圖對象相匹配的關鍵字段。數據綁定主要有兩個作用:以地圖中的圖形對象來顯示數據及將屬性數據綁定到地圖中,并創建專題圖。數據綁定的實現是通過Datasets.Add方法實現的。⑴DataSets.add方法原型如下:Datasets.Add(Type,SourceData,[Name],[Geofield],[SecondaryGeofield],[BindLayer],[Fields],[Dynamic])//詳解參見相關資料⑵創建BindLayer當綁定時數據包含經度和緯度,且要在新的圖層相應的位置上創建這些點,需使用BindLayer對象。通過數據綁定,可以將BindLayer對象作為一個參數,使用Datasets.Add方法將自己的數據轉變為一個DataSet。CMapXBindLayerBindLayer;BindLayer.CreateDispatch(BindLayer.GetClsid());BindLayer.SetLayerName("Customers");BindLayer.SetLayerType(miBindLayerTypeXY);//類型BindLayer.SetRefColumn1("X");//經度BindLayer.SetRefColumn2("Y");//緯度⑶

用Fields集合在MapX中有Field對象和Fields對象。在數據綁定時,MapX對綁定的每個數據列均需要開銷,通過Field對象和Fields對象只綁定地圖中需要的數據。使用Datasets.Add的Fields參數建立要綁定到地圖上的字段。字段集合對象的Add方法的原型如下:[Field=]OBJECT.Add(DataSourceCol,[Name],[AggregateFunction],[Type])//DataSourceCol取值為數據源中字段名或索引值,在本文中數據源為安全數組,其取值為索引值(COleVariant(1l)或COleVariant(2l)),詳解參見相關資料。⑷

據綁定使用Datasets.Add可以將用戶數據綁定到地圖中。3專題地圖

主題地圖繪制是用于分析和可視化數據的一種強大方法。為數據提供圖形格式,以便可以在地圖上查看數據。制作專題地圖是根據某個特定專題對地圖進行“渲染”的過程。所謂的專題渲染,就是以某種圖案或顏色填充來表明地圖對象(點、線、區域)的某些信息(例如信號的同步狀態、人口等等),也就是說,這類渲染存在著主題,經過這樣渲染的地圖就是專題地圖。在小靈通信號的測試中,需要獲取分析信號的多組數據與狀態,本文以同步與漂移狀態為例。通過使用餅狀圖的主題地圖繪制,可以每行同時檢查多個變量,可以顯示每個統計組的統計數據,并查看其在每個餅狀圖中所占的比例。在創建專題圖的過程中,有幾個關鍵因素,包括專題圖變量的確定、屬性數據的獲取以及專題地圖的顯示與控制。⑴

定專題圖變量。在專題地圖上顯示的數據稱為專題變量。根據要執行的專題分析的類型,地圖可能會顯示一個或多個專題變量,餅狀圖可以同時顯示多個專題變量(Fields集合),本文中包括三個專題變量:同步、單時隙同步、雙時隙同步。⑵

屬性數據的獲取。數據來源于Field對象或Field集合,在Themes.Add方法中通過Fields參數傳遞。⑶

專題集(Themes)對象。MapX中使用Themes集合與Theme對象來實現對專題圖的支持,每一個數據集對象都擁有一個專題集對象。⑷

創建專題地圖,使用Themes.Add方法為數據集創建Theme對象。Add方法原型如下立刻注冊,免費享受三天的試用收看期,火爆,激情讓您免費欣賞三天

OBJECT.Add([Type],[Field],[Name],[ComputeTheme])//Type取miThemePieChart

通過處理ThemeProperties對象,更改專題的屬性,使用GetMultivarCategories()。⑹

設置自定義圖例。4實例本文以小靈通信號路測中漂移數據為實驗數據,以VC++6.0、MapX5.0為開發環境。在實施過程中利用芝測公司生產的接收儀器接收小靈通信號,分析提取出漂移與同步的數據。漂移分為:不漂移、漂移一、漂移二;同步分為:同步、單時隙異步、雙時隙異步。其數據結構如下:structPY{

doublelo;//經度

doublela;//緯度

union{struct{

longp1;//不漂移或同步

longp2;//漂移一或單時隙異步

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論