Oracle空間數(shù)據(jù)庫與VB集成開發(fā)GIS應(yīng)用軟件探討_第1頁
Oracle空間數(shù)據(jù)庫與VB集成開發(fā)GIS應(yīng)用軟件探討_第2頁
Oracle空間數(shù)據(jù)庫與VB集成開發(fā)GIS應(yīng)用軟件探討_第3頁
Oracle空間數(shù)據(jù)庫與VB集成開發(fā)GIS應(yīng)用軟件探討_第4頁
Oracle空間數(shù)據(jù)庫與VB集成開發(fā)GIS應(yīng)用軟件探討_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Oracle空間數(shù)據(jù)庫與VB集成開發(fā)GIS應(yīng)用軟件探討第28卷第5期2005年lO月測繪與空間地理信息GEOMATICS&SPATIALINFORMATIONTEcHNolDGYVo1.28,No.5Oct.,2005Oracle空間數(shù)據(jù)庫與VB集成開發(fā)GIS應(yīng)用軟件探討莫才健(西南科技大學(xué),四川綿陽621010)摘要:以基于空間數(shù)據(jù)庫的城鎮(zhèn)地籍管理信息系統(tǒng)為例,介紹了以Maplnfo與VB作為開發(fā)工具.采用Oracle空間數(shù)據(jù)庫與OLE自動化技術(shù),集成開發(fā)應(yīng)用GIS軟件的方法,分析了開發(fā)過程中遇到的幾個(gè)關(guān)鍵技術(shù)點(diǎn),并給出了相應(yīng)技術(shù)點(diǎn)的實(shí)現(xiàn)方法.關(guān)鍵詞:GIS;Maplnfo;空間數(shù)據(jù)

2、庫;OLE中圖分類號:P208文獻(xiàn)標(biāo)識碼:A文章編號:16725867(2005)05004102ProbingintotheDevelopmentofGISApplicationSoftwarebyIntegratingOracleSpatialDatabasewithVBMOCai-jian(SouthwestUniversityofScienceandFechnology,Mianyang621010,China)Abstract:TakingtheinformationsystemofUrbanCadastralManagementbasedonSpatiMDatabaseasanex

3、ample,thispaperintro-ducesthemethodfordevelopingGISapplicationsoftwarebyusingVBandMaplnfoasdevelopingtoolandadoptingtheOLEautomatictechnologyandOracleSpatialDatabase.Thenitanalysessometechnologicalkeypointsintheprocessofdevelopmentandpresentheircorrespondingsolutions.Keywords:GIS;Maplnfo;SpatialData

4、base;OLEO引言隨著具有工業(yè)化標(biāo)準(zhǔn)的商業(yè)關(guān)系數(shù)據(jù)庫管理系統(tǒng)的開展和成熟,充分利用RDBMS數(shù)據(jù)管理的功能,使空間數(shù)據(jù)與非空間數(shù)據(jù)一體化集成,能夠?qū)崿F(xiàn)真正的C/S和B/S結(jié)構(gòu),并通過中間件(空間引擎)將G1S平臺與空間數(shù)據(jù)庫有機(jī)結(jié)合,將面向空間數(shù)據(jù)管理及應(yīng)用所需的技術(shù)高度專業(yè)化的實(shí)現(xiàn)出來,這必將成為GIS開展趨勢.本文介紹了采用OLE自動化技術(shù)與空間數(shù)據(jù)庫進(jìn)行GIS開發(fā)過程中的幾個(gè)關(guān)鍵問題并給出實(shí)現(xiàn)方法.1系統(tǒng)結(jié)構(gòu)筆者在開發(fā)基于空間數(shù)據(jù)庫的城鎮(zhèn)地籍管理信息系統(tǒng)過程中,就是利用Oracle作為后臺數(shù)據(jù)庫支持,以Maplnfo與VB作為開發(fā)_T具,集成開發(fā)GIS應(yīng)用軟件.利用MaplnfoPr

