日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

网络地图服务(WMS)详解

發(fā)布時(shí)間:2024/1/16 windows 46 coder
生活随笔 收集整理的這篇文章主要介紹了 网络地图服务(WMS)详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄
  • 1.概述
  • 2.GetCapabilities
  • 3.GetMap
  • 4.GetFeatureInfo

閱讀本文之前可參考前文:《地圖服務(wù)器GeoServer的安裝與配置》與《GeoServer發(fā)布地圖服務(wù)(WMS、WFS)》。

1.概述

經(jīng)過(guò)前文的介紹,相信我們對(duì)WMS/WFS服務(wù)已經(jīng)有了一個(gè)非常直觀的認(rèn)識(shí),最起碼我們知道了地圖服務(wù)的數(shù)據(jù)從何而來(lái),又是如何發(fā)布出去的。更進(jìn)一步的說(shuō),OGC給WMS/WFS分別定義了非常詳盡的標(biāo)準(zhǔn)規(guī)范,其主要內(nèi)容是通過(guò)HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議 )實(shí)現(xiàn)的各種操作。在這里,我們要介紹的WMS支持標(biāo)準(zhǔn)HTTP的Get和Post請(qǐng)求,不過(guò)通常情況下基于GET方式(將參數(shù)以鍵值對(duì)的形式放置在URL中)進(jìn)行服務(wù)請(qǐng)求較為方便。

HTTP協(xié)議用于客戶端和服務(wù)器之間的通信,為了滿足各種各樣的通信需求,HTTP協(xié)議規(guī)定了多種不同的請(qǐng)求方法,其中Get和Post是最基礎(chǔ)的兩種。Get用于請(qǐng)求已被URI識(shí)別的資源,Post則用來(lái)傳輸實(shí)體的主體,兩者的功能比較相近,但其實(shí)有著不小的區(qū)別。不過(guò)在本文中,我們將會(huì)主要看到這個(gè)區(qū)別:Get請(qǐng)求是將參數(shù)拼接到URL上進(jìn)行參數(shù)傳遞的,而POST是將參數(shù)寫(xiě)入到請(qǐng)求正文中傳遞的;因此,Get請(qǐng)求有URL長(zhǎng)度的限制,通常用于查詢;Post請(qǐng)求則沒(méi)有長(zhǎng)度限制,通常用于增添、刪除和修改。

根據(jù)《OpenGIS Web Map Server Implementation Specification》的1.3.0版本,WMS主要支持如下幾種操作,如下表1所示所示:

【表1 WMS支持的操作】

操作 必要性 描述
GetCapabilities 必要 查詢服務(wù)的元數(shù)據(jù),包括支持的操作、參數(shù)、以及圖層列表等
GetMap 必要 檢查詢指定區(qū)域和內(nèi)容的地圖圖像
GetFeatureInfo 可選 查詢地圖上像素位置的基礎(chǔ)數(shù)據(jù),包括幾何和屬性值

2.GetCapabilities

GetCapabilities操作的目的是獲取服務(wù)的元數(shù)據(jù),主要包括WMS服務(wù)器提供的操作、請(qǐng)求參數(shù)等信息。GetCapabilities請(qǐng)求的參數(shù)如下表2所示:

【表2 WMS GetCapabilities請(qǐng)求參數(shù)】

請(qǐng)求參數(shù) 必要性 描述
VERSION=version 可選 請(qǐng)求的版本:值是1.1.0,1.1.1,1.3.0三者之一。
SERVICE=WMS 必要 服務(wù)的類型。
REQUEST=GetCapabilities 必要 請(qǐng)求操作的名稱。
FORMAT=MIME_type 可選 服務(wù)元數(shù)據(jù)的格式。
UPDATESEQUENCE=string 可選 用于緩存控制的序列號(hào)或字符串。

根據(jù)表2所示的參數(shù),我們?cè)跒g覽器中輸入如下地址:

http://localhost:8080/geoserver/ows?service=WMS&version=1.3.0&request=GetCapabilities

瀏覽器響應(yīng)的結(jié)果如下圖所示??梢钥吹椒祷氐慕Y(jié)果其實(shí)是一個(gè)XML文件,這個(gè)文件中描述的就是WMS服務(wù)具體的元數(shù)據(jù)信息。

3.GetMap

GetMap操作用于請(qǐng)求服務(wù)器生成地圖并返回,這個(gè)操作也是WMS服務(wù)最主要的功能。不難想象,為了保證正確的輸出結(jié)果,我們必須配置足夠多的參數(shù),比如地理范圍,空間參考、輸出寬高以及格式等。具體的請(qǐng)求參數(shù)如下表3所示:

