白淑英,陈灵梅,王 莉
(1.南京信息工程大学 遥感学院,江苏 南京 210044)
iPad是苹果公司2010年发布的一款平板电脑,提供浏览互联网、收发电子邮件、观看电子书、播放音频或视频等功能。从目前论文检索情况来看,iPad在气象行业应用的文章极少,缺乏能够满足气象业务需求的应用程序[1]。基于iPad的台风路径信息管理系统,将台风路径信息发布到当前最为流行的移动设备iPad上,为政府、气象等部门的气象灾害应急指挥提供了新的技术手段和方法,具有可以随时、随地办公的优势,能及时向广大群众传递台风防灾减灾信息,增强台风防灾减灾能力。
通过文字以及表格等形式发布的系统表现单一,内容不直观,很难满足需要。使用地图 API 电子地图应用接口,以地图的形式可以更直观、更准确、更智能化地显示地理信息[2-6]。本文基于百度地图API的台风路径信息发布系统,提供一种更加直观的台风预报以及预警气象服务。
系统以百度地图为背景,实现了台风路径预报、历史台风路径查询等功能,制作了七级风圈、十级风圈、台风眼的Flash效果,用实线及虚线区分台风路径和预报路径,并提供测距、会商等辅助工具。系统界面如图1所示。
根据台风路径预报报文资料,获取台风预报的最新数据,包括台风中心位置、中心气压、最大风速、七级风圈范围、十级风圈范围、12 h预报、24 h预报等。在地图上以点的方式显示各个预报时间的台风信息,以动画方式显示台风眼以及台风风圈,实现在列表中点击某一时间点的数据,地图上就显示该时间的台风路径预报,并以虚线表示。
历史台风按照年度进行查询选择某一年度即显示该年度所有台风的信息,通过点击台风名称或编号,则以列表方式显示台风信息,包括时间、气压、风速等,同时在地图中动态显示该台风的移动路径。
图1 系统功能界面
Xcode是苹果公司向开发人员提供的集成开发环境,用于开发IOS系统的应用程序。通过Xcode建立iPad应用程序是最为快捷的方式,也是利用新的苹果电脑公司技术的最简单的途径。Safari是iPad操作系统IOS的浏览器。iPad应用程序的开发使用Xcode的App程序框架,通过嵌入Safari网页显示页面,充分利用了现有网站中的数据及网页功能,即使用嵌入式技术将信息共享服务从网站应用扩展到iPad上。Objective-C是为iPhone和iPad编程的主流语言,是扩充C的面向对象编程语言[7,8]。
基于iPad技术的台风路径信息发布系统的实现过程如图2所示。
图2 iPad信息发布开发流程
2.1.1 设计布局和嵌入浏览器
开发应用程序的首要工作是初始化,包括视图初始化和控制初始化。初始化完成以后,接下来是对界面进行设计,包括界面主题风格、功能按钮、浏览器嵌入等。界面设计可采用2种方法:利用Xcode的Interface Builder工具来创建用户界面,编写程序代码在应用程序运行的时候动态创建用户界面。考虑到台风路径数据需要进行动态显示,本文采用编写代码的方式创建用户界面:首先根据功能要求以及界面美观性对界面进行美工设计,然后通过代码实现添加按钮、图片、网页等。
1)界面设计,包括功能按钮、地图操作工具按钮以及浏览器等的定制。
@interface TyphoonController : UIViewController ViewDelegate> { IBOutlet UrlData *data; IBOutlet UIAlertView *myAlert; IBOutlet UIWebView *WebView; IBOutlet UIButton *btnFirst;//功能第一个按钮 IBOutlet NSTimer *timer;//用于Webview加载状态计时 IBOutlet int pageNumber; } @end 2)对界面窗体定义方法以及事件,在方法前增加IBAction来说明该方法将与界面上的事件对应。 @property(nonatomic,retain)IBOutlet UrlData *data; @property(nonatomic,retain)IBOutlet UIWebView *webView; - (id)initWithPageNumber:(int)page; -(void)webViewLoadWWWUrl:(NSString *)urlString;//webView加载网址 -(IBAction)btnFristClick:(id)sender;//第一个按钮点击事件 -(void)btnClick:(NSInteger *)witchBtn; -(void) showProgress:(Boolean)timeingClose;//显示网页加载进度 -(void) hideProgress;//隐藏网页加载进度 @end 2.1.2 读取Web服务 将台风路径功能网页嵌入到应用程序中获取Web服务。首先在iPad应用程序中获取输入的网页URL,并发送该URL的请求,通过加载WebView响应请求,其实现代码如下: -(void)webViewLoadWWWUrl:(NSString *)urlString// webView加载网址 { NSURL *url=[NSURL URLWithString:urlString];//获取URL NSURLRequest*requst=[NSURLRequest requestWithURL:url];//把URL赋给请求 [webView loadRequest:requst];//webView响应请求 } 2.1.3 显示 系统根据URL地址获取数据并加载相应的网页后,需要对界面进行定制。系统采用viewDidLoad实现界面的显示控制,如图3所示。 首先需要对定制界面进行初始化,包括URL、按钮以及图片等。初始化方法示例:一是URL初始化,data =[[UrlData alloc]init];二是按钮初始化,imgFirst =[UIImage imageNamed:[[data.imgArrObjs objectAtIndex:pageNumber]objectAtIndex:2]];三是图片初始化,[btnFirst setImage:imgFirst forState:UIControlStateNormal]。 网页加载前,首先通过“if ( [(NSString *)[componentsobjectAtIndex:0]isEqualToString:@"JudgeSession"])”等语句判断请求页面地址是否存在,如果存在则通过“self webViewLoadWWWUrl:[data.sessionArr objectAtIndex:0]”加载页面。在页面加载过程中,编写方法“-(void)showProgress:(Boolean)timeingClose”实现网页加载进度显示,并通过以下语句设置进度显示图标的颜色及大小: UIActivityIndicatorView *activityView =[[UIActivityIndicatorView alloc]initWithActivityIndicator Style:UIActivityIndicatorViewStyleWhite]; activityView.frame = CGRectMake(120.0f, 48.0f,35.0f, 35.0f) 页面加载成功,则通过“self webViewDidFinishLoad:webView”结束加载过程。 台风路径是以百度地图为背景,叠加数据库中台风实时数据,包括台风移动路径位置信息以及台风强度信息等。系统采用百度地图API进行开发,使用百度API获取百度地图作为台风路径显示的底图。百度地图API是一套免费的,由JavaScript语言编写的应用程序接口,它能够在网站中构建功能丰富、交互性强的地图应用程序,不仅包含构建地图的基本接口,还提供了诸如本地搜索、路线规划等数据服务。为了加载和绘制台风路径,需要经过以下几个步骤: 1)引用百度地图API。地图API是由JavaScript语言编写的,需要通过
2.2 台风路径功能实现