5、ofessional的OLE自動化技術(shù),將Maplnfo和VB連接起來.再利用ODBC連接將Oracle空間數(shù)據(jù)庫中的地籍圖形資料和Maplnfo建立連接.由VB提供用戶控制和操作界面,在應(yīng)用程序中嵌入Maplnfo地籍圖形資料,將MaplnfoProfessional作為ActiveX(OLE)自動化服務(wù)器,為VB程序提供效勞,用來操縱和處理地籍圖形資料.在Maplnfo的支持下,系統(tǒng)可實(shí)現(xiàn)對空間圖形的查詢,空間分析和地圖瀏覽,利用地籍號可實(shí)現(xiàn)圖形數(shù)據(jù)和屬性數(shù)據(jù)的關(guān)聯(lián).圖1顯示了VB程序與ActiveX(OLE)和ORACLE空間數(shù)據(jù)庫三者之間在連接控制過程中的分工與地位,以及應(yīng)用表現(xiàn)層,應(yīng)

6、用效勞層和數(shù)據(jù)效勞層之間的三層構(gòu)架關(guān)系.圖1VB與ActiveX的結(jié)合方式和三層構(gòu)架Fig.1IntegrationofVBandActiveXandthethreelevelsstructure收稹日期:20050224作者簡介:莫才健(1978一),男,重慶萬州人,西南科技大學(xué)環(huán)資學(xué)院任教,主要從事國土資源管理的GIS軟件開發(fā)和應(yīng)用.42測繪與空間地理信息2005年2系統(tǒng)實(shí)現(xiàn)方法利用VB開發(fā)客戶端程序,在程序中通過構(gòu)造一些表示Mapbasic語句的字符串,利用OLE的方式將這些字符串傳給Maplnfo,Maplnfo會像處理Mapbasic語句一樣處理這些字符串.當(dāng)要查詢一個(gè)Mapbasi

