? ? 引擎一詞是英文單詞engine的音譯,通常指發(fā)動機(jī),就是動力輸出設(shè)備。諸如汽車、輪船、飛機(jī)的動力提供核心設(shè)備就是引擎。IT領(lǐng)域中,常聽說的有搜索引擎、圖形引擎等。軟件中引擎就是提供一套特定底層功能的實現(xiàn)和接口,其往往基礎(chǔ)而強(qiáng)大,充分滿足上層的應(yīng)用需要。
???(1)引擎簡介
????地圖引擎,從應(yīng)用層層來看,就是一套提供了驅(qū)動和管理地理數(shù)據(jù),實現(xiàn)渲染、查詢等功能的一套函數(shù)庫,所有的應(yīng)用層軟件只需要調(diào)用地圖引擎提供的功能接口就能較容易的完成其功能。導(dǎo)航引擎與地圖引擎的概念一致,導(dǎo)航引擎驅(qū)動和管理是拓?fù)鋽?shù)據(jù),提供的是路線和導(dǎo)引信息。
????簡單的說,地圖軟件是架構(gòu)在地圖引擎之上的應(yīng)用。地圖軟件可以沒有獨立的地圖引擎,而在軟件中實現(xiàn)地圖引擎的功能,但獨立的地圖引擎可以使軟件的架構(gòu)更清晰,擴(kuò)展性和可維護(hù)性都有極大的提升。尤其對于多平臺的地圖軟件,獨立的地圖引擎必不可少,否則維護(hù)成本倍增。
????地圖引擎通常會封裝和保護(hù)地理數(shù)據(jù)的組織管理機(jī)制,對上層提供地圖移動、放縮、渲染、空間查詢等功能。
????導(dǎo)航引擎通常會封裝和保護(hù)幾何數(shù)據(jù)的拓?fù)潢P(guān)系和導(dǎo)引數(shù)據(jù),對上層提供路線分析、拓?fù)浞治觥⒁龑?dǎo)信息的功能。?
????在GIS的架構(gòu)的設(shè)計中,除了地圖引擎和導(dǎo)航引擎外,有的設(shè)計者會把圖形渲染單獨分出來,封裝成獨立的渲染引擎,如2D渲染引擎、3D渲染引擎等。這樣做沒有任何問題,只要能和地圖引擎很好的銜接,這樣的設(shè)計是更好的。
(2)引擎與數(shù)據(jù)
????地圖引擎和導(dǎo)航引擎都屬于GIS引擎的一部分,下文中統(tǒng)稱GIS引擎。
????GIS引擎就像汽車的發(fā)動機(jī),數(shù)據(jù)就像油料,只是這個發(fā)動機(jī)與油料是唯一對應(yīng)的。通常嵌入式上GIS引擎對其數(shù)據(jù)要求都是專有的,目的是提高引擎運行效率。各公司或各設(shè)計師的引擎設(shè)計會于引擎所需數(shù)據(jù)格式設(shè)計緊密銜接,其實通常都是同一團(tuán)隊在設(shè)計。這份數(shù)據(jù)格式設(shè)計是GIS引擎的核心技術(shù)之一,數(shù)據(jù)格式的優(yōu)劣很大程度上決定到了引擎的效率,所以基本上沒有公司或設(shè)計師會公開他們的設(shè)計方案,因為這是核心技術(shù)機(jī)密!
????那么我們能不能就拿MapInfo的MIF或ArcInfo的E00數(shù)據(jù)做引擎的數(shù)據(jù)源?答案是肯定的,能!但是你將很難保障引擎的運行效率。通常一些完善的GIS引擎都會提供一些外圍軟件,其中就包括各個大廠交換格式導(dǎo)成自有GIS引擎格式數(shù)據(jù)的工具,這也是判定一個GIS引擎完整度的一個重要標(biāo)志。
????所以,你要想在嵌入式設(shè)備上開發(fā)GIS引擎,就要設(shè)計自有的GIS數(shù)據(jù)格式。記住一點,幾何數(shù)據(jù)不要線性存儲,線性存儲的訪問效率低下。高效訪問的數(shù)據(jù)存儲格式設(shè)計要點,會在后續(xù)的文章中進(jìn)行介紹。
原文鏈接:http://blog.sina.com.cn/s/blog_ae26c0810101740j.html