<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rookie

    Headache English

    數(shù)據(jù)加載中……
    OpenGIS 介紹(轉(zhuǎn))
    最近在看 Geoserver ,這篇文章不錯(cuò),轉(zhuǎn)過來;

    此FOSS4G大會(huì)即將召開之日,最近我會(huì)在Blog上依次介紹一些OpenGIS標(biāo)準(zhǔn)、架構(gòu)及用于實(shí)現(xiàn)的軟件。一方面給初涉此行的朋友一個(gè)快速入門的概覽,另一方面也是對(duì)我接觸OpenGIS近一年來的總結(jié)。



    OpenGIS定義了一組基于數(shù)據(jù)的服務(wù),而數(shù)據(jù)的基礎(chǔ)是要素(Feature)。所謂要素簡單地說就是一個(gè)獨(dú)立的對(duì)象,在地圖中可能表現(xiàn)為一個(gè)多邊形建筑物,在數(shù)據(jù)庫中即一個(gè)獨(dú)立的條目。要素具有兩個(gè)必要的組成部分,幾何信息和屬性信息。OpenGIS將幾何信息分為點(diǎn)、邊緣、面和幾何集合四種:其中我們熟悉的線(Linestring)屬于邊緣的一個(gè)子類,而多邊形(Polygon)是面的一個(gè)子類。也就是說OpenGIS定義的幾何類型并不僅僅是我們常見的點(diǎn)、線、多邊形三種,它提供了更復(fù)雜更詳細(xì)的定義,增強(qiáng)了未來的可擴(kuò)展性。另外,幾何類型的設(shè)計(jì)中采用了組合模式(Composite),將幾何集合(GeometryCollection)也定義為一種幾何類型,類似地,要素集合(FeatureCollection)也是一種要素。屬性信息沒有做太大的限制,可以在實(shí)際應(yīng)用中結(jié)合具體的實(shí)現(xiàn)進(jìn)行設(shè)置。

    相同的幾何類型、屬性類型的組合成為要素類型(FeatureType),要素類型相同的要素可以被存放在一個(gè)數(shù)據(jù)源中。而一個(gè)數(shù)據(jù)源只能擁有一個(gè)要素類型。因此,可以用要素類型來描述一組屬性相似的要素。在面向?qū)ο蟮哪P椭校耆梢园岩仡愋屠斫鉃橐粋€(gè)類,而要素則是類的實(shí)例。

    通過GIS中間件可以從數(shù)據(jù)源中取出數(shù)據(jù),供WMS服務(wù)器和WFS服務(wù)器使用。
    WMS服務(wù)器接收請求,根據(jù)請求內(nèi)容的不同,可以返回不同格式的最終數(shù)據(jù)。例如,WMS可以返回常用圖片格式的地圖片段供最終用戶閱讀(類似Google Maps),其中地圖是根據(jù)一個(gè)樣式文件(SLD)生成的,它描述了地圖的線劃粗細(xì),色彩等;WMS也可以返回GeoRSS和KML用來和其它地圖服務(wù)互通。
    WFS服務(wù)器也可以接收請求,但WFS將返回GML格式的地理信息數(shù)據(jù)。GML是一種基于XML的數(shù)據(jù)格式,它可以完整的再現(xiàn)數(shù)據(jù),也是OpenGIS數(shù)據(jù)源的重要形式。也就是說,WFS返回的GML可以繼續(xù)作為數(shù)據(jù)源。在WFS請求中,OpenGIS定義了一個(gè)Filter標(biāo)準(zhǔn),用來實(shí)現(xiàn)對(duì)數(shù)據(jù)的篩選,使WFS更加靈活。另一方面,WFS還支持通過WFS-t提交客戶端對(duì)數(shù)據(jù)的修改。通俗地說,WMS是“只讀”的,而WFS則是可以讀寫的。

    草草說完,發(fā)現(xiàn)自己的理解也十分有限,如有謬誤,還望讀者不吝指正。另外還有WCS方面不曾涉及,要獲得更進(jìn)一步的了解,請下載OpenGIS的標(biāo)準(zhǔn)進(jìn)行閱讀。



    今天來說OpenGIS架構(gòu)的軟件、類庫實(shí)現(xiàn)情況。OpenGIS是一個(gè)開放標(biāo)準(zhǔn),不過它已經(jīng)不僅僅在開源世界發(fā)揮作用,許多商業(yè)軟件也支持了OpenGIS的標(biāo)準(zhǔn)。當(dāng)然,這里所提到的軟件全部都是開源軟件。

    幾何基礎(chǔ)類庫
    代表: JTS(Java), GEOS(C++), Shapely(Python)
    這類幾何基礎(chǔ)類庫主要實(shí)現(xiàn)的是OpenGIS的Simple Feature Access標(biāo)準(zhǔn),簡單地說他們就是對(duì)幾何類型(Geometry)進(jìn)行了一定程度的封裝。以JTS為例,它按照OpenGIS對(duì)于Geometry的描述實(shí)現(xiàn)了基于Java的接口和繼承關(guān)系,制作好了可以使用的類似Point、LineString這樣的類。另外這些類庫還普遍實(shí)現(xiàn)了OpenGIS的DE-9IM空間位置關(guān)系判斷和一些常用的計(jì)算幾何方法(如緩沖(buffer))。
    此類軟件是所有GIS類庫的基礎(chǔ),正如幾何是GIS的基礎(chǔ)之一一樣。

    數(shù)據(jù)源實(shí)現(xiàn)
    代表:PostGIS(PostgreSQL),MySQL Spatial
    數(shù)據(jù)源的實(shí)現(xiàn)主要是開源數(shù)據(jù)庫的空間擴(kuò)展。數(shù)據(jù)庫的空間擴(kuò)展不僅僅在數(shù)據(jù)表中支持幾何類型的存儲(chǔ),而且更提供了SQL級(jí)別的集合關(guān)系判斷,例如,可以直接利用SQL查詢在某個(gè)多邊形內(nèi)的點(diǎn)。

    中間件
    代表:GeoTools(Java)
    中間件在系統(tǒng)中扮演連接數(shù)據(jù)和服務(wù)的角色。GeoTools承擔(dān)了從各種數(shù)據(jù)源(如PostGIS,GML,Shapefile,WFS)讀取數(shù)據(jù)并將數(shù)據(jù)標(biāo)準(zhǔn)化的工作。Feature接口就定義在GeoTools中,不同數(shù)據(jù)源的數(shù)據(jù)讀出后被統(tǒng)一成包含一個(gè)Geometry成員(定義在JTS中)的Feature接口的實(shí)現(xiàn)。這樣,進(jìn)一步的操作只需面向Feature即可,省去了高層軟件對(duì)于不同數(shù)據(jù)源的解讀過程。另外,GeoTools還是OpenGIS標(biāo)準(zhǔn)的全面實(shí)現(xiàn),其中包括Filter、坐標(biāo)轉(zhuǎn)換、GML。

    WMS/WFS服務(wù)器
    代表: GeoServer(Java),MapServer(PHP)
    地圖服務(wù)器扮演向網(wǎng)絡(luò)中的客戶端提供地圖服務(wù)的角色。這類地圖服務(wù)器可以接收統(tǒng)一規(guī)范的WMS和WFS請求(request),返回多種格式的數(shù)據(jù)。這個(gè)過程有WMS/WFS規(guī)范的嚴(yán)格規(guī)定,所以,對(duì)客戶端來說其地圖服務(wù)器的實(shí)現(xiàn)究竟是什么并不會(huì)造成太大影響。這樣的規(guī)范,為公共的、聯(lián)合的地圖服務(wù)創(chuàng)造了可能。

    客戶端
    代表:OpenLayers/MapBuilder(JavaScript),uDig(Java),QGIS(C++)
    客戶端分為瀏覽器和桌面客戶端程序兩種。以O(shè)penLayers為代表的B/S系統(tǒng)客戶端現(xiàn)在已經(jīng)非常強(qiáng)大,它可以封裝WMS請求,在瀏覽器上實(shí)現(xiàn)地圖的切片載入功能。另外拖動(dòng)、縮放都功能也非常完善,可以實(shí)現(xiàn)跨瀏覽器操作。最近的OpenLayers版本還支持了矢量編輯功能,可以通過WFS-t提交。而傳統(tǒng)的桌面客戶端程序功能則更加強(qiáng)大,支持多種包括WMS和WFS在內(nèi)的數(shù)據(jù)源,另外編輯功能、操作性也要比瀏覽器中的強(qiáng)大。


    Shapefile
    ESRI的Shapefile格式是GIS矢量文件格式的事實(shí)標(biāo)準(zhǔn),通常由.shp, .shx, .prj, .dbf等文件組成。OpenGIS的實(shí)現(xiàn)軟件普遍支持Shapefile的讀寫。Shapefile在GeoServer中可以直接作為數(shù)據(jù)源,但是這種方式并不被推薦,原因很簡單,基于文件的數(shù)據(jù)源可能造成性能不佳和數(shù)據(jù)丟失。

    GML
    GML是OpenGIS的標(biāo)準(zhǔn)規(guī)范之一,它基于xml描述地理數(shù)據(jù)。于Shapefile相比,xml更容易讀寫,易于在網(wǎng)絡(luò)中以各種形式傳播。同時(shí),xml還具有可讀性,人可以理解和辨識(shí)。GeoTools實(shí)現(xiàn)了GMLDataStore,因此在GeoServer中GML也可以直接作為數(shù)據(jù)源(需要下載GML擴(kuò)展)。同時(shí),GML的數(shù)據(jù)源為數(shù)據(jù)源動(dòng)態(tài)化提供了實(shí)現(xiàn)的思路和可能性。

    PostGIS
    PostGIS是加拿大Refractions公司支持的開源項(xiàng)目,它為開源數(shù)據(jù)庫PostgreSQL提供了空間支持。PostGIS安裝后,PostgreSQL中出現(xiàn)一個(gè)模版數(shù)據(jù)庫,新建空間數(shù)據(jù)庫時(shí)只需以PostGIS為模版即可。PostGIS在SQL級(jí)別上實(shí)現(xiàn)了基本的空間運(yùn)算功能。另外絕大多數(shù)開源GIS軟件(即使是不嚴(yán)格遵守OpenGIS標(biāo)準(zhǔn)的)都支持PostGIS數(shù)據(jù)表的直接載入,讀寫等功能。毋庸置疑,PostGIS是OpenGIS數(shù)據(jù)源最佳實(shí)現(xiàn)。

    MySQL Spatial
    MySQL是開源數(shù)據(jù)庫的大鱷,從MySQL4.0開始加入了Spatial擴(kuò)展功能,實(shí)現(xiàn)了OpenGIS規(guī)定的幾何數(shù)據(jù)類型,在SQL中的簡單空間運(yùn)算。但是從4.0之后到現(xiàn)在,MySQL的Spatial部分一直沒有繼續(xù)的更新和增強(qiáng)。加上早先MySQL在SQL上對(duì)空間運(yùn)算支持的不完善(只支持基于最小外接矩形的關(guān)系判斷),所以MySQL是開源數(shù)據(jù)源中一個(gè)不太讓人滿意的選擇。不過由于MySQL在小型項(xiàng)目上的廣泛引用,在一些情況下也是可以以MySQL為數(shù)據(jù)源的。

    db4o?: 對(duì)象數(shù)據(jù)庫作為數(shù)據(jù)源的可能性
    OpenGIS的系統(tǒng)架構(gòu)完全是基于一個(gè)面向?qū)ο蟮哪P偷模鴤鹘y(tǒng)的關(guān)系數(shù)據(jù)庫、Shapefile文件是現(xiàn)在應(yīng)用的主流。在地理描述的過程中,關(guān)系數(shù)據(jù)庫的特性并沒有被完全發(fā)揮,而為此還需要有中間件做ORM的工作。試想直接將FeatureType和Features以對(duì)象形式存入對(duì)象數(shù)據(jù)庫,整個(gè)系統(tǒng)至少在理論上可以減少一層。不過,以對(duì)象數(shù)據(jù)庫作為數(shù)據(jù)源,還需要對(duì)象數(shù)據(jù)庫的性能進(jìn)一步提升。而之后的和已有軟件的對(duì)接應(yīng)該不成問題,因?yàn)閐b4o可以直接存儲(chǔ)Feature對(duì)象和Geometry對(duì)象。
    但是因此產(chǎn)生的數(shù)據(jù)對(duì)實(shí)現(xiàn)的依賴性又是一個(gè)問題:數(shù)據(jù)和實(shí)現(xiàn)緊密耦合,數(shù)據(jù)中捆綁了代碼,雖然db4o號(hào)稱支持Java和.NET的的互操作,但是對(duì)于其它實(shí)現(xiàn)來說又成了問題。從這個(gè)角度來說,對(duì)象數(shù)據(jù)庫作為數(shù)據(jù)源是一種倒退。

    為什么沒有KML?
    KML作為一種新的標(biāo)準(zhǔn)(沒有在意最后是否通過),它的作用主要是網(wǎng)絡(luò)中地理信息的傳輸。KML是一種面向客戶端設(shè)計(jì)的數(shù)據(jù)形式,這是它不能取代GML地位的原因,同時(shí)也是它在GoogleEarth和很多地圖應(yīng)用上遠(yuǎn)強(qiáng)于GML的原因。對(duì)照一下KML和GML的形式就很容易理解,GML將屬性數(shù)據(jù)存儲(chǔ)為Element,而KML則是以超文本的形式存儲(chǔ)屬性數(shù)據(jù),前者便于數(shù)據(jù)讀取,后者便于客戶端表現(xiàn)。于KML很類似的就是GeoRSS,效果是相似的。

    posted on 2008-01-08 13:36 zhhang920 閱讀(507) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA基礎(chǔ)

    主站蜘蛛池模板: 亚洲高清有码中文字| 久久精品网站免费观看| 久久99精品免费视频| 久久永久免费人妻精品下载 | 亚洲成色在线影院| 亚洲国产精品yw在线观看| 久久国产精品亚洲一区二区| 亚洲蜜芽在线精品一区| 亚洲老熟女五十路老熟女bbw| 亚洲AV综合色区无码二区偷拍 | 亚洲精品456人成在线| 美女免费视频一区二区| 最近免费mv在线观看动漫| 国产成人精品免费视| 最近中文字幕mv免费高清在线 | 亚洲A丁香五香天堂网| 亚洲av无码一区二区三区网站 | 亚洲AV午夜成人片| 亚洲人成小说网站色| 午夜在线免费视频| 一级女人18片毛片免费视频| 一级毛片不卡片免费观看| 美女内射无套日韩免费播放| 午夜免费福利视频| 日韩免费视频网站| 国产乱子影视频上线免费观看| 日日AV拍夜夜添久久免费| 国产亚洲综合一区柠檬导航| 亚洲国语精品自产拍在线观看| 亚洲国产第一页www| 亚洲精品中文字幕| 特级毛片免费播放| 88av免费观看入口在线| 亚洲av无码成人精品区在线播放 | 亚洲国产精品成人久久| 亚洲AV无码不卡无码| 国产在亚洲线视频观看| 乱人伦中文视频在线观看免费| 久久av免费天堂小草播放| 一个人免费高清在线观看| 国产午夜影视大全免费观看|