资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
基于云计算的天气预报系统实现摘 要:利用云计算技术,整合网络中云资源,实现天气预报系统,特别是利用Google Map做为信息集成的载体。 关键词:天气预报;云计算云计算是一种新兴的共享基础架构的方法,它可以将巨大的系统池连接在一起以提供各种IT服务。很多因素推动了对这类环境的需求,其中包括连接设备、实时数据流、SOA 的采用以及搜索、开放协作、社会网络和移动商务等这样的Web 2.0 应用的急剧增长。 1理论基础和系统结构 云计算的基本原理是,通过使计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,企业数据中心的运行将更与互联网相似。这使得企业能够将资源切换到需要的应用上,根据需求访问计算机和存储系统见图1。 Google云计算有4个突出特点: (1)应用全部迁移向互联网,省去了安装软件,升级维护软件的麻烦,同时也有利于协作。 (2)数据全部迁移向互联网,目前个人PC饱受网络病毒骚扰,将个人信息托管到网上更健壮的平台相对更安全。 (3)计算能力全部迁移到网上,只需要一个浏览器就可以接入互联网访问所有的应用,省去购买很贵的PC、操作系统和应用软件成本。 (4)存储空间全部迁移到网上。目前信息大爆炸,即使是TB级存储已经进入个人,但仍然不能满足需求,所以大量数据存到网上是一个不错的选择。 从系统结构的构成(图2)可以看到,客户端向服务器发送去请求的时候,服务器直接把客户端的请求转发到“云”中,服务器不做任何的计算任务,只是调用“云”的服务,这样可以完全免除服务器方面的计算负载,Google只给出云计算的接口,而我们只管调用,不用关心其背后的实现方式。 2系统的实现 2.1系统实现技术 本系统使用了四朵“云”,来实现计算功能,分别是MaxMind,Weather.com,Google,Yahoo。下面对四朵“云”分别进行说明。 2.1.1MaxMind MaxMind提供的功能就是把IP地址转化成地理位置,在国内比较熟悉的IP地理位置数据库就是纯真IP数据库。实际上IP和地理位置的的关系比较简单,因为IP地址的分配都是根据地域来分配的,这样就为根据IP地址来查询地理位置提供了方便.笔者在分析纯真IP数据库的时候,发现这个数据库是二进制格式,在不知道文件格式的情况下不能转化成真正有用的数据库,同时这样的数据库也不提供经纬度坐标,所以就不能用于IP地理位置的可视化系统。MaxMind却可以弥补这样的缺陷,MaxMind为我们提供了基于GPL协议的GeoLiteCity数据库,这个数据库有两中格式,一种是CSV格式,可以便于导入数据库;另一种是二进制格式,可以用编程语言对数据库进行操作。同时MaxMind还为这些数据库提供了丰富的API,包括C,Perl,PHP,Apache Module,Java,Python,C#,Ruby,MS COM Object,VB.NET,Pascal,Javascript。这里我们选择了Javascript,因为它不会给服务器添加任何的负担。代码如下: script language=“JavaScript” src=“http:/j.maxmind.com/app/geoip.js”/script brCountry Code: script language=“JavaScript”document.write(geoip_country_code();/script brCountry Name: script language=“JavaScript”document.write(geoip_country_name();/scriptbrCity: script language=“JavaScript”document.write(geoip_city();/script brRegion: script language=“JavaScript”document.write(geoip_region();/script brLatitude: script language=“JavaScript”document.write(geoip_latitude();/script brLongitude: script language=“JavaScript”document.write(geoip_longitude();/script 其中:geoip_country_code:国家代码,如中国为CN; geoip_country_name:国家名称,如中国为China; geoip_city():城市名称,如taiyuan; geoip_region():区域代码,对于中国来说,region获取的是省级行政单位的名称,如shanxi; geoip_latitude():纬度; geoip_longitude():经度; 把代码嵌入HTML文件中,浏览网页会得到类似的内容: Country Code: CN Country Name: China Region: 30 Region Name:guangdong City: guangzhou Latitude: 23.1167 Longitude: 113.2500 2.1.2Yahoo.com 在国内很多门户网站都提供天气预报功能,但是免费提供网络程序接口都不多。当然可以通过一些技术手段获取这些资源,但这并不是一个稳定的资源,而且可能会涉及到一些版权的问题,所以就不能使用这些资源。Yahoo Developer Network提供免费服务接口实现天气预报数据的获取。Yahoo提供的天气预报服务有RSS输出格式,接口的地址是: http:/weather.yahoo.com/forecastrss?p=location&u=unit location参数表示地点ID或者美国邮编,美国邮编只能用于美国地区,地点ID通常的表示方法是“USCA116”,如果想获取地区ID,可以从http:/weather.yahoo.com查询。查询的结果通常是一个包含查询地点天气预报信息的网页,URL类似于“http:/weather.yahoo.com/forecastrss?p=CHXX0129&u=c”,里面的CHXX0129就是地区ID。 U表示天气信息的单位,可以的值有“c”和“f”两个,分别表示摄氏度和华氏度,这里我们选择了“c”,因为我们日常生活中常用的是摄氏度。 输入“http:/weather.yahoo.com/forecastrss?p=chxx0129&u=c”,我们会看到“yweather”命名空间里面包括的是天气信息,信息非常的丰富,包括气温,天气状况,风向风力,气压,湿度,能见度,日期日落的时间。“geo”命名空间里面包含了经纬度。由于是RSS格式的文件,所以非常适合用Google Ajax Feed API读取,然后在Google Maps做标记。 2.1.3Weather.com 在上面介绍yahoo天气预报的接口的时候,说到地区ID的获取的问题。Yahoo虽然提供地区ID的搜索,但是在它提供的API中却没有地区ID的获取方式。这需要从其他地方获取,其实Yahoo天气预报的数据是从Weather.com获取的,恰恰Weather.com提供SDK让我们获取地区ID,Weather.com的SDK功能非常丰富。获取地区ID的方式如下: 查询城市ID的URL为“http:/xoap.weather.com/search/search?where=location”,其中“location”表示要查询的城市,在SDK文档中演示的是美国的地区例如atlanta,如果想使用中国的城市,要在城市和国家直接添加“+”号,例如http:/xoap.weather.com/search/search?where=taiyuan+china,该查询返回的XML文档如下:!This document is intended only for use by authorized licensees of The !Weather Channel. Unauthorized use is prohibited.Copyright 1995-2008, !The Weather Channel Interactive, Inc.All Rights Reserved. search ver=“2.0” loc id=“CHXX0129”type=“1”Taiyuan, China/loc /search 在loc的标记中显示的就是地区的ID,id的值这正是我们想获取的ID代码,但是这里面还有一个问题,就是Google Ajax Feed API不支持跨域转发,需要服务器转发才能解析这个XML文件。下面是一个用php写的一个代理程序 ?php header(content-type: text/xml); $url=http:/xoap.weather.com/search/search?. $_SERVER“QUERY_STRING”; echo file_get_contents($url); ? 上面的php程序使用的参数和SDK中的实例是一样的,但是需要服务器支持allow_url_fopen。 2.1.4Google Maps API Google Maps API 是Google提供的一个基于JavaScript技术的API。Google Maps APIs 给开发者提供了几种把Google Maps 嵌入到网页中的方式,允许做简单的使用或者自定义的扩展。现在提供以下几种API:Google Maps JavaScript API,Google Maps API for Flash,Google Static Maps API,此外还提供运行于Google Maps里面的迷你小程序Mapplets API。可以根据需要,选取其中的一个或者多个API。特别需要指出是,Google对Google Maps API的使用是没有限制的,但是如果引用地图的访问量每天超过500 000次,就需要跟Google做沟通,Google会对你的网站做一些优化。 要使用Google Maps API,必须申请一个API Key,其URL地址为http:/code.google.com/intl/zh-CN/apis/maps/signup.html,阅读许可协议后并介绍许可,然后输入你输入你要注册的网址。在本地测试的时候,你可以输入http:/localhost,但是当部署的时候一定要输入部署网站的网站,笔者的网站部署在http:/ootalk.qsh.es/。但是还要特别支持的是,Google Maps API对不同语言的支持是不一样的,对英语版API的会支持更丰富一些。如果需要英语版API做开发,就需要在下面的网址注册你的网站的API Key,http:/code.google.com/intl/en/apis/maps/si
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号