在使用OpenLayers
調(diào)用geoserver
的服務(wù)的時(shí)候,用到了wms和wfs的服務(wù),開始由于忙著趕項(xiàng)目,也沒時(shí)間去具體了解這兩個(gè)具體的相關(guān)信息慎框,只是參考了OpenLayers
的文檔來直接寫代碼了,趁項(xiàng)目趕完了后添,就來初步了解下這兩個(gè)到底是什么笨枯。
WMS
web地圖服務(wù),是一個(gè)OGC的標(biāo)準(zhǔn)服務(wù),主要是用來請(qǐng)求地圖相關(guān)的數(shù)據(jù)猎醇,可以根據(jù)用戶設(shè)置不同的參數(shù),返回對(duì)應(yīng)的地圖數(shù)據(jù)努溃。該服務(wù)是一個(gè)基于HTTP協(xié)議的硫嘶,所支持的操作都是由URL決定的。請(qǐng)求示例如下所示:
http://localhost:8070/geoserver/cite/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&layers=cite%3Anc_d_a&WIDTH=256&HEIGHT=256&CRS=EPSG%3A3857&STYLES=&BBOX=12425603.318038251%2C3365675.22945288%2C12445171.197279256%2C3385243.108693885
基礎(chǔ)參數(shù)
首先通過OpenLayers
源碼中的TileWMS
來看下請(qǐng)求一個(gè)WMS
需要傳遞哪些參數(shù)梧税。在TileWMS.js
中沦疾,可以看到一個(gè)baseParams
的對(duì)象,如下所示:
var baseParams = {
'SERVICE': 'WMS',
'VERSION': DEFAULT_WMS_VERSION,
'REQUEST': 'GetFeatureInfo',
'FORMAT': 'image/png',
'TRANSPARENT': true,
'QUERY_LAYERS': this.params_['LAYERS']
};
1. SERVICE
服務(wù)類型第队,主要包括WMS
哮塞,WFS
,WMTS
凳谦,WCS
等服務(wù)忆畅,都是遵循OGC標(biāo)準(zhǔn)的服務(wù)。
2. VERSION
請(qǐng)求的WMS的版本號(hào)尸执,主要包括1.3.0
家凯、1.1.1
,1.1
等版本號(hào)如失。
3. REQUEST
- 請(qǐng)求方式绊诲,主要包括以下五種。
- 請(qǐng)求服務(wù)的元數(shù)據(jù)(GetCapabilities)
- 請(qǐng)求地圖圖像(GetMap)
- 請(qǐng)求關(guān)于地圖要素的信息(GetFeatureInfo褪贵,可選)
- 請(qǐng)求圖例(GetLegendGraphic掂之,可選)
- 請(qǐng)求用戶定義的樣式(GetStyles,可選)
前面三種比較常用脆丁。
4. FORMAT
MIME類型世舰,值為服務(wù)元數(shù)據(jù)的輸出格式,默認(rèn)為圖片槽卫。
5. TRANSPARENT
值為true或者false冯乘,用來表示地圖圖層是否透明(默認(rèn)情況下是不透明的)
6. QUERY_LAYERS
字符類型,值為查詢的一個(gè)或多個(gè)地圖圖層列表晒夹,多個(gè)圖層之間用”,”隔開裆馒。可以通過以下方式來動(dòng)態(tài)更新:
var source = wmsLayer.getSource();
source.clear();
var params = source.getParams();
params.layers = layers.join(',');
source.updateParams(params);
wmsLayer.setSource(source);
其它參數(shù)
1. LAYERS
字符類型丐怯,值為一個(gè)或多個(gè)地圖圖層列表喷好,多個(gè)圖層之間用”,”隔開
2. INFO_FORMAT
返回?cái)?shù)據(jù)的類型,如application/json
3. FEATURE_COUNT
返回結(jié)果中要素的數(shù)量读跷。
4. WIDTH
地圖圖片的寬度梗搅。
5. HEIGHT
地圖圖片的高度。
6. CRS
坐標(biāo)參考系。如EPSG:3857
7. STYLES
圖層的地圖渲染樣式无切。
8. BBOX
某個(gè)CRS下的地圖邊界范圍的坐標(biāo)序列
WFS
WFS
是Web
要素服務(wù)荡短,區(qū)分于WMS
,WMS
返回的是圖層級(jí)的地圖影像哆键,而WFS
返回的是要素級(jí)的GML
編碼掘托,并提供對(duì)要素的增加、修改籍嘹、刪除等事務(wù)操作闪盔,是對(duì)Web
地圖服務(wù)的進(jìn)一步深入。
請(qǐng)求方式
WFS
的請(qǐng)求方式主要有以下幾種:
- GetCapabilities
獲取WFS服務(wù)的元數(shù)據(jù)(介紹服務(wù)中的要素類和支持的操作) - DescribeFeatureType
獲取WFS服務(wù)支持的要素類的定義(要素類的元數(shù)據(jù)辱士,比如要素包含哪些字段) - GetFeature
獲取要素?cái)?shù)據(jù) - GetGmlObject
通過XLink獲取GML對(duì)象 - Transaction
創(chuàng)建泪掀、更新、刪除要素?cái)?shù)據(jù)的事務(wù)操作 - LockFeature
在事務(wù)過程中鎖定要素颂碘。
請(qǐng)求示例如下所示:
http://localhost:8070/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&outputFormat=application/json&typeName=cite:yj_j_p