MAPEASY數(shù)字地圖的優(yōu)化
- 期刊名字:電腦知識(shí)與技術(shù)
- 文件大?。?72kb
- 論文作者:張?chǎng)╇?,劉蓮花,肖?/li>
- 作者單位:湘南學(xué)院,華南師范大學(xué)
- 更新時(shí)間:2020-09-30
- 下載次數(shù):次
E-mail: xej@cc.net.cnISSN 100- 3044Computer Knowledge and Technoloy電墮知識(shí)與技術(shù)htp:/:/w/w dnzs.net.cnVol.6.No.13, May 2010, p.3426-3428Tel:+86 -551-5690963 5690964MAPEASY數(shù)字地圖的優(yōu)化張?chǎng)╈F,劉蓮花了,肖娟'(1.湘南學(xué)院計(jì)算機(jī)系,湖南郴州430002.華南師范大學(xué)增城學(xué)院計(jì)算機(jī)系,廣東廣州511363)摘要:介紹了基于預(yù)生成的數(shù)字地圖技術(shù)及MapEasy開(kāi)源項(xiàng)目,針對(duì)MapEasy只支持正方形地圖和內(nèi)存泄露的問(wèn)題,對(duì)MapEay進(jìn)行了相應(yīng)優(yōu)化,提供了對(duì)矩形地圍的支持,降低了內(nèi)存使用量。并用一個(gè)簡(jiǎn)單的地圍實(shí)例說(shuō)明了使用MapEasy制作教字地圍的方法。中團(tuán)分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009- -3044(2010)13- -3426 -03Optimization of MAPEASY Digital MapZHANG Wen-Fen', LIU Lian-Hua2, XIAO Juan'(1.Faculty of Computer, Xiangnan University, Chenzhou 423000, Chin; 2.Faculty of Computer, Zengcheng College of SCNU,Guangzhou 511363, China)square map model and has memory leak problem. To counter these problems, this paper carried on the corresponding optimizaion to pro-vide rectangular map support and reduce memory usage. Finally, a simple map example is given to ilustrate the applications of MapEasydigital map.Key words: WebGIS; digial map; pre- generation tchnology; MapEasyWebGIS是在Intermet或Intranet網(wǎng)絡(luò)環(huán)境下的一種兼具存儲(chǔ)、處理、分析.顯示與應(yīng)用地理信息的計(jì)算機(jī)系統(tǒng)"。WebGIS 的應(yīng)用日益廣泛,除了常見(jiàn)的網(wǎng)上電子地圖查詢之外,還因其可以直觀地表示與地理位置相關(guān)的各種數(shù)據(jù)而應(yīng)用于通信、水利、環(huán)境等專業(yè)軟件中。目前,實(shí)現(xiàn)WebGIS地圖發(fā)布主要有2類技術(shù):一類是以ArcIMS為代表的矢量地圖動(dòng)態(tài)生成技術(shù);另一類是近年來(lái)在公共地圖服務(wù)領(lǐng)域廣泛應(yīng)用的基f瓦片方式的地圖預(yù)生成技術(shù).如Google Map, 5lditu, Mapbar等叫。在Google Maps推出之前,網(wǎng)絡(luò)數(shù)字地圖主要使用傳統(tǒng)的WebGIS技術(shù),而GoogleMaps則采用地圖預(yù)生成(又稱地圖切片)技術(shù)及Ajax客戶端編程技術(shù)實(shí)現(xiàn),這種實(shí)現(xiàn)方案響應(yīng)速度快、用戶體驗(yàn)好服務(wù)器負(fù)簡(jiǎn)輕,并且不依賴專業(yè)GIS服務(wù)平臺(tái)。目前,絕大多數(shù)網(wǎng)絡(luò)數(shù)字地圖都采用了類似技術(shù)方案?;诖祟惣夹g(shù)的數(shù)字地圖開(kāi)源項(xiàng)目也應(yīng)運(yùn)而生,比較薯名的有MapEasy".OpenLayers等。本文將針對(duì)MapEasy的不足對(duì)其進(jìn)行了一些優(yōu)化,將地圖形狀從正方形擴(kuò)展為矩形并且減少了內(nèi)存使用量,最后用一個(gè)簡(jiǎn)單的地圖實(shí)例說(shuō)明了使用MapEasy制作數(shù)字地圖的方法。1關(guān)鍵技術(shù)與MapEasy簡(jiǎn)介網(wǎng)絡(luò)數(shù)字地圖系統(tǒng)--般采用B/S結(jié)構(gòu).即把瀏覽器作為客戶端程序。傳統(tǒng)的WebCIS方式是實(shí)時(shí)生成地圖的,即客戶端每產(chǎn)生- - 次地圖請(qǐng)求,服務(wù)器都重新生成相應(yīng)的地圖圖片發(fā)送到客戶端。這意味著每次拖動(dòng)和縮放地圖都需要服務(wù)器端的GIS軟件實(shí)時(shí)生成圖片。這種方式的響應(yīng)速度慢、服務(wù)器負(fù)載重。地圖預(yù)生成技術(shù)則把預(yù)先生成的地圖切割成許多大小相同的小圖片存放在服務(wù)器硬盤目錄下.地圖以鏈接圖片的方式在瀏覽器端拼接和顯示,這些小圖片通常被稱為“瓦片"。每次拖動(dòng)和縮故地圖時(shí),由客戶端的JavaSeript腳本來(lái)計(jì)算所需顯示的瓦片及其顯示位置,并鏈接服務(wù)器目錄下存放的相應(yīng)瓦片,最終在瀏覽器窗口中顯示出地圖。地圖的每個(gè)縮放級(jí)別對(duì)應(yīng)了不同比例尺的地圖.放大的級(jí)別越高地圖越清晰組成地圖的瓦片數(shù)目就越多。例如Coogle地圖,現(xiàn)共有20個(gè)縮放繳別,每個(gè)級(jí)別的完整地圖都是由此級(jí)別的瓦片拼合而成,相鄰級(jí)別的地圖大小相差4倍,即每張較低級(jí)別的瓦片對(duì)應(yīng)4張較高級(jí)別的瓦片。若第1級(jí)地圖的瓦片數(shù)為1,則后續(xù)級(jí)別的瓦片數(shù)分別為4.16.64... ,這種瓦片組織形式又被稱為瓦片金字塔模型。Ajax是Asynchronous Javascript and XML的縮寫,是幾項(xiàng)技術(shù)以新的方式組合而成。主要包括JavaSeript XML、DOM等。JavaScript是一種基于對(duì)象和事件驅(qū)動(dòng)的Web瀏覽器端腳本語(yǔ)言,可以用它來(lái)響應(yīng)對(duì)Web頁(yè)面的操作并通過(guò)DOM操縱網(wǎng)頁(yè)元素、通過(guò)XMLHtpRequest對(duì)象讀取服務(wù)器數(shù)據(jù)。AJAX讓開(kāi)發(fā)者在瀏覽器端更新網(wǎng)頁(yè)內(nèi)容而不必刷新頁(yè)面,使基于瀏覽器的應(yīng)用程序響應(yīng)速度更快、更具交互性。中國(guó)煤化工收稿日期:2010-03-07THCNMHG基金項(xiàng)目:湖南省教育廳科研基金資助項(xiàng)目(09C921)作者簡(jiǎn)介:張?chǎng)╈F(1976-),女,湖南澧縣人,講師,碩士研究生,主要研究方向?yàn)橹悄芩惴?劉蓮花(1982-),女,江西贛州人,助教,碩士研究生,主要研究方向?yàn)槔螄裉幚?肖娟(1982- ),女,湖南永興人,講師,學(xué)士,主要研究方向?yàn)榛焱问健?426 .軟件設(shè)計(jì)開(kāi)發(fā).......本欄目責(zé)任編翼:謝媛媛第6卷第13期(2010年5月)Computer Knowedge and Technlogy電腦知識(shí)與技術(shù)MapEasy是基于瓦片預(yù)生成技術(shù)的開(kāi)源項(xiàng)目,實(shí)現(xiàn)了基本的數(shù)字地圖功能和簡(jiǎn)單地物標(biāo)注等,是一個(gè)輕量級(jí)的客戶端JS庫(kù)。MapEasy只支持正方形地圖模型,沒(méi)有提供對(duì)矩形地圖的支持,另外MapEasy占用內(nèi)存較多,并且隨著對(duì)地圖拖放等操作的增加,內(nèi)存使用量會(huì)快速上升,本文將針對(duì)這些不足進(jìn)行改進(jìn)。2 MapEasy的優(yōu)化本文使用的MapEasy版本為mapapi0.4alpha,可在網(wǎng)絡(luò)上下載其壓縮包,解壓后的文件夾作為網(wǎng)站根目錄。程序均在IE6.0 中測(cè)試通過(guò)。2.1對(duì)矩形地圖的支持在MapEasy中.常量MapModelLirsiZoomTileNum為地圖模型第1個(gè)縮放等級(jí)的瓦片敷,其默認(rèn)值為1,可以在定制地圖時(shí)根據(jù)需要設(shè)置。其它等級(jí)地圖的總瓦片數(shù)則用縮放繳別、相鄰二級(jí)之間的縮放比例及MapMoeLisfstooTilNiuemn計(jì)算得出。變量bor-derTilesNum為地圖某-縮放級(jí)別的邊緣瓦片數(shù),由此級(jí)地圖的總瓦片數(shù)開(kāi)平方根得出,即borderTilesNum既是組成此級(jí)地圖的瓦片的行數(shù),也是瓦片的列數(shù)。這就決定了MapEasy的地圖模型只支持正方形地圖(當(dāng)瓦片為正方形時(shí))。為支持矩形 地圖,需要增加2個(gè)常獻(xiàn),分別表示地圖模型第1個(gè)縮放等級(jí)每行和每列的瓦片數(shù).如MapMoelsrsloomBordereTileNumX和MapMedeil.rstZoomBorderTileNumY。還需增加2個(gè)變量,分別表示地圖其它縮放等級(jí)每行和每列的瓦片數(shù),如border-TlesNumX和borderTilesNumY。具體的修改步驟如下:1)修改MapModeljs文件①增加2個(gè)地圖模型常量:MapModel.frslZoomBorderTileNumX= 1;MapModel.irstZoomBorderfileNumY = 1;②將Zoom函數(shù)中定義邊緣片數(shù)this brderTileNuem的1行用以下2行替換:thisborderTilesNumX;thisborderTilesNumY;③將Zoom函數(shù)中的"“his brderTIlesNum = MthsgqtstilesNu);"用以下2行替換:this.borderTilesNumX =Math.pow(MapModel.scalePara, (this.Jevel - 1)*MapModel.irsZoomBorderTileNumX;this. borderTilesNumY =Math.pow(MapModel.scalePara, (hislevel - 1)*MapModel.fistoomBorderTileNumY;④將Zoom函數(shù)中所有的borderTilesNum按情況分別替換為borderTilesNumX 或者borderTilesNumY。⑤將Zoom函數(shù)中的函數(shù)getBorderTilesNum用以下2個(gè)函數(shù)代替:,this.getBorderTilesNumX = function0 {retum thisborderTilesNumX;this.getBorderTilesNumY = unction0 {retum this,borderTilesNumY;2)修改文件apEvent.je.DragActionjs和ExrToolsWidetjs,將其中的函數(shù)名getBorderTilesNum 替換為getBorderTlesNumX或者getBorderTilsNumY。2.2對(duì)內(nèi)存使用f的優(yōu)化在MapEasy數(shù)字地圖中,隨著對(duì)地圖拖放等操作的增加,內(nèi)存使用量會(huì)快速上升.這是因?yàn)槟承┎辉偈褂玫淖兞炕驅(qū)ο笏嫉膬?nèi)存沒(méi)有被釋放。這種現(xiàn)象大多是由循環(huán)引用引起的.循環(huán)引用是指IE瀏覽器的COM組件產(chǎn)生的對(duì)象實(shí)例和網(wǎng)頁(yè)腳本引擎產(chǎn)生的對(duì)象實(shí)例相互引用。IE使用引用計(jì)數(shù)的方法來(lái)釋放內(nèi)存,只有當(dāng)一個(gè)變量或?qū)ο蟮囊糜?jì)數(shù)為零時(shí),其內(nèi)存才能被釋放.而相互引用會(huì)使得雙方的引用計(jì)數(shù)都不為零從而導(dǎo)致其內(nèi)存不能釋放。一般的解決方法是:對(duì)其中一個(gè)對(duì)象直接賦null值以破壞引用鏈。在拖放MapEasy地圖時(shí),腳本程序主要的工作是對(duì)地圖圖片的重新拼裝和地圖上各標(biāo)記的重新顯示,因此重點(diǎn)對(duì)這2部分代碼進(jìn)行了修改。具體修改步驟為:1)修改MapPaneWidgetjis文件,在paintMap函數(shù)的末尾增加如下代碼:oldTileNodes = null;tile =null;tilelmage =null;setTimout(CollectGarbage, 1);2)修改ExToolsWidgtjs文件.在適當(dāng)?shù)奈恢迷黾尤缦麓a:icon =nll;mapDiv =null;中國(guó)煤化工markerDiv =nul;markerShadowDiv =nul;MHCNMHG3地圖實(shí)例本節(jié)將以一個(gè)簡(jiǎn)單的電子地圖實(shí)例來(lái)說(shuō)明MapEasy的應(yīng)用方法。實(shí)現(xiàn)步驟如下:本欄目責(zé)任編輯:邀媛媛........軟件設(shè)計(jì)開(kāi)發(fā)..3427.Computer Knowledge and Technology電腦知識(shí)與技術(shù)第6卷第13期(2010年5月)1)準(zhǔn)備圖片素材一組2級(jí)縮放的地圖瓦片,第1級(jí)2張,第2級(jí)8張,共10張。瓦片大小為256x256像素。2)瓦片的存放與編號(hào)在站點(diǎn)根目錄下新建mapimages文件夾,用來(lái)存放瓦片圖像文件。在此文件夾下再新建zoom_ 1、zoom 2二個(gè)文件夾。將第1級(jí)的瓦片復(fù)制到zoom, 1中,并對(duì)瓦片編號(hào),用此編號(hào)作為瓦片的文件名。編號(hào)表示了瓦片在拼成此級(jí)地圖全圖時(shí)的擺放位置,格式為x y,其中x表示瓦片位于本級(jí)地圖全圖中第幾行,y則表示列數(shù),均從0開(kāi)始編號(hào)。3)將網(wǎng)站根目錄下的網(wǎng)頁(yè)demol.anoy,html作為本例的首頁(yè).需要舔加或修改的代碼有:
-
C4烯烴制丙烯催化劑 2020-09-30
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-09-30
-
生物質(zhì)能的應(yīng)用工程 2020-09-30
-
我國(guó)甲醇工業(yè)現(xiàn)狀 2020-09-30
-
石油化工設(shè)備腐蝕與防護(hù)參考書(shū)十本免費(fèi)下載,絕版珍藏 2020-09-30
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡(jiǎn)介 2020-09-30
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-09-30
-
甲醇制芳烴研究進(jìn)展 2020-09-30
-
精甲醇及MTO級(jí)甲醇精餾工藝技術(shù)進(jìn)展 2020-09-30



