Skip to content
章节导航

概要设计

1. 架构设计

系统架构设计如下图:

2. 数据库设计

参照需求,需要如下表来存储对应的台风路径信息。

  • 台风信息表,用以存储台风的基本信息;
  • 台风实况表,用以存储台风的实况点信息;
  • 台风预报表,用以存储台风的预报点信息;
  • 台风登陆点信息表,用以存储台风的登录点的信息;
  • 预报机构表,用以存储台风预报机构的信息;
  • 台风图例表,用以存储台风强度在地图上展示的颜色,同时也是生成图例的数据源。

2.1 台风基本信息表

sql
CREATE TABLE public.typhoon_list
(
    id serial NOT NULL,
    name character varying(32) NOT NULL,
    name_en character varying(32) NOT NULL,
    tfbh character varying(12) NOT NULL,
    year bigint NOT NULL,
    is_current boolean NOT NULL,
    land_points character varying(64),
    start_time timestamp without time zone,
    end_time timestamp without time zone,
    PRIMARY KEY (id)
)

2.2 台风实况表

sql
CREATE TABLE public.typhoon_live_info
(
    id serial NOT NULL,
    tfbh character varying(12),
    lon numeric NOT NULL,
    lat numeric NOT NULL,
    wind_speed numeric,
    power numeric,
    wind_level numeric,
    move_speed numeric,
    move_dir character varying(12),
    pass_time time without time zone,
    circle7 character varying(128),
    circle10 character varying(128),
    circle12 character varying(128),
    strong character varying(32),
    PRIMARY KEY (id)
)

2.3 台风预报表

sql
CREATE TABLE public.typhoon_forc_info
(
    id serial NOT NULL,
    live_id integer NOT NULL,
    lon numeric NOT NULL,
    lat numeric NOT NULL,
    wind_speed numeric,
    power numeric,
    wind_level numeric,
    move_speed numeric,
    move_dir character varying(12),
    pass_time time without time zone,
    circle7 character varying(128),
    circle10 character varying(128),
    chircle12 character varying(128),
    strong character varying(32),
    sets character varying(32),
    PRIMARY KEY (id)
)

2.4 台风登陆点信息

sql
CREATE TABLE public.typhoon_lands
(
    id serial NOT NULL,
    tfbh character varying(12) NOT NULL,
    lon numeric NOT NULL,
    lat numeric NOT NULL,
    land_pos character varying(64),
    land_time character varying(32),
    PRIMARY KEY (id)
)

2.5 预报机构信息

sql
CREATE TABLE public.typhoon_forecast_org
(
    id serial NOT NULL,
    name character varying(32) NOT NULL,
    color character varying(32) NOT NULL,
    PRIMARY KEY (id)
)

2.6 图例

sql
CREATE TABLE public.typhoon_legends
(
    id serial NOT NULL,
    label character varying(64),
    value character varying(64),
    color character varying(32),
    PRIMARY KEY (id)
);

3. 接口设计

需要设计如下接口方可完成需求所涉及功能。

  • 根据年份查询台风列表
  • 根据台风编号查询路径数据
  • 预报机构列表
  • 台风图例
  • 城市测距列表

3.1 根据年份查询台风列表

根据年份(默认为今年)查询对应年份的台风列表,返回数据格式参考如下:

json
{
    "tfbh": "202225",
    "ident": "202225",
    "name": "帕卡",
    "ename": "Pakhar",
    "is_current": 0,
    "begin_time": "2022-12-11T20:00:00",
    "end_time": "2022-12-12T17:00:00",
    "land": []
}

3.2 根据台风编号查询路径数据

根据台风编号(必填参数)查询台风实况数据,每一个实况点应包含:实况基本信息、该点预报信息。格式参考如下:

json
[
    {
        "tfbh": "202203",
        "ident": "202203",
        "name": "暹芭",
        "ename": "Chaba",
        "is_current": 0,
        "begin_time": "2022-06-30T08:00:00",
        "end_time": "2022-07-04T05:00:00",
        "land": [
            {
                "position": "广东电白沿海",
                "land_time": "2022-07-02T15:00:00",
                "lng": 111.1,
                "lat": 21.5
            }
        ],
        "points": [
            {
                "time": "2022-06-29T08:00:00",
                "lng": 116.1,
                "lat": 15.3,
                "strong": "热带低压(TD)",
                "power": 7,
                "speed": 15,
                "move_dir": "北西北",
                "move_speed": 10,
                "pressure": 1000,
                "radius7": 0,
                "radius10": 0,
                "radius12": 0,
                "radius7_quad": {
                    "ne": 0,
                    "se": 0,
                    "sw": 0,
                    "nw": 0
                },
                "radius10_quad": {
                    "ne": 0,
                    "se": 0,
                    "sw": 0,
                    "nw": 0
                },
                "radius12_quad": {
                    "ne": 0,
                    "se": 0,
                    "sw": 0,
                    "nw": 0
                },
                "remark": "",
                "forecast": null
            }
        ]
    }
]

3.3 预报机构列表

返回预报机构列表,接口返回数据格式如下:

json
[
    {color: '#30fc31', label:'中国'},
    {color: '#307efa', label:'中国香港'},
]

3.4 台风图例

返回图例列表,接口返回数据格式如下:

json
[
  {
    "color": "#30fc31",
    "label": "热带低压",
    "ranges": [
      6,
      7
    ]
  },
  {
    "color": "#307efa",
    "label": "热带风暴",
    "ranges": [
      8,
      9
    ]
  },
  {
    "color": "#fffc00",
    "label": "强热带风暴",
    "ranges": [
      10,
      11
    ]
  },
  {
    "color": "#ff9c00",
    "label": "台风",
    "ranges": [
      12,
      13
    ]
  },
  {
    "color": "#fb7cff",
    "label": "强台风",
    "ranges": [
      14,
      15
    ]
  },
  {
    "color": "#fa3030",
    "label": "超强台风",
    "ranges": [
      16,
      20
    ]
  }
]

3.5 城市测距列表

入参为实况点经纬度,返回距离实况点最近的前10个城市及距离。返回数据格式如下:

json
[
  {"city":"舟山","dis":"1326"},
  {"city":"上海","dis":"1339"},
  {"city":"南通","dis":"1366"},
  {"city":"宁波","dis":"1383"},
  {"city":"盐城","dis":"1402"}
]