7、c表達(dá)式的返回值時(shí),可以用Eval方法來發(fā)送表達(dá)式字符串給MapInfo.例如:/將圖層SE添加到NavigatorWinID所指代的窗口上Maplnfo.DoAddMapWindow+strfNavi-gatorWinID)+LayerSE/得到Maplnfo的窗口句柄mapHWnd=CLng(Maplnfo.Eval(“WindowInfo(“&mapWinID&,&WININFOWND&)在空間數(shù)據(jù)庫實(shí)現(xiàn)上,屬性數(shù)據(jù)和文檔數(shù)據(jù)就像其他關(guān)系型數(shù)據(jù)庫一樣,將數(shù)據(jù)存儲在Oracle表中,通過ADO或ODBC連接來訪問;對于圖形數(shù)據(jù),當(dāng)客戶端需要操作圖形對象時(shí),首

8、先向Maplnfo發(fā)送請求,MapInfo就會將請求通過與空間數(shù)據(jù)庫的連接傳遞到Oracle中,Oracle就會通過一系列的空間運(yùn)算返回一張臨時(shí)的Table表到客戶端,這時(shí)對圖形數(shù)據(jù)的操作就像對本地表操作一樣方便了.3關(guān)鍵技術(shù)點(diǎn)及解決方案3.1從VB中取得對MaplnfoProfessional的控制和效勞主要指在VB程序中通過特定的ActiveX控制接口,執(zhí)行相應(yīng)接口方法函數(shù),向MaplnfoProfessional發(fā)出控制命令,取得其效勞,到達(dá)操縱嵌入在VB程序界面上的Maplnfo圖形數(shù)據(jù)的目的.對于此技術(shù)點(diǎn)可以利用VB對ActiveX支持的函數(shù)啟動和控制MaplnfoProfessio

9、nal運(yùn)行.OLE自動化是Windows程序之間相互操作的技巧,VB完全支持OLE自動化操作,可以創(chuàng)立自動化客戶程序來操作其他程序,而Maplnfo那么可以作為OLE對象的效勞器,并提供了相應(yīng)的一套方法./例如PublicMaplnfoAsObject定義一個(gè)Maplnfo對象PublictheResponderAsObject接受Maplnfo中返回的對象PublicmapWinIDAsLong存儲Maplnfo窗口的句柄/VB通過建立一個(gè)OLE對象來創(chuàng)立客戶自動化程序.并且把返回結(jié)果賦給一個(gè)對象類型的變量,以后程序就是通過這個(gè)變量來訪問OLE對象SetMaplnfo=CreateObjec

10、t(“Maplnfo.Application)/確信所有的Maplnfo對話框都作為Mapwin的子級對話框Maplnfo.DoSetApplicationWindow&Mapwin.hwnd;/創(chuàng)立一個(gè)新類來存儲由mapinfo內(nèi)部返回到VB中的值SettheResponder=NewMIResponderMapInfo.SetCallbacktheResponder通過以上三步就根本建立了VB和MaplnfoProfes-sional之間的通信,后面的一些功能需要用戶根據(jù)自己的實(shí)際需要建立自己的用戶菜單,工具條,工具按鈕等.3.2與空間數(shù)據(jù)庫的連接及將表數(shù)據(jù)上傳到空間數(shù)據(jù)庫Mapl

11、nfo從Professional5.5開始,才支持向Oracle8iSpatial中存取空間數(shù)據(jù).在Professional5.5以前,Maplnfo只支持通過ODBC向Oracle數(shù)據(jù)庫中存取MaplnfoTable表的屬性數(shù)據(jù).Oracle也只從Oracle8.1.5開始,才向MapInfo提供了OCI底層接口,并通過OCI接口來實(shí)現(xiàn)與Maplnfo之間的空間數(shù)據(jù)存取.用戶需要通過Easyloader來實(shí)現(xiàn)Maplnfo地圖數(shù)據(jù)向Oracle數(shù)據(jù)庫中的第一次上載.Maplnfo中的原有的Table表將對應(yīng)Oracle數(shù)據(jù)庫中的一張空間表;Maplnfo表中的每一個(gè)對象將對應(yīng)Oracle表中

12、的一條記錄,其中記錄的前半局部將存儲原有對象的屬性數(shù)據(jù),將圖形數(shù)據(jù)上傳到Oracle時(shí)會自動創(chuàng)立3個(gè)字段來存儲圖形對象,分別是MISTYLE(對象的樣式),MIPRIN(對象的惟一索引),GEOLOC(圖形對象),Table表的元數(shù)據(jù)(坐標(biāo)系,坐標(biāo)范圍,屬主等信息)存儲在Map-InfoMapCATALOG中./Maplnfo與Oracle之間的2種連接方式?Oracle8iSpatial?hdbc=ServerConnect(“ORAINET,UID=scott;PWD=tiger;SRVR=Orasrv,?ODBChdbc=Server_Connect(“QELIB,DSN=O8idsn;

13、SRV=Orasrv;USR=scott;PWD=tiger)以后對表的修改,只需要通過Maplnfo提供的刷新表功能,即可將對地圖數(shù)據(jù)的新編輯保存到Oralce數(shù)據(jù)庫中./Maplnfo刷新空間數(shù)據(jù)庫中的表Maplnfo.DoServerRefresh“&Tablename&3.3向OracleSpatial中上載文本對象如果直接利用Easyloader向OracleSpatial中上傳Maplnfo表,就會喪失文本對象,為了解決這個(gè)問題,在向數(shù)據(jù)庫中上傳表之前就需要先在表中增加幾個(gè)屬性字段,將文本對象的信息(如:文本對象的內(nèi)容,文本樣式等)當(dāng)作對象的屬性值保存到表中,并連同

14、表的其他屬性一起上載到Oracle數(shù)據(jù)庫中.當(dāng)用戶通過程序?qū)⒃摫韽腛racleSpatial中下載到Maplnfo中后,再根據(jù)保存在表中的文本對象的信息,利用程序?yàn)槊總€(gè)記錄再重新創(chuàng)立一具體文本對象./將文本對象的屬性信息寫入到對應(yīng)的字段中updatenewTXTsettxt=strTXT.fontname=fnt_name,fontstyle=fntstyle,fontpointsize=fntpointsize,fontforec-olor=fnt_forecolor,fontbackcolo:fntbackcolor,minx=Lminx,minyf_miny,maxx=f_miny,ma

15、xyf_maxy,fangle=f_angle/根據(jù)字段中的信息生成新的注記CreateTextintoWindowFrontwindow()st(fminx,fminy)(fmaxx,fmaxy)FontMakeFont(fntname,fntstyle,Maximum(fntpointsize,1),fntforecolor,fntbackcolor)Anglef_anglef下轉(zhuǎn)第54頁)54測繪與空間地理信息2005年(上接第42頁)3.4加快空間數(shù)據(jù)的訪問速度由圖2可知.影響空間數(shù)據(jù)庫的訪問速度的因素分為硬件,源數(shù)據(jù)和數(shù)據(jù)庫的管理3局部,硬件局部需要通過改善效勞器的性能和網(wǎng)絡(luò)的帶寬來

