91精品人妻互换日韩精品久久影视|又粗又大的网站激情文学制服91|亚州A∨无码片中文字慕鲁丝片区|jizz中国无码91麻豆精品福利|午夜成人AA婷婷五月天精品|素人AV在线国产高清不卡片|尤物精品视频影院91日韩|亚洲精品18国产精品闷骚

您當(dāng)前位置:首頁 > 新聞頻道 > 技術(shù)動態(tài) > 正文
淺談基于OGC規(guī)范的GET和POST請求的WMS實現(xiàn)

摘要:本文介紹了WebService及其相關(guān)技術(shù)發(fā)展現(xiàn)狀,并詳細(xì)闡述了OGC規(guī)范中WMS的相關(guān)標(biāo)準(zhǔn)與要求。結(jié)合需要,自主在VS 2005 C#平臺下實現(xiàn)了WMS的服務(wù)開發(fā)與用戶測試,并進(jìn)行了相關(guān)技術(shù)總結(jié)與歸納。
論文關(guān)鍵詞:WebService,OGC,WMS服務(wù)
  近幾年WebGIS 取得了快速發(fā)展,其應(yīng)用也擴(kuò)展到GIS應(yīng)用領(lǐng)域的各個方面。但傳統(tǒng)的WebGIS軟件技術(shù)中仍存在一些局限,具體表現(xiàn)在:并發(fā)處理能力差,響應(yīng)速度慢;系統(tǒng)的異購兼容性不足。解決傳統(tǒng)WebGIS軟件的上述問題,Web Services技術(shù)以及.NET,J2EE等主流開發(fā)平臺為我們提供了很好的解決方案。本文的目的就是要弄清楚Web Services技術(shù)架構(gòu),并且分析如何采用基于.net的開源庫Sharpmap,實現(xiàn)符合OGC(Open Geospatial Consortium)標(biāo)準(zhǔn)之一Web Map Service的網(wǎng)絡(luò)地圖服務(wù)。證明采用Web Services技術(shù)封裝與發(fā)布空間數(shù)據(jù),實現(xiàn)地理信息系統(tǒng)的功能變?yōu)閃eb服務(wù)的可行性。
  2 相關(guān)技術(shù)介紹
  2.1 WebService介紹及相關(guān)技術(shù)
  Web Service的實現(xiàn)包括三個核心技術(shù):UDDI(統(tǒng)一描述,發(fā)現(xiàn)和集成協(xié)議Universal Description,Discovery and integration)用于規(guī)范服務(wù)的注冊,查找和發(fā)現(xiàn)過程,WSDL(網(wǎng)絡(luò)服務(wù)描述語言Web Service Description Language)用于規(guī)范服務(wù)的描述,SOAP(簡單對象訪問協(xié)議Simple Object Access Protocol)用于規(guī)范調(diào)用服務(wù)時采用的通訊協(xié)議。
  Web Service的工作流程如圖[1]所示:
  圖[1] Web Service工作流程
  Web Service是由一系列的協(xié)議組成,Web Service的協(xié)議棧如圖[2]所示,當(dāng)然目前的協(xié)議棧還在不斷的擴(kuò)展,有進(jìn)一步發(fā)展的巨大空間:
  基于OGC規(guī)范的GET和POST請求的WMS實現(xiàn)
  圖[2] Web Service協(xié)議棧
  從以上的協(xié)議?矗合旅鎯蓪邮窍惹耙呀(jīng)定義好的并且廣泛使用的傳輸層和網(wǎng)絡(luò)層的標(biāo)準(zhǔn),如:IP, HTTP,SMTP等。而中間的四層是目前開發(fā)的Web Service的相關(guān)標(biāo)準(zhǔn)協(xié)議,也是Web Service的核心技術(shù),包括服務(wù)調(diào)用協(xié)議SOAP、服務(wù)描述協(xié)議WSDL,服務(wù)發(fā)現(xiàn)/集成協(xié)議UDDI,以及服務(wù)工作流描述語言WSFL。最上層描述的是更高層的待開發(fā)的關(guān)于路由、可靠性以及事務(wù)等方面的協(xié)議。右邊的部分是各個協(xié)議層的公用機(jī)制,這些機(jī)制一般由外部的正交機(jī)制來完成。
  以下主要介紹協(xié)議棧的三個主要協(xié)議具體體現(xiàn)在服務(wù)調(diào)用的時候的角色以及分工:如圖[3]在機(jī)器B上部署Web Service服務(wù),在機(jī)器A上部署著調(diào)用該服務(wù)的站點(diǎn)。A發(fā)送請求給B,B發(fā)送響應(yīng)給A。他們通訊的協(xié)議是HTTP,發(fā)送請求和相應(yīng)的數(shù)據(jù)格式都是基于XML(SOAP)的數(shù)據(jù),A機(jī)器的代理和存根真正負(fù)責(zé)起A與B之間服務(wù)的調(diào)用。WSDL是用于描述A與B通訊接口的協(xié)議;UDDI相當(dāng)于我們的電話黃頁簿,所有的Web Service服務(wù)可以在UDDI上進(jìn)行處理,即需要在UDDI上注冊WSDL文檔。
  因此整個調(diào)用的過程我們可以描述如下:A要調(diào)用B的某個服務(wù),它可以先到UDDI服務(wù)器上去查找描述服務(wù)的WSDL文檔。生成WSDL Proxy,然后再與機(jī)器B上的WSDL Stub通訊,這樣我們可以明確Web Service調(diào)用中的通訊協(xié)議,消息格式,描述語言以及發(fā)現(xiàn)機(jī)制分別如圖[3]中①②③④所示。
  圖[3] Web Service調(diào)用過程圖
  2.2 OGC規(guī)范的WMS的相關(guān)標(biāo)準(zhǔn)
  OGC WMS屬于OGC圖示表達(dá)服務(wù),在WMS規(guī)范中將地圖定義為地理數(shù)據(jù)可視的表現(xiàn),WMS返回的不是地圖數(shù)據(jù),而是地圖圖象,WMS規(guī)范定義了三個操作:
  GetCapabilities操作返回服務(wù)級元數(shù)據(jù),它是對服務(wù)信息內(nèi)容和請求參數(shù)的一種描述,元數(shù)據(jù)使用XML形式文件表示;
  GetMap操作根據(jù)客戶端發(fā)出的請求參數(shù)在服務(wù)端進(jìn)行檢索,服務(wù)器返回一個地圖圖象,其地理空間參數(shù)和大小是已經(jīng)明確定義的,返回的地圖圖象可以是GIF,JPEG,PNG或SVG格式的;
  GetFeatureInfo操作根據(jù)用戶請求的X,Y坐標(biāo)或感興趣的圖層,返回這些特殊要素的信息,信息以HTML,GML或者ASCII格式表示。
  在 WMS 中GetMap是最重要的一個接口。GetMap的參數(shù)有很多,在調(diào)用時必須的主要參數(shù)如表[1]:
  請求參數(shù)
  定義
  VERSION=1.3.0
  請求版本號
  REQUEST=GetMap
  請求的名稱
  LAYERS=layer_list
  以逗號分隔的圖層列表
  STYLES=style_list
  以逗號分隔的每層渲染樣式列表
  CRS=namespace:identifier
  空間參考系統(tǒng)
  BBOX=minx,miny,maxx,maxy
  矩形框四角的SRS坐標(biāo)
  WIDTH=output_width
  地圖圖象的寬度
  HEIGHT=output_height
  地圖圖象的高度
  FORMAT=output_format
  地圖的輸出格式
  表[1] GetMap主要調(diào)用參數(shù)
  用戶可以通過標(biāo)準(zhǔn)的瀏覽器向WMS發(fā)送地圖服務(wù)請求,請求的方式可以通過在URL中添加請求的類型參數(shù)來實現(xiàn)。WMS的GetMap操作支持分布式的地圖服務(wù)網(wǎng)絡(luò)來提供給用戶。以下給出請求的字符串:
  'VERSION=1.3.0&REQUEST=GetMapExtended&Layers=Dq,Dqboundary,DqLabel&STYLES=&CRS=EPSG:21413&BBOX=-399387.65172,16569.92082,493752.18997,648496.04222&FORMAT=image/png&WIDTH=677&HEIGHT=479&ACTIVELAYER=Dq';
  在該字符串前再加上完整的域名或者固定的IP地址,就可以返回得到該字符所制定的具體的地圖圖像。
  2.3.開源代碼sharpmap的相關(guān)介紹
  SharpMap是一個基于.net 2.0使用C#開發(fā)的Map渲染類庫,可以渲染各類GIS數(shù)據(jù)(目前支持ESRI Shape和PostGIS格式),可應(yīng)用于桌面和Web程序。SharpMap的發(fā)布許可(License)為GNU General Public License,實現(xiàn)了以下功能:
  1)支持的數(shù)據(jù)格式:PostGreSQL/PostGIS,ESRI Shapefile,支持WMS layer支持ECW 和JPEG2000 柵格數(shù)據(jù)格式;
  2)Windows Forms 控件,可以移動和縮放;
  3)通過HttpHandler支持ASP.net程序;
  4)點(diǎn)、線、多邊形、多點(diǎn)、多線和多多邊形等幾何類型和幾何集合(Geome tryCollections)等OpenGIS簡單要素規(guī)范;
  5)可通過Data Providers(增加數(shù)據(jù)類型支持)、Layer Types(增加層類型)和Geometry Types等擴(kuò)展;
  6)圖形使用GDI+渲染,支持anti-aliased等;
  7)專題圖。
  3 實驗結(jié)果
  數(shù)據(jù):安徽省的shape數(shù)據(jù);開發(fā)環(huán)境:VS2005,IIS;開發(fā)語言:c#。
  實現(xiàn)步驟:
  1)新建一個WebService,實現(xiàn)WMS的函數(shù):GetMap,Getcapabilities;
  2)配置Webcong,使該WebService支持GET和POST請求兩種方式;
  3)GET方法實現(xiàn)如下:
  第一步:新建asp.net website,獲取http GET請求的相關(guān)參數(shù);
  第二步:通過GET方法,根據(jù)上一步參數(shù)調(diào)用新建的WebService,獲得地圖字節(jié)流;
  第三步:所獲得的字節(jié)流是以XML文檔傳輸?shù),并對地圖字節(jié)流采取一定的編碼方式,對該XML文檔進(jìn)行解譯,并對字節(jié)流進(jìn)行解碼,獲得地圖的原始數(shù)據(jù);
  第四步:將所獲得地圖渲染出來;
  第五步:利用IIS發(fā)布WebService和asp.net website即可。
  效果如圖[4]和圖[5]:
  所給請求字符串1:
  http://localhost/WMS/Default.aspx?VERSION=1.3.0&REQUEST=GetMapExtended&Layers=Xian,Xianboundary,XianLabel&STYLES=&CRS=EPSG:21413&BBOX=-176102.69,174551.45,270467.229,490514.5&FORMAT=image/png&WIDTH=1024&HEIGHT=768&ACTIVELAYER=Xian
  所給請求字符串2:
  http://localhost/WMS/Default.aspx?VERSION=1.3.0&REQUEST=GetMapExtended&Layers=Dq,Dqboundary,DqLabel&STYLES=&CRS=EPSG:21413&BBOX=-176102.69,174551.45,270467.229,490514.5&FORMAT=image/png&WIDTH=1024&HEIGHT=768&ACTIVELAYER=Dq
  OGC基于OGC規(guī)范的GET和POST請求的WMS實現(xiàn)OGC
  圖[4] 圖[5] 圖[6] POST界面
  4)POST方法實現(xiàn)如下:
  第一步:新建asp.net Website;
  第二步:設(shè)計POST界面如圖[6]所示,主要包括REQUEST描述,POST地址,POST數(shù)據(jù);
  第三步:獲取post地址,及要post的相關(guān)數(shù)據(jù),利用該值初始化HttpWebRequest對象,設(shè)置POST方法,利用HttpWebResponse 獲得post的XML,對該XML文檔進(jìn)行解譯,并對字節(jié)流進(jìn)行解碼,獲得地圖的原始數(shù)據(jù);
  第四步:將所獲得地圖渲染出來;
  第五步:利用IIS發(fā)布asp.net website即可。
  核心代碼如下:
  public byte[] GetMap(string UserRequest)
  {
  byte[] bytesmap=null;
  byte[] bytesmap1 = null;
  System.Drawing.Imaging.ImageCodecInfo imageEncoder;
  。。。。。。
  {
  string splitstringLower = splitstring.ToLower();
  //Request中的參數(shù)名稱大小寫不敏感,因此在涉及到參數(shù)名稱時,使用splitstringLower,涉及到參數(shù)值時,使用splitstring
  int exist = splitstringLower.IndexOf('request');
  if (exist >= 0)
  {
  string[] requestvalue = splitstring.Split(new char[] { '=' });
  haveREQUEST = true;
  REQUEST = requestvalue[1];
  break;
  }
  }
  System.IO.MemoryStream MS = new System.IO.MemoryStream();
  img.Save(MS, imageEncoder, null);
  img.Dispose();
  byte[] buffer = MS.ToArray();
  bytesmap = buffer;
  }
  return bytesmap;
  }
  }
  POST方法獲得地圖數(shù)據(jù),并渲染地圖:
  protected void Page_Load(object sender, EventArgs e)
  {
  # region 創(chuàng)建HttpWebRequest對象
  string service = Session['URL'].ToString();
  。。。
  image.Dispose();               // 釋放圖像資源
  using (MemoryStream ms = new MemoryStream())// 采用二進(jìn)制流的方式輸出圖片
  {
  newImage.Save(ms, ImageFormat.Jpeg); //圖片格式指定為Jpeg
  Response.ClearContent();       //清除緩沖區(qū)流中的所有輸出
  Response.ContentType = 'image/jpeg'; //輸出流的HTTP MIME類型設(shè)置為'image/Png'
  Response.BinaryWrite(ms.ToArray());  //輸出圖片的二進(jìn)制流
  }
  newImage.Dispose();   // 釋放圖像資源
  Response.Flush();    // 輸出
  Response.End();
  }
  4 結(jié)論
  .NET是 Microsoft用以創(chuàng)建Web服務(wù)平臺,該平臺將信息、設(shè)備和人以一種統(tǒng)一的、個性化的方式聯(lián)系起來。借助于.NET平臺,可以創(chuàng)建和使用基于XML的應(yīng)用程序、進(jìn)程和Web站點(diǎn)以及服務(wù)。通過.NET,所有的聯(lián)網(wǎng)設(shè)備共同組成了一個無處不在的分布式計算平臺,能夠進(jìn)行最有效的計算。通過Web Service,用戶可以在任何時間、任何地點(diǎn)、通過任何設(shè)備獲得信息。
  Web Service的出現(xiàn),改變了網(wǎng)絡(luò)軟件開發(fā)的方式,甚至改變了網(wǎng)絡(luò)軟件的使用方式。從開發(fā)方式來講,Web Service就是網(wǎng)絡(luò)上的組件,可以使用Web Service構(gòu)建基于組件的WebGIS軟件。而從使用方式來看,WebGIS軟件的開發(fā)已經(jīng)不局限于網(wǎng)絡(luò)制圖,網(wǎng)絡(luò)數(shù)據(jù)的交換等功能,目前已經(jīng)在向服務(wù)使用的方向發(fā)展。由第三方將數(shù)據(jù)和對數(shù)據(jù)的操作及使用等功能以Web Service的方式提供出來,將大大減輕開發(fā)者在利用GIS數(shù)據(jù)開發(fā)WebGIS軟件和應(yīng)用過程中的困難,更好地解決WebGIS中出現(xiàn)的各種問題。

