陳亮
(浙江省氣象信息網(wǎng)絡(luò)中心浙江 杭州 310017)
基于WebService氣象數(shù)據(jù)的開發(fā)和應(yīng)用
陳亮
(浙江省氣象信息網(wǎng)絡(luò)中心浙江 杭州 310017)
W eb service就是一個應(yīng)用程序,是一個能夠通過W eb進行調(diào)用的API,能夠用編程的方法通過W eb來調(diào)用這個應(yīng)用程序。在網(wǎng)絡(luò)技術(shù)快速發(fā)展的今天,許多數(shù)據(jù)服務(wù)平臺建立W eb service實現(xiàn)數(shù)據(jù)共享,氣象系統(tǒng)通過網(wǎng)絡(luò)建立W eb服務(wù)為公眾提供豐富的預(yù)報和實況數(shù)據(jù)。本文通過C#編程調(diào)用氣象系統(tǒng)提供的W eb service數(shù)據(jù)接口,并給出調(diào)用方法和實例。
W eb Service氣象數(shù)據(jù)JSON XML
在互聯(lián)網(wǎng)時代,信息和數(shù)據(jù)共享已成為推動網(wǎng)絡(luò)發(fā)展的一個重要因素,人們通過互聯(lián)網(wǎng)的搜索,都能找到所要的信息。近年來,由于全球氣候變暖趨勢,使得極端氣候事件發(fā)生頻率增多,給人們帶來災(zāi)難和損失,人們迫切需要及時獲取氣象預(yù)報信息和數(shù)據(jù)。為了滿足公眾的需求,氣象部門向公眾提供預(yù)報信息和實時氣象數(shù)據(jù)的W eb服務(wù)(W eb Service),如中國天氣網(wǎng)及氣象局官方提供了實況和天氣預(yù)報的數(shù)據(jù)接口,一些網(wǎng)站、應(yīng)用軟件及手機終端通過這些數(shù)據(jù)接口就可以獲取相應(yīng)的天氣信息[1]。
2.1定義描述
W eb Service是基于XM L和HTTPS的一種服務(wù),其通信協(xié)議主要基于SOAP,服務(wù)的描述通過WSDL,通過UDDI來發(fā)現(xiàn)和獲得服務(wù)的元數(shù)據(jù)[2]。W eb Service是一種服務(wù)導(dǎo)向架構(gòu)的技術(shù),通過標準的W eb協(xié)議提供服務(wù),目的是保證不同平臺的應(yīng)用服務(wù)可以互操作。W 3C給W eb Service的定義:它是一個軟件系統(tǒng),為了支持跨網(wǎng)絡(luò)的機器間互動操作而設(shè)計。W eb Service通常被定義為服務(wù)端的模塊化的應(yīng)用程序接口(API),它們可能通過網(wǎng)絡(luò)進行調(diào)用,來執(zhí)行客戶所提交請求
服務(wù)。這個定義比較抽象,簡單說,W eb Service就是為客戶端提供可遠程調(diào)用數(shù)據(jù)的一種方法。比如,你要獲取當?shù)貧庀缶止俜降奶鞖忸A(yù)報,就可通過應(yīng)用軟件向提供W eb Service的官方網(wǎng)站發(fā)送一個請求,網(wǎng)站就返回一組當天的天氣預(yù)報數(shù)據(jù),所以,W eb Service就是讓你的網(wǎng)站或終端可以使用其他網(wǎng)站提供的開放、共享(有些是收費)的資源,比如在網(wǎng)頁上顯示天氣、地圖、IP上的最新動態(tài)等等。
2.2 數(shù)據(jù)格式
(1)數(shù)組,返回一維字符串數(shù)組。
(2)JSON和XM L:
XM L和JSON都利用結(jié)構(gòu)化來標記數(shù)據(jù),有著相同的特性,易于編寫和閱讀,也易于生成和解析。早期W eb services用XM L來表示客戶端與服務(wù)器間數(shù)據(jù)交換有效負載的格式,但由于Ajax和REST技術(shù)的出現(xiàn)影響了應(yīng)用程序架構(gòu),JavaScript Object Notation(JSON)成為一種更輕、更友好的W eb services數(shù)據(jù)格式。兩種數(shù)據(jù)格式都有其優(yōu)缺點,用戶可根據(jù)不現(xiàn)的業(yè)務(wù)需求來構(gòu)建不同數(shù)據(jù)格式的W eb services。
3.1 調(diào)用Web services
氣象官方網(wǎng)站提供的W eb services的數(shù)據(jù)接口有[3]:

