中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【轉(zhuǎn)】WMS(Web Map Service網(wǎng)絡地圖服務)
1、GeoServer(地理信息系統(tǒng)服務器)是 OpenGIS Web 服務器規(guī)范的 J2EE 實現(xiàn)(geoserver只能用j2ee開發(fā)),利用GeoServer 可以方便的發(fā)布地圖數(shù)據(jù)。GeoServer的主要特征包括:兼容 WMS 和 WFS 特性;能夠?qū)⒕W(wǎng)絡地圖輸出為jpeg、gif、png、SVG、KML等格式;能夠運行在任何基于 J2EE/Servlet 容器之上。其安裝方式有兩種,一種是常見的.EXE安裝,這種安裝方式最簡單,只要確保你電腦上安裝了JDK并且8080端口是開的,按照安裝步驟一步一步來就可以完成安裝,安裝完成以后,可以從開始菜單中選擇GeoServer-> Start GeoServer進行啟動,啟動服務后,打開瀏覽器,輸入http://localhost:8080/geoserver/就可以查看到GeoServer的歡迎界面了。另一種安裝是以.WAR的形式安裝,開發(fā)者電腦上得先安裝有Tomcat,然后將此WAR導入即可。
Geoserver是一個功能齊全,遵循OGC開放標準的開源WFS-T和WMS服務器。利用Geoserver可以把數(shù)據(jù)作為maps/images來發(fā)布(利用WMS來實現(xiàn))也可以直接發(fā)布實際的數(shù)據(jù)(利用WFS來實現(xiàn)),同時也提供了修改,刪除和新增的功能(利用WFS-T)。 GeoServer, 顧名思義,是一個Server. 它是開源的 ,允許用戶查看和編輯地理數(shù)據(jù)。GeoServer能夠發(fā)布的數(shù)據(jù)類型:
(1)地圖或影象——應用WMS
(2)實時數(shù)據(jù)——應用WFS
(3)用戶更新、刪除和編輯的數(shù)據(jù)——應用WFS-T。
GeoServer 是您需要顯示地圖在網(wǎng)頁的那些工具的當中一個,用戶可以縮放并且移動??梢耘c一些客戶端聯(lián)合使用,比如: MapBuilder(for web pages), UDig, GVSig,等等。 對標準的使用允許信息從GeoServer 到其它地理信息可以很容易地被結(jié)合。
2、Web地圖服務(WMS):利用具有地理空間位置信息的數(shù)據(jù)制作地圖,其中將地圖定義為地理數(shù)據(jù)可視的表現(xiàn),地圖本身并不是數(shù)據(jù)。地圖通常以圖像格式表達,例如PNG,GIF或是JPEG,有時候也表達為基于矢量圖形,如可縮放矢量圖形(SVG)或是網(wǎng)絡電腦圖形元文件等格式(WebCGM)。根據(jù)OGC規(guī)范,地圖服務是專門提供共享地圖數(shù)據(jù)的服務,負責根據(jù)客戶程序的請求,提供地圖圖像、指定坐標點的要素信息、以及地圖服務的功能說明信息。
WMS規(guī)范定義了三個接口(操作):GetCapabilities(獲取服務能力), GetMap(獲取地圖)和GetFeatureInfo(獲取對象信息)。其中GetMap為核心操作。GetCapabitities返回服務級元數(shù)據(jù),它是對服務信息內(nèi)容和要求參數(shù)的一種描述;GetMap返回一個地圖影像,其地理空間參考和大小參數(shù)是明確定義了的;GetFeatureInfo(可選)返回顯示在地圖上的某些特殊要素的信息。這個規(guī)范還定義了一個用于調(diào)用上述操作的萬維網(wǎng)統(tǒng)一資源定位器(URL)語法和服務級元數(shù)據(jù)的XML(可擴展標記語言)表達法。
3、WMS 請求方式: WMS 支持標準 HTTP 中標準的 GET 請求和 POST 請求方式,不過對于 WMS 來說,基本都是基于 GET 方式的服務請求,而且 OGC 官方提供的兼容性測試中也都是基于 GET 方式的請求。
OGC網(wǎng)絡服務明確支持的唯一的分布式計算平臺(DCP)就是是萬維網(wǎng)本身,更明確地說是實現(xiàn)了超文本傳遞協(xié)議(HTTP)的網(wǎng)絡主機。因此,每個由服務實例支持的各操作的在線資源都是一個HTTP的統(tǒng)一資源定位器(URL)。HTTP支持兩個請求方法:GET和POST,一個基本的WMS規(guī)范僅僅定義用來調(diào)用操作的HTTP GET。URL規(guī)范保留了一些特定的字符并賦予它們必要的意義,如下表1,
表1  HTTP GET查詢中的保留字符
字符
用             途
查詢語句開始的分隔符
&
查詢語句參數(shù)之間的分隔符
=
參數(shù)名字和參數(shù)值之間的分隔符
/
格式參數(shù)值中MIME類型子類型之間的分隔符
:
SRS參數(shù)值中命名空間和標識之間的分隔符
,
清單型參數(shù)中單個值的分隔符(例如GETMAP請求中的BBOX,LAYERS和STYLES)
用于HTTPGET請求的在線資源URL事實上僅僅是一個URL前綴,為了建立一個有效的操作請求,在其后還添加了另外的參數(shù)。URL前綴被定義為一個不透明的字符串,它包括協(xié)議、主機名、端口號(可選)、路徑、和一個問號“?”,還可以包括一個或幾個用于具體服務器的參數(shù)并以“&”結(jié)束。
表2總結(jié)了操作請求URL的各個構(gòu)件:
表2   普通OGC網(wǎng)絡服務請求
URL 構(gòu)件
描         述
http://host[:port]/path?{name[=value]&}
服務操作的URL前綴。[ ]表示可選擇0個或1個事件;{}表示0個或更多的事件。前綴完全取決于服務提供者。
name=value&
由OGC網(wǎng)絡服務定義的一個或更多的標準請求參數(shù)的名稱和數(shù)值對。對于每個操作,相應的的OWS規(guī)范都規(guī)定了請求中使用的必選和可選參數(shù)的實際列表。
4、網(wǎng)絡地圖服務(WMS)的三大操作
(1)GetCapabilities(必選)
http://localhost:8080/geoserver/wms?service=WMS&request=GetCapabilities( GeoServer )
(瀏覽器會返回提示打開或保存一個文件,我的機器返回的是一個叫“wms”的文件,沒有擴展名。沒關系我們把它保存為“wms.xml”就可以了)
GetCapabilities請求返回的是一個對于WMS服務的一個元數(shù)據(jù)的描述,其中包括有當前服務提供商的一些基本信息以及當前服務的一些能力,而對于使用WMS服務的客戶端來說,能獲取到的所有信息全部包含在此文檔中,當客戶端發(fā)送一個服務中沒有提供的的圖片格式時,此時服務端將沒有能力處理此請求。在使用WMS服務時需要確認當前服務提供的能力,以便在使用過程中發(fā)生一些不必要的麻煩。
GetCapabilities 接口用于向客戶端提供當前地圖服務器可以提供的空間信息類型和范圍、具體的圖層信息和顯示樣式、支持的查詢方式、沒有查詢結(jié)果時(異常)的缺省返回信息格式等服務描述信息。
GetCapabilities 請求URL的參數(shù)
請求參數(shù)
必選(M)/可選(O)
說明
VERSION=version(Version ( 版本 )=(1.1.1 或者 1.3.0) )
O
請求版本,URL 中可選的請求參數(shù),當沒有使用時就使用當前服務提供商提供的最高的 wms 版本服務
SERVICE=WMS
M
服務類型
REQUEST=GetCapabilities
M
請求名,請求中必須設置當前請求的操作,可以設置 request 的值為 Getcapabilities 、 GetMap 、 GetFeatureInfo
FORMAT=MIME_type
O
服務元數(shù)據(jù)的輸出格式
UPDATESEQUENCE=string
O
用于控制緩沖存儲的數(shù)字序列或字符串
(2)GetMap(必選)
http://localhost:8080/geoserver/wms?bbox=-130,24,-66,50&styles=population&Format=image/png&request=GetMap&layers=topp:states&width=550&height=250&srs=EPSG:4326
GetMap 接口的目的在于請求服務器生成一幅具有確定地理位置坐標范圍的地圖圖像。但按照WMS規(guī)范,這個操作需要明確地指定出操作本身遵循的WMS規(guī)范的版本號以及需要顯示的具體圖層、對應的坐標范圍、返回圖像的大小和格式等。
GetMap請求的參數(shù)
請求參數(shù)
必選的(M)/
可選的(O)
說   明
VERSION=version
M
請求版本.
REQUEST=GetMap
M
請求名稱.
LAYERS=layer_list
M
以逗號隔開的一個或多個圖層列表,若存在SLD參數(shù)則是可選的。
STYLES=style_list
M
以逗號隔開的請求圖層的一個再現(xiàn)風格列表,若存在SLD參數(shù)則是可選的。
CRS=namespace:identifier
M
坐標參考系。
BBOX=minx,miny,maxx,maxy
M
以SRS單位表示的邊界框邊角 (左下角,右上角)。
WIDTH=output_width
M
以像素表示的地圖圖像寬度。.
HEIGHT=output_height
M
以像素表示的地圖圖像高度
FORMAT=output_format
M
地圖輸出格式。.
TRANSPARENT=TRUE|FALSE
O
地圖背景的透明性 (default=FALSE).
BGCOLOR=color_value
O
以十六進制RGB顏色值表示的背景顏色(default=0xFFFFFF).
EXCEPTIONS=exception_format
O
WMS通告異常的格式 (default=SE_XML).
TIME=time
O
請求層的時間值。
ELEVATION=elevation
O
請求層的高程。
Other sample dimension(s)
O
其它適當維度的值。.
Vendor-specific parameters
O
可選的實驗性參數(shù)。.
下列參數(shù)只用于支持格式化層描述符規(guī)范的網(wǎng)絡地圖服務 [3].
SLD=styled_layer_descriptor_URL
O
格式化層描述符的URL(如同SLD規(guī)范中確定的).
WFS=web_feature_service_URL
O
網(wǎng)絡要素服務URL,該服務提供將要用SLD進行符號化的要素。.
注:在LAYERS參數(shù)值和STYLES參數(shù)值之間存在一個一一對應關系
對GetMap的響應:
對有效的GetMap請求的響應必須是一張地圖,它包含了所請求的具有地理參考坐標的信息層,使用的是期望的樣式,并且采用了指定的空間參照系、范圍框、大小和透明性。一個無效的GetMap請求必須產(chǎn)生一個按請求的Exceptions格式輸出的錯誤信息(或在極端情況下回答一個網(wǎng)絡協(xié)議錯誤)。
(3)GetFeatureInfo(可選)
GetFeatureInfo是一個可選操作。該操作向WMS的客戶端程序提供了進一步查詢特定空間實體信息的能力。這種操作往往是由客戶程序在WMS服務器先前返回的地圖上指定了一個空間實體,進而提交查詢而形成。支持GetFeatureInfo操作的僅僅是那些定義或繼承了屬性queryable=“1”的層。對于其它層,客戶端不能發(fā)送GetFeatureInfo請求。如果一個WMS不支持該請求而遇到了它,則應該應答一個適當格式的服務異常。
GetFeatureInfo請求參數(shù)
請求參數(shù)
必選(M)/
可選(O)
描述
VERSION=version
M
請求版本。
REQUEST=GetFeatureInfo
M
請求名稱。
map request part
M
地圖請求參數(shù)的部分拷貝,這些參數(shù)產(chǎn)生了需要查詢其信息的地圖。
QUERY_LAYERS=layer_list
M
用逗號分隔的需要查詢的一個或多個層的列單。
INFO_FORMAT=output_format
M
要素信息的返回格式(MIME 類型)。
FEATURE_COUNT=number
O
需要返回其信息的要素個數(shù)(default=1)。
X=pixel_column
M
用像素表達的要素的X坐標 (以左上角坐標為0)。
Y=pixel_row
M
用像素表達的要素的Y坐標 (以左上角坐標為0)。
EXCEPTIONS=exception_format
O
WMS報告異常信息采用的格式(default=application/vnd.ogc.se_xml)。
5、三大操作的樣例
(1)GetMap請求類似于在Web上請求一幅圖像,但它的請求參數(shù)更加復雜。下面是一個樣例請求:
http://webmapping.mgis.psu.edu/geoserver/wms?version=1.1.1&request=getmap&layers=topp:states&styles=population&SRS=EPSG:4326&bbox=-125,24,-67,50&width=400&height=200&format=image/png
返回的圖像如下圖所示:
>
其中:
http:// —— 使用的網(wǎng)絡協(xié)議
webmapping.mgis.psu.edu/ —— 主機域名
geoserver/wms —— 頁面或web程序位置
version=1.1.1 —— WMS版本號
request=getmap —— 操作動詞,可以為GetCapabilities, GetMap和GetFeatureInfo等
layers=topp:states —— 請求地圖所包含的圖層名,可以為多層
styles=population —— 指定圖層繪制的樣式名
SRS=EPSG:4326 —— 指定地圖的坐標投影系統(tǒng)代碼
bbox=-125,24,-67,50 —— 請求地圖的范圍(The Bounding Box)
width=400 —— 地圖的像素寬度
height=200 —— 地圖的像素高度,寬度和高度的不同設置可能會引起返回圖像的變形
format=image/png —— 返回地圖圖像的格式,可以為Image/gif, image/jpg, image/svg+xml等等
如果參數(shù)設置錯誤,將返回一個XML文件來描述錯誤信息。如下所示:
<ServiceExceptionReportversion="1.1.1">
<ServiceException code="">
WIDTH and HEIGHT incorrectly specified
</ServiceException>
</ServiceExceptionReport>
(2)GetCapabilities請求的樣例如下所示:
http://webmapping.mgis.psu.edu/geoserver/wms?version=1.1.1&request=getcapabilities
返回的是一個XML文件(文件很大,內(nèi)容略),包括Service、Capability等部分,詳細信息可以查看返回XML文件。
把這個文檔去頭去尾以后留下兩個節(jié)點Service和Capability。 Service包含了有關服務器的一般特性數(shù)據(jù),對于只是想直接使用WMS服務器的人來說,這個節(jié)點還不太用得上,唯一值得注意的就是KeywordList節(jié)點,它里面是關鍵字,也就是服務器的保留字。 Capability才是我們學習的重點。如果你想正確的使用WMS服務器,這個節(jié)點里面的內(nèi)容就必須搞清楚了。你可以從這個節(jié)點獲得如下信息:
1)服務器支持哪些方法,WMS服務器必須支持GetCapabilities和GetMap,此外還有許多擴展的方法。
2)服務器支持哪些返回格式,WMS返回的地圖都是渲染好的圖片,因此這里的格式基本上都是圖片格式,如image/png。
3)服務器發(fā)布了哪些圖層,這個是WMS的重點,不然你連最簡單的GetMap調(diào)用都構(gòu)造不出來。
(3)GetFeatureInfo用于查詢屏幕某點的對象信息,它的樣例請求如下所示:
http://webmapping.mgis.psu.edu/geoserver/wms?version=1.1.1&request=getfeatureinfo&layers=topp:states&styles=population&SRS=EPSG:4326&bbox=-125,24,-67,50&width=400&height=200&format=text/html&X=100&y=100&query_layers=topp:states
此請求返回一個HTML文檔來描述對象,如下所示:
Results forFeatureType 'states':
--------------------------------------------
the_geom = [GEOMETRY(MultiPolygon) with 153 points]
STATE_NAME = Arizona
STATE_FIPS = 04
SUB_REGION = Mtn
STATE_ABBR = AZ
LAND_KM = 294333.462
WATER_KM = 942.772
PERSONS = 3665228.0
FAMILIES = 940106.0
HOUSHOLD = 1368843.0
MALE = 1810691.0
FEMALE = 1854537.0
WORKERS = 1358263.0
DRVALONE = 1178320.0
CARPOOL = 239083.0
PUBTRANS = 32856.0
EMPLOYED = 1603896.0
UNEMPLOY = 123902.0
SERVICE = 455896.0
MANUAL = 185109.0
P_MALE = 0.494
P_FEMALE = 0.506
SAMP_POP = 468178.0
要注意的是不同規(guī)范版本對上述請求的參數(shù)規(guī)定不同,如WMS1.3對于GetFeatureInfo的X、Y參數(shù)要求使用經(jīng)緯度。所以我們必須根據(jù)服務器的WMS版本來設置我們的參數(shù)。
6、實現(xiàn)一個C#版本的WMS瀏覽器
(1)WmsBrowser需求
1)、用戶輸入WMS服務器的URI,點擊一個按鈕調(diào)用GetCapabilities方法。然后用返回的數(shù)據(jù)初始化控制界面。 用戶在控制界面上可以查看服務器的各種Capability數(shù)據(jù),并且可以選擇要顯示的圖層,調(diào)整圖層順序 ,為圖層設置參數(shù),然后返回一個地圖圖片顯示在預覽區(qū)。
2)、用戶可以把返回的圖片保存成文件。
已經(jīng)有許多支持WMS的客戶端了,有許多代碼可供學習和使用。但是,為了不干擾視線,為了避免介紹多余的內(nèi)容,為了體現(xiàn)“自主創(chuàng)新精神”,最重要的是為了體驗編程的樂趣(這也是我當初進入這個行業(yè)的原因),我決定只使用NotNet標準庫提供的類完全從頭開始編寫代碼。
(2)WmsBrowser設計
根據(jù)需求,這是一個WinForm的執(zhí)行程序。需求其實很不明確,完全沒有說明最重要的部分,控制界面是什么樣子的,用戶如何使用它。所以有必要補充一下了。
控制界面有兩個功能:
1)查看GetCapabilities返回的數(shù)據(jù);
2)設置GetMap需要的調(diào)用參數(shù)。
我們可以據(jù)此來設計這個界面。GetCapabilities返回的數(shù)據(jù)我們前面已經(jīng)介紹過了,想象一下我們這款軟件的潛在用戶可能想要看到哪些數(shù)據(jù),他們會如何使用這些數(shù)據(jù)。首先肯定是服務器發(fā)布的圖層,這是訪問WMS的唯一原因。至于服務器支持哪些調(diào)用應該不是他們關心的,而是我們開發(fā)者關心的。所以我們需要在界面上顯示出Layer的內(nèi)容,由于Layer是嵌套的,自然而然我們需要一個樹控件。
除了Layer的Name,Title,Abstract這些屬性外,用戶應該還需要知道Layer支持的SRS,Style,F(xiàn)ormat和BoundingBox。這樣他們才能構(gòu)造出合理的調(diào)用參數(shù)。我們顯然不應該讓用戶查看完數(shù)據(jù)后手動構(gòu)造調(diào)用參數(shù),我們需要讓用戶很方便的用鼠標完成工作。我們已經(jīng)知道需要一個樹控件來顯示Layer信息。然后我們需要提供構(gòu)造調(diào)用參數(shù)的界面。首先我們設想用戶可能會如何完成這個工作。
上面的介紹中我們一直是手動敲入字符串來完成調(diào)用URI的構(gòu)建的,繁瑣而且容易出錯,但是這種方法很靈活,所以應該保留。于是我們需要一個TexBox來輸入URI。然后我們需要一個按鈕來發(fā)出GetMap請求。我們必須考慮到,有相當一部分人并不善于鍵盤操作(其中包括我),所以我們應該給他們提供鼠標操作模式。于是第二個界面出現(xiàn)了,用戶在這里使用鼠標選擇想要顯示的Layer,調(diào)整Layer顯示的順序,選擇每個Layer的Style,選擇Format,選擇SRS,輸入BoundingBox,輸入返回圖片的尺寸。然后同樣點擊上面提到的按鈕,發(fā)出GetMap請求。更進一步,我們可以用上面的界面來獲得一個基本的調(diào)用參數(shù),然后到TextBox里面去微調(diào),這樣用戶會獲得更好的靈活性。
好了,到這里我們基本上搞清楚控制界面的樣子了?,F(xiàn)在需要討論一點設計風格方面的問題。我們可以把所有代碼寫進一個叫MainForm的類里面,它是一個WinForm類。這樣沒有錯,完全可以工作,實際上我見過的大部分代碼都是這么干得。這樣做的結(jié)果是,我很快就會放棄這個項目,轉(zhuǎn)而去瀏覽cnblog或ifeng上面的帖子。我們需要一個更好的設計。我們在這里并不是要討論架構(gòu),模式和開發(fā)方法,所以我們只需要達成一個共識就可以了:                        我們需要把界面元素,操作響應以及數(shù)據(jù)模型分開編碼,為他們單獨建立類體系。
據(jù)此我們的設計也就差不多了,開始編碼咯。
WmsBrowser編碼ing。。。
程序完成。
代碼下載
啟動程序后會看見主界面如下:    下圖是返回的地圖
這個程序還很稚嫩,有許多問題沒有考慮,例如:輸入驗證,數(shù)據(jù)驗證,異常處理等。以后我們會逐步完善它,目前作為一個參考和學習WMS的起點已經(jīng)足夠了。
(3)后續(xù)
在使用這個程序時,作為用戶,我覺得還有很多不方便的地方。首先,我如果敲錯了地址,我很容易敲錯,程序會彈出一個丑陋的異常對話框,顯示一大堆堆棧信息,完全看不出是什么錯誤。其次,設置參數(shù)BBox很不方便,如果能從已有的地圖上用鼠標選擇就好了。還有,返回時只是顯示一個圖片想看細節(jié)又要重復設置,Apply,GetMap的操作,太繁瑣了。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
GeoServer基礎教程(四):空間數(shù)據(jù)互操作的接口規(guī)范WMS、WFS和WCS | Ethan's Blog
OGC 的WCS WFS 及WMS 服務
GeoServer  基礎
GIS開發(fā)?你不得不了解的那些行業(yè)標準
介紹一種繪制“地圖”圖表的方法
geoserver開發(fā)
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服