APP下载

基于百度地图API 的地震应急制图系统研究

2022-05-18

乐山师范学院学报 2022年4期
关键词:经度经纬度格网

夏 军

(乐山师范学院 旅游学院,四川 乐山 614004)

0 引言

我国是地震频发的国家,也是地震灾害最为严重的国家之一。随着我国经济的发展和人口城市化进程的加快,地震灾害特别是强烈地震将对大型基础设施造成巨大破坏,对人口生命安全构成严重威胁。当地震灾害发生时,能够在第一时间掌握灾情并制定救援策略,能够有效减轻灾害带来的损失[1]。地震应急制图产品以地图形式展现地震震中的参数、历史地震数据、地理空间信息、地形地貌和交通状况等,为决策者提供简洁直观、信息丰富的地图,在灾后应急救援工作中发挥重要作用。

随着灾害的频发,应急制图越来越受到重视,相关理论和设计制作方法得到进一步发展,国内外学者主要围绕应急地图符号、模板制图技术和应急制图系统展开研究。Dymon 和美国联邦地理数据委员会的国土安全工作组提出了应急地图符号的设计和理论框架[2-3]。李晓丽[4]对地震灾害符号的应用进行了研究。曹利民[5]用ArcEngine 设计制作了地震应急救援专题地图符号库。徐琳[6]在已有符号标准基础上,设计制作了应急专题地图模板。钱凌韬[7]提出了应急地图线状符号,并研制了应急地图快速制图系统。Joyce等[8]对遥感灾害应急制图技术进行了归纳。陈文凯[9]等对产品目录的设计、专题图模板的制作和本地化快速出图软件的部署,使震后各类应急专题图件标准化、产品化。薛腾飞[10]等设计了地震应急遥感快速制图软件,实现了地震应急专题图的自动化制作。刘雪梅[11]对触发器和动态显示技术进行研究,实现了专题地图数据的自动更新,并用ArcGIS Engine 和C#完成了整个救援专题图快速制图系统的研发。

常规的应急制图方法和应用制图系统大多是基于GIS 专业制图软件(如ArcGIS、MapInfo 和MapGIS 等)进行地图生产[12-16],需要手动设置地图要素、空间参考和地图整饰等,过程复杂、出图时间长,失去了应急地图时效性和急迫性的特点。近年来,随着网络地图的兴起(如谷歌地图、必应地图、天地图和百度地图等),让公众可以轻易获取到空间地理资源,同时也促进了基于网络地图的应急制图技术[17-19]的发展。

本文通过研究快速制图的关键技术及算法,旨在解决自动化制图过程中的格网坐标计算、比例尺计算和数据图形化表示方法,通过调用百度地图数据源,用C#和JavaScript 编程语言,设计并开发一种用于地震应急制图的系统。通过该系统,可以快速制作地震专题图,满足地震灾情救援的时效性要求。

1 数据来源

1.1 百度地图API

百度地图具有美观简洁、内容丰富和免费开源等特点,主要功能包括:地图展示(2D、3D和卫星影像)、导航、信息检索、覆盖物添加、实时交通、路线规划、全景图和热力图展现,以及地理编码等。百度地图JavaScript API 是用JavaScript 语言编写,支持HTML5 特性,支持PC 端和移动端基于浏览器的地图应用开发,可以在用户网站中构建功能丰富、交互性强的地图应用[a]。百度地图已开放全球API 试用版,全面支持开发者对海外地图服务的需求。自2017年9 月开始,百度地图开放平台将逐步开放POI检索、反向地理编码、线路规划等服务能力,百度地图正在成为开发者出海首选的地图服务商。

百度地图API 使用免费,接口无使用次数限制,从1.5 版本开始,使用前需要申请密钥(ak)。首先用浏览器打开百度网站,注册会员,然后进入百度地图开放平台的JavaScript API 开发模式,点击左侧栏“获取密匙”按钮,开始创建应用,需要输入的表单信息见表1。

表1 密匙申请表单

提交申请,成功创建应用,将得到密匙字符串,由0~1 数字和大小写英文字母组成,如:y5yzu0eSYVFFljrOGyDYUmbO……,在线加载地图时需要用到。

1.2 地震台站基本信息

地震台站数据来自国家地震科学数据共享中心国家地震台网台站基本信息,共148 个台站,其中36 个有经纬度坐标。台站基本信息包括台网代码、台站代码、台站名称和经纬度坐标等,表2 为前3 个有经纬度坐标的台站基本信息。

