基于嵌入式的gis系統(tǒng)研究畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  畢 業(yè) 設(shè) 計(jì)(論 文)</p><p>  設(shè)計(jì)(論文)題目: 基于嵌入式的GIS系統(tǒng)研究 _</p><p>  姓 名 </p><p>  學(xué) 號(hào) </p><p>  院 系 信息工程學(xué)院 </p><p>  專

2、 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  年 級(jí) </p><p>  指導(dǎo)教師 </p><p>  年 月 日</p><p><b>  目   錄</b></p><p><b>  摘   要5</b></

3、p><p>  一、GIS系統(tǒng)概要6</p><p> ?。ㄒ唬?、GIS簡(jiǎn)介6</p><p> ?。ǘ?、OpenGIS規(guī)范6</p><p> ?。ㄈ?、空間數(shù)據(jù)類型(OpenGIS WKB and WKT)6</p><p>  二、GIS數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)7</p><p>  (一)

4、、PostgreSQL數(shù)據(jù)庫(kù)管理系統(tǒng)7</p><p><b>  1.系統(tǒng)簡(jiǎn)介7</b></p><p>  2.支持幾何數(shù)據(jù)類型7</p><p><b>  3.過(guò)程語(yǔ)言8</b></p><p> ?。ǘ?、PostGIS系統(tǒng)8</p><p><

5、;b>  1.簡(jiǎn)介8</b></p><p>  2.空間數(shù)據(jù)類型(GIS Objects)的實(shí)現(xiàn)9</p><p>  3.數(shù)據(jù)定義10</p><p>  4.數(shù)據(jù)查詢10</p><p>  5.數(shù)據(jù)轉(zhuǎn)儲(chǔ)(Shapefile文件的使用)11</p><p>  6.數(shù)據(jù)庫(kù)優(yōu)

6、化(GiST)11</p><p> ?。ㄈ?shù)據(jù)庫(kù)結(jié)構(gòu)及實(shí)現(xiàn)13</p><p> ?。ㄋ模?、最短路徑算法流程14</p><p>  三、嵌入式系統(tǒng)15</p><p> ?。ㄒ唬?、嵌入式系統(tǒng)硬件結(jié)構(gòu)15</p><p>  1.Samsung S3C44B0X微處理器體系15</p>

7、<p>  2.JX44B0-1B硬件配置15</p><p> ?。ǘClinux操作系統(tǒng)15</p><p><b>  1.簡(jiǎn)介15</b></p><p>  2.uClinux的內(nèi)核加載方式16</p><p>  3.uClinux的內(nèi)存管理16</p>&l

8、t;p>  4.uClinux的根(root)文件系統(tǒng)17</p><p>  5.uClinux的應(yīng)用程序庫(kù)17</p><p>  6.可執(zhí)行文件格式17</p><p>  (三)、MiniGUI嵌入式圖形界面17</p><p><b>  1.簡(jiǎn)介17</b></p>&l

9、t;p>  2.基于 MiniGUI 的嵌入式系統(tǒng)軟件結(jié)構(gòu)18</p><p> ?。ㄋ模⑶度胧较到y(tǒng)結(jié)構(gòu)18</p><p>  1.進(jìn)程調(diào)度(SCHED)18</p><p>  2.內(nèi)存管理(MM)19</p><p>  3.虛擬文件系統(tǒng)(VirtualFileSystem,VFS)19</p>

10、<p>  4.網(wǎng)絡(luò)接口(NET)19</p><p>  5.進(jìn)程間通訊(IPC)。19</p><p>  6.依賴關(guān)系19</p><p>  四、嵌入式地理信息系統(tǒng)EmbedGis20</p><p>  (一)、嵌入式地理信息系統(tǒng)簡(jiǎn)介20</p><p> ?。ǘ?、EmbedGis

11、系統(tǒng)組成21</p><p> ?。ㄈmbedGis系統(tǒng)特點(diǎn)及不足21</p><p><b>  謝   辭22</b></p><p><b>  參考文獻(xiàn)23</b></p><p><b>  注   釋24</b></p><p&g

12、t;<b>  附   錄25</b></p><p>  (一)、開(kāi)發(fā)環(huán)境25</p><p>  (二)、XDMCP26</p><p>  (三)、uClinux編譯過(guò)程26</p><p> ?。ㄋ模?、MiniGUI編譯注意事項(xiàng)27</p><p><b>  摘   

13、要</b></p><p>  本文探討了后PC時(shí)代基于嵌入式Linux的嵌入式GIS研究的必要性和可行性,對(duì)比現(xiàn)有嵌入式GIS的特點(diǎn),簡(jiǎn)述了嵌入式Linux操作系統(tǒng)的優(yōu)點(diǎn)和特色。扼要介紹了基于Linux的嵌入式GIS研究的硬件平臺(tái),最后給出基于Linux的嵌入式GIS研究的模型。</p><p><b>  關(guān) 鍵 詞 </b></p>&

14、lt;p>  后PC時(shí)代,嵌入式Linux;嵌入式GIS</p><p><b>  ABSTRACT</b></p><p>  The necessity and feasibility of the study of Embedded·-Linux based embedded GIS in post-PC age is discussed in

15、 this paper.The different features of several mainstream domestic and foreign Em- bedded-GIS are compared.And the advantage and characteristic of Embedded-Linux operation system is also introduced.The hardware platform

16、 for Linux-based embedded-GIS is then outlined.Finally a model of Linux-Based Embedded-GIS is described.</p><p><b>  KEYWORDS:</b></p><p>  post—PC age;Embedded—Linux;embedded GIS;&l

17、t;/p><p><b>  一、GIS系統(tǒng)概要</b></p><p><b>  (一)、GIS簡(jiǎn)介</b></p><p>  地理信息系統(tǒng)(Geographic Information System,即GIS)是一門集計(jì)算機(jī)科學(xué)、信息學(xué)、地理學(xué)等多門科學(xué)為一體的新興學(xué)科,它是在計(jì)算機(jī)軟件和硬件支持下,運(yùn)用系統(tǒng)工程和信息

18、科學(xué)的理論,科學(xué)管理和綜合分析具有空間內(nèi)涵的地理信息數(shù)據(jù),以提供對(duì)規(guī)劃、管理、決策和研究所需信息的空間信息系統(tǒng)。</p><p> ?。ǘpenGIS規(guī)范</p><p>  開(kāi)放GIS協(xié)會(huì)(Open GIS Consortium)----一個(gè)公益的行業(yè)協(xié)會(huì),致力于促進(jìn)地理數(shù)據(jù)處理方法的新技術(shù)和商業(yè)方法的互操作,它成立于1994年,當(dāng)時(shí)已經(jīng)廣泛認(rèn)識(shí)到了無(wú)交互性的問(wèn)題以及它對(duì)行業(yè)、政府

19、和學(xué)術(shù)界的許多負(fù)面影響。OGC的成員都有一個(gè)有關(guān)國(guó)際和全球信息基礎(chǔ)設(shè)施的樂(lè)觀設(shè)想,地理數(shù)據(jù)和地理處理數(shù)據(jù)源能自由訪問(wèn),完全與最新的分布式計(jì)算機(jī)技術(shù)集成,每個(gè)人都可以自由訪問(wèn),“可用的地理數(shù)據(jù)”----一個(gè)目前還沒(méi)有進(jìn)入地理數(shù)據(jù)處理方法領(lǐng)域內(nèi),但是一個(gè)涉及范圍很廣的活動(dòng),開(kāi)拓了新的市場(chǎng)、帶來(lái)了新的商機(jī)、給社會(huì)帶來(lái)新的利益。地理數(shù)據(jù)處理軟件廠家、數(shù)據(jù)庫(kù)軟件廠家、可視化軟件廠家、系統(tǒng)集成者、計(jì)算機(jī)廠家、通訊公司、大學(xué)、信息提供者和正版軟件經(jīng)銷

