亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        左進(jìn)波

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

        0 引言

        在人們的日常生活中,天氣服務(wù)隨處可見,同時也是不可或缺的生活服務(wù)之一。隨著移動通訊技術(shù)的發(fā)展和智能設(shè)備的普及,多種多樣的移動應(yīng)用(app)使得人們的生活更加便利,隨時打開一款天氣應(yīng)用人們都可以獲得最新的天氣情況。傳統(tǒng)的天氣服務(wù)接口形式為:用戶輸入目標(biāo)城市名,然后得到當(dāng)?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)桌面軟件強(qiá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ù)擴(kuò)展開發(fā)

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

        領(lǐng)域空間信息服務(wù)擴(kuò)展是指用戶根據(jù)特定的業(yè)務(wù)邏輯,自行構(gòu)建出與空間信息有關(guān)的空間信息服務(wù),例如氣象行業(yè)應(yīng)用的風(fēng)向符號標(biāo)志圖服務(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ù)提供者提供的功能進(jìn)行組合和統(tǒng)一封裝;服務(wù)接口按照不同的服務(wù)形式的規(guī)則構(gòu)建servlet或者interface,將服務(wù)組件以各種形式對外發(fā)布,如將地圖服務(wù)組件發(fā)布為rest風(fēng)格的地圖服務(wù),將數(shù)據(jù)服務(wù)組件發(fā)布為wfs服務(wù)等[2]。各層次間的調(diào)用關(guān)系以及依賴注入技術(shù)(上下層次模塊之間的動態(tài)調(diào)用)是通過配置文件完成的,這樣當(dāng)任何模塊發(fā)生改變之后可以很容易的進(jìn)行配置和改變,這樣就實現(xiàn)了動態(tài)關(guān)聯(lián)關(guān)系的創(chuàng)建,從而有效的提高了效率,提升了模塊利用率。

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

        根據(jù)領(lǐng)域服務(wù)擴(kuò)展開發(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)緯度,進(jìn)而給出當(dāng)?shù)氐奶鞖馇闆r。要進(jìn)行天氣的實時獲取,免不了要訪問天氣服務(wù)提供商,這里選擇中國天氣網(wǎng)作為天氣情況服務(wù)商,由于中國天氣網(wǎng)在獲得天氣情況時需要用到城市碼,這樣情況下需要進(jìn)行空間分析,然后通過點查詢得到對應(yīng)的天氣碼。

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

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

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

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

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

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

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

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

        數(shù)據(jù)對于GIS來說十分重要,是GIS系統(tǒng)的核心和靈魂。對于天氣服務(wù)接口的設(shè)計而言,必須要通過底圖數(shù)據(jù)實現(xiàn)空間位置與屬性信息的關(guān)聯(lián)和管理。本接口服務(wù)設(shè)計中底圖數(shù)據(jù)采用中國縣級行政區(qū)詳細(xì)區(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ù)組件層使用。具體要做的就是:進(jìn)行點查詢并返回天氣碼。

        啟動工作空間為點查詢做好準(zhǔn)備,其中底圖的文件路徑通過配置參數(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;

        }

        }

        通過上層傳遞的點信息與底圖進(jìn)行空間點查詢并獲得查詢結(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ù)提供者獲得天氣碼,通過天氣碼進(jìn)行網(wǎng)絡(luò)請求,獲取請求數(shù)據(jù),根據(jù)實際需要對數(shù)據(jù)進(jìn)行處理,將數(shù)據(jù)返給接口層。

        服務(wù)層組件應(yīng)該繼承ComponentContextAware接口,獲取上下文對象,進(jìn)而通過實現(xiàn)setComponentContext方法獲取配置文件中相關(guān)的配置信息,獲得服務(wù)提供者,然后才能進(jìn)行的業(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);

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

        strweatherJson=ConnWeatherAPI(cityWeatherCode);

        通過ConnWeatherAPI方法獲得返回數(shù)據(jù),在ConnWeatherAPI方法里進(jìn)行網(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]。在類前加入標(biāo)注,表明接口支持的服務(wù)組件:

        @Component (interfaceClass =com.supermap.Services.GetOverallWeather.GetOverallWeatherComponent.class)。 在 類 前 加 入 標(biāo)注,表明服務(wù)資源位置:@Path("/GetOverallWeather")。在方法前標(biāo)注限定接口調(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);

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

        <resources>

        <resource>

        <configID>GetOverallWeather</configID>

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

        </resource>

        </resources>

        4 結(jié)束語

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

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

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

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

        猜你喜歡
        底圖經(jīng)緯度服務(wù)提供者
        一種基于實際GIS底圖的精準(zhǔn)計費方式探究
        網(wǎng)絡(luò)服務(wù)提供者的侵權(quán)責(zé)任研究
        法制博覽(2020年11期)2020-11-30 03:36:52
        論網(wǎng)絡(luò)服務(wù)提供者刑事責(zé)任的歸責(zé)模式一一以拒不履行網(wǎng)絡(luò)安全管理義務(wù)罪為切入點
        自制中學(xué)實驗操作型經(jīng)緯測量儀
        論網(wǎng)絡(luò)服務(wù)提供者的侵權(quán)責(zé)任
        法制博覽(2017年16期)2017-01-28 00:01:59
        底圖檔案管理的科學(xué)化與工作者的綜合素質(zhì)
        企業(yè)底圖檔案的歸檔管理
        陜西檔案(2016年5期)2016-11-26 03:16:46
        如何做好底圖檔案科學(xué)管理
        澳洲位移大,需調(diào)經(jīng)緯度
        一種利用太陽影子定位的數(shù)學(xué)模型
        国内精品伊人久久久久影院对白| 免费人人av看| 欧美一级视频在线| 亚洲中文字幕第二十三页| 日本高清色一区二区三区| 国产中文字幕亚洲国产| 亚洲成年国产一区二区| 高级会所技师自拍视频在线| 日韩中文字幕免费视频| 欧美日韩不卡中文字幕在线| 人妻少妇喷水意淫诱惑| 中文字幕视频一区二区| 多毛小伙内射老太婆| 免费观看羞羞视频网站| 成熟丰满熟妇高潮xxxxx视频| 久久99国产伦精品免费| 99久久精品国产片| 亚洲综合久久精品少妇av| 性色视频加勒比在线观看| 欧美老熟妇乱xxxxx| 377p日本欧洲亚洲大胆张筱雨| 欧美日韩在线免费看| 日韩在线不卡一区在线观看| 熟女丝袜美腿亚洲一区二区三区| 极品夫妻一区二区三区| 亚洲国产高清精品在线| 影音先锋男人站| 久久久综合九色合综国产| 日本国产精品高清在线| 中文字幕乱码在线人妻| 成人欧美一区二区三区1314| 国产乱人伦AV在线麻豆A| 亚洲一区二区三区免费av| 欧美国产亚洲日韩在线二区| 中文字幕无码不卡免费视频| 巨臀中文字幕一区二区| 日韩一区二区,亚洲一区二区视频| 天堂视频在线观看一二区| 在线亚洲欧美日韩精品专区| 激情中文丁香激情综合| 中文字幕专区一区二区|