16、提高矢量數(shù)據(jù)的傳輸速度.在這里主要談一下解決源數(shù)據(jù)的問題和數(shù)據(jù)庫的管理問題.影響源數(shù)據(jù)的主要因素包括圖元質(zhì)量,圖元類型,圖元樣式,圖元壓縮,復(fù)合圖元和文本對象.因此從源數(shù)據(jù)的角度來提高空間數(shù)據(jù)的訪問速度也必須要從這幾個(gè)方面著手,將數(shù)據(jù)上傳到數(shù)據(jù)庫之前要節(jié)點(diǎn)疊加,縫隙覆蓋,區(qū)域自交;單一空間表的MDSYS.SDOGEOMETRY所存儲的圖元類盡可能一致;利用節(jié)點(diǎn)抽稀技術(shù)壓縮不必要的節(jié)點(diǎn)信息;減少復(fù)合圖元的數(shù)量等方式.在數(shù)據(jù)導(dǎo)入時(shí)優(yōu)化構(gòu)件參數(shù),將數(shù)據(jù)進(jìn)行分散存儲,使得數(shù)據(jù)庫能夠防止每次從數(shù)據(jù)庫中讀人多行數(shù)據(jù)時(shí),對LOB數(shù)據(jù)必須執(zhí)行掃描操作.根據(jù)索引的建立和性能調(diào)優(yōu),索引占用的存儲空間量,空間數(shù)據(jù)的

17、維護(hù)頻繁度等一些參圖2影響空間數(shù)據(jù)運(yùn)算訪問速度的因素Fig.2Thefactorsinfluencedthecalculationandaccessingspeedofspatialdata數(shù)來選擇R_tree或者Q_tree的空間索引方式.根據(jù)實(shí)際需要對回滾段,SORTAREASIZE,臨時(shí)表空間等系統(tǒng)參數(shù)進(jìn)行優(yōu)化.選擇適宜的空間算子和合理的連接方式來提高空間數(shù)據(jù)的訪問速度.4結(jié)束語利用OLE自動化技術(shù),將MapInfo,VB和Oracle空間數(shù)據(jù)庫連接起來,構(gòu)建三層結(jié)構(gòu),集成開發(fā)GIS應(yīng)用軟件,既發(fā)揮了VB軟件開發(fā)平臺擁有豐富的控件和第三方的支持,完全支持Activex技術(shù),強(qiáng)大的數(shù)據(jù)庫開發(fā)等優(yōu)勢,又發(fā)揮了MapInfoProfessional地理信息系統(tǒng)開發(fā)平臺具有的對地理空間數(shù)據(jù)的查詢,分析,輸出等方面具有的強(qiáng)大功能和空間數(shù)據(jù)庫在存儲,管理等方面的優(yōu)點(diǎn).將三者結(jié)合,既能大大提高程序開發(fā)效率,又能使所開發(fā)的應(yīng)用程序界面友好,功能完善,是今后開發(fā)應(yīng)用型GIS軟件的主要方法

溫馨提示

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

最新文檔

評論

0/150

提交評論