20、商都加入了協(xié)會(huì)共同制定軟件規(guī)范、進(jìn)行新的商業(yè)策劃來(lái)幫助解決這些問(wèn)題,實(shí)現(xiàn)潛在功能。</p><p>  OGC的軟件規(guī)范就是OpenGIS規(guī)范,它是一個(gè)通用的分布式訪問(wèn)地理數(shù)據(jù)和地理處理數(shù)據(jù)源的軟件結(jié)構(gòu)規(guī)范。開(kāi)放GIS規(guī)范為全世界的軟件開(kāi)發(fā)者提供了一個(gè)詳細(xì)的通用的界面模板,這個(gè)模板可以與由其它軟件開(kāi)發(fā)者開(kāi)發(fā)的開(kāi)放GIS軟件進(jìn)行交互操作。</p><p>  OpenGIS就是網(wǎng)絡(luò)環(huán)境中對(duì)不

21、同種類地理數(shù)據(jù)和地理處理方法的透明訪問(wèn)。OpenGIS的目的是提供一套具有開(kāi)放界面規(guī)范的通用組件,開(kāi)發(fā)者根據(jù)這些規(guī)范開(kāi)發(fā)出交互式組件,這些組件可以實(shí)現(xiàn)不同種類地理數(shù)據(jù)和地理處理方法間的透明訪問(wèn)。</p><p>  OpenGIS的實(shí)現(xiàn)模型是一種客戶/服務(wù)器模型,也就是說(shuō),客戶端程序或客戶端對(duì)象是通過(guò)接口與“服務(wù)器端”進(jìn)行通訊的。服務(wù)器端是可對(duì)客戶端的請(qǐng)求進(jìn)行響應(yīng)的程序和對(duì)象,為客戶端返回響應(yīng)信息或向客戶端提供一

22、種進(jìn)程函數(shù)。不是所有開(kāi)放GIS執(zhí)行工具都是傳統(tǒng)意義上在客戶端進(jìn)程和服務(wù)器端進(jìn)程間建立一對(duì)一的客戶服務(wù)器,有的服務(wù)器可能提供多種不同的服務(wù),有的客戶可以通過(guò)網(wǎng)絡(luò)訪問(wèn)多個(gè)服務(wù)器。根據(jù)這種情況,用 “服務(wù)器端口”這個(gè)術(shù)語(yǔ)比用 “服務(wù)器”更確切。開(kāi)放地理模型詞典為通用地理數(shù)據(jù)傳輸和客戶與服務(wù)器端間的地理數(shù)據(jù)處理界面提供了基礎(chǔ)。</p><p>  (三)、空間數(shù)據(jù)類型(OpenGIS WKB and WKT)</p

23、><p>  OpenGIS “Simple Features Specification for SQL”定義了標(biāo)準(zhǔn)的空間數(shù)據(jù)對(duì)象類型、操作函數(shù)和元數(shù)據(jù)表集合。為了保證元數(shù)據(jù)和諸如創(chuàng)建和刪除一個(gè)空間數(shù)據(jù)字段的操作的數(shù)據(jù)一致性,OpenGIS定義了專用的程序過(guò)程。</p><p>  OpenGIS規(guī)范定義了兩種標(biāo)準(zhǔn)的空間數(shù)據(jù)類型的表示方式,the Well-Known Text(WKT)文本

24、形式和the Well-Known Binary(WKB)二進(jìn)制形式,其中包括了數(shù)據(jù)類型定義和坐標(biāo)組成定義。</p><p>  以下是文本表達(dá)方式的例子:</p><p>  點(diǎn):POINT (0 0)</p><p>  曲線:LINESTRING (0 0,1 1,1 2)</p><p>  多邊形:POLYGON ((0 0,4 0

25、,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))</p><p>  多個(gè)點(diǎn):MULTIPOINT (0 0,1 2)</p><p>  多條曲線:MULTILINESTRING ((0 0,1 1,1 2),(2 3,3 2,5 4))</p><p>  多個(gè)多邊形:MULTIPOLYGON (((0 0,4 0,4 4,0 4,

26、0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))</p><p>  空間數(shù)據(jù)集合:GEOMETRYCOLLECTION (POINT(2 3),LINESTRING((2 3,3 4)))</p><p>  OpenGIS同時(shí)也定義了空間數(shù)據(jù)類型的內(nèi)部存儲(chǔ)格式和空間參照系統(tǒng)標(biāo)識(shí)SRID(Spatial Ref

27、erencing System Identifier)。在空間對(duì)象的定義和插入到數(shù)據(jù)庫(kù)中是,SRID是必須的。</p><p>  二、GIS數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)</p><p> ?。ㄒ唬?、PostgreSQL數(shù)據(jù)庫(kù)管理系統(tǒng)</p><p><b>  系統(tǒng)簡(jiǎn)介</b></p><p>  PostgreSQL是以加州大學(xué)伯

28、克利分校計(jì)算機(jī)系開(kāi)發(fā)的 POSTGRES,版本 4.2為基礎(chǔ)的對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)。 POSTGRES 領(lǐng)先的許多概念只是在非常遲的時(shí)候才出現(xiàn)在商業(yè)數(shù)據(jù)庫(kù)中。 </p><p>  PostgreSQL 是最初的伯克利的代碼的一個(gè)開(kāi)放源碼的繼承人。 它提供了 SQL92/SQL99 語(yǔ)言的支持以及提供了許多其他現(xiàn)代特性,包括復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、多版本并發(fā)控制;同樣,Pos

29、tgreSQL 可以用許多方法擴(kuò)展,比如, 通過(guò)增加新功能,如:數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引方法、過(guò)程語(yǔ)言等。</p><p>  并且,因?yàn)樵S可證的靈活,任何人都可以以任何目的免費(fèi)使用,修改和分發(fā) PostgreSQL,不管是私用,商用,還是學(xué)術(shù)研究使用。</p><p><b>  支持幾何數(shù)據(jù)類型</b></p><p>  P

30、ostgreSQL數(shù)據(jù)庫(kù)的特點(diǎn)之一是支持幾何類型數(shù)據(jù)的操作。其基本的幾何類型如下表所示:</p><p>  表2.1 PostgreSQL中的空間數(shù)據(jù)類型</p><p>  同時(shí),PostgreSQL提供了基本的幾何類型數(shù)據(jù)的操作函數(shù),如:</p><p>  表2.2 PostgreSQL幾何函數(shù)</p><p><b>  

31、過(guò)程語(yǔ)言</b></p><p>  PostgreSQL 允許用戶增加新的編程語(yǔ)言, 并且可以用這些語(yǔ)言寫函數(shù)和過(guò)程。這些語(yǔ)言叫過(guò)程語(yǔ)言(PL)。 如果我們用一種過(guò)程語(yǔ)言 書寫了一個(gè)函數(shù)或者觸發(fā)器, 那么數(shù)據(jù)庫(kù)服務(wù)器是沒(méi)有任何內(nèi)建的知識(shí)獲知如何解析該函數(shù)的源文本的。 實(shí)際上這些任務(wù)都傳遞給一個(gè)知道如何處理這些細(xì)節(jié)的句柄處理。 這個(gè)句柄既可以自己干所有的分析,語(yǔ)法分析,執(zhí)行等的工作,也可以充當(dāng)Post

32、greSQL 和一種現(xiàn)有的編程語(yǔ)言實(shí)現(xiàn)之間的"膠水"。句柄本身是一個(gè)特殊的 C 語(yǔ)言函數(shù), 它被編譯成一種共享對(duì)象并且在需要的時(shí)候裝載。</p><p>  PL/pgSQL是 PostgreSQL 數(shù)據(jù)庫(kù)系統(tǒng)的一個(gè)可裝載的過(guò)程語(yǔ)言。 PL/pgSQL的設(shè)計(jì)目標(biāo)是創(chuàng)建一種可裝載的過(guò)程語(yǔ)言,具備以下特點(diǎn):</p><p>  可用于創(chuàng)建函數(shù)和觸發(fā)器過(guò)程 </p>

