WFS 和WMS的區別
WFS是基於地理要素級別的數據共享和數據操作,WFS規范定義了若干基於地理要素(Feature)級別的數據操作接口,並以 HTTP 作為分布式計算平台。通過 WFS服務,客戶端可以得到矢量數據格式描述的單個地理要素的空間數據或要素集的空間數據,並可以對單個地理要素進行編輯、 刪除、 添加等數據操作。WFS采用 GML描述地理要素特征, 根據用戶請求的內容返回 GML描述的空間數據。
OpenGIS的WFS實施規范為下一步操作邏輯提供支持,提出了描述使用了分布式計算平台HTTP地理特征數據處理操作界面。數據處理操作包括以下能力:
- 創建一個新功能實例
- 刪除功能實例
- 更新功能的實例
- 獲取或查詢功能,對空間和非空間的限制
WFS規范定義了 6 個基本操作:
- GetCapabilities操作 返回描述 WFS 服務元數據的XML文檔, 服務元數據描述了該 WFS服務可以提供的地理要素類型以及針對每個要素類型的操作;
- DescribeFeatureType操作 返回WFS能夠提供的地理要素類型的GML應用模式描述文檔;
- GetFeature操作 根據用戶查詢條件,從WFS中獲取地理要素,用戶可以設定空間和非空間查詢條件;
- Transaction 操作 為事務請求提供服務。用於描述地理數據變化的操作方法, 如創建、 修改和刪除地理要素的操作;
- LockFeature操作 WFS可以在一個事務處理期間鎖定一個地理要素類型中的一個或多個地理要素實例, 這使 WFS具有支持可序列化事務的能力;
- GetGmlObject 操作 一個 WFS 服務可能通過追蹤Xlinks 來獲取客戶請求所需的構成地理要素的子要素實例。
WMS:Web Map Server就是添加地圖服務:
Web 地圖服務(WMS)能夠根據用戶的請求返回相應的地圖(包括PNG,GIF,JPEG等柵格形式或者是SVG和WEB CGM等矢量形式)。WMS支持網絡協議HTTP,所支持的操作是由URL定義的。
有三個重要操作GetCapabilities,GetMap,GetFeatureinfo。
WMS是OGC標准中比較簡單也是比較重要的標准之一。它全稱是“Web Map Service”(網絡地圖服務)。此標准主要定義了用於創建和顯示地圖圖像的三大操作:GetCapabilities(獲取服務能力), GetMap(獲取地圖)和GetFeatureInfo(獲取對象信息)。其中GetMap為核心操作,此操作得到一幅地圖圖像。
2 GetMap請求
操作根據客戶端發出的請求參數在服務端進行檢索,服務器返回一個地圖圖象,其地理空間參數和大小是已經明確定義的,返回的地圖圖象可以是GIF,JPEG,PNG或SVG格式的;
GetMap請求類似於在Web上請求一幅圖像,但它的請求參數更加復雜。下面是一個樣例請求:
LAYERS:該參數值是一個逗號分隔的列表,列表元素為有效圖層名稱。這些名字應該是在服務元數據中 的<Layer><Name>元素中已經定義過的字符內容。WMS在繪制map的時候,應該將該列表最左邊的層放到層棧的最底 部,下一個放在前一個的上面,依此類推。其中可選的<LayerLimit>元素在服務元數據中為一個正數。表明了客戶端在一次GetMap 請求中允許請求的最大圖層數。如果忽略了該元素,則服務器沒有該限制。
STYLES:以逗號分隔的列表形式表示的請求的每一圖層的STYLE。STYLE值應該有效,並且STYLE值與LAYERS參數值總是一一對應 的。所以,每個map都是按照LAYERS的STYLE繪制各個layer,而各個Layer的名稱必須符合默認的混合形式,則在STYLE參數中應該用 逗號來分隔一個空值(如”STYLE=style1,style2”),如果服務器為一個layer發布多個Style,而客戶端發送了一個默認 style的請求,選擇哪個style作為默認值就是服務器的標准了。元數據中styles的順序並不能表明哪個為默認的值。客戶端開發人員應該最大限度 地減少用戶不注意地請求或無意識地獲得扭曲的地圖。
CRS:CRS參數聲明了應用到BBOX請求參數的層CRS。該參數的值必須為所請求的服務器元數據中已經定義過或從請求層中繼承過的.。WMS不 必支持所有的CRS,但是,對於其已經在服務元數據發布的CRS應該支持。如果客戶請求其不支持的CRS,服務器應該返回一個異常 (code=”InvalidCRS”) 。如果WMS服務已經聲明了一個層的CRS=CRS:1,如前所述,表示該層沒有定義好一個坐標參考系統,因此不能與其他層聯合顯示。客戶端應該在 GetMap中指定CRS=CRS:1,否則,服務器可能發送一個服務異常。當CRS在 請求中使用時,BBOX參數的單位應該為像素。
BBOX:該參數允許客戶請求一個特定的Bounding Box。該參數的值為逗號分隔的一串實數列表,形如:”minx,miny, maxx, maxy”,它們分部代表請求圖層CRS下的區域坐標:最小x、最小y、最大x、最大y。其x、y軸的單位、方向、增量都在層CRS中定義。 BoundingBox和map像素矩陣之間的關系是BoundingBox包圍在像素矩陣的外邊,而不是通過地圖周邊像素的中心,在該內容中,單個像素 描述地面的一個區域。
FORMAT:該強制參數聲明了地圖的要求格式。WMS服務器支持的GetMap請求格式值在服務元數據中 以<Request><GetMap><Format>形式列出。<Format>的整個MIME字符 串值被用來表示FORMAT參數的值,而這個值沒有默認值。在HTTP環境下,MIME類型應該使用內容類型實體頭文件設置為返回對象。如果請求指定了一 個服務器不支持的格式,服務器應該發送一個服務異常(code = ”InvalidFormat” )。
WIDTH、HEIGHT:該強制參數指定產生的地圖整數值大小,單位為像素。Map CS適用於map,WIDTH-1指定了Map CS中x軸方向的最大值,而HEIGHT-1則為y軸方向的最大值.。如果請求的格式為picture,則返回的圖片將不考慮MIME類型,准確地為指定 的width和height像素值。在這種情況下,如果BBOX的比率和width/height的比率不一致時,WMS將會拉伸返回的地圖以使得最終像 素能夠在BBOX比率下自動生成。換句話說,就是使得在一個輸出像素不是方形的,或者拉伸圖像區域到不同比率的設備上也能夠使用該定義去請求一幅地圖。如 果WIDTH/HEIGHT比率與X、Y以及像素尺寸的比率不一致,那么就會發生圖像扭曲。
TRANSPARENT:該可選參數定義地圖背景是否透明,可取值:”TRUE” 和FALSE”,默認和參數缺省時取值:FALSE.。繪制透明像素地能力使得不同的地圖請求可以被疊置生成一個復合地區。強烈推薦每個WMS提供一種可 以提供透明圖層的格式以使得圖層可以與其他圖層疊置.。注意:image/gif格式具有透明性並且可以讓通常客戶完全顯式。image/png格式提供 一個范圍內的意義的點,或實體將不能設成透明的,而客戶端可能仍然請求TRANSPARENT=TRUE當FORMAT參數包含一個圖形元素格 式,TRANSPARENT參數可能在請求中出現,但其設置值將會被WMS忽略。
BGCOLOR:該可選參數為一個字符串,用來指定地圖將要使用的背景色(無數據區)。BGCOLOR通常的格式為一個RGB值的十六進制編碼,其 中對於每個顏色值red、green和blue使用兩個十六進制字符,所以該值的范圍為00到FF(十進制的0和255)。其 格式為oxRRGGBB,RRGGBB大小寫都是允許的。而”0x”必須為小寫的”x”,如果該參數在請求中缺失,則默認的值為oxFFFFFF(對應的 值為白色)。當FORMAT值為圖像格式時,服務器應該設置背景像素值為BGCOLOR值,當FORMAT的值為圖形元素格式(它們沒有顯式的背景),或 者圖像格式時,WMS應該避免為前景元素使用BGCOLOR值,因為這樣在該背景顏色下,它們將不可見。當圖層已經確定為不透明”opaque”時,地圖 上的重要點、實體將不顯式任何背景。
如果參數設置錯誤,將返回一個XML文件來描述錯誤信息。如下所示:
<ServiceExceptionReport version="1.1.1">
<ServiceException code="">
WIDTH and HEIGHT incorrectly specified
</ServiceException>
</ServiceExceptionReport>
3 GetCapabilities請求
該操作的目的在於獲取服務元數據,元數據是對服務器信息內容和可接受的請求參數值的一種機器可讀性(並且可以人讀)描述。
GetCapabilities操作的參數GetCapabilities操作的參數詳解:
FORMAT:該可選參數規定服務元數據的格式要求。WMS服務器上GetCapabilities請求支持的值由服務元數據中的一個或多 個<Request><GetCapabilities><Format>元素列出.。如果請求描述的格式不被服務 器支持,服務器應該返回默認的text/xml格式。
VERSION:確定請求服務的版本。
SERVICE:該強制性參數指示哪個可用的服務類型將被激活,在WMS上當激活一個GetCapabilities時,值”WMS”就應該被使用。
REQUEST:要激活GetCapabilities操作,值”GetCapabilities”就應該被用到。
UPDATESEQUENCE:該可選參數是為維持緩沖區一致而設置的,它的值可以為一個代表一個符合ISO 8601:2004格式(原文附錄D)的時間標簽(timestamp)的integer、string或者其他string。服務器可能包含一個 UpdateSequence值於服務元數據中,如果這樣,當Capablities被改變(e.g.當新的maps添加到給服務中)的時候,這個值應該 被增加。客戶端可能在其GetCapabilities請求中包含該參數。
4 GetFeatureInfo請求
GetFeatureInfo是一個可選操作。它只支持可查詢屬性被定義或繼承為“1”(真)的層。客戶端不得向其他層發出 GetFeatureInfo要求。如果一個WMS收到一個GetFeatureInfo請求,但不支持它,它會回應一個格式正確的服務異常反應(XML 代碼= OperationNotSupported)。
GetFeatureInfo操作設計的目的是為一個WMS的客戶端提供更多返回地圖請求的地圖要素的信息。GetFeatureInfo典型用 例,一個用戶看到一個地圖請求響應,在地圖上選擇一個點(I,j)來獲取更多信息。基本操作為客戶端提供指定哪個像元被訪問, 哪個層應該進行調查,信息應該返回什么樣格式的功能。因為WMS的協議是無狀態的, 對於WMS,GetFeatureInfo請求通過包括大部分原始GetMap請求參數(除了VERSION和REQUEST)表明用戶正預覽的是什么地 圖。從GetMap請求下的空間范圍信息((BBOX,,CRS,,WIDTH,,HEIGHT)來看,隨着用戶選擇的I、J點的變化,WMS返回關於位 置的附加信息。
GetFeatureInfo的請求參數GetFeatureInfo的請求參數詳解:
QUERY_LAYERS:QUERY_LAYERS參數規定查詢的圖層。它的值是一個以逗號分隔的一個或多個圖層列表。此參數應至少包含1個圖層的名稱,但也可以包含比原來的GetMap請求的層少。如果在QUERY_LAYERS中規定查詢的圖層沒有在WMS中的元數據中被定義,將返回服務異常(code = LayerNotDefined)。
INFO_FORMAT:INFO_FORMAT參數表示返回的特征信息時使用何種格式。WMS服務器支持的GetFeatureInfo請 求格式值在服務元數據中以<Request><FeatureInfo><Format>形式列 出。<Format>的整個MIME字符串值被用來表示INFO_FORMAT參數的值,而這個值沒有默認值。在HTTP環境下,MIME類 型應該使用內容類型實體頭文件設置為返回對象。如果請求指定了一個服務器不支持的格式,服務器應該發送一個服務異常(code = ”InvalidFormat” )。
FEATURE_COUNT:FEATURE_COUNT參數規定在返回的每個圖層中所允許包含的特征數據量的最大值。
I,J:指示興趣點,這是根據地圖的CS定義,I和J是地圖坐標系統中的一個坐標,因此I的值應介於0與i軸的最大值,J值應介於0和第j軸的最大 值,點I = 0,J = 0表示該像素在地圖的左上角,I向右增加而J向下增加。點(I,J)表示所指示的像素的中心。如果j或者I值無效,則服務器會發出一個服務異常(code = InvalidPoint)。
5 參考資料
(1)OGC WMS規范文本. http://www.opengeospatial.org/standards/wms
(2)開源用於訪問OGC WMS WFS的JS庫OpenLayers. http://openlayers.org/
WCS(Web Coverage Service,網絡覆蓋執行規范)
WCS面向空間影像數據,它將包含地理位置值的地理空間數據作為“覆蓋物(COverage)“在網上相互交換。網絡覆蓋服務由三種操作組成:GetCapabilities,GetCoverage和DescribeCoverageType。
- GetCapabilities操作返回描述服務和數據集的XML文檔。
- GetCoverage操作是在GetCapabilities確定什么樣的查詢可以執行、什么樣的數據能夠獲取之后執行的,它使用通用的覆蓋格式返回地理位置的值或屬性。
- DescribeCoverageType操作允許客戶端請求由具體的WCS服務器提供的任一覆蓋層的完全描述。
至此,空間數據互操作的接口規范WMS、WFS和WCS已經介紹完畢,這些都是一些理論的東西,大家可以選擇粗略看看,也可以更深入地去學習和理 解。當然,如果需要深入學習和理解應用的,緊靠這一節的內容是遠遠不夠的。此外,考慮到WMS使用得最為頻繁,我在本文中着重介紹了WMS服務的規范和請 求參數,希望有所助益。
除了本文所介紹的三種協議外,GeoServer還支持TMS、WMS-C、WMTS等多個協議,此外,Web Processing Server(WPS)作為新近推出的標准,也有了越來越廣泛的使用,對於這些內容,最好的學習之處還是OGC的官網 (http://www.opengeospatial.org/),本文的大部分內容也是參考翻譯於此,感興趣的朋友可以多多前往學習。
Web地理覆蓋服務(WCS):提供的是包含了地理位置信息或屬性的空間柵格圖層,而不是靜態地圖的訪問。
根據HTTP客戶端要求發送相應數據,包括影像,多光譜影像和其它科學數據.
有二個重要操作GetCapabilities,GetCoverage
GetCapabilities返回一個描述服務和XML文檔,從中可獲取覆蓋的數據集合。
GetCoverage是在GetCapabilities確定查詢方案和需要獲取的數據之后執行,返回覆蓋數據。
還有可選操作DescribeCoverageType。
WCS對應基於柵格數據的功能,與WMS基於矢量數據的特點相對應。
Web Coverage Service (WCS) 網絡地理場數據服務
OGC® Web Coverage Service (WCS) 接口標准定義了一套標准接口和操作用於提供和獲取可共用的網絡地理場數據服務。“Grid coverages”柵格數據通常指衛星圖片、數字航攝圖片、數字高程模型及其它使用各個點的數值模型表達的信息(http://www.opengeospatial.org/standards/wcs)。
WCS 為數據服務標准。該服務使得數字高程等柵格數據能夠以 HTTP 接口上的標准請求檢索,並以元數據和 GeoTIFF、NetCDF 等二進制圖形數據返回。
Style Layer Descriptor (SLD) 圖層樣式注記
OGC® Styled Layer Descriptor (SLD) 為地圖要素的標記樣式提供指導。它常用於 Web Map Services 網絡地圖服務的渲染以及 GML(來自 WFS)的要素的樣式處理。(http://www.opengeospatial.org/standards/sld)
精細的樣式控制對用許多地理信息服務至關重要。這要求一種客戶端和服務器端均能使用的樣式注記語言。
目前 OGC Web Map Service (WMS) 標准已經內建了一部分樣式。然而,這種實現只能對用戶傳輸樣式的名稱。具體的樣式信息並沒有一致的規范,也無法實現自定義。 OGC Symbology Encoding (SE) 符號編碼標准 (http://www.opengeospatial.org/standards/symbol) 規定了一種用戶和服務器均能解釋的注記語言。WMS 的 SLD 部分使得 SE 可通過 WMS 操作對 WMS 圖層應用樣式。同時,SLD 定了標准的圖例獲取方法,使其能夠遠程獲取。
除了對 WMS 配置樣式,SE 也用於 WFS 和 WCS 。
Geography Markup Language (GML) 地理注記
GML (http://www.opengeospatial.org/standards/gml) 是一種 XML 語法,用於表述地理要素。它既是 GIS 系統的數據類型,也是網絡中公開交換地理信息的媒介。它不僅包含了傳統的矢量信息,也包含了觀測信息的某些成分,具有很高的通用性。
GML 原型有多種,各自適用於不同的用途:
- Feature 地理要素
- Geometry 幾何對象
- Coordinate Reference System 坐標系統
- Topology 拓撲對象
- Time 時間
- Dynamic feature 動態要素
- Coverage (including geographic images) 柵格數據
- Unit of measure 單位
- Directions 方向
- Observations 觀測
- Map presentation styling rules 樣式規則
理解 “Feature”、“Geometry” 和 “CRS” 是實現 GML 的核心。
Filter Encoding (FE) 過濾器編碼
OGC® Filter Encoding Standard (FE) 定義了表達空間信息查詢范圍的 XML 語法,是查詢可以根據一定的屬性篩選結果。(http://www.opengeospatial.org/standards/filter)
FE 查詢的結果可以被以特別的樣式標注或轉換成某種格式。XML 編碼在轉換成目標語言前可以輕松地解釋和驗證。FE 被應用在多種 OGC 網絡服務中,包括 WFS、CSW 和 SLD 。
過濾的屬性值可以是空間范圍,例如“尋找 Omstead 地區 Peter Vretanos 名下的所有產業”。對於時間的過濾如“選擇馬薩諸塞州 1900 年前建造的水壩”。另外也可以使用如“尋找巴黎所有度數在 20-24 攝氏度的溫度傳感器”的過濾器。
歡迎大家來我的新家看一看 3wwang個人博客-記錄走過的技術之路