5 參考文獻(xiàn)
[1] 李新通,何建邦. GIS互操作與OGC規(guī)范[M]. 地理信息世界.2003
[2] 賈文玨,陳玉敏,龔健雅,李愛霞. 基于WebService的OGC地圖服務(wù)實現(xiàn)方法[J].測繪信息與工程.2004
[3] 陳 博,徐滿武. 基于Web 服務(wù)的計算模型———Web Service[J]. 計算機(jī)應(yīng)用研究.2003
[4] 顧寧 等編著. Web Services原理與研發(fā)實踐[M]. 北京:機(jī)械工業(yè)出版社.2006

關(guān)鍵字:通訊,北京
About Us - 關(guān)于我們 - 服務(wù)列表 - 付費(fèi)指導(dǎo) - 媒體合作 - 廣告服務(wù) - 版權(quán)聲明 - 聯(lián)系我們 - 網(wǎng)站地圖 - 常見問題 - 友情鏈接
Copyright©2014安裝信息網(wǎng) m.78375555.com. All rights reserved.
服務(wù)熱線:4000-293-296 聯(lián)系電話:0371-61311617 傳真:0371-55611201 QQ: 郵箱:zgazxxw@126.com 豫ICP備18030500號-4
未經(jīng)過本站允許,請勿將本站內(nèi)容傳播或復(fù)制
安全聯(lián)盟認(rèn)證