【表3 WMS GetMap請(qǐng)求參數(shù)】

請(qǐng)求參數(shù) 必要性 描述
VERSION=1.3.0 必要 請(qǐng)求的版本。
REQUEST=GetMap 必要 請(qǐng)求操作的名稱。
LAYERS=layer_list 必要 一個(gè)或多個(gè)地圖圖層列表,使用逗號(hào)分隔。
STYLES=style_list 必要 渲染樣式列表,使用逗號(hào)分隔。
CRS=namespace:identifier 必要 坐標(biāo)參考系統(tǒng)。
BBOX=minx,miny,maxx,maxy 必要 邊界框包圍盒(從左下到右上,使用CRS的單位)。
WIDTH=output_width 必要 地圖圖像的寬度。
HEIGHT=output_height 必要 地圖圖像的高度。
FORMAT=output_format 必要 地圖的輸出格式。
TRANSPARENT=TRUE|FALSE 可選 地圖背景透明度(默認(rèn)不透明)。
BGCOLOR=color_value 可選 背景顏色的十六進(jìn)制紅綠藍(lán)顏色值(默認(rèn)白色)。
EXCEPTIONS=exception_format 可選 WMS報(bào)告異常的格式(默認(rèn)為XML)。
TIME=time 可選 圖層需要的時(shí)間值。
ELEVATION=elevation 可選 圖層需要的高程值。
Other sample dimension(s) 可選 其他維度的值,備用。

這些參數(shù)具體的參數(shù)值可以參考GetCapabilities操作返回的XML文件。例如,我們填充好所有的必要參數(shù),在瀏覽器中輸入如下地址來(lái)訪問(wèn)前文中配置好的矢量數(shù)據(jù)集:

http://localhost:8080/geoserver/wms?
VERSION=1.3.0
&REQUEST=GetMap
&LAYERS=test:multipolygons
&STYLES
&CRS=EPSG:4326
&BBOX=38.8920794,-77.0495419,38.9096339,-77.0199063
&WIDTH=768
&HEIGHT=454
&FORMAT=image/png

這時(shí),瀏覽器就會(huì)返回一個(gè)PNG格式的圖像地圖文件,如下圖所示。GetMap響應(yīng)的地圖圖像大小、格式等并不是固定的,具體取決于請(qǐng)求的參數(shù)。如果我們對(duì)矢量和柵格足夠熟悉的話,我們能大概猜出WMS服務(wù)返回地圖文件大概的處理算法流程:

  1. 由于數(shù)據(jù)源是矢量數(shù)據(jù),所以我們關(guān)鍵是矢量柵格化的算法。
  2. 根據(jù)傳遞的參數(shù)坐標(biāo)參考系統(tǒng)CRS、地理范圍BBox、寬WIDTH以及高HEIGHT足夠幫助我們確定一個(gè)柵格數(shù)據(jù)集。
  3. 通過(guò)矢量柵格化算法對(duì)柵格數(shù)據(jù)集填充像素值,這中間涉及到圖像的重采樣操作。
  4. 最后將柵格數(shù)據(jù)集的文件流傳輸?shù)綖g覽器端。

如果我們想訪問(wèn)前文中配置好的柵格數(shù)據(jù)集,URL請(qǐng)求參數(shù)大致相同,如下所示:

http://localhost:8080/geoserver/wms?
VERSION=1.3.0
&REQUEST=GetMap
&LAYERS=test:japan_tmo_2011057_geo
&STYLES
&CRS=EPSG:4326
&BBOX=23.034667983398435,120.15380860839844,52.990722641601565,153.88916014160156
&WIDTH=768
&HEIGHT=682
&FORMAT=image/png

此時(shí),瀏覽器也會(huì)返回一張PNG格式的圖像地圖,如下圖8.30所示:

有一點(diǎn)要注意的是在WMS另一個(gè)廣泛使用的版本1.1.1中,邊界框包圍盒的參數(shù)BBOX的x、y坐標(biāo)順序是與1.3.0版本是相反的,WMS版本1.1.1的請(qǐng)求URL如下所示:

http://localhost:8080/geoserver/wms?
VERSION=1.1.1
&REQUEST=GetMap
&LAYERS=test:multipolygons
&STYLES
&CRS=EPSG:4326
&BBOX=-77.0495419,38.8920794,-77.0199063,38.9096339
&WIDTH=768
&HEIGHT=454
&FORMAT=image/png

