数据接口

请求

Tafor 会定时对外轮询数据,报文接口请求间隔为 1 分钟,情报区接口请求间隔为 2 分钟。

各类请求地址可以在 设置 -> 接口 中更改,详情请参考 使用指南

请求接口使用 Vercel 创建样例,这里以 https://tafor-script.vercel.app 为例,实际地址以当前生产环境为准。

报文接口

GET https://tafor-script.vercel.app/messages/<airport> HTTP/1.1

airport 机场的 ICAO 四字代码

需返回以下数据:

{
  "FC": "TAF ZJHK 220414Z 2206/2215 04004MPS 6000 BKN007 BKN020 TX22/2206Z TN19/2215Z=",
  "FT": "TAF ZJHK 220316Z 2206/2306 04004MPS 4000 BR BKN007 BKN020 TX25/2206Z TN19/2221Z BECMG 2301/2302 SCT020=",
  "SA": "METAR ZJHK 220500Z 02004MPS 340V060 8000 BKN007 OVC023 20/19 Q1015 NOSIG=",
  "WS": [
    "ZJSA SIGMET 2 VALID 220135/150535 ZJHK- ZJSA SANYA FIR EMBD TS FCST WI N2030 E11043 - N1830 E11025 - N1812 E10817 - N1951 E10749 - N1957 E10755 - N2030 E10802 - N2030 E11043 TOP FL450 MOV S 20KMH NC",
    "ZJSA SIGMET 3 VALID 220530/220930 ZJHK- ZJSA SANYA FIR EMBD TS FCST WI N1913 E10801 - N1923 E11001 - N1815 E11012 - N1804 E10821 - N1913 E10801 TOP FL430 STNR WKN"
  ]
}

注解

SIGMET 或 AIRMET 报文,会以列表形式返回有效期内此类型所有的报文,类型键值可选 WS WC WV WA

图层接口

GET https://tafor-script.vercel.app/layers HTTP/1.1

需返回以下结构的数据:

[
    {
        "extent": [
            98,
            0,
            137,
            30
        ],
        "image": "https://tafor-script.vercel.app/static/clouds/ir_clouds.webp",
        "name": "Himawari IR Clouds",
        "overlay": "standalone",
        "proj": "+proj=longlat +ellps=WGS84",
        "updated": "Sun, 16 Oct 2022 06:53:52 GMT"
    },
    {
        "extent": [
            98,
            0,
            137,
            30
        ],
        "image": "https://tafor-script.vercel.app/static/clouds/true_color.webp",
        "name": "Himawari True Color",
        "overlay": "standalone",
        "proj": "+proj=longlat +ellps=WGS84",
        "updated": "Sun, 16 Oct 2022 06:53:52 GMT"
    },
    {
        "extent": [
            104.355556,
            14.159722,
            115.215833,
            24.128611
        ],
        "image": "https://tafor-script.vercel.app/static/echos/sanya_fir_mosaic.png",
        "name": "Sanya FIR Mosaic",
        "overlay": "mixed",
        "proj": "+proj=longlat +ellps=WGS84",
        "updated": "Sun, 16 Oct 2022 06:53:52 GMT"
    }
]

图层信息由一组或多组数据成,每层都需要包含以下结构:

  • extent 图层的坐标范围,使用经纬度表示,minx, miny, maxx, maxy
  • image 图层的地址
  • name 图层名称
  • overlay 参数两个选项,standalonemixedmixed 表示图层可以和其他图层叠加,standalone 只能单独存在。
  • proj 图层投影信息,需要和设置的一致,才能正确加载
  • updated 图层更新的时间,世界时

注解

无法获取最新的底图时,imageupdated 的值标记为 null

响应

程序内建了一个 RESTful API 服务,默认启动端口 9407, 用于接收外部程序发送的报文,支持接收观测报文和 SIGMET。

以下示例使用的 Bearer Token 为 VGhlIFZveWFnZSBvZiB0aGUgTW9vbg==

显示观测报文和校验

