前言
现代技术让我们有机会用新的方式重现旧时的记忆。本项目利用百度天气 API 获取实时数据,结合 WebGIS 技术构建一个具有 80 年代风格的天气预报系统。界面和播报形式保留复古元素,但数据来源保持现代准确性。

在开发过程中,我们面临几个主要挑战:如何整合地图可视化、如何处理高并发下的 API 调用限制以及如何还原经典的播报风格。通过 HTML5、CSS3、JavaScript 以及 Java 后端,我们实现了数据的无缝对接和高效展示。
一、省会城市信息构建
在进行可视化之前,首先需要查询全国省会城市的空间信息,以便后续调用天气接口。这里涉及数据库中的点位信息和省份信息表。
1、省会城市空间查询
使用 SQL 语句配合 PostGIS 函数进行查询,核心逻辑是筛选出标记为'省会城市'、'直辖市'或'首都'的记录,并关联省份表获取经纬度及 GeoJSON 数据。
SELECT T.NAME cityName, T.pinYin, T.bz, T.slx, tc.code provinceCode, tc.NAME provinceName, st_x(T.geom) cityLon, st_y(T.geom) cityLat, dict.dict_label provinceAbbreviations, st_asgeojson(tc.geom) geomJson
FROM biz_geographic_name T, biz_province tc, sys_dict_data dict
WHERE T.bz IN ('省会城市', '直辖市', '首都')
AND st_contains(tc.geom, T.geom)
AND dict.dict_value = tc.code
ORDER BY tc.code
执行后得到的结果包含城市名称、拼音、经纬度及省份代码,这些字段将作为后续天气查询的基础参数。
2、Java 后台查询
将上述 SQL 逻辑封装到 MyBatis Mapper 中,方便前端调用。Mapper 类核心代码如下:
static final String FIND_PROVINCEABBREVIATIONS_LIST = "<script>" + " SELECT T.name cityName,T.pinYin,T.bz,T.slx,tc.code provinceCode,tc.NAME provinceName, " + " st_x(T.geom) cityLon,st_y(T.geom) cityLat,dict.dict_label provinceAbbreviations, " + " st_asgeojson(tc.geom) geomJson " + " FROM biz_geographic_name T,biz_province tc,sys_dict_data dict " + " WHERE T.bz IN('省会城市', '直辖市', '首都') AND st_contains(tc.geom, T.geom) AND dict.dict_value = tc.code " + + ;
List<ProvinceAbbreviationsVo> ;