這個(gè)問(wèn)題與GDAL2.0升級(jí)3.0版本時(shí)地理坐標(biāo)系相關(guān)參數(shù)x和y需要進(jìn)行調(diào)換有點(diǎn)類似,經(jīng)過(guò)查閱相關(guān)資料才知道,原因是要保證x和y的順序要與坐標(biāo)參考系定義的軸順序保持一致。但是在筆者看來(lái),這種設(shè)計(jì)多少有點(diǎn)破壞向下兼容的原則。

4.GetFeatureInfo

GetFeatureInfo是可選操作,用于查詢地圖上給定位置的空間和屬性信息。這個(gè)操作有點(diǎn)類似于鼠標(biāo)在數(shù)字地圖上拾取一點(diǎn),高亮顯示該點(diǎn)位置的要素并顯示該要素關(guān)聯(lián)的屬性。不難理解,由于WMS使用的HTTP協(xié)議是無(wú)狀態(tài)的,所以GetFeatureInfo請(qǐng)求參數(shù)包含了GetMap請(qǐng)求的大部分參數(shù)(除VERSION和REQUEST之外的所有參數(shù))。畢竟,要獲取地圖某一點(diǎn)的要素信息,就先得把地圖給獲取了。GetFeatureInfo操作的標(biāo)準(zhǔn)請(qǐng)求參數(shù)如下表4所示:

【表4 WMS GetFeatureInfo請(qǐng)求參數(shù)】

請(qǐng)求參數(shù) 必要性 描述
VERSION=1.3.0 必要 請(qǐng)求的版本。
REQUEST=GetFeatureInfo 必要 請(qǐng)求操作的名稱。
map request part 必要 GetMap請(qǐng)求的大部分參數(shù)。
QUERY_LAYERS=layer_list 必要 要查詢的層級(jí)列表,以逗號(hào)分隔。
INFO_FORMAT=output_format 必要 特征信息返回格式(MIME類型)。
FEATURE_COUNT=number 可選 返回的特征數(shù)目 (默認(rèn)為1)。
I=pixel_column 必要 x方向像素坐標(biāo)。
J=pixel_row 必要 y方向像素坐標(biāo)。
EXCEPTIONS=exception_format 可選 WMS 報(bào)告異常的格式(默認(rèn)為XML)。

我們按照表4所示的參數(shù)來(lái)查詢前文中配置好的基于矢量數(shù)據(jù)集的地圖,具體在某個(gè)像素位置的要素信息,可以在瀏覽器中輸入如下地址:

http://localhost:8080/geoserver/wms?
VERSION=1.3.0
&REQUEST=GetFeatureInfo
&LAYERS=test:multipolygons
&STYLES
&CRS=EPSG:4326
&BBOX=38.8920794,-77.0495419,38.9096339,-77.0199063
&WIDTH=768
&HEIGHT=454
&FORMAT=image/png
&QUERY_LAYERS=test:multipolygons
&INFO_FORMAT=application/json
&I=384
&J=227

此時(shí),瀏覽器會(huì)返回一個(gè)JSON,描述了該像素位置的幾何信息,其關(guān)聯(lián)的屬性信息,以及一些元數(shù)據(jù)信息。如下圖所示:

同樣的,如果使用類似的參數(shù)來(lái)查詢前文中配置好的基于柵格數(shù)據(jù)集的地圖,在瀏覽器中輸入如下地址:

http://localhost:8080/geoserver/wms?
VERSION=1.3.0
&REQUEST=GetFeatureInfo
&LAYERS=test:japan_tmo_2011057_geo
&STYLES
&CRS=EPSG:4326
&BBOX=23.034667983398435,120.15380860839844,52.990722641601565,153.88916014160156
&WIDTH=768
&HEIGHT=682
&FORMAT=image/png
&QUERY_LAYERS=test:japan_tmo_2011057_geo
&INFO_FORMAT=application/json
&I=384
&J=341

此時(shí),瀏覽器會(huì)返回一個(gè)JSON,不過(guò)內(nèi)容就簡(jiǎn)單多了,返回的是該地圖在指定像素位置的包含RGB三個(gè)波段的像素值。如下圖所示。這其實(shí)也不難理解,如果把柵格數(shù)據(jù)當(dāng)作是點(diǎn)要素的集合,那么點(diǎn)的像素值自然就是其關(guān)聯(lián)的屬性數(shù)據(jù)了。

總結(jié)

以上是生活随笔為你收集整理的网络地图服务(WMS)详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。