33、;<p>  為 SQL 語(yǔ)言增加控制結(jié)構(gòu) </p><p>  可以執(zhí)行復(fù)雜的計(jì)算 </p><p>  繼承所有用戶定義類型,函數(shù)和操作符 </p><p>  可以定義為被服務(wù)器信任(的語(yǔ)言) </p><p><b>  容易使用。 </b></p><p> ?。ǘ?、Po

34、stGIS系統(tǒng)</p><p><b>  簡(jiǎn)介</b></p><p>  PostGIS作為以研究空間數(shù)據(jù)庫(kù)技術(shù)的項(xiàng)目,由Refractions Research 有限公司開(kāi)發(fā)。Refractions在維多利亞,哥倫比亞,加拿大建立了GIS和數(shù)據(jù)庫(kù)咨詢機(jī)構(gòu),專門從事數(shù)據(jù)綜合和定制軟件開(kāi)發(fā)工作。PostGIS項(xiàng)目支持并參與開(kāi)發(fā)PostGIS標(biāo)準(zhǔn),已經(jīng)支持許多重要的G

35、IS功能,包括對(duì)OpenGIS的完全支持和高級(jí)拓?fù)浣Y(jié)構(gòu)的實(shí)現(xiàn),如coverages, surfaces, networks等。此外,PostGIS還計(jì)劃為桌面用戶提供了訪問(wèn)、瀏覽和編輯GIS數(shù)據(jù)的用戶接口和基于網(wǎng)絡(luò)的通訊工具。</p><p>  PostGIS是以PostgreSQL數(shù)據(jù)庫(kù)管理系統(tǒng)為后臺(tái)服務(wù)器的擴(kuò)展模塊,它的實(shí)現(xiàn)是以PostgreSQL提供的功能為基礎(chǔ),同時(shí)依靠并擴(kuò)展了GEOS的空間數(shù)據(jù)類型測(cè)試

36、和操作功能以及Proj4的空間坐標(biāo)映射功能。</p><p>  空間數(shù)據(jù)類型(GIS Objects)的實(shí)現(xiàn)</p><p>  PostGIS支持的空間數(shù)據(jù)對(duì)象是OpenGIS規(guī)范定義的“Simple Features”空間數(shù)據(jù)對(duì)象的超級(jí)。在版本0.9以后,PostGIS已完全支持了OGC(OpenGIS Consortium)的標(biāo)準(zhǔn), PostGIS支持基本的空間數(shù)據(jù)類型包括POIN

37、T,LINESTRING,POLYGON,MULTIPOINT,MULTILINESTRING,MULTIPOLYGON,GEOMETRYCOLLECTION等??臻g數(shù)據(jù)對(duì)象的創(chuàng)建和插入數(shù)據(jù)庫(kù)可以使用以下的接口:</p><p>  INSERT INTO SPATIALTABLE (THE_GEOM ,THE_NAME) VALUES (GeomFromText (’ POINT( -126.4 45.32)

38、’, 312) ,’A Place ’);</p><p>  由于OGC的OpenGIS規(guī)范只支持2D的空間數(shù)據(jù)類型,相關(guān)的SRID也從不要求嵌入到數(shù)據(jù)對(duì)象的輸入和輸出表示當(dāng)中,PostGIS提出了新的擴(kuò)展,包括3DZ,3DM、4D等空間坐標(biāo)系下的EWKB/WEKT(Every valid WKB/WKT)數(shù)據(jù)形式,同時(shí)嵌入SRID信息。EWKT的表達(dá)方式如下:</p><p>  點(diǎn):

39、POINT(0 0 0) -- XYZ</p><p>  包括SRID的點(diǎn):SRID=32632;POINT(0 0) -- XY with SRID</p><p>  3DM點(diǎn):POINTM(0 0 0) -- XYM</p><p>  3DZM點(diǎn):POINT(0 0 0 0) -- XYZM</p><p>  包括SRID的3DM

40、點(diǎn):SRID=4326;MULTIPOINTM(0 0 0,1 2 1) -- XYM with SRID</p><p>  3DM多條曲線:MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1))</p><p>  3DM多邊形:POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1

41、 0,2 2 0,1 2 0,1 1 0))</p><p>  3DM多個(gè)多邊形:MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-1 -1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0)))</p><p>  3DM空間多項(xiàng)集合:GEOMETRYCO

42、LLECTIONM(POINTM(2 3 9),LINESTRINGM((2 3 4,3 4 5)))</p><p>  他們的輸入/輸出可以使用以下的接口:</p><p>  bytea EWKB = asEWKB( geometry);</p><p>  text EWKT = asEWKT( geometry );</p><p>

43、;  geometry = GeomFromEWKB ( bytea EWKB );</p><p>  geometry = GeomFromEWKT (text EWKT );</p><p>  標(biāo)準(zhǔn)的定義表格和插入數(shù)據(jù)語(yǔ)句如下:</p><p>  INSERT INTO SPATIALTABLE (THE_GEOM ,THE_NAME) VALUES (

44、GeomFromEWKT (’SRID =312; POINTM ( -126.4 45.32 15) ’),’A Place ’)</p><p>  下面是一條查詢EWKT的語(yǔ)句,返回了EWKB的16進(jìn)制形式,</p><p>  SELECT ’SRID =4; POINT(0 0) ’:: geometry ;</p><p><b>  geom

45、etry</b></p><p>  ----------------------------------------------------</p><p>  01010000200400000000000000000000000000000000000000</p><p><b>  (1 row)</b></p>

46、;<p><b>  數(shù)據(jù)定義</b></p><p>  在PostGIS中建立包括空間數(shù)據(jù)的表首先要先建立一個(gè)PostgreSQL中的普通飛空間數(shù)據(jù)庫(kù)表格,語(yǔ)法如下: CREATE TABLE ROADS_GEOM( ID int4, NAME varchar(25) ),然后增加一個(gè)包括空間數(shù)據(jù)類型的屬性列,這時(shí)需要使用OpenGIS的函數(shù)“AddGeometryColu

47、mn()”,語(yǔ)法是:AddGeometryColumn (< schema_name >, <table_name >,<column_name >, <srid >, <type >,<dimension >)或者使用當(dāng)前schema:AddGeometryColumn (< table_name >,<column_name >, <

48、;srid >, <type >,<dimension >),使用方式為:SELECT AddGeometryColumn(’public’, ’roads_geom’, ’geom’, 423, ’LINESTRING’, 2)</p><p>  SELECT AddGeometryColumn( ‘roads_geom’, ‘geom’, 423, ’LINESTRING’,

49、2)</p><p><b>  數(shù)據(jù)查詢</b></p><p>  從數(shù)據(jù)庫(kù)中查詢空間數(shù)據(jù)的最直接的方式是使用SQL語(yǔ)言,你可以將結(jié)果保存到文本文檔中或者直接顯示到屏幕上,如下面的例子顯示的:</p><p>  db =# SELECT id , AsText(geom ) AS geom , name FROM ROADS_GEOM ;

50、</p><p>  id | geom | name</p><p>  1 | LINESTRING (191232 243118 ,191108 243242) | Jeff Rd</p><p>  2 | LINESTRING (189141 244158 ,189265 244817) | Geordie Rd</p><p> 

51、 3 | LINESTRING (192783 228138 ,192612 229814) | Paul St</p><p>  4 | LINESTRING (189412 252431 ,189631 259122) | Graeme Ave</p><p>  5 | LINESTRING (190131 224148 ,190871 228134) | Phil Tce<

52、/p><p>  6 | LINESTRING (198231 263418 ,198213 268322) | Dave Cres</p><p>  7 | LINESTRING (218421 284121 ,224123 241231) | Chris Way</p><p><b>  (6 rows )</b></p>&

