蔡文博 滕骏华 田 杰 刘 旭 刘建伟
1(国家海洋环境预报中心 北京 100081)2(北京博阳世通信息技术有限公司 北京 100096)
基于OpenAPIWebGIS的海洋渔业环境保障服务产品发布系统研究
蔡文博1滕骏华1田 杰1刘 旭1刘建伟2
1(国家海洋环境预报中心 北京 100081)2(北京博阳世通信息技术有限公司 北京 100096)
针对传统的预报图、短信无法满足渔民动态获取海洋预警报服务的需求,基于Open API设计了海洋渔业环境保障服务产品WebGIS发布系统。系统整体框架采用数据层、服务层、表现层、用户层的四层B/S结构,利用高德开放地图 API和JavaScript开发语言实现了渔场海浪预报、渔场海面风预报和台风警报面向公众的发布功能。由于网络带宽的限制,系统通过一种计算坐标偏移量并映射为ASCII码的矢量数据压缩方法,较好地实现了渔场预报数据的Web传输。以某渔场海浪预报产品XML格式中间交换文件为例,数据压缩率达到38.5%。
Open API WebGIS 地图API 海洋渔业 矢量数据压缩
我国是一个海洋渔业大国,海洋渔业作为海洋三大产业中的第一大产业在我国海洋经济中占有重要位置。然而,我国大陆海岸线漫长,海域面积广阔,常年受到台风、风暴潮、海浪等灾害的影响,给人民的海洋渔业生产安全带来了巨大的威胁。自2013年,全国海洋渔业生产安全环境保障服务系统(下简称渔业系统)建设并投入业务化运行以来,实现了全国七个沿海省份渔船动态船位信息、渔船静态信息、大面预警报产品,以及渔场、渔港、渔区专题预报产品的传输、入库和集成显示等功能。近些年来随着定位技术、移动通信和卫星通信技术的发展,在海洋渔业领域基于位置的信息服务成为可能,传统的预报图、短信等产品发布方式已经无法满足渔民动态获取海洋预警报信息的需求。另一方面由于海上通信成本和带宽的限制,也需要对海洋渔业保障服务产品的数据量进行严格控制。本文研究的海洋渔业环境保障服务产品WebGIS发布系统作为整个渔业系统的重要组成部分,主要功能为面向社会公众尤其是海上作业的渔民发布渔场海浪、海面风预报产品和台风警报产品。
Open API,即开放应用编程接口早期应用于Amazon、eBay的商品数据上,直到2005年Google Map API的推出,从此涌现出众多具有Web 2.0应用功能的开放API[1]。随后在WebGIS领域,国内百度地图、高德地图、搜狗地图等也推出了相应的开放地图API。利用Open API构建海洋渔业环境保障服务产品发布WebGIS系统主要具备以下三点优势:
(1) 从资源角度,Open API开放了资源的外部访问、调用,提供了资源的混搭(mashup)机会[2]。通过资源整合节省了大量的服务器、存储等硬件设备和网络带宽资源,拓宽了各类保障服务产品的使用群体(如手机、平板电脑用户等)。
(2) 从数据角度,开发者和用户可以高效地访问、浏览地图开放平台提供的高分辨率的遥感与地理信息数据,而无需维护数据[3]。
(3) 从应用角度,开发者可以把地图API嵌入自己的网站,将自身的业务数据(如渔场、台风等保障产品)和地理信息数据进行集成发布。这种开发方式大大提高了网站的服务质量,同时也降低了开发难度。
1.1 总体架构
海洋渔业环境保障服务产品WebGIS发布系统包括数据层、服务层、表示层、用户层四层架构。如图1所示,数据层实现将预警报结果及矢量数据转换为本系统所需的XML中间交换文件;服务层基于高德地图API提供WebGIS地图服务,并将预警报产品信息通过IIS服务器面向互联网发布;表现层通过JavaScript脚本语言实现浏览器端渔场预报产品、台风警报产品的展示;用户层满足台式机、智能手机等终端设备对海洋渔业预警报产品的获取。
图1 系统总体架构
1.2 系统组成
海洋渔业环境保障服务产品WebGIS发布系统由硬件和软件两部分组成。硬件利用一台操作系统为Windows Server 2012主机作为Web服务器。软件包括IIS服务器、网站、中间交换文件和地图服务四部分内容。IIS服务器的版本为7.0,支持HTML网页、XML中间交换文件和JavaScript脚本语言的解析;本系统的网站部署在IIS虚拟目录下./forecasting文件夹;中间交换文件为XML格式数据,存放在./forecasting/xml文件夹;地图服务使用了基于JavaScript的高德地图API。通过上述软、硬件环境的搭建,系统实现了在Internet上发布,网址为:http://202.108.199.12/forecasting/index.html。
1.3 业务流程
渔业系统由“国家—海区—省”三级节点组成,各级海洋渔业与预报机构通过“海洋防灾减灾会商专网”实现了渔船数据、预警报产品的汇集、分发和共享。其中,沿海省级海洋预报机构制作本海域的渔场预报产品并汇交至本海区的海区级预报中心;海区级预报中心对渔场预报产品进行订正后汇交至国家海洋环境预报中心。
如图2所示,国家海洋环境预报中心接收到三个海区及沿海各省海洋预报台的渔场预报产品后,由数据库中间件解析并入库。渔业系统集成显示平台通过调用渔业数据库,制作生成53个渔场XML格式的海浪、海面风预报结果中间交换文件(在台风过程期间,预报中心还制作台风警报结果中间交换文件)。由于“海洋防灾减灾会商专网”和Internet互联网是网络隔离的,因此需要值班人员定时将中间交换文件通过光盘拷贝的方式存放在IIS服务器的虚拟目录下,进行发布。最终,系统通过解析XML格式的中间交换文件对渔场海浪、渔场海面风预报产品和台风警报产品进行发布。
图2 系统业务流程
2.1 WebGIS构造方式
通常,WebGIS根据浏览器和服务器承担的功能多少进行分类,可以分为瘦客户端/胖服务器模型、胖客户端/瘦服务器模型和混合模型三类构造模型[4]。基于Open API构造WebGIS为第三类客户端/服务器混合模型。在混合模型中,对交互性操作要求较高而数据量少的应用,采用胖客户端/瘦服务器模型将矢量的空间数据传输到客户端;而对于操作较少和海量数据的应用,采用瘦客户端/胖服务器模型以图像方式将请求结果传输到客户端[5]。本文中WebGIS系统的构建将在线地图服务提供的遥感影像、行政区划、地名等多级瓦片地图,作为渔业保障服务产品发布的底图;而渔场、台风路径、台风风圈等渔业专题保障服务产品的空间信息均采用矢量数据的方式进行传输,并在客户端通过开放地图API实现解析、显示和相关交互功能。
2.2 开放地图API
本系统的实现即是通过调用高德地图的API接口,用HTML、CSS和JavaScript三种前端语言实现了将渔场预报专题图层、台风警报图层叠加到高德地图上进行发布。其中,HTML负责系统前端网页的内容结构部分,CSS负责控制网页布局,JavaScript负责网页行为和功能[6],高德地图API则负责预警报产品发布和显示。
2.3 Open API数据交互
构建海洋渔业保障产品发布WebGIS系统数据交互,一方面获取地图服务器端地图数据,另一方面将渔业专题保障产品数据在业务服务器上进行发布。前者的数据格式是由地图服务最终处理成瓦片图像,后者一般采用XML或JSON两种格式完成数据交互。本WebGIS系统采用了XML作为产品数据的交互格式,用户通过浏览器端的JavaScript语言获取、解析XML数据,并利用Open API将专题图层叠加到地图上集成显示。渔场海面风和渔场海浪预报产品XML文件在设计上比较类似,前半部分为预报产品类型、发布时间、预报时效、图层外框、对象类型、对象个数等保障产品描述信息;后半部分将各渔场设计为一个对象,每个对象包括渔场编号、渔场名称、风力、风向、几何图形等内容。台风警报产品XML文件包括:预报产品类型、台风名称、台风编号、警报发布时间、预报时效和台风路径上各预报位置的风速、风向、8级大风半径、10级大风半径等属性信息。
2.4 渔业保障产品发布
在高德地图API中,渔场海面风、渔场海浪预报产品发布过程,均需要创建53个渔场多边形(Polygon)覆盖物,并按照“蓝色-黄色-红色”渐变的色阶对渔场多边形进行渲染,分别表示风力、浪高的预报结果。台风警报保障产品则需要叠加三类覆盖物对象:台风当前的中心位置和24小时、48小时、72小时预报中心位置采用标注(Marker)覆盖物;台风路径采用折线(Polyline)覆盖物;当前和预报时刻的台风中心位置8级风圈和10级风圈通过圆(Circle)覆盖物。各类保障产品覆盖物使用setMap()方法添加到地图或者从地图上移除。下面以渔场保障产品为例,展示了多边形覆盖物添加实现的主要代码:
fisheryPolygon = new AMap.Polygon({
map: _map,
//显示渔场多边形的地图对象
path: secRing,
//渔场多边形节点坐标数组
strokeColor: ″#A0A0A0″,
strokeOpacity: strokeOpacity,
strokeWeight: 1,
二是相关课程的任课教师可以联合团委、学生会等,精心设计暑期“三下乡”社会实践主题,引导学生在社会实践中认识闽东、服务地方、提升能力,使学生对闽东特色文化的认识从感性上升到理性,进而增强实践育人的实效性。比如:多渠道了解闽东革命老区的实际需求,结合学科专业特长,组织学生开展志愿服务,帮助老区人民解决实际困难,锻炼和提高学生们的综合素质能力;结合大学生创新创业教育,让高校教师的科研成果、学生的创新思维在社会实践中落地生根,实现成果转换,惠及群众。通过创新创业实践,使学生逐步提高整合资源的能力、沟通协调的能力、统筹领导的能力等,从而为今后就业创业奠定良好的基础。
fillColor: Fillcolor,
fillOpacity: Fillopacity});
fisheryPolygon. setMap(_map);
//将渔场多边形添加到地图
fisheryPolygon. setMap();
//将渔场多边形从地图上移除
海洋渔业保障服务产品叠加到地图上以后,用户通过人机交互查询产品的细节信息。当鼠标停留在渔场上方,弹出该渔场的浪高、风力、风向等预报信息;当鼠标单击台风中心位置,显示8米和10米风圈。这些覆盖物对象的交互事件由使用高德地图API中AMap.event对象提供的addListener事件监听方法实现。
海洋渔业环境保障服务产品发布WebGIS系统的实现是由高德地图API和JavaScript构建地图服务环境,通过加载、解析XML格式中间交换文件后,调用高德地图API的图层渲染最终实现各类海洋环境保障服务产品的发布。如图3所示,系统展示了2016年8月1日渔场24小时预报产品和台风“妮妲”72小时警报产品的发布界面。
图3 系统界面
由于受到互联网带宽的限制和系统性能的要求,海量空间数据的网络传输效率往往是检验WebGIS系统综合性能是关键。基于Open API的WebGIS系统一方面自动对栅格数据进行简化,设计瓦片式的空间数据模型并优化网络调度策略。另一方面则需要设计算法对矢量数据进行压缩来提升数据传输效率。渔场海面风、海浪预报产品,以及台风警报产品均采用矢量数据进行发布,其中台风警报产品包括台风路径、风圈等空间信息较为简单不需要进行压缩。海洋渔场空间信息的特点是:在海上一般沿着固定的经纬度划分,坐标点较少;而渔场与陆地交接的部分由于海岸线曲折、漫长,存在大量的坐标点。因此,在渔场海浪或海面风预报产品传输的过程中,需要对渔场多边形进行压缩,接收到数据后通过解压缩展示预报产品的空间信息。
目前,矢量数据的压缩方法主要分为有损压缩和无损压缩两种。有损压缩是对矢量数据中不敏感的部分,允许压缩过程中损失一定的信息,在不影响对空间信息的理解的基础上,换取较大的压缩比。常见的有损压缩方法有经典的Douglas-Peucker算法、垂距限值法、角度限值法、光栏法等。矢量数据的无损压缩方面,文献[7-9]中采用将空间对象的转换为整数,并记录坐标点的偏移量来节省存储空间,而后又分别通过滤点压缩、GZip网络压缩、基于BWT Block-Sorting算法的BZIP2压缩等算法进行二次压缩,进一步节省网络传输数据量。本系统对渔场矢量数据的压缩,首先采用有损压缩算法进行预处理,去除大量冗余空间数据;然后,将每个渔场多边形坐标点转换为整数、计算偏移量,由于渔场预报产品发布中采用xml格式的中间交换文件进行矢量数据的传输,因此还需要将整数的偏移量映射为ASCII码进行传输。如图4所示,主要算法流程由7个步骤实现。
图4 渔场矢量数据压缩算法流程图
Step1按顺时针顺序读取渔场多边形经纬度坐标(多边形内环采取逆时针方向),为了保证渔场的精度,渔场多边形坐标点均保留小数点后5位小数。
Step2首次加载多边形顶点,直接记录顶点的经纬度坐标值,后面的坐标点记录与前一顶点的偏移量。因为渔场与陆地交界区域各相邻顶点变化较少,而在海上基本采取经纬度划分,所以记录偏移量可以达到节省网络传输数据量和去除冗余数据的目的。
Step3将每个顶点经纬度(或偏移量)由浮点型(Float)数映射为无符号整型(Unsigned Int)数。由于二进制无符号整型数没有符号位,所以将浮点数左移1位,如果经纬度坐标为负数则再进行求反操作。
Step4对无符号整型数进行二进制操作,具体为截取二进制数的后5位,第6位补1。将这个数加63,即可得到一个区间在[95,126]的整数,将其转化为ASCII码字符表中‘_’—‘~’字符。
Step5对无符号整型数进行二进制移位,右移5位后重复Step4的操作,直到无符号整型数据小于0x20。
Step6当无符号整形数小于0x20时,将该数加63可得到一个区间为[63,94]的整数,将其转化为ASCII码字符表中‘?’—‘^’的字符。将Step4-Step6中生成的字符拼接成字符串。则该字符串为某个经度或纬度的编码。采用除ASCII编码(不含特殊字符)符合XML中间交换文件编码要求,并且相比单纯采用数字编码,大大地减少了字符串长度。
Step7重新回到Step1,直到渔场多边形顶点遍历完毕后,将各经纬度坐标编码合成一个长字符串,即得到了该渔场的压缩编码结果。
表1以某渔场为例,列出了利用本算法每个步骤的计算结果。
表1 渔场矢量数据压缩算法步骤示例
由于矢量数据传输采用UTF8编码的XML中间交换文件,因此数字、英文、标点符号各占1 B。在示例中的渔场共由22个坐标点组成,网络传输数据量为374 B。采用本算法将坐标点压缩为字符串后所需传输的数据量仅为144 B,压缩率达到38.5%。因此,采用上述算法对渔场矢量数据进行压缩和编码起到了较好地去除冗余数据,减少网络传输数据量的效果。
3.2 渔场矢量数据解压缩
在服务器端,各渔场预报产品的空间信息通过将压缩生成的字符串嵌入到XML中间交换文件中进行发布。而渔场矢量数据的解压缩则在浏览器端通过JavaScript语言实现,主要功能是将嵌入在XML中间交换文件中的字符串解压为一系列的渔场矢量坐标。如图5所示,渔场矢量数据解压缩算法顺序获取字符串中的一段字符,通过加减、移位、与或等二进制运算拼接成Int型偏移量,再将偏移量还原成Float型经纬度坐标,最后由若干经纬度坐标生成渔场多边形矢量数据。
图5 渔场矢量数据解压缩算法流程图
本文在对海洋渔业保障服务产品WebGIS发布系统的系统架构、地图服务构建、数据交互、产品显示等方面进行研究的基础上,应用JavaScript和高德地图API二次开发技术实现了全国渔场海面风、渔场海浪、台风预警报产品的发布。在关键技术方面,提出了一种计算坐标偏移量并映射为ASCII码的矢量数据压缩及解压缩算法,提高了渔场预报产品的Web传输效率。当然,本系统也存在一定的不足,前端采用JavaScript脚本开发在美观程度、数据访问效率方面仍有待提高。接下来将研究更先进的开发模式,依托Html5等前端开发语言和空间数据库进一步提高用户体验和预警报产品的查询、访问效率。
[1] 谭晨辉,刘青炎.OpenAPI出现、起源与现状[J].程序员,2008(7):38-41.
[2] 裴珊珊,叶小梁.国外Open API发展现状及趋势研究[J].情报科学,2009(12):1896-1900.
[3] 高岭,宋红军,王海,等.网站对外资源共享Open API的研究与实现[J].计算机技术与发展,2013(4):15-19.
[4] 尚武.网络地理信息系统(WebGIS)的现状及前景[J].地质通报,2006(4):533-537.
[5] 曾帆.基于WebGIS空间数据发布服务的研究与应用[D].山东科技大学,2007.
[6] 李昕煜.基于JavaScript的WebGIS前端开发及优化[D].吉林大学,2015.
[7] 王刚.数字压缩技术在改善空间数据网络传输的研究[J].城市勘测,2013(6):50-53.
[8] 钟尚平,高庆狮.一类矢量地图的无损压缩算法[J].系统仿真学报,2004(10):2189-2194.
[9] 赵艳伟,程振林,董慧,等.WebGIS多层次矢量数据压缩方法及仿真实现[J].系统仿真学报,2012(6):1259-1264.
[10] 周侗,龙毅.我国近期移动地图与互联网地图发展综述[J].地理与地理信息科学,2012(5):1-5.
[11] 龙际梦,刘宏建,蔡中祥,等.主流网络地图应用开发API技术研究[J].北京测绘,2015(3):79-82.
[12] 欧阳峰,杨春成,谢鹏,等.通用瓦片生成引擎设计与性能优化[J].测绘科学技术学报,2014(2):177-180,184.
[13] 李斌.面向室内地图信息服务的OpenAPI的设计和实现[D].北京:北京邮电大学,2013.
[14] 寇曼曼,王勤忠,谭同德.Google Map数字栅格地图算法及应用[J].计算机技术与发展,2012(4):204-206.
[15] 滕骏华,逄仁波,林志环,等.全国海洋渔业生产安全环境保障服务系统研究[M].北京:海洋出版社,2015:130-150.
[16] 高德开放平台.高德地图JavaScript API开发指南[EB/OL].(2016-09-20).[2016-09-26].http://lbs.amap.com/api/javascript-api/summary/.
[17] Wikipedia.Open API[EB/OL].2009-03-20.http://en.wikipedia.org/wiki/Open_API.
[18] Mulligan G,Gracanin D.A comparison of SOAP and REST imple-mentations of a service based interaction independence middlew areframew ork[C]//Simulation Conference (WSC),Proceedings of the2009 Winter, IEEE,2009:1423-1432.
RESEARCHONMARINEENVIRONMENTALPROTECTIONSERVICESSYSTEMOFFISHERYPRODUCTIONSAFETYBASEDONOPENAPIWEBGIS
Cai Wenbo1Teng Junhua1Tian Jie1Liu Xu1Liu Jianwei21
(NationalMarineEnvironmentalForecastingCenter,Beijing100081,China)2(BeijingBeyonInformationTechnologyCo.,Ltd.,Beijing100096,China)
In view of the traditional forecast map and SMS cannot meet the needs of the fishermen’s dynamic access to the early warning service, marine environmental protection services system of fishery production safety based on open API Web GIS is proposed. The whole framework based on B/S mode consists of the data layer, service layer, presentation layer and user layer. The primary realizing functionalities including issues fishery ground sea surface wind forecast, wave forecast and typhoon warning products to the public are developed by Auto Navi Map API and JavaScript programming language. Due to the limitation of network bandwidth and cost, the system can realize the web transmission of fishery ground forecasting data through a kind of vector data compression method which is used to calculate the offset of geographic coordinates and then mapped it to ASCII code. Taking the XML format swap file of a fishery ground wave forecasting product as an example, the data compression rate reached 38.5%.
Open API WebGIS Map API Marine fishery Vector data compression
TP3
A
10.3969/j.issn.1000-386x.2017.09.015
2016-11-24。海洋公益性行业科研专项(201205006)。蔡文博,工程师,主研领域:遥感与地理信息系统。滕骏华,研究员。田杰,助理工程师。刘旭,工程师。刘建伟,工程师。