基于LBS山东省精细化气象预报服务接口开发与应用

2022-09-09 05:51马蕾冉桂平褚颖佳赵子龙
电子技术与软件工程 2022年12期
关键词:格点经纬度标识码

马蕾 冉桂平 褚颖佳 赵子龙

(济南市气象局 山东省济南市 250102)

1 引言

随着经济和科技的高速发展, 人们对于气象服务的要求也越来越精细化。特别是上下班、出行、旅游、农业、生产活动等方面,人们越来越关注自身所在位置区域气象实时变化情况。精细化预报在人们的生产生活中具有重要的指导意义。2020年,山东省人民政府办公厅发布了《关于加快推进新型智慧城市建设的指导意见》,统筹推进全省新型智慧城市建设,对气象信息融入智慧城市运行和政府决策提出了要求,也给省内各级气象部门带来了挑战。

近几年,气象预报逐步实现了由站点向格点预报转变,形成了以模式预报为背景场,结合站点预报和精细化地理信息订正的气温、相对湿度等连续变量的智能网格预报产品,并在气象预报业务中已经得到了较好的应用。为精细化预报服务提供了数据基础。

目前,精细化预报服务问题主要集中在两方面:一是由于格点预报产品数据体量大且数据格式复杂难懂,因此其数据的读取和处理工作是比较困难的。各级气象部门在气象服务过程中存在重复数据处理和数据无法规范统一的问题。二是目前全国智能网格预报产品空间分辨率为5km,无法满足精细化要求较高的行业和地区的服务需求。为了更加高效、方便、广泛地满足精细化预报数据的服务需求,就必须建立统一、易懂、调用便捷且更为精细的数据服务接口。

2 建设内容

使用智能网格全国5*5km格点预报服务产品,实现对于获取山东省任意经纬度位置的预报要素值数据的接口开发,其涉及的预报时效和频次与格点数据一致(预报时效240小时,时间间隔1小时)。要素包括气温、降水、相对湿度、云量等要素。并使用本接口实现基于jQuery的动态精细化格点预报场GIS显示。

实现省内任意区域空间分辨率为1*1km按要素的最新精细化预报:该功能主要用于解决针对区域的预报服务需求,包括任意区域的温度、风向风速、最高温度、最低温度、降水等要素的预报,返回某未来时次(十天内)某要素的自定义区域的预报结果, 解决“最近一公里”的预报服务需求。

实现省内任意点按要素未来十天的精细化预报:返回用户对某位置某要素的未来十天内的变化情况,为用户提供生产生活参考价值。

3 技术架构

基于Linux操作系统环境,使用PHP、Fortran语言实现接口开发。接口开发主要包括数据采集、数据解析、接口服务。从NAS存储实时采集格点预报服务产品,通过文件解析提取气温、相对湿度、风向风速、降水量、云量等要素的数据值,以适应接口查询的存储结构进行存储。接口服务根据用户请求的内容读取和加工各要素值数据,最终把加工后的产品数据提供给用户。系统架构如图1所示。

图1:系统架构

4 接口设计

4.1 设计原则

为了融入山东省气象服务接口库以及对接目前已有的山东气象服务手机客户端,接口的设计应满足以下原则:

(1)接口应符合山东省地方标准《DB37/T 2930-2017气象服务信息数据接口规范》。

(2)访问方式:对气象服务信息的访问对应唯一的资源标识符(URL网址),应采用HTTP协议(RFC 2616)的GET方式进行。

(3)接口编码:服务请求字符串及返回结果编码采用UTF-8字符集(参见RFC 3629/STD 63(2003))。

(4)安全性:考虑到部分气象数据敏感性,访问气象服务信息数据接口需要进行授权(即需要用户认证的服务)。注册用户申请相关服务资源,经审核后获取合法授权(用户名密码、IP认证或Key值)。通过在气象服务信息数据访问接口资源地址上加入用户名和密码或Key值参数来构建加密服务资源的访问地址,形式为“&username=&password=”或“&key=”,生成新的服务网址(经过IP认证的用户可以直接访问)。通过访问加密地址获取返回结果。

(5)服务响应:请求响应返回信息格式宜使用JSON格式。服务请求返回结果应包括请求结果状态信息和内容信息。结果状态信息应至少包含状态码和状态说明信息。返回结果内容信息中应包含时间、空间、产品要素名称和要素单位等信息。

(6)效能要求:接口应提供多用户并行访问支持。接口响应时间应小于500 ms。

4.2 功能设计

接口应满足用户对于任意区域、任意位置点的温度、降水量、湿度、风向风速等预报的查询需求。

(1)检索全省范围内区域温度、降水量、最高温度、最低温度等十天内逐1公里预报格点要素场:根据用户提供的关注区域范围的经纬度、预报要素、未来时次,返回该区域空间分辨率1km的所有格点要素值。