表2 地震台站基本信息

1.3 地震数据

地震数据来源于中国地震台网(http://www.ceic.ac.cn),是从2009 年1 月1 日至今的全球范围内的地震数据,每天实时更新。通过地震发生时间、坐标范围、震源深度、震级大小和震中位置可以进行联合查询,结果以列表的形式返回。地震数据信息包含:地震发生日期和时间、震中经纬度坐标、震源深度、震级和震中地名,见表3。

表3 地震速报数据

2 研究方法

2.1 系统设计

制图系统设计的基本要求是:功能实用、操作简单,并且出图快速,用户可自定义标注,系统基本功能如下:

a)地图切换。可选择加载百度地图、卫星影像图、道路(地名)。

b)地图基本操作。地图移动、放大、缩小等。

c)距离测量。测量两点或多点之间的距离,在地图上进行标注。

d)搜索。可进行地名和搜行政区划边界搜索。

e)自定义标注。绘制点、线和面图形,添加文字,对图形和文字进行编辑和删除。

f)地震数据加载。加载地震台站信息和地震数据。

g)地图制作。可以制作历史地震分布图和震中信息图,并能够添加指北针、比例尺和图例,以及设置出图样式,包括标题文字、图框、经纬度网格线等。

该系统采用B/S 和C/S 相结合的模式,选用C# 和JavaScript 编程语言,用Visual Studio 2010 集成开发环境进行开发。通过系统窗体的WebBrowser 控件调用百度地图API,将地图页面嵌入到系统主窗体,实现客户端调用网络地图的功能。该制图系统功能架构如图1 所示。

图1 系统功能架构

2.2 关键算法

2.2.1 坐标转换方法

WGS84(World Geodetic System 1984)是 目前使用最广泛的大地坐标系,GCJ02(中国国家测绘局制订的地理信息系统的坐标系,也称作火星坐标系)是对WGS84 坐标系进行了加密,而百度坐标系(BD09)并非真实坐标系,又是在GCJ02 坐标系基础上再次加密获得。百度地图的对外接口均采用BD09,而从国家地震科学数据共享中心采集的数据是WGS84 坐标,需要转换为百度坐标。

可以直接调用百度地图API的坐标转换方法,但需要注意的是,在调用百度地图坐标转换方法时需要设置坐标类型,其取值为:“1”表示GPS标准坐标,即WGS84坐标;“2”表示高德地图(amap)坐标;“3”表示腾讯地图(tencent)坐标;“4”表示图吧地图(mapbar)坐标;“5”表示百度地图坐标,即BD09坐标。

2.2.2 格网坐标值算法

地图经纬度格网的绘制可以使地图更加规范和直观,合理分布的经纬度格网可以使得地图更加美观,而且提高地图使用的体验度。格网的绘制需要确定其经纬度坐标值,以经度格网为例,算法流程如下:

a)确定地图经度范围,即经度最大值和经度最小值之差,表示为DMapLon=MapLonMax-MapLonMin。

b)定义相邻格网间隔经度数组。由于度、分和秒单位为60 进制,因此定义格网间隔经度数组DGridLonArr={50,40,30,20,10,5,2,1}。

c)设置格网线数目下限,至少有两条,GridLonMinCount=2。

d)寻找合适的格网间隔经度值。通过循环将地图经度差值(DMapLon)依次除以预定义的格网间隔经度值(DGridLonArr[i],i=0,1,2...7),当结果大于GridLonMinCount 时,即满足条件c),此时的间隔经度值即为合适的格网间隔经度值,定义为DGridLon。

e)确定地图坐标范围内的格网经度值。设定格网经度初始值为0 度,计算从0 度开始,以DGridLon 为间隔的格网经度坐标值,即GridLon=DGridLon*K(K=0,1,2,3...)。

f)从第e)步计算得到格网经度值中,筛选出介于地图范围内的值,也就是满足[地图最小经度,地图最大经度]区间的经度值,即为制图的格网经度坐标。如图2 所示,红线方框为地图制图范围,竖线表示经度格网,其中黑线为地图范围内的经度格网,也是制图时需要绘制的格网。

图2 格网示意图

