基于云计算的天气预报系统实现.docx_第1页
基于云计算的天气预报系统实现.docx_第2页
基于云计算的天气预报系统实现.docx_第3页
基于云计算的天气预报系统实现.docx_第4页
基于云计算的天气预报系统实现.docx_第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,W,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=“/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.2Y 在国内很多门户网站都提供天气预报功能,但是免费提供网络程序接口都不多。当然可以通过一些技术手段获取这些资源,但这并不是一个稳定的资源,而且可能会涉及到一些版权的问题,所以就不能使用这些资源。Yahoo Developer Network提供免费服务接口实现天气预报数据的获取。Yahoo提供的天气预报服务有RSS输出格式,接口的地址是: /forecastrss?p=location&u=unit location参数表示地点ID或者美国邮编,美国邮编只能用于美国地区,地点ID通常的表示方法是“USCA116”,如果想获取地区ID,可以从查询。查询的结果通常是一个包含查询地点天气预报信息的网页,URL类似于“/forecastrss?p=CHXX0129&u=c”,里面的CHXX0129就是地区ID。 U表示天气信息的单位,可以的值有“c”和“f”两个,分别表示摄氏度和华氏度,这里我们选择了“c”,因为我们日常生活中常用的是摄氏度。 输入“/forecastrss?p=chxx0129&u=c”,我们会看到“yweather”命名空间里面包括的是天气信息,信息非常的丰富,包括气温,天气状况,风向风力,气压,湿度,能见度,日期日落的时间。“geo”命名空间里面包含了经纬度。由于是RSS格式的文件,所以非常适合用Google Ajax Feed API读取,然后在Google Maps做标记。 2.1.3W 在上面介绍yahoo天气预报的接口的时候,说到地区ID的获取的问题。Yahoo虽然提供地区ID的搜索,但是在它提供的API中却没有地区ID的获取方式。这需要从其他地方获取,其实Yahoo天气预报的数据是从W获取的,恰恰W提供SDK让我们获取地区ID,W的SDK功能非常丰富。获取地区ID的方式如下: 查询城市ID的URL为“/search/search?where=location”,其中“location”表示要查询的城市,在SDK文档中演示的是美国的地区例如atlanta,如果想使用中国的城市,要在城市和国家直接添加“+”号,例如/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=/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地址为/intl/zh-CN/apis/maps/signup.html,阅读许可协议后并介绍许可,然后输入你输入你要注册的网址。在本地测试的时候,你可以输入http:/localhost,但是当部署的时候一定要输入部署网站的网站,笔者的网站部署在http:/ootalk.qsh.es/。但是还要特别支持的是,Google Maps API对不同语言的支持是不一样的,对英语版API的会支持更丰富一些。如果需要英语版API做开发,就需要在下面的网址注册你的网站的API Key,/intl/en/apis/maps/signup.html。 在获取API Key的时候,Google会提供一个测试页面,在测试页面里面一定要记下script src=/maps?file=api&v=2&key=ABQIAAAAwxXID3DFAHS1YeL5rcywSBS0J6gBw1joJ5_DCPspgnCFy-ZDDBRqNQdXpuelxjtDwZ3mFKa8KnJKBA type=“text/javascript” /script 只要是引用Google Maps API的网页,一定要把上面的JavaScript代码写入网页中。由于Google Maps API是基于JavaScript的API,我们编程的时候需要调试JavaScript,几乎所有的浏览器都支持Google Maps API,Firefox提供的调试工具很丰富,功能也强大,也可以使用IE 8 beta 2。2.1.5Google AJAX Feed API 通过Google AJAX Feed API,可以用JavaScript获取任意公共的Atom或者RSS供稿,因此可以轻松把内容嵌入到Google Maps API 里面。JavaScript 和 XMLHttpRequest 使用 同源策略 (SOP)。使用该策略,脚本可以访问同一主机(其中提供 HTML 格式的包含页面)中的数据,但是不能访问其他主机的数据。这可以保护用户免受某些类型的脚本攻击,但同时也使许多开发人员无法编写基于 AJAX 的混搭程序。受同源策略的影响,Google Ajax Feed API不能直接使用来自W的RSS数据,所以需要本地服务器转发一下。 Google AJAX Feed API同样也需要注册一个API Key。Google AJAX Feed API 支持XML的命名空间,,调用的方法如下:google.feeds.getElementByTagNameNs(node,ns,localname) 其中第一个参数“node”为需要查找的根节点,第二个参数ns为命名空间的URL,第三个参数“localname”为本地名称。给方法返回值为NodeList类型,是一组符合条件的XML节点。例如,在程序中使用的代码如下: var latitude=google.feeds.getElementsByTagNameNS(result. xmlDocument.documentElement,“http:/www

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论