POST /api/notifications HTTP/1.1
Authorization: Bearer VGhlIFZveWFnZSBvZiB0aGUgTW9vbg==

参数:

  • message 报文内容
  • validation 是否启用验证,可选项,默认不启用

通知示例:

message=METAR%20ZJHK%20210600Z%2026002MPS%20200V300%209999%20BKN030%2036%2F27%20Q1004%20NOSIG%3D

返回数据:

{
    "message": "METAR ZJHK 210600Z 26002MPS 200V300 9999 BKN030 36/27 Q1004 NOSIG=",
    "created": "Fri, 21 Jun 2019 05:57:34 GMT"
}

创建成功返回 HTTP Created 201 状态码,数据里面会有一个接口接收通知的时间。

此时接口用于通知预报软件未来要发的观测报文。

通知和验证示例:

message=METAR%20ZJHK%20221100Z%2029002MPS%20160V330%209999%20-TSRA%20FEW020CB%20SCT023%2024%2F23%20Q1008%20RESHRA%20BECMG%20TL1230%20-SHRA%3D&validation=on

返回数据:

{
    "message": "METAR ZJHK 221100Z 29002MPS 160V330 9999 -TSRA FEW020CB SCT023 24/23 Q1008 RESHRA BECMG TL1230 -SHRA=",
    "created": "Fri, 21 Jun 2019 05:58:34 GMT",
    "validations":{
        "html": "METAR ZJHK 221100Z 29002MPS 160V330 9999 -TSRA FEW020CB SCT023 24/23 Q1008 RESHRA<br/>BECMG TL1230 -SHRA=",
        "tips": [],
        "pass": true,
        "tokens": [
            [
                "BECMG",
                true
            ],
            [
                "TL1230",
                true
            ],
            [
                "-SHRA",
                true
            ]
        ]
    }
}

参数 validation 支持以下字符

TRUE_STRINGS = ('true', 'True', 't', 'yes', 'y', '1', 'on')
FALSE_STRINGS = ('false', 'False', 'f', 'no', 'n', '0', 'off')

开启验证后,返回数据会多一个 validations 字段,其中:

  • html 报文的 html 版本,趋势预报有错的位置会高亮显示
  • tips 列表,文字提示信息,无错不显示
  • pass 趋势预报是否校验通过
  • tokens 趋势项单独拆解,并标注出错项

观测软件趋势验证可以参考如下逻辑,点击编报按钮后,观测软件会请求访问这个接口,如果接口告知观测软件趋势校验通过,不做任何改变。 如果没有通过,自动把趋势改为 NOSIG=。

注解

在传递 message 参数时,如果是通过 query params 传递时,一定要 encode uri,因为 +TSRA 中的 + 符号会被转义为空格,如果是用 JSON 附加在请求 body 上,则不需要。

显示 SIGMET/AIRMET 报文

POST /api/notifications HTTP/1.1
Authorization: Bearer VGhlIFZveWFnZSBvZiB0aGUgTW9vbg==

参数:

  • message 报文内容

示例:

message=ZJSA%20SIGMET%201%20VALID%20300755%2F301155%20ZJHK-%20ZJSA%20SANYA%20FIR%20EMBD%20TS%20OBS%20AT%200115Z%20WI%20N1906%20E11150%20-%20N1731%20E10815%20-%20N1904%20E10702%20-%20N2030%20E10802%20-%20N2030%20E11130%20-%20N1930%20E11130%20-%20N1906%20E11150%20TOP%20FL300%20MOV%20N%2020KMH%20NC%3D

返回数据:

{
    "message": "ZJSA SIGMET 1 VALID 300755/301155 ZJHK- ZJSA SANYA FIR EMBD TS OBS AT 0115Z WI N1906 E11150 - N1731 E10815 - N1904 E10702 - N2030 E10802 - N2030 E11130 - N1930 E11130 - N1906 E11150 TOP FL300 MOV N 20KMH NC=",
    "created": "Sun, 30 Jun 2019 07:49:37 GMT"
}