53、lt;p>  盡管如此,很多時(shí)候查詢需要增加一些限制來(lái)減少返回的屬性列,在這種基于屬性的顯示的情況下,可以像使用普通的非空間數(shù)據(jù)查詢一樣去使用SQL語(yǔ)句,下面將展示的能在SQL中使用的一些用于空間數(shù)據(jù)計(jì)算的操作符,其中操作符“&&”用來(lái)判斷兩個(gè)空間數(shù)據(jù)對(duì)象的bounding區(qū)域是否完全相同。接下來(lái)的語(yǔ)句能判斷兩個(gè)空間數(shù)據(jù)對(duì)象是否空間上完全相同,包括標(biāo)示符:if ‘POLYGON((0 0,1 1,1 0,0 0)

54、)’ is the same as ‘POLYGON((0 0,1 1,1 0,0 0))’,答案是TRUE,而至于操作符“=”只能判斷兩個(gè)空間數(shù)據(jù)對(duì)象是一樣的。</p><p>  表2.3 PostGIS空間數(shù)據(jù)操作符</p><p>  在使用SQL語(yǔ)句進(jìn)行空間數(shù)據(jù)對(duì)象的查詢時(shí),需要注意將文本模式的對(duì)象通過(guò)函數(shù)“GeomFromText()”轉(zhuǎn)換為數(shù)據(jù)庫(kù)存儲(chǔ)模式,如SELECT I

55、D , NAME FROM ROADS_GEOM WHERE GEOM ~= GeomFromText (‘LINESTRING (191232 243118 ,191108 243242) ’,-1);這句SQL語(yǔ)句將從表“ROADS_GEOM”中查詢與LINESTRING (191232 243118 ,191108 243242)相同的空間數(shù)據(jù)對(duì)象所在的行。</p><p>  數(shù)據(jù)轉(zhuǎn)儲(chǔ)(Shapefile

56、文件的使用)</p><p>  Shapefile 是一種基于文件方式存儲(chǔ)GIS數(shù)據(jù)的文件格式。至少由 .shp, .dbf, .shx三個(gè)文件組成,分別存儲(chǔ)空間,屬性和前兩者的關(guān)系。是GIS中比較通用的一種數(shù)據(jù)格式。</p><p>  目前的PostGIS沒(méi)有提供編輯GIS數(shù)據(jù)的GUI界面,但是提供了強(qiáng)大的數(shù)據(jù)轉(zhuǎn)換功能,將其他成熟的GIS數(shù)據(jù)編輯軟件的數(shù)據(jù)存入PostGIS中,其中一

57、種方式是使用shp2pgsql將Shapefile轉(zhuǎn)換為PostGIS中的數(shù)據(jù)格式。</p><p>  數(shù)據(jù)庫(kù)優(yōu)化(GiST)</p><p>  索引使空間數(shù)據(jù)庫(kù)存儲(chǔ)大數(shù)據(jù)集合成為可能。沒(méi)有索引,每一次對(duì)數(shù)據(jù)庫(kù)的搜索都會(huì)查詢數(shù)據(jù)庫(kù)中的每一條記錄,索引通過(guò)組織數(shù)據(jù)構(gòu)建查詢數(shù)來(lái)加快查詢使其快速的命中目標(biāo)記錄。</p><p>  PostgreSQL 提供了好幾種索

58、引類型∶ B-tree,R-tree,GiST 和散列.每種索引類型都比較適合某些特定的查詢類型, 因?yàn)樗鼈冇昧瞬煌乃惴ǎ?缺省時(shí), CREATE INDEX 命令將創(chuàng)建一個(gè) B-tree 索引,這種索引適合于大多數(shù)常見(jiàn)的情形。 B-tree 可以處理那些可以按照某種順序存儲(chǔ)的數(shù)據(jù)的等于和范圍查詢。 特別是在一個(gè)建立了索引的列涉及到使用下列操作符之一進(jìn)行比較的時(shí)候, PostgreSQL 的查詢規(guī)劃器都會(huì)考慮使用 B-tree 索引∶

59、 <, <=, =, >=, > </p><p>  優(yōu)化器也會(huì)把 B-tree 所以用于涉及模式匹配操作符 LIKE, ILIKE,~,和 ~* 的查詢,條件是模式錨接在字串的開(kāi)頭,比如, col LIKE ‘foo%' 或者 col ~ ‘^foo', 而不是 col LIKE ‘%bar'。 但是,如果你的服務(wù)器不適用 C 區(qū)域,那么你需要用一個(gè)特殊的操作符

60、表創(chuàng)建索引。 </p><p>  R-tree 索引特別適合于空間數(shù)據(jù).要?jiǎng)?chuàng)建一個(gè) R-tree 索引, 使用下面形式的命令 </p><p>  CREATE INDEX name ON table USING RTREE (column);</p><p>  當(dāng)一個(gè)索引了的列涉及到使用下列操作符之一進(jìn)行比較的時(shí)候, PostgreSQL 的查詢規(guī)劃器都會(huì)考慮

61、使用 R-tree 索引∶ <<, &<, &>, >>, @, ~=, && 。</p><p>  散列(hash)索引只能處理簡(jiǎn)單的等于比較。 當(dāng)一個(gè)索引了的列涉及到使用 = 操作符進(jìn)行比較的時(shí)候, 查詢規(guī)劃器會(huì)考慮使用散列索引。 下面的命令用于創(chuàng)建散列索引∶ </p><p>  CREATE INDEX name

62、 ON table USING HASH (column);</p><p>  B-tree 索引是一個(gè) Lehman-Yao 高并發(fā) B-tree 的實(shí) 現(xiàn)。R-tree 索引用 Guttman 的二次分割算法實(shí)現(xiàn)了標(biāo)準(zhǔn)的 R-tree。 hash(散列)索引是 Litwin 的線性散列的一個(gè)實(shí)現(xiàn)。 我們單獨(dú)的列出這些所用的算法是要表明所有這些索引方法都是完全動(dòng)態(tài)的并且不必進(jìn)行周期性的優(yōu)化 (例如,象靜態(tài)散列

63、算法常見(jiàn)的那樣)。 </p><p>  GiST (Generalized Search Trees) 索引用來(lái)加速任何非規(guī)則數(shù)據(jù)結(jié)構(gòu)的查詢,它將數(shù)據(jù)打破成“things to one side”,“things which overlap”, “things which are inside”這種索引能使用空間數(shù)據(jù)在內(nèi)的大多數(shù)數(shù)據(jù)類型。PostGIS可以在GiST上使用一個(gè)R-Tree索引。下面的語(yǔ)句用來(lái)增加

64、一個(gè)GiST索引:</p><p>  CREATE INDEX [indexname ] ON [ tablename ]</p><p>  USING GIST ( [ geometryfield ] GIST_GEOMETRY_OPS );</p><p> ?。ㄈ?shù)據(jù)庫(kù)結(jié)構(gòu)及實(shí)現(xiàn)</p><p>  圖2.1 數(shù)據(jù)庫(kù)結(jié)構(gòu)圖<

65、;/p><p>  道路、建筑物、草坪表是整個(gè)空間數(shù)據(jù)庫(kù)的基礎(chǔ),交叉點(diǎn)表和路由表是由道路表計(jì)算得出的(算法實(shí)現(xiàn)見(jiàn)“最短路徑算法實(shí)現(xiàn)”部分)。</p><p>  圖2.2 建立交叉點(diǎn)表流程圖</p><p>  圖2.3 填充路由表流程圖</p><p> ?。ㄋ模?、最短路徑算法流程</p><p>  圖2.4 尋找最短

66、路徑流程圖</p><p>  本算法的實(shí)現(xiàn)將主要的計(jì)算任務(wù)放到服務(wù)器端,參考內(nèi)部網(wǎng)關(guān)協(xié)議(RIP)算法用plpgsql語(yǔ)言編寫,從數(shù)據(jù)庫(kù)中的路由表(route表)中讀取數(shù)據(jù)行最終調(diào)用PostGIS提供的函數(shù)“MakeLineString()”(路徑生成函數(shù))和“AddPoint()”(像路徑或其他空間數(shù)據(jù)對(duì)象中增加點(diǎn))來(lái)完成一條最短路徑的創(chuàng)建并返回給訪問(wèn)發(fā)起端。</p><p>  針對(duì)