使用数据:逐3小时5公里分辨率降水预报、日最高温预报、日最低温预报、相对湿度预报、风向风速预报。

输入参数:预报要素、预报时次、经纬度范围

输出参数:状态标识码、状态消息、返回内容

返回值:状态标识码返回0,表示正常;状态消息为OK;返回设定区域内的输入要素的逐1公里格点预报值。状态标识码返回1,表示授权验证失败;状态标识码返回2,表示查询内容为空;状态标识码返回3,表示输入参数格式错误。

(2)检索全省范围内某位置温度、降水量、最高温度、最低温度等十天内预报随时间的变化序列:根据用户提供的位置的经纬度信息、预报要素,返回该位置要素逐3小时十天内的预报数值。

使用数据:逐3小时5公里分辨率降水预报、日最高温预报、日最低温预报、相对湿度预报、风向风速预报。

输入参数:预报要素、经度、纬度

输出参数:状态标识码、状态消息、返回内容

返回值:状态标识码返回0,表示正常;状态消息为OK;返回请求位置的格点预报值。状态标识码返回1,表示授权验证失败;状态标识码返回2,表示查询内容为空;状态标识码返回3,表示输入参数格式错误。

5 接口开发实现

5.1 数据采集解析

GRIB 码是与计算机无关的压缩的二进制编码,主要用来表示数值天气预报的产品资料。现行的GRIB 码版本有GRIB1 和GRIB2 两种格式。 目前,智能网格预报产品是以GRIB2格式存储。NCEP提供了开发的GRIB2命令行工具wgrib2,用于读取、创建和修改GRIB2文件。

通过ftp服务连接省局NAS服务器,根据时间检索融合格点产品下载至接口服务器。利用wgrib2读取产品数据,固定选取山东区域范围产品覆盖范围(112.25-125.15°E、31.85-40.85°N)的格点要素数值并转存为micaps4格式。

系统选取micaps格式文本文件用于精细化预报格点数据存储方式,选择该类存储方式能够符合预报员的常用操作软件的解析格式,同时格点数据从读取速度和写入速度上来说,使用轻量级的文本文件比数据库等方式效率高。

MICAPS系统的数据结构是建立在文件系统基础上的。其特点是:

利用目录来区分不同的数据来源、要素和层次,即不同的数据来源、要素和层次的数据要放在不同的目录中。同一目录中的数据只能有时次或时效上的不同。

系统根据不同的数据格式来显示不同类型的图形。除第六类数据(传真图)外,每个数据文件都有一个文件头,描述该数据文件属于哪一类数据格式、数据的日期、时次、时效及其它有关参数。

除第6和13类数据(图象)外,数据文件均为文本文件。

(1)wgrib2解析工具部署:访问该地址http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2下载wgrib2.tgz。使用gunzip解压wgirb2.tgz为wgrib2.tar,执行tar –xvf wgirb2.tar解压生成目录grib2,cd grib2进入目录并make编译,提示编译成功则wgrib2部署完成。

(2)数据预解析:运行./wgrib2 *.grb2 -s |grep "TMP" |./wgrib2 -i *.grb2 -spread data.txt,其中*.grb2为需要解析的文件名或绝对路径,data.txt为解析的临时数据文件,TMP代表温度要素,如需解析其他按照格点预报要素代码进行替换。其中风要素是包括风向风速的键值对。

(3)生成Micap第四类格式:选定山东区域范围产品覆盖范围(112.25-125.15°E、 31.85-40.85°N),空间分辨率5km,时间分辨率3小时。根据以上信息提取临时数据文件内符合经纬度范围的数据值,并按照先经度由小到大排序,后纬度由小到大排序后,按照array[259][181]二维格式进行文本写入。

5.2 计算位置预报要素值

5.2.1 获取地理位置信息

可以使用以下两种方式来获取用户地理位置信息:

(1)方式一:用户访问精细化预报GIS页面,通过点击请求位置,页面通过调用百度API接口获取用户的经纬度信息。

使用百度地图获取用户当前信息,首先需要申请ak密匙,申请之后引入依赖的js文件:

通过以下函数来获取经纬度:

(2)方式二:用户通过平台或url向接口写入具体已知的经纬度信息。

5.2.2 利用双线性插值内插和计算位置预报要素值

双线性内插法是通过取采样点到周围4邻域像元的距离加权来计算其栅格值新值。具体操作是首先在Y方向做一次内插(或X方向),再在X方向(或Y方向)内插一次,通过距离加权计算得到该像元的栅格值。用该法进行重采样,结果往往会比最邻近法重采样的结果更加光滑,但是会改变原来的栅格值,丢失一些局部细微的特征。适用于表示某种现象分布、地形表面的连续数据,如DEM影像、温度统计、降雨量分布、坡度等,这些数据一般就是通过采样点多次内插得到的连续表面。以下示意图为栅格数据经过平移和旋转等几何变换之后,输出栅格采用双线性内插法重采样,其中黑色线框表示的是输入栅格,蓝色填充表示的是输出栅格,红色的点表示输出栅格某一像元的中心位置,其栅格值需要被重新计算,在这里取距离它最近的4个输入栅格的值通过距离加权平均来计算新值。

