地图显示(精选4篇)
地图显示 篇1
近年来,在全球气候变化的大背景下,极端自然灾害事件频发,威胁着我国近海经济社会活动的安全。广东是海洋大省,拥有全国最长的大陆海岸线,广东还是海洋经济大省,海洋经济总量连续18年领跑全国。但是广东也是我国受海洋灾害影响最严重的省份:年平均登陆的热带气旋最多,我国最大的风暴潮纪录在广东,死亡人数最多的风暴潮灾难也是发生在广东。地方防灾减灾和海洋管理部门对风暴潮、灾害性海浪等海洋灾害预警报工作提出了更高的要求,本系统能很好地满足海浪、风暴潮防灾减灾的需求。
1 系统设计流程和技术
系统是结合PHP编程语言、baidu地图API、javascript脚本开发的信息化系统。PHP是一种通用开源脚本语言,具有免费性、快捷性、跨平台性、效率高等特点,特别是其跨平台性,对于Linux、Windows平台能直接运行,在海洋预报领域能发挥更大的作用。百度地图API是为开发者免费提供的一套基于百度地图服务的应用接口,提供基本地图展现、搜索、定位等基础功能,适用于PC端、移动端、服务器等多种设备,多种操作系统下的地图应用开发。Java Script是一种广泛用于客户端Web开发的脚本语言,常用来给Html网页添加动态功能,比如响应用户的各种操作。
2 系统特点
系统采用b/s(browser/server)结构,b/s结构的设计不仅体现了网络上资源共享、客户端和远程操作不需安装任何其他专门软件的优势,而且还兼顾了人员使用方便、快捷、直观、系统运行稳定等优点。
(1)操作都是基于百度地图是本系统的最大特色,其提供的强大地图信息,制作电子地图可以随意的缩放和漫游,可以让操作人员更容易掌握目标的空间位置信息和基础属性信息。
(2)操作简单:在系统设计时充分考虑了个人的操作习惯,采用可视化人机对话窗口,系统操作简单。
(3)数据处理快速高效:系统服务器端能及时处理各类数据,让客户使用快速直观的了解最新的各类信息。
(4)对客户端机器配置要求低:由于主要数据处理和图像生成都是在服务器端执行,因此对客户端机器配置要求低。
3 系统的应用实例
通过该系统,使用者可以随时掌握“海洋观测数据”“海洋预报产品”“海岸线高程数据显示”等辅助决策信息,为指挥提供重要依据。
3.1 海洋观测数据显示
海洋观测数据是海洋防灾减灾、海洋预报的基础数据之一,各类观测平台包括海洋站、浮标、卫星反演资料等。观测数据通过表格、曲线图的形式表现。
3.2 海洋预报产品显示
海洋预报是根据各种观测实况,利用天气学、海洋学原理和大型计算机等经过科学分析和计算后对未来一定时期内的海洋状况进行预测。目前海洋防灾减灾主要关注于海浪、风暴潮两种灾害。
该系统能提供海洋综合环境预报产品展示。
3.3 风暴潮漫堤产品显示
风暴潮是海洋灾害的一种,该系统提供了广东大部分地市海岸线高程,能直观地显示天文潮、风暴增水、总水位和岸线高程之间的关系以及未来是否可能发生漫堤,为防灾减灾决策提供了良好的技术支持。
4 结论
本系统主要是面向“三防”、渔业、搜救等应急管理部门提供应急决策辅助服务,采用了“边建设,边试用,边改进”的方式,不断与用户进行沟通,根据用户的实际需求和反馈,以科学发展的态度进行系统建设。
该系统在防御2016年“妮妲”“莫兰蒂”等对广东省严重影响的台风带来的海洋灾害发挥了重要作用。在该系统的支持下,防汛应急指挥人员在防灾减灾工作中掌握了主动权,更及时和有预见性地组织开展工作,最大限度地减轻了海洋灾害带来的经济损失。
摘要:文章介绍一个海洋预报显示系统,采用php编程语言和Baidu地图API技术开发的产品。系统具有基础GIS信息齐全、人机交互性高、数据信息直观等特点,在海洋防灾减灾中发挥了重要作用,受到用户的好评。
关键词:PHP,Baidu地图API,海洋预报
参考文献
白毅平,王磊,仇月萍.广东近海海洋灾害应急决策辅助系统的研发[J].中国科技成果,2014(7).
地图显示 篇2
关键词:J2ME,JPG地图,SVG地图
1 引言
在国内外研究中,Mobile SVG(SVG的一个子集)的研究是一个新颖的科研方向。SVG具有很多优点,例如SVG是基于XML标准的,它是高质量的矢量图像和由文本构成的图像等等[1]。
本文目的是通过构建一个基于J2ME的手机定位系统来详细分析以JPG和Mobile SVG为代表的两种格式地图在J2ME手机上加载和显示的方法及性能比较,为Mobile GIS的研究提供有价值的参考技术。
2 手机定位系统的构建
系统环境需要无线网络与HTTP协议的支持。Web服务器通过HTTP流接收从客户端发送过来的请求和发送处理的结果[2]。而地图服务响应处理模块则是系统的核心部分,专门负责对地图数据的实际处理和返回。图1是系统的总体功能结构图。
3 系统关键技术的分析与实现
3.1 客户端的选图策略和地图数据的处理
GPS是每一秒钟数据自动更新一次,如果发现经度或者纬度超出了地图的经度和纬度的范围,则它会更新并显示此时所在位置的新地图。如图2所示。
选图策略:如图3所示,当前显示的地图分为9个区,由于采用地图的经度和纬度边界分别相差是0.3分左右,服务器到移动终端之间的数据通信可以在移动对象的0.01分经纬度移动范围内完成,所以它们的划分规则是:高纬度越界线的纬度数是高纬度减去0.01分,低纬度越界线的纬度数是低纬度加上0.01分,西经越界线的经度数是左边的经度加上0.01分,东经越界线的经度数是右边的经度减去0.01分。当移动点超过越界线时,移动终端的程序会触发一个线程去检测当前是否存在预缓存的地图;如果没有,它会从服务器提取地图,否则,它不启动调图线程。当定位点来到1,2,3的任一个区域时,它会向服务器调用上区域的局部地图作缓存图;当定位点来到1,4,7的任一个区域时,它会向服务器调用左区域的局部地图作缓存图;当定位点来到3,6,9的任一个区域时,它会向服务器调用右区域的局部地图作为缓存图;当定位点来到7,8,9的任一个区域时,它会向服务器调用下区域的局部地图作缓存图;当它到1,3,7,9区域时,程序不但会调用满足前面条件的地图,还会再调用一副两个正方向之间区域的局部地图作为缓存图;当它到5区域时,程序不做调图处理。
手机程序判断经纬度后,作出选择性的保存和删除。具体实现是:当定位点进入新的区域时,它会判断是否需要调用新的地图,如果不需要,则不会向服务器发送HTTP请求;如果需要,它会把当前点的经纬度,正在显示的地图ID和目前存有的地图ID,还有请求哪种格式的地图的信息以HTTP请求的方式发到服务器,然后会把远离区域的地图缓存清空,因为手机存储容量有限,所以只缓存四幅地图。这样就实现了接收来自服务器传来的地图数据。
3.2 客户端的地图显示及服务器端的数据处理
(1)栅格图片的显示及服务器端的数据处理
当服务器从HTTP请求中取出数据进行分析时,服务器可以得到的信息有当前手机用户的经纬度,手机目前显示的地图,手机里缓存的地图和请求地图的格式是栅格图片。服务器选图的策略与手机客户端选图时的策略类似,具体的实现是:它首先会根据ID来调出地图的数据,用当前的经纬度来算出定位点所在的区域(如图3),然后它会判断需要调用多少幅地图,而且由传来的参数可知目前手机缓存了哪几幅地图,如果缓存里有需要调用的地图,则服务器就不发送此地图,服务器只发送手机没有的地图。
服务器传参数规则是,先把需要调用的地图的ID以字符串的形式发送,形式是(*-*-*),如果是一幅地图则表示为(*),接着把每幅地图以字节流的形式发送到手机上。
手机客户端就利用Image类的createImage函数来在客户端生成地图,然后用drawImage函数来显示地图。
(2)矢量图片的显示及服务器端的数据处理
当服务器从HTTP请求中取出数据时进行分析后,它进行的处理和栅格地图类似,只是发送地图为SVG格式的地图。
手机客户端这时就不能用栅格地图的显示方法来显示地图了,这时采用开源项目的Tinyline SDK来实现,该开发包主要用到三个包:com.tinyline.svg(该包主要实现动画SVG Viewer的相关API),com.tinyline.svg.raster(主要是实现静止SVG图形SVG Viewer的相关API),com.tinyline.tiny2D(主要是为CLDC 1.0平台定制的2D图形API)。
加载和显示SVG的策略是:首先建立一个MyCanvas的类,这个类继承了Canvas类,还实现了ImageConsumer和ImageLoader两个接口,然后在这个类里面初始化TinyPixbuf,它是在画布上生成一个矩形区域,这个区域就是SVG图片显示的区域,放大和缩小可以改变它构造函数的参数来实现。接着,初始化SVGRaster类,这个类是栅格化TinyPixbuf类生成的图片区域。最后调用SVGAttr类,SVGParser类来解析SVG图片[3]。
4 实验分析
本文选了5幅地图作比较,这5幅地图各有两种地图格式,分别是JPG格式和SVG格式。实验用的是无线网络,测试中的数据传输速度有7kb/s,地图文件不超过25kb。
通过三个实验数据表可以归纳出以下三点结论:
第一,SVG地图显示的时间明显是比JPG地图显示的时间长很多,这是因为SVG是XML的文件,所以J2ME手机显示此类图片要对其进行XML解析,这是相当耗资源和时间的。
第二,JPG地图放大或缩小所需的显示时间比直接显示图片所需的时间长,而且地图放大所需的显示时间比地图缩小所需的显示时间长。这是因为,JPG地图的放大或缩小都需要进行处理,而且放大地图需要的资源最多,所以出现以上的实验结果。
第三,SVG地图显示时间明显比JPG地图显示时间长,它所需的显示时间随着地图放大系数增加而增加。
尽管SVG在显示静态地图的性能比不上JPG地图,但是在显示动态地图时,JPG实现起来就非常困难,而且所需资源有可能远远大于SVG。由于SVG是基于XML的,所以只需要在SVG文件加描述标记和内容就可以轻易地实现动态地图效果了。
本文用JPG格式的图片做一个动态效果的实验,设计了一个线程来不断地管理和切换JPG图片,这时发现手机对按钮的响应时间变长了,甚至有时会出现手机没法使用的情况。用SVG图片做同样的效果,尽管J2ME手机显示SVG图片的时间稍微长了一点,但是比JPG格式的图片做的实验所需的显示时间短,而且它对手机的资源消耗几乎没有变化。
在放大地图的效果上,JPG地图的显示效果比SVG地图的显示效果差。本文做了放大同一个区域地图的实验,这个区域有两种格式的实验地图,分别是JPG地图和SVG地图,对这两种格式的地图放大一倍得出如图4的实验效果。由图4可以看出,JPG地图会失真,但是SVG没有,这与SVG具有放大无损性吻合。
5 结语
本文讨论和分析了两种地图格式在J2ME手机上的加载和显示,由实验可以看出,SVG地图在目前的手机硬件上显示静态地图的性能还是和JPG地图有点差距,但是SVG在显示动态地图时,JPG格式的地图就显得力不从心了,而且SVG具有地图的放大无损性。由此可见,随着手机硬件设备的不断更新换代,J2ME手机设备显示SVG地图的时间将会大大地减少,SVG格式的图片将会越来越广泛地出现在未来的Mobile GIS应用领域中。
参考文献
[1]W3C,2003,Scalable Vector Graphics(SVG)1.1Specification.http://www.w3.org/TR/SVG/
[2]王晋桃,朱欣焰.基于Java手机的地理信息服务探索[J].测绘通报,2004(3):51-54.
地图显示 篇3
随着经济的发展,人们的生活方式也在改变,假期出游也成为越来越多的人的度假方式首选,而出游地的空气质量则成为人们关心的重要话题之一。这其中,PM2.5的数量又是影响空气质量的一个重要因素。PM2.5即细颗粒物,是指环境空气中空气动力学当量直径小于等于2.5微米的颗粒物。[1]它能较长时间悬浮于空气中,其在空气中含量(浓度)越高,就代表空气污染越严重。空气中的颗粒物中的PM2.5由于其特性,是空气能见度降低的主要原因[2]。因此如何方便对PM2.5进行监测就成为了我们必须解决的一个重要问题。而随着Android智能手机的普及,开发基于Android的移动PM2.5监测应用将会有助于出行者更加方便地监测空气质量,从而更好地规划自己的行程。
1 接口基础
1.1 Android系统简介
毋庸置疑,Android系统占据着当前智能手机操作系统市场的绝大部分份额,其市场占有率已经遥遥领先于其对手iOS(IPhone和IPad)、Windows Phone系统以及其他系统。而其所以能在短短几年之内发展如此迅速,很大程度上取决于其免费和开源的特性,以及其底层稳定性与安全性都良好的Linux内核。Android系统采用了分层的体系结构,自底向上分别是linux内核层、C/C++代码本地库、Android运行时环境、应用程序框架及应用程序层[3]。
Linux内核层:这一层主要包括Linux的驱动程序以及内存管理、进程管理、电源管理等核心程序。
C/C++代码本地库:该层包括C/C++编写的代码库,而Android系统下运行的应用程序的虚拟机Dalivk也正是在该层运行。
Android运行时环境:Android运行时环境( AndroidRuntime)提供了核心链接库(Core Libraries)和DalvikVM虚拟系统(Dalvik Virtual Machine)[4]。以java语言编写的android应用程序则运行于Dalvik虚拟机中。
Java应用程序层:该层包含Android系统的各种应用程序,实际上就是Android系统的UI,即用户界面接口。是用户所能接触到的直观界面。
1.2 百度地图接口API简介[5]
API即应用程序开发接口,是应用程序开发人员调用已有代码库实现特定功能的开发接口。由于百度引擎的强大支持,对于地图的精确度以及地图数据的更新频度都有可靠的保证,因此本系统采用百度地图来作为载体。在此基础上进行系统的开发,只需要调用百度提供的移动版API接口即可实现相应的功能。在此有必要对百度地图移动版API的进行简单的说明。
百度地图移动版API是百度公司提供的一套基于Android 2.1(v1.3.5及以前版本支持Android 1.5以上系统)及以上版本设备的应用程序接口,支持IOS/Android平台。通过API,只需要简单的操作,即可在自己的应用中构建功能丰富、个性化的、高效的地图功能。通过该接口,开发者还可以使用百度提供的各种服务和数据以增强和完善应用程序的功能。百度地图移动版API不仅包含构建地图的基本接口,还提供了诸如地图定位服务、本地搜索、路线规划等数据服务。
1.3 Pm2.5 in数据接口API简介[6]
由于系统所获取的pm2.5浓度值的数据均来自网络服务器,经过对网络中多种pm2.5监测数据来源的对比,综合考虑其数据来源的权威性、准确性与实时性,以及结合系统的实际情况,即通过Android智能手机的GPRS或WIFI功能访问网络服务器以获取监测数据,在WIFI网络不可靠的环境中,GPRS功能成为系统访问网络服务器的主要渠道,因此系统运行的流量耗费也成为我们必须考虑的问题之一,因此在选择数据来源时,应尽量选择数据量较小且不影响数据携带信息的完整性的来源,而Pm25.in网站所提供的数据采用json格式,即以键值对的形式封装数据,这样既保证了数据携带信息的完整性,又使得同样信息量的数据的流量耗费相对较少,从而很好的满足了本系统的要求。在此简单说明该PM2.5开发接口API。
PM2.5开发接口API是由Pm25.in这一公益性网站向开发者免费提供的一组旨在获取空气质量数据的开发接口。这些数据来源于国家环保网站公开数据,网站对数据进行了二次核实,因此数据具有很强的权威性,故本设计采用该接口来获取PM2.5数据以保证所获取的数据的真实性。该套API要求应用程序以GET方式向网站发送数据请求,并附加的API Key,Pm25.in网站对应用程序进行身份认证之后向应用程序发送json格式数据。
2 系统架构与实现
2.1 系统功能分析
该系统主要的目标在于实现定位功能以及PM2.5监测功能,使用户能够结合这两者以更好的监测所在地的空气质量。系统的主要模块以及其实现的功能介绍如下:
地图控制:地图采用离线地图的模式,使用户能够对地图进行放大、缩小和移动,并且能一定程度上纠正用户误操作。
实时定位:能够将用户的当前位置显示在地图上,并且能够随着用户的移动而实时更新用户的位置。
数据获取:系统设计为从网络获取数据,为保证数据的权威性,数据来源必须可信,本系统选择数据来源为以国家环保局网站数据为参考并进行二次核对的Pm25.in网站。
数据存储:由于Pm25.in网站为保证数据的实时性只提供当前时刻的数据,无法获取以前时刻的数据,故本系统设计必须对数据进行搜集以便绘制曲线以分析空气质量变化趋势。
数据显示:获取数据的最终目的在于将当前时刻数据以及之前某段时间的数据集绘制成一条实时更新的曲线。
2.2 系统主要架构
系统运行框图如图1所示:
Pm2.5监测系统中最关键的模块在于地图子系统和数据处理子系统。地图子系统的主要功能在于显示出地图及pm2.5监测范围的地理区域,使用户能够更直观了解目标监测区域;数据子系统则主要完成对pm2.5数据的处理、显示以及管理等功能。这两个子系统构成了整个系统的核心与实体。其中,以百度地图为载体的,添加定位等功能的地图模块,则是使用者能够看得见的第一个界面。因此,为了更加直观,本系统选择将所需要监测pm2.5值的监测点在地图上以覆盖物的形式覆盖在了原始的地图层上,并圆形区域展现出来。
2.2.1 地图子系统
百度地图移动版API提供了离线地图以及在线地图的方式,以使用户从服务器中获取地图数据。在线地图主要针对网络环境较好的场合,比如WIFI热点区域以及3G网络信号覆盖区域,一般来说,百度地图所提供的一个大中城市的地图数据量在10MB到30MB不等,全国概要地图数据量在30MB左右,在网络状况良好的区域,地图下载速率较高,则用户体验较好,反之,对于网络覆盖较差的区域,系统实时获取地图数据的速率并不高,对于没有数据的区域,则地图显示为空白区域。而离线地图模式是百度公司提供的获取地图数据的一种方式。这种模式允许用户预先下载地图数据到本地存储。本系统采用读取离线地图的模式,读取用户预先下载进手机SD卡内的百度地图的离线数据包,从而节省流量,增强体验。
2.2.2 数据处理子系统
数据处理子系统是本系统中展现功能的主体。数据处理子系统包含了实现数据获取,数据提取,数据显示,数据存储,以及数据的本地再提取等功能。因为目前Android智能手机均具备GPRS与WIFI的网络功能。GPRS网络是在GSM网络中引入了分组交换和分组传输的概念,这样就使得GSM网络对数据业务的支持从网络体系上得到了加强,使得GPRS利用GSM的剩余信道提供中速的数据传输[7]。本系统获取Pm2.5数据主要依靠GPRS或者WIFI网络。
2.3 系统实现
2.3.1 系统所使用工具类准备
本系统在绘图时采用由谷歌公司提供的较易学习和使用的绘图引擎AChartEngine工具类,该工具类功能强大,使用方便,能够绘制多种曲线,配合Android定时器的使用,能够实现绘制实时曲线的功能。根据系统的设计要求,以及pm2.5监测数据本身的实时性,本系统设计为每一个小时访问一次网络服务器以更新pm2.5的监测数据,并且随数据提供监测时间值,因此要求所要绘制的曲线必须以时间轴为横轴,故采用AChartEngine引擎的TimeSeries时间坐标系为本系统绘制曲线的坐标系。TimeSeries坐标系继承自XYSeries坐标系,而XYSeries坐标系拥有良好的对数据的管理功能,能够更方便的对数据进行添加、删除等操作。因此本系统采用该引擎与Android定时器配合使用,实现实时性较高的绘制曲线功能。
根据面向对象的编程思想,在开始实现数据处理子系统前,需准备FileUtils文件处理工具类,OperateData操作数据工具类,ReceiveData获取数据工具类,ReadPreparedData读取已存储数据工具类。其中FileUtils类主要封装对Android手机IO流的操作,包括文件读取、写入、SD卡目录识别、目录创建与管理等。OperateData类主要封装曲线绘制的相关操作,包括将传入的double型数据绘制成AChartEngine的TimeSeries坐标系中的曲线、对TimeSeries坐标系的样式XYMultipleSeriesRenderer的各种设置工作、传入TimeSeries坐标系以建立初始的数据集。ReceiveData类主要封装网络数据获取与分析的相关操作,包括根据传入的url地址访问网络服务器、网络输入流的获取、从网络输入流中读取json格式数据、对json格式数据进行监测点pm2.5数值解析。ReadPreparedData类封装了对本地已存储数据的相关操作,包括从已存储的SD卡内数据的单个数据读取与返回、读取多个数据并组装成为数组返回。
当用户点击地图上的红色圆点,系统读取本地地图数据存入缓存并启动数据处理的activity。然后启动HandlerThread类的对象handlerThread开启处理器线程,设置定时器Timer,设定每隔一定的时间访问远程服务器获取数据。由于Pm25.in网站的数据为每一个小时更新,因此在线程中需对数据进行判断,以排除重复数据,保证数据的有效性。当数据为非重复数据后,线程将其交给绘图引擎以绘制曲线,并将数据录入本地存储设备SD卡。在handlerThread线程中启动绘图引擎时,首先将缓存中的数据绘制成曲线,并在曲线最后连接一个新数据点。此后,线程根据定时器配置不断重绘曲线。
2.3.2 系统部分代码实现
实现系统的离线地图功能,使用百度API提供的类MKOfflineMap,与此同时,当用户没有预先存储离线地图数据,系统在调用MKOfflineMap类的对象offlineMap的scan()方法时自动利用设备的网络功能实时获取地图数据。由于单例设计模式拥有能够控制实例产生的数量与共享数据等多种优势[8],因此本系统的开发方式选择单例设计模式,其获取并显示离线地图的部分具体代码如下:
运行界面如图2:
实现数据处理子系统部分代码如下:
绘制曲线运行效果图如图3:
3 结束语
地图显示 篇4
瑞萨通信技术公司宣布推出面向PND (个人导航设备) 和其他便携式设备的R-Mobile A1系列应用处理器。R-Mobile A1系列由瑞萨电子用于PND和便携式媒体播放器的成熟的SH-Mobile R系列和EMMA Mobile®系列合并而成, 并进一步增强功能, 改善性能, 降低了功耗, 从而大大降低了系统总成本。
尽管具有ISDB-T单波段广播接收功能的设备已经成为PND和便携式媒体播放器等便携式设备领域的主流, 但是由于ISDB-T全波段地面数字电视广播的推广, 目前对于更高图像质量和更多功能的需求日益增加。此外, 对于诸如可改善操作性的GUI显示、用于高级人机交互界面的真实3D图形显示和高性能视频和音频多媒体支持等功能的需求也越来越多。为了满足这些需求, 通过将这些功能集成到一个芯片中, R-Mobile A1器件降低了系统成本, 减小了组件尺寸, 大大缩短了开发时间。