67、大區(qū)域的地圖,需將區(qū)域的向外連接道路分四個(gè)方向定義,并將各個(gè)方向的出口定義為一個(gè)點(diǎn),這樣就可以在大區(qū)域上將一個(gè)區(qū)域抽象為一個(gè)交叉點(diǎn),這樣就可以同樣套用以上算法完成大范圍的路徑計(jì)算。</p><p>  本算法的計(jì)算量大部分在構(gòu)造數(shù)據(jù)庫(kù)期間,一個(gè)26個(gè)交叉點(diǎn)的區(qū)域的route表的填充在Pentium3.0、256M內(nèi)存的PC機(jī)上耗費(fèi)10秒時(shí)間,之后的每次查詢?cè)L問(wèn)耗時(shí)在毫秒級(jí)。</p><p>

68、;<b>  三、嵌入式系統(tǒng)</b></p><p> ?。ㄒ唬⑶度胧较到y(tǒng)硬件結(jié)構(gòu)</p><p>  Samsung S3C44B0X微處理器體系</p><p>  Samsung公司推出的16/32位RISC處理器S3C44B0X為手持設(shè)備和一般類型應(yīng)用提供了高性價(jià)比和高性能的微控制器解決方案。為了降低成本,S3C44B0X提供了豐富的

69、內(nèi)置部件,包括:8KB cache,內(nèi)部SRAM,LCD控制器,帶自動(dòng)握手的2通道UART,4通道DMA,系統(tǒng)管理器(片選邏輯,F(xiàn)P/EDO/SDRAM控制器),代用PWM功能的5通道定制器,I/O端口,RTC,8通道10微ADC,IIC-BUS接口,IIS-BUS接口,同步SIO接口和PLL倍頻器。</p><p>  S3C44B0X采用了ARM7TDMI內(nèi)核,0.25um工藝的CMOS標(biāo)準(zhǔn)宏單元和存儲(chǔ)編譯器

70、。它的低功耗精簡(jiǎn)和出色的全靜態(tài)設(shè)計(jì)特別適合于對(duì)成本和功耗敏感的應(yīng)用。同樣S3C44B0X還采用了一種新的總線結(jié)構(gòu),即SAMBAII(三星ARM CPU 嵌入式微處理器總線結(jié)構(gòu))。</p><p>  S3C44B0X的杰出特性是它的CPU核,是由ARM公司設(shè)計(jì)的16/32位ARM7TDMI RISC處理器(66MHZ)。ARM7TDMI體系結(jié)構(gòu)的特點(diǎn)是它集成了Thumb代碼壓縮器,片上的ICE斷點(diǎn)調(diào)試支持和一個(gè)3

71、2位的硬件乘法器。</p><p>  S3C44B0X通過(guò)提供全面、通用的片上外設(shè),大大減少了系統(tǒng)電路中除處理器以外的元器件配置,從而最小化系統(tǒng)的成本。</p><p>  JX44B0-1B硬件配置</p><p>  CPU: S3C44B0X,Arm7TDMI,工作頻率66MHz(可升至75MHz)</p><p>  FALSH:

72、4Mbytes Flash(1X2MX16位)</p><p>  SDRAM: 8Mbytes SDRAM(1X4MX16位)</p><p>  5.7英寸, 320*240*256色LCD顯示器 + 觸摸屏(可選)</p><p><b>  4X4鍵盤(可選)</b></p><p>  1個(gè)10M以太網(wǎng)口

73、 1個(gè)USB 1.1接口</p><p>  2個(gè)RS-232C串行接口 14針JTAG接口</p><p>  4個(gè)可編程的LED指示燈 1個(gè)七段數(shù)碼顯示管 蜂鳴器</p><p>  1個(gè)外部中斷測(cè)試按鈕 CPU所有接口引出,方便擴(kuò)展</p><p>  IIS音頻接口,立體聲錄、放音</p>

74、<p>  1個(gè)IIC接口的EEPROM</p><p> ?。ǘClinux操作系統(tǒng)</p><p><b>  簡(jiǎn)介</b></p><p>  Linux是一種很受歡迎的操作系統(tǒng),它與UNIX系統(tǒng)兼容,開(kāi)放源代碼。它原本被設(shè)計(jì)為桌面系統(tǒng),現(xiàn)在廣泛應(yīng)用于服務(wù)器領(lǐng)域。而更大的影響在于它正逐漸的應(yīng)用于嵌入式設(shè)備。uClinux正

75、是在這種氛圍下產(chǎn)生的。在uClinux這個(gè)英文單詞中u表示Micro,小的意思,C表示Control,控制的意思,所以u(píng)Clinux就是Micro-Control-Linux,字面上的理解就是“針對(duì)微控制領(lǐng)域而設(shè)計(jì)的Linux系統(tǒng)”。</p><p>  uClinux的內(nèi)核加載方式</p><p>  uClinux的內(nèi)核有兩種可選的運(yùn)行方式:可以在flash上直接運(yùn)行,也可以加載到內(nèi)存

76、中運(yùn)行。這種做法可以減少內(nèi)存需要。</p><p>  Flash運(yùn)行方式:把內(nèi)核的可執(zhí)行映象燒寫到flash上,系統(tǒng)啟動(dòng)時(shí)從flash的某個(gè)地址開(kāi)始逐句執(zhí)行。這種方法實(shí)際上是很多嵌入式系統(tǒng)采用的方法。</p><p>  內(nèi)核加載方式:把內(nèi)核的壓縮文件存放在flash上,系統(tǒng)啟動(dòng)時(shí)讀取壓縮文件在內(nèi)存里解壓,然后開(kāi)始執(zhí)行,這種方式相對(duì)復(fù)雜一些,但是運(yùn)行速度可能更快(ram的存取速率要比f(wàn)l

77、ash高)。同時(shí)這也是標(biāo)準(zhǔn)Linux系統(tǒng)采用的啟動(dòng)方式。</p><p>  uClinux的內(nèi)存管理</p><p>  應(yīng)該說(shuō)uClinux同標(biāo)準(zhǔn)Linux的最大區(qū)別就在于內(nèi)存管理,同時(shí)也由于uClinux的內(nèi)存管理引發(fā)了一些標(biāo)準(zhǔn)Linux所不會(huì)出現(xiàn)的問(wèn)題。</p><p>  標(biāo)準(zhǔn)Linux使用虛擬存儲(chǔ)器技術(shù),這種技術(shù)用于提供比計(jì)算機(jī)系統(tǒng)中實(shí)際使用的物理內(nèi)存大

78、得多的內(nèi)存空間。使用者將感覺(jué)到好像程序可以使用非常大的內(nèi)存空間,從而使得編程人員在寫程序時(shí)不用考慮計(jì)算機(jī)中的物理內(nèi)存的實(shí)際容量。為了支持虛擬存儲(chǔ)管理器的管理,Linux系統(tǒng)采用分頁(yè)(paging)的方式來(lái)載入進(jìn)程。所謂分頁(yè)既是把實(shí)際的存儲(chǔ)器分割為相同大小的段,例如每個(gè)段1024個(gè)字節(jié),這樣1024個(gè)字節(jié)大小的段便稱為一個(gè)頁(yè)面(page)。 </p><p>  標(biāo)準(zhǔn)Linux是針對(duì)有內(nèi)存管理單元的處理器設(shè)計(jì)的。在