将4.1中生成的micaps4格式数据以数组形式存储,将5km数据产品栅格进行五等分,通过双线性插值计算每个新栅格值,并写入新数组,生成空间分辨率为1*1km的micaps4格式文件。

通过4.3.1的方法获取经纬度位置后,将经纬度位置通过输入参数的方式传递给接口,接口接收到经纬度参数值(lon,lat),已知区域边界的两个经纬度位置(minlon,minlat)和(maxlon,maxlat)。计算该位置的上下边界:

下边界:lon0=(lon-minlon)/interval lat0=(lat-minlat)/interval

上边界:lon1=(maxlon-lon)/interval lat1=(maxlat-lat)/interval

即其该经纬度位置周边四点的预报值为f(minlon,minlat)=data[lon0][lat0]、f(minlon,maxlat)=data[lon0][lat1]、f(maxlon,minlat)=data[lon1][lat0]、f(maxlon,maxlat)=data[lon1][lat1]。

判断以上四个值是否均为有效值,当四值均为有效值时,进行双线性插值算法(图2)。

图2

首先在纬向进行线性插值,得到

然后在y方向进行线性插值,得到

这样就得到所要的结果 f(lon,lat),

这种插值方法的结果与插值的顺序无关。首先进行y方向的插值,然后进行x方向的插值,所得到的结果是一样的。

若不足四点有效值,则将剩余有效值直接取平均值。

5.3 接口访问

用户客户端通过移动应用或者嵌入平台的定位接口所获取的经纬度位置信息作为接口的输入参数,使用HTTP GET方式发送数据请求,数据接口根据请求返回JSON格式的结果。接口请求和返回符合1.2的接口规范。例如,用户请求其当前位置的气温逐3小时变化情况,接口请求地址格式为http://www.sdmsc.net:9090{接口服务器域名}/api/pgrid{接口路径}/?type=TMP{预报要素参数}&lon=*&lat=*{位置参数}&key=*{授权key值}

接口程序通过GET方式获取用户传递的输入参数后,程序首先验证授权值是否合法,若不合法,则返回验证失败提示信息。验证成功后,对输入参数进行正则校验,校验不通过则提示输入不合法参数提示。以上通过后,程序根据输入的起报时间和要素检索相应的文件,通过循环逐个读取数据文件的内容并确定所输入的经纬度所在的格点位置,根据该位置的相邻的四个格点的要素值使用双线性算法进行插值,得出该位置的要素值,并按照预报时次由近及远的进行排列,将各个预报时次的预报值根据接口设计格式进行输出。

例如查询2021年8月5日(120°E,35°N)气温逐3小时变化情况:

5.4 GIS应用

读取解析后的micaps4格式文件,调用绘制函数/方法,根据文件的要素值大小绘制相应颜色的像素块,最后输出图像文件。如图3所示为气温添加至百度地图上的效果。

图3:气温产品叠加百度地图效果

读取GIS前景图叠加至百度在线GIS上,利用接口1和接口2,实现GIS应用实例:在页面上可以选择要显示的气象要素,如温度、湿度、降水、云量、风速等,页面载入时默认显示温度。在页面上点击任意点有弹出层,显示该点的位置信息及温度、降水、风速等格点预报信息。如图4所示。

图4:某位置逐3小时气象预报曲线

6 结语

精细化预报数据接口的开发和GIS应用产品,已经纳入山东省气象服务产品“齐鲁风云”APP中使用。接口的设计符合公众气象服务应用需要,基于JSON的格点预报数据接口,满足了地图、曲线等服务形式的调用,统一了格点预报服务格式和对接方式,能够灵活适用于移动和桌面应用。

猜你喜欢
格点经纬度标识码
带有超二次位势无限格点上的基态行波解
一种电离层TEC格点预测模型
带可加噪声的非自治随机Boussinesq格点方程的随机吸引子
基于经纬度范围的多点任务打包算法
自制中学实验操作型经纬测量仪
澳洲位移大,需调经纬度
格点和面积
Process Mineralogy of a Low Grade Ag-Pb-Zn-CaF2 Sulphide Ore and Its Implications for Mineral Processing
Study on the Degradation and Synergistic/antagonistic Antioxidizing Mechanism of Phenolic/aminic Antioxidants and Their Combinations
A Comparative Study of HER2 Detection in Gastroscopic and Surgical Specimens of Gastric Carcinoma