格网纬度坐标值的计算方法同上,只是注意取值范围差别,经度值是0~360 度,而纬度值范围为0~90 度。该地图格网坐标算法运算速度快,简单且易于实现。

2.2.3 地震数据解析和图形化表示

地震数据从中国地震台网获取,请求的网址为“http://www.ceic.ac.cn/history”,可以设置的参数见表4。利用C#的HttpWebRequest 类以“GET”方式远程获取地震数据,再对获取到的地震数据进行解析,一条记录表示一个地震发生,主要是震中的参数:地震发生日期和时间、震中经纬度坐标、震源深度、震级和震中地名。对地震数据进行时间排序,第一条记录即为最近发生的地震数据。由此可以获取到参数条件下的所有地震数据,包括历史的和近期的。

表4 地震速报数据请求参数

为了将地震数据更直观的在地图上显示,需要将地震数据进行图形化和符号化。对地震震级大小进行分级,用不同面积大小的红色圆形进行标示。表5 为地震台站、震中和震级分级的图形化表示列表。

表5 地震数据图形表示

2.2.4 地图比例尺算法

地图比例尺表示地图上的线段长度与实地相应线段长度之比,对于地图来说比例尺是不可缺少的。百度地图本身有显示比例尺,但百度地图API 没有提供比例尺的接口供开发者调用,也无法获取相应的比例尺参数。要在地图上绘制比例尺,那么需要知道比例尺在地图上的长度和代表的实际距离,算法流程如下:

a)层级与比例尺。百度地图分为17 个层级(3~19),每个层级比例尺是已知而且固定的,从3 到19 层比例尺对应的实地距离如下:2000公里,1000 公里,500 公里,200 公里,100 公里,50 公里,25 公里,20 公里,10 公里,5 公里,2公里,1 公里,500 米,200 米,100 米,50 米,20米 。比如第5层级,对应的比例尺为1:500公里,而地图当前层级可以通过百度地图API 获得。

b)实地距离。设地图窗口左边界中点为A,右边界中点为B,A 和B 两点的经纬度坐标可以根据地图像素坐标转换得到,再用经纬度坐标可以计算出两点实地距离。

c)地图上像素距离。地图窗口的像素宽和像素高是已知的,分别为W 和H,单位为像素,A 和B 点像素坐标分别为A(0,H/2)、B(W,H/2),那么地图上A、B 两点地图上的像素距离就等于地图窗口的像素宽度W。

d)地图上像素分辨率。地图的像素分辨率=实际距离/地图上像素距离。

e)比例尺在地图上的像素长度。计算某比例尺在地图上的像素长度也就是相当于计算该比例尺表示的实际距离在地图上的长度。比例尺像素长度=比例尺对应的实地距离/像素分辨率。

3 系统实现及应用

3.1 系统实现

百度地图JavaScript API v3.0,是一套基于百度地图API 二次开发的开源代码,可以快速实现在地图上添加Marker、自定义信息窗口、标注相关开发、鼠标绘制工具等功能。本制图系统直接利用百度地图提供的JavaScript 开源库实现地图基本操作、绘图、测距和标注等。

在Visual Studio 2010 中创建窗体应用项目“地震制图系统”,新建窗体命名为“MapForm”,将工具箱中的WebBrowser 控件拖放到窗体上。创建“index.html”页面,加载百度地图,再将“index.html”作为调用WebBrowser 控件的“Navigate”方法的参数,运行程序即可显示百度地图。向地图窗体添加其他控件:地震数据加载、地名和行政区划搜索、制图样式设置、地图制作等控件。系统运行界面如图3,是直接调用的百度地图进行显示,地图数据来源于北京百度网讯科技有限公司,地图审图号(PC 端):GS(2016)2089 号,测绘资质证书编号:甲测资质1100930,该信息已由百度地图自动标注,位置在图3 底部。

图3 地震应急制图系统主界面

3.2 地震制图应用

传统的地震制图步骤是:通过GIS 专业制图软件平台,加载地图、基础地理信息数据和地震数据等,再添加指北针和比例尺,制作地震图例,设置相应的经纬度格网和图廓,手动添加文字标注和说明等,最后导出地震示意图。而本系统通过调用百度地图,并自动加载地震数据,自动添加指北针、比例尺、图廓和地震图例,经纬度格网样式可以自定义设置,直接导出JPGE 格式图片。相比传统的制图方法,本制图系统不需要GIS 相关的专业知识和大型软件平台,在制图过程中更加自动化,从而缩短制图步骤和时间,实现地震图件的智能化快速制作。