79、這種處理器上,虛擬地址被送到內(nèi)存管理單元(MMU),把虛擬地址映射為物理地址。</p><p>  對(duì)于uClinux來(lái)說(shuō),其設(shè)計(jì)針對(duì)沒(méi)有MMU的處理器,即uClinux不能使用處理器的虛擬內(nèi)存管理技術(shù)(應(yīng)該說(shuō)這種不帶有MMU的處理器在嵌入式設(shè)備中相當(dāng)普偏)。uClinux仍然采用存儲(chǔ)器的分頁(yè)管理,系統(tǒng)在啟動(dòng)時(shí)把實(shí)際存儲(chǔ)器進(jìn)行分頁(yè)。在加載應(yīng)用程序時(shí)程序分頁(yè)加載。但是由于沒(méi)有MMU管理,所以實(shí)際上uClinux采用

80、實(shí)存儲(chǔ)器管理策略(real memeory management)。這一點(diǎn)影響了系統(tǒng)工作的很多方面。</p><p>  uClinux系統(tǒng)對(duì)于內(nèi)存的訪問(wèn)是直接的,(它對(duì)地址的訪問(wèn)不需要經(jīng)過(guò)MMU,而是直接送到地址線上輸出),所有程序中訪問(wèn)的地址都是實(shí)際的物理地址。操作系統(tǒng)對(duì)內(nèi)存空間沒(méi)有保護(hù)(這實(shí)際上是很多嵌入式系統(tǒng)的特點(diǎn)),各個(gè)進(jìn)程實(shí)際上共享一個(gè)運(yùn)行空間(沒(méi)有獨(dú)立的地址轉(zhuǎn)換表)。 </p><

81、;p>  一個(gè)進(jìn)程在執(zhí)行前,系統(tǒng)必須為進(jìn)程分配足夠的連續(xù)地址空間,然后全部載入主存儲(chǔ)器的連續(xù)空間中。與之相對(duì)應(yīng)的是標(biāo)準(zhǔn)Linux系統(tǒng)在分配內(nèi)存時(shí)沒(méi)有必要保證實(shí)際物理存儲(chǔ)空間是連續(xù)的,而只要保證虛存地址空間連續(xù)就可以了。另外一個(gè)方面程序加載地址與預(yù)期(ld文件中指出的)通常都不相同,這樣relocation過(guò)程就是必須的。此外磁盤交換空間也是無(wú)法使用的,系統(tǒng)執(zhí)行時(shí)如果缺少內(nèi)存將無(wú)法通過(guò)磁盤交換來(lái)得到改善。</p>&l

82、t;p>  uClinux對(duì)內(nèi)存的管理減少同時(shí)就給開(kāi)發(fā)人員提出了更高的要求。如果從易用性這一點(diǎn)來(lái)說(shuō),uClinux的內(nèi)存管理是一種倒退,退回了到了UNIX早期或是Dos系統(tǒng)時(shí)代。開(kāi)發(fā)人員不得不參與系統(tǒng)的內(nèi)存管理。從編譯內(nèi)核開(kāi)始,開(kāi)發(fā)人員必須告訴系統(tǒng)這塊開(kāi)發(fā)板到底擁有多少的內(nèi)存(假如你欺騙了系統(tǒng),那將在后面運(yùn)行程序時(shí)受到懲罰),從而系統(tǒng)將在啟動(dòng)的初始化階段對(duì)內(nèi)存進(jìn)行分頁(yè),并且標(biāo)記已使用的和未使用的內(nèi)存。系統(tǒng)將在運(yùn)行應(yīng)用時(shí)使用這些分頁(yè)

83、內(nèi)存。</p><p>  從內(nèi)存的訪問(wèn)角度來(lái)看,開(kāi)發(fā)人員的權(quán)利增大了(開(kāi)發(fā)人員在編程時(shí)可以訪問(wèn)任意的地址空間),但與此同時(shí)系統(tǒng)的安全性也大為下降。此外,系統(tǒng)對(duì)多進(jìn)程的管理將有很大的變化,這一點(diǎn)將在uClinux的多進(jìn)程管理中說(shuō)明。</p><p>  雖然uClinux的內(nèi)存管理與標(biāo)準(zhǔn)Linux系統(tǒng)相比功能相差很多,但應(yīng)該說(shuō)這是嵌入式設(shè)備的選擇。在嵌入式設(shè)備中,由于成本等敏感因素的影響,

84、普偏的采用不帶有MMU的處理器,這決定了系統(tǒng)沒(méi)有足夠的硬件支持實(shí)現(xiàn)虛擬存儲(chǔ)管理技術(shù)。從嵌入式設(shè)備實(shí)現(xiàn)的功能來(lái)看,嵌入式設(shè)備通常在某一特定的環(huán)境下運(yùn)行,只要實(shí)現(xiàn)特定的功能,其功能相對(duì)簡(jiǎn)單,內(nèi)存管理的要求完全可以由開(kāi)發(fā)人員考慮。</p><p>  uClinux的根(root)文件系統(tǒng)</p><p>  uClinux系統(tǒng)采用romfs文件系統(tǒng),這種文件系統(tǒng)相對(duì)于一般的ext2文件系統(tǒng)要求

85、更少的空間??臻g的節(jié)約來(lái)自于兩個(gè)方面,首先內(nèi)核支持romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,其次romfs文件系統(tǒng)相對(duì)簡(jiǎn)單,在建立文件系統(tǒng)超級(jí)塊(superblock)需要更少的存儲(chǔ)空間。Romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存,對(duì)于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬ram盤的方法進(jìn)行處理(ram盤將采用ext2文件系統(tǒng))。</p><p>  uClinux的應(yīng)用程序庫(kù)</p><p&

86、gt;  uClinux小型化的另一個(gè)做法是重寫了應(yīng)用程序庫(kù),相對(duì)于越來(lái)越大且越來(lái)越全的glibc庫(kù),uClibc對(duì)glibc做了精簡(jiǎn)。</p><p>  uClinux對(duì)用戶程序采用靜態(tài)連接的形式,這種做法會(huì)使應(yīng)用程序變大,但是基于內(nèi)存管理的問(wèn)題,不得不這樣做(這將在下文對(duì)uClinux內(nèi)存管理展開(kāi)分析時(shí)進(jìn)行說(shuō)明),同時(shí)這種做法也更接近于通常嵌入式系統(tǒng)的做法。</p><p><

87、b>  可執(zhí)行文件格式</b></p><p>  coff(common object file format):一種通用的對(duì)象文件格式。</p><p>  elf(executive linked file):一種為L(zhǎng)inux系統(tǒng)所采用的通用文件格式,支持動(dòng)態(tài)連接。</p><p>  flat:elf格式有很大的文件頭,flat文件對(duì)文件頭

88、和一些段信息做了簡(jiǎn)化。</p><p>  uClinux系統(tǒng)使用flat可執(zhí)行文件格式,GCC的編譯器不能直接形成這種文件格式,但是可以形成coff或elf格式的可執(zhí)行文件,這兩種文件需要coff2flt或elf2flt工具進(jìn)行格式轉(zhuǎn)化,形成flat文件。</p><p> ?。ㄈ?、MiniGUI嵌入式圖形界面</p><p><b>  簡(jiǎn)介<

