999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Rest的天氣服務接口實現研究

2015-01-08 03:30:40左進波
科技視界 2015年7期
關鍵詞:服務信息

左進波

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

0 引言

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

SuperMap iServer Java是基于Java EE平臺構建的面向服務式架構的企業級GIS產品,實現了將傳統桌面軟件強大的GIS功能以面向服務的組件形式部署在GIS服務器上,實現開發人員調用不同功能的GIS組件來實現應用程序所需要的功能。這樣通過將WebGIS應用程序發布在Web應用服務器上,客戶端可以直接通過網絡訪問和使用Web應用程序提供的專業GIS功能服務[1]。

1 SuperMap iServer Java領域服務擴展開發

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

領域空間信息服務擴展是指用戶根據特定的業務邏輯,自行構建出與空間信息有關的空間信息服務,例如氣象行業應用的風向符號標志圖服務等。領域空間信息服務能夠完成通用核心的GIS功能,同時也可以與其他業務系統交互,和特殊的業務模型結合,從而實現特定的服務。

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

2 實現總體思路與架構設計

根據領域服務擴展開發的特點,通過自定義開發領域服務提供者實現特殊的底層GIS數據功能,通過領域服務組件實現對服務提供者的封裝及處理,通過開發服務接口來實現與客戶端的對接。

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

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

天氣接口的詳細架構如圖3所示,服務接口采用Myeclipse 10作為IDE開發環境。服務接口的運作流程為:

(1)客戶端調用接口將經緯度信息發送過來;

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

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

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

3 Rest服務接口實現關鍵技術

3.1 底圖數據準備

數據對于GIS來說十分重要,是GIS系統的核心和靈魂。對于天氣服務接口的設計而言,必須要通過底圖數據實現空間位置與屬性信息的關聯和管理。本接口服務設計中底圖數據采用中國縣級行政區詳細區域數據,同時屬性數據信息包含兼容中國天氣網的天氣請求碼數據。

3.2 實現領域服務提供者

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

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

if(workspace==null)

{

workspace=new Workspace();

workSpaceConnInfo=new WorkspaceConnectionInfo();

workSpaceConnInfo.setType(WorkspaceType.SMWU);

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

if(!workspace.open(workSpaceConnInfo))

{

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

return null;

}

}

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

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

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(" 點 查 詢 處 理 出 現 錯 誤 "+e.getMessage());

}

finally {

recordset.close();

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

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

workspace.close();

workspace.dispose();

}

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

@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 實現天氣服務組件

服務組件層是中間層也是所有業務封裝統一層,這層實現的是:通過調用服務提供者獲得天氣碼,通過天氣碼進行網絡請求,獲取請求數據,根據實際需要對數據進行處理,將數據返給接口層。

服務層組件應該繼承ComponentContextAware接口,獲取上下文對象,進而通過實現setComponentContext方法獲取配置文件中相關的配置信息,獲得服務提供者,然后才能進行的業務操作。

@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;

}

}

}

}

獲得服務提供者之后,就可以調用服務提供者獲得天氣碼。

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

通過天氣碼進行網絡請求,獲取請求數據。

strweatherJson=ConnWeatherAPI(cityWeatherCode);

通過ConnWeatherAPI方法獲得返回數據,在ConnWeatherAPI方法里進行網絡請求,和請求后數據的處理,并返回json數據。

3.4 實現接口層

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

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

@GET

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

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

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

GetOverallWeatherComponent getWeatherPosComponent

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

調用服務組件層獲得數據:

strjs=getWeatherPosComponent.GetWeatherJsonMethod(inLongitude,inLatitude);

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

<resources>

<resource>

<configID>GetOverallWeather</configID>

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

</resource>

</resources>

4 結束語

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

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

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

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

猜你喜歡
服務信息
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 啦啦啦网站在线观看a毛片| 全午夜免费一级毛片| 日韩毛片免费| 成人在线观看不卡| 国产免费自拍视频| 六月婷婷激情综合| 全免费a级毛片免费看不卡| 99人妻碰碰碰久久久久禁片| 成人在线观看不卡| 中国国产一级毛片| 伊人久久精品无码麻豆精品| 国产欧美精品午夜在线播放| 国产无套粉嫩白浆| 欧美成人二区| 欧美高清三区| 国产精品久久久久久久久| av在线5g无码天天| 97成人在线视频| 亚洲一区二区日韩欧美gif| 四虎精品免费久久| 久久一本日韩精品中文字幕屁孩| 中文字幕亚洲综久久2021| 欧美精品不卡| 欧美区在线播放| 欧美a级在线| 亚洲三级色| 亚洲精品制服丝袜二区| JIZZ亚洲国产| 国产午夜福利亚洲第一| 奇米影视狠狠精品7777| 亚洲高清在线播放| 在线视频一区二区三区不卡| 亚州AV秘 一区二区三区| 欧美成一级| 九九视频免费在线观看| 亚洲第一极品精品无码| 无码AV高清毛片中国一级毛片| 亚洲中文字幕无码爆乳| 91国内外精品自在线播放| 日本三级黄在线观看| 午夜国产精品视频黄| 久久77777| 国产乱子伦一区二区=| 亚洲午夜福利在线| 国产激情第一页| 亚洲欧美激情另类| 久久精品波多野结衣| 自拍偷拍一区| av午夜福利一片免费看| 美女一级毛片无遮挡内谢| 免费人欧美成又黄又爽的视频| 国产一级特黄aa级特黄裸毛片| 一级毛片免费播放视频| 亚洲一区二区日韩欧美gif| 欧美日韩国产在线播放| 一本一本大道香蕉久在线播放| 欧洲日本亚洲中文字幕| 亚洲无码电影| 女人一级毛片| 无码又爽又刺激的高潮视频| 欧美爱爱网| 国产成人免费| 亚洲精品无码人妻无码| 四虎影视8848永久精品| 久久久精品国产亚洲AV日韩| 99re热精品视频国产免费| 666精品国产精品亚洲| 成人国产小视频| 欧美色香蕉| 国产精品成人第一区| 人妻免费无码不卡视频| 香蕉久久国产精品免| 亚洲综合极品香蕉久久网| 中文纯内无码H| 91免费国产高清观看| 67194亚洲无码| 极品私人尤物在线精品首页 | 人妻无码中文字幕第一区| 国产一级二级三级毛片| 欧美性爱精品一区二区三区| 99er这里只有精品| 久久综合婷婷|