该制图系统可以制作历史地震分布图和地震示意图,制图基本步骤如下:a)搜索行政区划名称,显示行政区域边界,边界数据通过调用百度地图API 获得;b)加载地震台站信息;c)加载地震速报数据;d)调整地图范围进行截图;e)对地图进行自定义标注;f)设置地图样式并出图。图4 为利用该制图系统制作的四川省从2009 年1 月1 日到2017 年10 月14 日的地震(>=3 级)分布情况,比例尺为1:100 公里,震级大小用红色圆形面积表示。四川是地震多发地带,地形构造是西部山区,东部盆地。地震多发生于西部山区,而且沿盆地西北部边缘(盆地与山区的交界线)呈明显的线性分布,这正是龙门山大断裂——它是一条贯穿岩石圈的巨型地壳断裂系统,南北延伸越500 公里,宽达70 公里,2008 年5 月12 日汶川大地震(8.0 级)就是受龙门山大断裂影响。盆地中部很少是震中区域,但也会遭到地震的波及和影响。

图4 四川省历史地震分布图

2017 年10 月14 日凌晨2 点14.7 分,四川省阿坝州九寨沟县发生地震,图5 为九寨沟地震震中及参数图,比例尺为1:5 公里,震中坐标为103.8oE 33.22oN,震级为3.2,震源深度12 km。图上显示震中位于九寨沟景区西侧,离核心景区最近7.8 公里,最远26.7 公里。2009 年1 月1 日以来,震中附近在历史上曾发生过一次不小于7.0级的地震(2017 年8 月8 日21 时19 分46.7 秒,7.0 级)和30 多次5 级以下(≥3 级)的地震,历史地震呈北北西方向线性分布。震中位于岷江断裂带与东昆仑山断裂带交汇处,离岷江断裂带更近,主要是受岷江断裂带所影响。九寨沟县的交通主要是公路,通过省道S301 线,东南方向与文县连接,西南方向与松潘县贯通,南面通过省道S205 线与平武县相连。对于地震救援,可以从这三个方向到达。

图5 九寨沟地震震中及参数

地震发生后,灾后救援讲究时效性,通过该制图系统可以快速制作出历史地震分布图和震中参数图,从而对地震震中的参数、历史地震分布、交通、地形地貌等进行直观展示,对地震灾情和救援提供初步判断的依据。

4 结语

本文分析了地震应急制图系统的功能需求,进行了系统功能架构设计,对系统实现需要解决的关键技术(包括坐标转换、网格线经纬度计算、地震数据获取及图形化表示和比例尺)进行了算法设计和分析,并在Visual Studio 2010 集成开发环境下,选用C#和JavaScript 编程语言,基于B/S 和C/S 结合的模式,设计并开发了地震应急制图系统。该系统调用百度地图数据,远程获取并解析地震台站和地震速报数据,可以快速制作出地震专题图,从而对地震震中的参数、历史地震分布、交通、地形地貌等进行直观展示,对地震灾情和救援提供初步判断的依据。

地图要素包括底图(卫星影像图或行政区划图)、行政区划边界、地震台站信息、地震速报数据(含历史地震)、震中及参数、图形和文字标注和距离测量标注等。地图整饰包括图框、格网、比例尺、指北针、地震图例、经纬度标注、图框和图名等。地图样式可以自定义设置,整体风格简介、美观,尺寸不大,可插入Word 文档,可用于PPT 演示,可打印随身携带。该制图系统操作简单,出图快速,不需要GIS 专业知识,对工作起到事半功倍的效果。

今后将增加更多的地图,如谷歌卫星图、地质构造图、地形图等,提高制图效率,提供更多分类地震数据加载,更好地为地震应急救援提供决策依据。

猜你喜欢

经度经纬度格网
遥感数据即得即用(Ready To Use,RTU)地理格网产品规范
云南地区GPS面膨胀格网异常动态变化与M≥5.0地震关系分析
实时电离层格网数据精度评估
对时差计算方法的探讨
矢量点状数据抽稀方法的研究与实现
基于经纬度范围的多点任务打包算法
自制中学实验操作型经纬测量仪
月面余经度:一个冷门概念及其使用
澳洲位移大,需调经纬度
如何计算地方时