89、/b></p><p>  由北京飛漫軟件技術(shù)有限公司開(kāi)發(fā)的 MiniGUI(http://www.minigui.com),是國(guó)內(nèi)為數(shù)不多的幾大國(guó)際知名自由軟件之一。MiniGUI 是面向?qū)崟r(shí)嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持系統(tǒng),1999 年初遵循 GPL 條款發(fā)布第一個(gè)版本以來(lái),已廣泛應(yīng)用于手持信息終端、機(jī)頂盒、工業(yè)控制系統(tǒng)及工業(yè)儀表、便攜式多媒體播放機(jī)、查詢終端等產(chǎn)品和領(lǐng)域。目前,MiniGUI 已

90、成為跨操作系統(tǒng)的圖形用戶界面支持系統(tǒng),可在 Linux/uClinux、eCos、uC/OS-II、VxWorks、pSOS、ThreadX、Nucleus 等操作系統(tǒng)以及 Win32 平臺(tái)上運(yùn)行;已驗(yàn)證的硬件平臺(tái)包括 Intel x86、ARM(ARM7/ARM9/StrongARM/xScale)、PowerPC、MIPS、M68K(DragonBall/ColdFire)等等。最新的 MiniGUI 2.0 更為基于嵌入式 Lin

91、ux 的高端嵌入式設(shè)備提供了完整的多進(jìn)程支持,從而將 MiniGUI 從中端市場(chǎng)帶到了高端市場(chǎng)。 </p><p>  飛漫將 MiniGUI 定義為“針對(duì)嵌入式設(shè)備的、跨操作系統(tǒng)的圖形界面支持系統(tǒng)”,屬于一種“嵌入式圖形中間件”軟件產(chǎn)品。目前,MiniGUI 已得到了國(guó)內(nèi)最大的民營(yíng)通信設(shè)備制造商、中國(guó)最大的電視機(jī)生產(chǎn)商、TD-SCDMA 終端方案供應(yīng)商、全球最大的處理器生產(chǎn)廠商的認(rèn)可及使用,而在諸如工業(yè)儀表、醫(yī)

92、療儀器、軍工等行業(yè),更有眾多行業(yè)領(lǐng)先廠商選擇 MiniGUI 開(kāi)發(fā)他們的嵌入式產(chǎn)品。與此同時(shí),MiniGUI 也得到了海外嵌入式設(shè)備開(kāi)發(fā)商的認(rèn)可,并遠(yuǎn)銷到北美、臺(tái)灣、馬來(lái)西亞等地區(qū);2005年8月,韓國(guó)KSP公司成為飛漫軟件全線產(chǎn)品的第一個(gè)海外代理。MiniGUI 業(yè)已成為嵌入式圖形中間件領(lǐng)域的工業(yè)事實(shí)標(biāo)準(zhǔn)。 </p><p>  基于 MiniGUI 的嵌入式系統(tǒng)軟件結(jié)構(gòu) </p><p&g

93、t;  為什么 MiniGUI 能夠在如此眾多的嵌入式操作系統(tǒng)上運(yùn)行?這是因?yàn)?MiniGUI 具有良好的軟件架構(gòu),通過(guò)抽象層將 MiniGUI 上層和底層操作系統(tǒng)隔離開(kāi)來(lái)。如圖3.1所示,基于 MiniGUI 的應(yīng)用程序一般通過(guò) ANSI C 庫(kù)以及 MiniGUI 自身提供的 API 來(lái)實(shí)現(xiàn)自己的功能;MiniGUI 中的“可移植層”可將特定操作系統(tǒng)及底層硬件的細(xì)節(jié)隱藏起來(lái),而上層應(yīng)用程序則無(wú)需關(guān)心底層的硬件平臺(tái)輸出和輸入設(shè)備。 &

94、lt;/p><p>  圖3.1 MiniGUI的軟件結(jié)構(gòu)圖</p><p>  另外,MiniGUI 特有的運(yùn)行模式概念,也為跨操作系統(tǒng)的支持提供了便利。 </p><p> ?。ㄋ模⑶度胧较到y(tǒng)結(jié)構(gòu)</p><p>  Linux內(nèi)核主要由五個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度,內(nèi)存管理,虛擬文件系統(tǒng),網(wǎng)絡(luò)接口,進(jìn)程間通信。 </p><

95、;p>  進(jìn)程調(diào)度(SCHED)</p><p>  進(jìn)程調(diào)度控制進(jìn)程對(duì)CPU的訪問(wèn)。當(dāng)需要選擇下一個(gè)進(jìn)程運(yùn)行時(shí),由調(diào)度程序選擇最值得運(yùn)行的進(jìn)程??蛇\(yùn)行進(jìn)程實(shí)際上是僅等待CPU資源的進(jìn)程,如果某個(gè)進(jìn)程在等待其它資源,則該進(jìn)程是不可運(yùn)行進(jìn)程。Linux使用了比較簡(jiǎn)單的基于優(yōu)先級(jí)的進(jìn)程調(diào)度算法選擇新的進(jìn)程。 </p><p><b>  內(nèi)存管理(MM)</b>&l

96、t;/p><p>  內(nèi)存管理允許多個(gè)進(jìn)程安全的共享主內(nèi)存區(qū)域。Linux的內(nèi)存管理支持虛擬內(nèi)存,即在計(jì)算機(jī)中運(yùn)行的程序,其代碼,數(shù)據(jù),堆棧的總量可以超過(guò)實(shí)際內(nèi)存的大小,操作系統(tǒng)只是把當(dāng)前使用的程序塊保留在內(nèi)存中,其余的程序塊則保留在磁盤中。必要時(shí),操作系統(tǒng)負(fù)責(zé)在磁盤和內(nèi)存間交換程序塊。內(nèi)存管理從邏輯上分為硬件無(wú)關(guān)部分和硬件有關(guān)部分。硬件無(wú)關(guān)部分提供了進(jìn)程的映射和邏輯內(nèi)存的對(duì)換;硬件相關(guān)的部分為內(nèi)存管理硬件提供了虛擬

97、接口。 </p><p>  虛擬文件系統(tǒng)(VirtualFileSystem,VFS)</p><p>  虛擬文件系統(tǒng)隱藏了各種硬件的具體細(xì)節(jié),為所有的設(shè)備提供了統(tǒng)一的接口,VFS提供了多達(dá)數(shù)十種不同的文件系統(tǒng)。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序。邏輯文件系統(tǒng)指Linux所支持的文件系統(tǒng),如ext2,fat等,設(shè)備驅(qū)動(dòng)程序指為每一種硬件控制器所編寫的設(shè)備驅(qū)動(dòng)程序模塊。<

98、;/p><p><b>  網(wǎng)絡(luò)接口(NET)</b></p><p>  網(wǎng)絡(luò)接口提供了對(duì)各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持。網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序。網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備通訊,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動(dòng)程序。 </p><p>  進(jìn)程間通訊(IPC)。 <

99、;/p><p>  進(jìn)程間通訊,處于中心位置的進(jìn)程調(diào)度,所有其它的子系統(tǒng)都依賴它,因?yàn)槊總€(gè)子系統(tǒng)都需要掛起或恢復(fù)進(jìn)程。一般情況下,當(dāng)一個(gè)進(jìn)程等待硬件操作完成時(shí),它被掛起;當(dāng)操作真正完成時(shí),進(jìn)程被恢復(fù)執(zhí)行。例如,當(dāng)一個(gè)進(jìn)程通過(guò)網(wǎng)絡(luò)發(fā)送一條消息時(shí),網(wǎng)絡(luò)接口需要掛起發(fā)送進(jìn)程,直到硬件成功地完成消息的發(fā)送,當(dāng)消息被成功的發(fā)送出去以后,網(wǎng)絡(luò)接口給進(jìn)程返回一個(gè)代碼,表示操作的成功或失敗。其他子系統(tǒng)以相似的理由依賴于進(jìn)程調(diào)度。 &

100、lt;/p><p><b>  依賴關(guān)系 </b></p><p>  進(jìn)程調(diào)度與內(nèi)存管理之間的關(guān)系:這兩個(gè)子系統(tǒng)互相依賴。在多道程序環(huán)境下,程序要運(yùn)行必須為之創(chuàng)建進(jìn)程,而創(chuàng)建進(jìn)程的第一件事情,就是將程序和數(shù)據(jù)裝入內(nèi)存。 </p><p>  進(jìn)程間通信與內(nèi)存管理的關(guān)系:進(jìn)程間通信子系統(tǒng)要依賴內(nèi)存管理支持共享內(nèi)存通信機(jī)制,這種機(jī)制允許兩個(gè)進(jìn)程除了擁