W ebService.asmx,其方法有:
getSupportCity:查詢國內(nèi)外城市信息,返回一維字符串數(shù)組城市代碼或名稱。
getSupportProvince:獲得國內(nèi)外省份信息,返回一維字符串數(shù)組的省份的名稱。
getW eatherbyCityName:根據(jù)城市查詢獲得未來三天內(nèi)天氣情況、現(xiàn)在的天氣實況、天氣和生活指數(shù),返回數(shù)據(jù):一個一維數(shù)組,共有23個元素,分別是:省份、城市、城市代碼、城市圖片名稱、最后更新時間、當天的氣溫、概況、風向和風力、圖標一、圖標二、現(xiàn)在的天氣實況、天氣和生活指數(shù)、第二天的氣溫、概況、風向和風力、圖標一、圖標二、第三天的氣溫、概況、風向和風力、圖標一、圖標二。
了解數(shù)據(jù)接口后,接下來就是編寫代碼了:
首先引入W eb服務(wù)。在VS2010中項目上右擊→添加服務(wù)引用,在彈出的添加服務(wù)引用窗口,錄入web服務(wù)地址和引用后的命名空間為webW eather。
其次是編寫相關(guān)代碼。


3.2 解析JSON數(shù)據(jù)
氣象信息除了氣象官方網(wǎng)站除了提供字符串數(shù)組的氣象數(shù)據(jù)外,還提供了JSON數(shù)組結(jié)構(gòu)的氣象數(shù)據(jù)。如:http: //www.weather.com.cn/data/sk/101210101.htm l,網(wǎng)址中101210101為杭州的城市代碼,返回是杭州的天氣實況;http: //m.weather.com.cn/data/101210101.htm l,返回是杭州的一周天氣預(yù)報和當天的生活指數(shù)。
http://www.weather.com.cn/data/cityinfo/101210101.htm l,返回杭州的天氣預(yù)報;返回JSON數(shù)據(jù):{"weatherinfo":{"city":"杭州","cityid":"101210101","temp1":"13℃","tem p2":"1℃", "weather":"多云","img1":"d1.gif","img2":"n1.gif","ptime":"11: 00"}}
調(diào)用方法如下:


3.3 解析XML取得實況信息
(1)直接調(diào)用flash的實況變化圖
網(wǎng)站提供了過去24小時的實況(溫度、相對濕度、降水量、風向和風力)變化的數(shù)據(jù)flas圖,比如杭州是的http://flash. weather.com.cn/sk2/shikuang.sw f?id=101210101,只要改變id所對應(yīng)的城市代碼就可取得該城市的實況數(shù)據(jù)的變化圖,如圖1所示。

圖1 天氣實況變化圖

通過上述方法,再結(jié)合前臺網(wǎng)頁就可實現(xiàn)城市天氣信息如圖2所示的功能。通過查詢可獲取全國主要城市天氣信息。

圖2 天氣信息圖
W eb Service是在網(wǎng)絡(luò)時代成為面向互聯(lián)網(wǎng)、面向不同行業(yè)間數(shù)據(jù)發(fā)布和共享的重要方式。各行業(yè)在數(shù)據(jù)共享時不必直接提供數(shù)據(jù)庫和數(shù)據(jù)文件,可需要建立W eb Service,并開放相應(yīng)的數(shù)據(jù)接口就可,同時在發(fā)布時提供數(shù)據(jù)接口調(diào)用的方法,那么應(yīng)用方只要通過開發(fā)軟件,就能方便通過接口獲取他們所需要的數(shù)據(jù),就可嵌入到各自的應(yīng)用平臺中。
[1]王甫棣,林潤生,胡英楣.基于W eb服務(wù)的氣象數(shù)據(jù)服務(wù)[J].計算機工程,2009,35(8):280-282.
[2]維基百科.http://zh.w ikipedia.org/w iki/Web服務(wù)[OL].
[3]龐曉瓊,陳立潮,陳文俊.基于W eb服務(wù)的氣象信息發(fā)布服務(wù)系統(tǒng)[J].計算機應(yīng)用與軟件,2007,24(9):88-90.
Meteorological Network Security Program at Provincial Level
CHEN Liang
(Zhejiang Meteorological Information Network Center,Hangzhou Zhejiang 310017,China)
W eb service,asan application program,isaweb callable API,whichmeans to call the applicable program through web in way of programm ing.At an age of rapid progresson network technique of today,many information service platforms achieve the data sharing by establishing theW eb service.Thus the Meteorological departmentsare able to provide the public w ith abundant information about weather forecast and records by building W eb service online.This articlemainly introduces how to call the W eb service data interfaces offered by the Meteorological departments through using C#programm ing,aswell as themethods and examples of calling them.
W eb service;meteorological information;JSON XML
TP393
A
1008-1739(2014)13-69-4
定稿日期:2014-06-12