• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Rest的天氣服務(wù)接口實現(xiàn)研究

      2015-01-08 03:30:40左進波
      科技視界 2015年7期
      關(guān)鍵詞:底圖經(jīng)緯度服務(wù)提供者

      左進波

      (中國礦業(yè)大學〈北京〉地球科學與測繪工程學院,中國 北京100083)

      0 引言

      在人們的日常生活中,天氣服務(wù)隨處可見,同時也是不可或缺的生活服務(wù)之一。隨著移動通訊技術(shù)的發(fā)展和智能設(shè)備的普及,多種多樣的移動應(yīng)用(app)使得人們的生活更加便利,隨時打開一款天氣應(yīng)用人們都可以獲得最新的天氣情況。傳統(tǒng)的天氣服務(wù)接口形式為:用戶輸入目標城市名,然后得到當?shù)氐奶鞖馇闆r,這樣一來就沒有充分利用移動智能設(shè)備的定位功能,本文正是研究通過經(jīng)緯度信息獲取天氣情況接口服務(wù)的實現(xiàn)。

      SuperMap iServer Java是基于Java EE平臺構(gòu)建的面向服務(wù)式架構(gòu)的企業(yè)級GIS產(chǎn)品,實現(xiàn)了將傳統(tǒng)桌面軟件強大的GIS功能以面向服務(wù)的組件形式部署在GIS服務(wù)器上,實現(xiàn)開發(fā)人員調(diào)用不同功能的GIS組件來實現(xiàn)應(yīng)用程序所需要的功能。這樣通過將WebGIS應(yīng)用程序發(fā)布在Web應(yīng)用服務(wù)器上,客戶端可以直接通過網(wǎng)絡(luò)訪問和使用Web應(yīng)用程序提供的專業(yè)GIS功能服務(wù)[1]。

      1 SuperMap iServer Java領(lǐng)域服務(wù)擴展開發(fā)

      SuperMap iServer Java不僅是企業(yè)級的GIS服務(wù)器,同時也是可擴展的服務(wù)式開發(fā)平臺,可擴展性為進行個性化業(yè)務(wù)邏輯開發(fā)提供了方便。SuperMap iServer Java擴展主要分為兩個部分:領(lǐng)域空間信息服務(wù)擴展(也稱為DSS)和iClient客戶端擴展。

      領(lǐng)域空間信息服務(wù)擴展是指用戶根據(jù)特定的業(yè)務(wù)邏輯,自行構(gòu)建出與空間信息有關(guān)的空間信息服務(wù),例如氣象行業(yè)應(yīng)用的風向符號標志圖服務(wù)等。領(lǐng)域空間信息服務(wù)能夠完成通用核心的GIS功能,同時也可以與其他業(yè)務(wù)系統(tǒng)交互,和特殊的業(yè)務(wù)模型結(jié)合,從而實現(xiàn)特定的服務(wù)。

      SuperMap iServer Java服務(wù)框架是一個三層結(jié)構(gòu)的體系,包括服務(wù)提供者、服務(wù)組件和服務(wù)接口。各個層次的功能和作用如圖1所示。服務(wù)提供者利用GIS計算內(nèi)核或者第三方GIS服務(wù)實現(xiàn)GIS功能的處理;服務(wù)組件對服務(wù)提供者提供的功能進行組合和統(tǒng)一封裝;服務(wù)接口按照不同的服務(wù)形式的規(guī)則構(gòu)建servlet或者interface,將服務(wù)組件以各種形式對外發(fā)布,如將地圖服務(wù)組件發(fā)布為rest風格的地圖服務(wù),將數(shù)據(jù)服務(wù)組件發(fā)布為wfs服務(wù)等[2]。各層次間的調(diào)用關(guān)系以及依賴注入技術(shù)(上下層次模塊之間的動態(tài)調(diào)用)是通過配置文件完成的,這樣當任何模塊發(fā)生改變之后可以很容易的進行配置和改變,這樣就實現(xiàn)了動態(tài)關(guān)聯(lián)關(guān)系的創(chuàng)建,從而有效的提高了效率,提升了模塊利用率。

      2 實現(xiàn)總體思路與架構(gòu)設(shè)計

      根據(jù)領(lǐng)域服務(wù)擴展開發(fā)的特點,通過自定義開發(fā)領(lǐng)域服務(wù)提供者實現(xiàn)特殊的底層GIS數(shù)據(jù)功能,通過領(lǐng)域服務(wù)組件實現(xiàn)對服務(wù)提供者的封裝及處理,通過開發(fā)服務(wù)接口來實現(xiàn)與客戶端的對接。

      服務(wù)接口中需要根據(jù)用戶所在的地區(qū),也就是用戶所在地的經(jīng)緯度,進而給出當?shù)氐奶鞖馇闆r。要進行天氣的實時獲取,免不了要訪問天氣服務(wù)提供商,這里選擇中國天氣網(wǎng)作為天氣情況服務(wù)商,由于中國天氣網(wǎng)在獲得天氣情況時需要用到城市碼,這樣情況下需要進行空間分析,然后通過點查詢得到對應(yīng)的天氣碼。

      服務(wù)接口的實現(xiàn)流程如圖2所示,用戶將經(jīng)緯度信息傳給接口,接口通過點查詢的空間分析將取得對應(yīng)的天氣請求碼,通過天氣請求碼訪問中國天氣網(wǎng)的數(shù)據(jù)接口,得到相應(yīng)的天氣數(shù)據(jù),然后根據(jù)具體需要對天氣數(shù)據(jù)進行個性化定制處理。

      天氣接口的詳細架構(gòu)如圖3所示,服務(wù)接口采用Myeclipse 10作為IDE開發(fā)環(huán)境。服務(wù)接口的運作流程為:

      (1)客戶端調(diào)用接口將經(jīng)緯度信息發(fā)送過來;

      (2)將經(jīng)緯度信息生成點要素,并與底圖進行點查詢;

      (3)獲得點查詢的天氣碼,請求中國天氣網(wǎng),并獲得返回數(shù)據(jù);

      (4)將數(shù)據(jù)進行加工處理,返回給用戶(客戶端)。

      3 Rest服務(wù)接口實現(xiàn)關(guān)鍵技術(shù)

      3.1 底圖數(shù)據(jù)準備

      數(shù)據(jù)對于GIS來說十分重要,是GIS系統(tǒng)的核心和靈魂。對于天氣服務(wù)接口的設(shè)計而言,必須要通過底圖數(shù)據(jù)實現(xiàn)空間位置與屬性信息的關(guān)聯(lián)和管理。本接口服務(wù)設(shè)計中底圖數(shù)據(jù)采用中國縣級行政區(qū)詳細區(qū)域數(shù)據(jù),同時屬性數(shù)據(jù)信息包含兼容中國天氣網(wǎng)的天氣請求碼數(shù)據(jù)。

      3.2 實現(xiàn)領(lǐng)域服務(wù)提供者

      領(lǐng)域服務(wù)提供者在三層中是最底層的,也是調(diào)用的底點,在這一層中要實現(xiàn):根據(jù)傳遞過來的經(jīng)緯度信息得到天氣碼供服務(wù)組件層使用。具體要做的就是:進行點查詢并返回天氣碼。

      啟動工作空間為點查詢做好準備,其中底圖的文件路徑通過配置參數(shù)類的方式獲得。

      if(workspace==null)

      {

      workspace=new Workspace();

      workSpaceConnInfo=new WorkspaceConnectionInfo();

      workSpaceConnInfo.setType(WorkspaceType.SMWU);

      workSpaceConnInfo.setServer(filename);//注意文件路徑

      if(!workspace.open(workSpaceConnInfo))

      {

      System.out.println("打開工作空間出現(xiàn)錯誤了。");

      return null;

      }

      }

      通過上層傳遞的點信息與底圖進行空間點查詢并獲得查詢結(jié)果值。

      Dataset dsarea=datasource.getDatasets().get("全國縣級行政區(qū)");//獲得全國縣級行政區(qū)數(shù)據(jù)集

      QueryParameter queryparameter=new QueryParameter();

      queryparameter.setSpatialQueryObject(gps_point);

      queryparameter.setSpatialQueryMode (SpatialQueryMode.WITHIN);

      DatasetVector dsvec=(DatasetVector)dsarea;

      recordset=dsvec.query(queryparameter);

      CityWeatherCode=recordset.getFieldValue("WCode").toString();//城市天氣碼

      }catch(Exception e)

      {

      System.out.println(" 點 查 詢 處 理 出 現(xiàn) 錯 誤 "+e.getMessage());

      }

      finally {

      recordset.close();

      recordset.dispose();//釋放資源

      workSpaceConnInfo.dispose();//釋放資源

      workspace.close();

      workspace.dispose();

      }

      服務(wù)提供者通過setProviderContext方法獲得配置文件中底圖的路徑信息。在配置文件中配置底圖路徑參數(shù),并為配置參數(shù)類對象賦值,這樣就可以通過讀取參數(shù)類對象從而動態(tài)獲得文件路徑。

      @Override

      public void setProviderContext(ProviderContext context){

      //TODO Auto-generated method stub

      GetOverallWeatherParameterJson getoveralljson =context.getConfig(GetOverallWeatherParameterJson.class);

      filename=getoveralljson.Getfilename();

      }

      public class GetOverallWeatherParameterJson{

      private String filename=null;

      public void Setfilename(String name)

      {

      this.filename=name;

      }

      public String Getfilename()

      {

      return this.filename;

      }

      }

      3.3 實現(xiàn)天氣服務(wù)組件

      服務(wù)組件層是中間層也是所有業(yè)務(wù)封裝統(tǒng)一層,這層實現(xiàn)的是:通過調(diào)用服務(wù)提供者獲得天氣碼,通過天氣碼進行網(wǎng)絡(luò)請求,獲取請求數(shù)據(jù),根據(jù)實際需要對數(shù)據(jù)進行處理,將數(shù)據(jù)返給接口層。

      服務(wù)層組件應(yīng)該繼承ComponentContextAware接口,獲取上下文對象,進而通過實現(xiàn)setComponentContext方法獲取配置文件中相關(guān)的配置信息,獲得服務(wù)提供者,然后才能進行的業(yè)務(wù)操作。

      @Override

      public void setComponentContext(ComponentContext context){

      //TODO Auto-generated method stub

      List<Object> providers=context.getProviders(Object.class);

      if(providers!=null)

      {

      for(Object provider:providers)

      {

      if(provider instanceof Get Overall Weather Provider)

      {

      this.getWeatherProvider=(Get Overall Weather Provider)provider;

      break;

      }

      }

      }

      }

      獲得服務(wù)提供者之后,就可以調(diào)用服務(wù)提供者獲得天氣碼。

      String cityWeatherCode=getWeatherProvider.Get City Wether Code Method(posPointin);

      通過天氣碼進行網(wǎng)絡(luò)請求,獲取請求數(shù)據(jù)。

      strweatherJson=ConnWeatherAPI(cityWeatherCode);

      通過ConnWeatherAPI方法獲得返回數(shù)據(jù),在ConnWeatherAPI方法里進行網(wǎng)絡(luò)請求,和請求后數(shù)據(jù)的處理,并返回json數(shù)據(jù)。

      3.4 實現(xiàn)接口層

      接口層要做的就是等待客戶端連接,接收客戶端傳遞過來的經(jīng)緯度信息,調(diào)用服務(wù)組件層取得數(shù)據(jù),并將數(shù)據(jù)返給客戶端。接口層要繼承JaxrsResourceBase 或者 JaxAlgorithResultSetResource<T>接口,從而通過調(diào)用getInterface()接口,獲取上下文對象,從而或獲取服務(wù)組件層[3]。在類前加入標注,表明接口支持的服務(wù)組件:

      @Component (interfaceClass =com.supermap.Services.GetOverallWeather.GetOverallWeatherComponent.class)。 在 類 前 加 入 標注,表明服務(wù)資源位置:@Path("/GetOverallWeather")。在方法前標注限定接口調(diào)用方式、請求URL:

      @GET

      @Path("{inLongitude}/{inLatitude}")

      public String GetOverallWeatherJAXRS(@PathParam("inLongitude")String longitude,@PathParam("inLatitude")String latitude){……}

      通過上下文對象獲得服務(wù)組件層對象信息:

      GetOverallWeatherComponent getWeatherPosComponent

      =interfacecontext.getComponents (GetOverallWeatherComponent.class).get(0);

      調(diào)用服務(wù)組件層獲得數(shù)據(jù):

      strjs=getWeatherPosComponent.GetWeatherJsonMethod(inLongitude,inLatitude);

      進行資源文件的配置,配置資源文件主要為了superMap框架能夠識別資源。

      <resources>

      <resource>

      <configID>GetOverallWeather</configID>

      <implementClass >com.supermap.Services.GetOverallWeather.GetOverallWeatherResource</implementClass>

      </resource>

      </resources>

      4 結(jié)束語

      本天氣服務(wù)接口通過SuperMap iServer Java領(lǐng)域服務(wù)擴展實現(xiàn),同時結(jié)合點查詢空間分析,實現(xiàn)了基于Rest接口服務(wù)的實時天氣狀況的獲取,可以滿足一般應(yīng)用的天氣服務(wù),具有極大的應(yīng)用價值。應(yīng)用過程中由于使用了多次的網(wǎng)絡(luò)請求服務(wù)使得響應(yīng)速度對于網(wǎng)絡(luò)狀況的依賴性很強,這在一定程度上會影響數(shù)據(jù)加載速度,這也為以后研究實現(xiàn)更加便捷、快速響應(yīng)的接口服務(wù)提供了良好的借鑒和參考。

      [1]汪秀兵,張廣弟,耿襯.基于 SuperMap iServer的贛州市旅游信息服務(wù)發(fā)布研究[J].測繪標準化,2012(2):25-28.

      [2]SuperMap圖書編委會.GIS工程師訓練營 SuperMap iServer Java從入門到精通[M].北京:清華大學出版社,2012.

      [3]北京超圖軟件股份有限公司.SuperMap iServer Java 6R(2012) 幫助[Z].2012.

      猜你喜歡
      底圖經(jīng)緯度服務(wù)提供者
      一種基于實際GIS底圖的精準計費方式探究
      網(wǎng)絡(luò)服務(wù)提供者的侵權(quán)責任研究
      法制博覽(2020年11期)2020-11-30 03:36:52
      論網(wǎng)絡(luò)服務(wù)提供者刑事責任的歸責模式一一以拒不履行網(wǎng)絡(luò)安全管理義務(wù)罪為切入點
      自制中學實驗操作型經(jīng)緯測量儀
      論網(wǎng)絡(luò)服務(wù)提供者的侵權(quán)責任
      法制博覽(2017年16期)2017-01-28 00:01:59
      底圖檔案管理的科學化與工作者的綜合素質(zhì)
      企業(yè)底圖檔案的歸檔管理
      陜西檔案(2016年5期)2016-11-26 03:16:46
      如何做好底圖檔案科學管理
      澳洲位移大,需調(diào)經(jīng)緯度
      一種利用太陽影子定位的數(shù)學模型
      平安县| 中江县| 江阴市| 灵台县| 准格尔旗| 湘乡市| 黄大仙区| 茂名市| 乌鲁木齐县| 新闻| 楚雄市| 肥东县| 张掖市| 靖边县| 乌拉特中旗| 斗六市| 中宁县| 拜泉县| 渝中区| 高尔夫| 连州市| 精河县| 大连市| 徐水县| 启东市| 莒南县| 新龙县| 西林县| 兴义市| 郸城县| 枝江市| 固安县| 龙胜| 灵山县| 韶山市| 越西县| 乐都县| 阿合奇县| 申扎县| 张家界市| 滦平县|