101、有自己的私有空間,還可以存取共同的內(nèi)存區(qū)域。</p><p>  虛擬文件系統(tǒng)與網(wǎng)絡(luò)接口之間的關(guān)系:虛擬文件系統(tǒng)利用網(wǎng)絡(luò)接口支持網(wǎng)絡(luò)文件系統(tǒng)(NFS),也利用內(nèi)存管理支持RAMDISK設(shè)備。 </p><p>  內(nèi)存管理與虛擬文件系統(tǒng)之間的關(guān)系:內(nèi)存管理利用虛擬文件系統(tǒng)支持交換,交換進(jìn)程(swapd)定期由調(diào)度程序調(diào)度,這也是內(nèi)存管理依賴于進(jìn)程調(diào)度的唯一原因。當(dāng)一個(gè)進(jìn)程存取的內(nèi)存映射被換

102、出時(shí),內(nèi)存管理向文件系統(tǒng)發(fā)出請(qǐng)求,同時(shí),掛起當(dāng)前正在運(yùn)行的進(jìn)程。 </p><p>  除了這些依賴關(guān)系外,內(nèi)核中的所有子系統(tǒng)還要依賴于一些共同的資源。這些資源包括所有子系統(tǒng)都用到的過(guò)程。例如:分配和釋放內(nèi)存空間的過(guò)程,打印警告或錯(cuò)誤信息的過(guò)程,還有系統(tǒng)的調(diào)試?yán)痰鹊取?lt;/p><p>  四、嵌入式地理信息系統(tǒng)EmbedGis</p><p>  (一)、嵌入式地

103、理信息系統(tǒng)簡(jiǎn)介</p><p>  鑒于嵌入式系統(tǒng)自身的特殊性和復(fù)雜性,首先對(duì)于嵌入式地理信息系統(tǒng)的功能劃分與概念確定就是個(gè)比較重要的問(wèn)題,因?yàn)檫@涉及到需要開(kāi)發(fā)、研究一個(gè)具有什么功能的系統(tǒng)。由于國(guó)內(nèi)外嵌入式GIS研究都處于起步階段,所以這方面仍然有待深入研究。我們認(rèn)為嵌入式GIS應(yīng)該具有的基本功能是:運(yùn)行于獨(dú)立的操作系統(tǒng)之上,具有基本的地圖放大、縮小、漫游、地圖投影變換等常規(guī)GIS功能;具有空間查詢、路徑分析(可

104、以制定自己的路徑尋優(yōu)規(guī)則與模型)和自動(dòng)導(dǎo)航(與GPS結(jié)合)等基本空間分析功能;可以通過(guò)Internet下載和瀏覽地圖;可以與PC—GIS轉(zhuǎn)換、交流數(shù)據(jù)。但鑒于嵌入式GIS的硬件特點(diǎn),在輸出方面沒(méi)有打印、制圖等輸出功能。</p><p>  1.嵌人式GIS特征微型嵌入式GIS運(yùn)行平臺(tái)、軟件的要求與通用計(jì)算機(jī)的GIS平臺(tái)軟件有著明顯的不同;(1)軟件要求固態(tài)化存儲(chǔ)為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般

105、都固化在存儲(chǔ)器芯片中或單片機(jī)本身,而不是存貯于磁盤等載體中。高、片上存儲(chǔ)器容量不斷增加,但在大多數(shù)應(yīng)用中,存儲(chǔ)空間仍然是寶貴的,還存在實(shí)時(shí)性的要求。為此要求程序編寫和編譯工具的質(zhì)量要高,以減少程序二進(jìn)制代碼長(zhǎng)度,提高執(zhí)行速度,同時(shí)要求軟件具有很好的可靠性。3)操作系統(tǒng)軟件(OS)的高實(shí)時(shí)性是基本要求</p><p>  在多任務(wù)嵌入式系統(tǒng)中,對(duì)重要性各不相同的任務(wù)進(jìn)行統(tǒng)籌兼顧的合理調(diào)度是保證每個(gè)任務(wù)及時(shí)執(zhí)行的關(guān)鍵

106、,這種任務(wù)調(diào)度只能由優(yōu)化編寫的系統(tǒng)軟件來(lái)完成,因此系統(tǒng)軟件的高實(shí)時(shí)性是基本要求 。</p><p>  2. 嵌入式GIS的國(guó)內(nèi)外研究現(xiàn)狀在該領(lǐng)域國(guó)內(nèi)外都處于剛剛起步的研究階段,國(guó)內(nèi)的主要產(chǎn)品有超圖公司的eSuperMap、中地公司的MapGIS和靈圖嵌入式GIS,國(guó)外也有一些產(chǎn)品,代表性產(chǎn)品是ESRI的ArcPad。這些產(chǎn)品包括二次開(kāi)發(fā)工具都是在Windows CE平臺(tái)下運(yùn)行和開(kāi)發(fā)的。基于Windows CE平

107、臺(tái)的優(yōu)勢(shì)是開(kāi)發(fā)比較容易,開(kāi)發(fā)周期短,把運(yùn)行于PC Win—dows下的程序進(jìn)行一些刪減、修改就可以比較容易地移植到Windows CE平臺(tái)下,Windows平臺(tái)和Win.dows CE平臺(tái)下的許多函數(shù)和類庫(kù)基本是相同和相似的。此外,Windows現(xiàn)在PC市場(chǎng)的絕對(duì)優(yōu)勢(shì)占有率和影響力是許多公司采用windows CE平臺(tái)開(kāi)發(fā)嵌2)軟件代碼高質(zhì)量、高可靠性 入式GIS的重要原因。</p><p>  (二)、Embe

108、dGis系統(tǒng)組成</p><p> ?。ㄈ?、EmbedGis系統(tǒng)特點(diǎn)及不足</p><p>  嵌入式Linux較其他嵌入式操作系統(tǒng)的優(yōu)點(diǎn)主要有:</p><p>  1、可以免費(fèi)或廉價(jià)獲取實(shí)時(shí)操作系統(tǒng),可以修改操作系統(tǒng)內(nèi)核,定制符合自己需要的自主產(chǎn)權(quán)的操作系統(tǒng)。</p><p>  2、可應(yīng)用于多種硬件平臺(tái)原型可以在標(biāo)準(zhǔn)平臺(tái)上開(kāi)發(fā),然后移

109、植到具體的硬件上,加快了軟件與硬件的開(kāi)發(fā)過(guò)程。</p><p>  3、內(nèi)核占用小一個(gè)功能完備的Linux內(nèi)核要求大約1 MB內(nèi)存。而Linux微內(nèi)核只占用其中很小一部分內(nèi)存,包括虛擬內(nèi)存和所有核心的操作系統(tǒng)功能在內(nèi),只需占用Pentium CPU系統(tǒng)的100 K內(nèi)存。</p><p>  4、Linux操作系統(tǒng)源碼是開(kāi)放的Linux開(kāi)發(fā)團(tuán)體比RTOS(實(shí)時(shí)操作系統(tǒng))的供應(yīng)商更快地支持新的

110、IP協(xié)議和其他協(xié)議。用于Linux的設(shè)備驅(qū)動(dòng)程序要比用于商業(yè)操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序多,如網(wǎng)絡(luò)接口卡(NIC)驅(qū)動(dòng)程序以及并口和串口驅(qū)動(dòng)程序。</p><p>  5、Linux操作系統(tǒng)本身的微內(nèi)核體系結(jié)構(gòu)簡(jiǎn)單并內(nèi)置網(wǎng)絡(luò)支持網(wǎng)絡(luò)和文件系統(tǒng)以模塊形式置于微內(nèi)核的上層。驅(qū)動(dòng)程序和其他部件可在運(yùn)行時(shí)作為可加載模塊編譯到或是添加到內(nèi)核上,這為構(gòu)造定制可嵌入系統(tǒng)提供了高度模塊化的構(gòu)件方法。從以上分析可以看出,嵌入式Linux

溫馨提示

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

評(píng)論

0/150

提交評(píng)論