前言
现代技术让天气预报变得精准便捷,但那份曾经陪伴我们成长的质朴记忆却逐渐淡去。80 年代的天气预报以简洁的方式传递信息,承载着一家人的温馨时光。利用 WebGIS 技术与现代数据接口,我们可以重现这种复古体验,同时保证数据的准确性。
本项目的目标是构建一个既具怀旧风格又融合现代技术的天气预报系统。它播放经典的背景音乐,展示温度、时间及明日预报等核心信息。数据来源采用百度天气实时接口,通过 WebGIS 在地图上直观展示全国各地的天气情况。
一、省会城市信息构建
开发前,首先需要获取全国省会城市的空间信息,以便后续调用天气接口。这里介绍如何查询城市空间信息及 Java 后台实现。
1、省会城市空间查询
查询需要关联城市点位表、省份表及字典表。SQL 语句如下:
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
执行后可得到包含经纬度、名称及 GeoJSON 数据的列表,这些坐标将用于后续的天气查询。
2、Java 后台查询
将 SQL 逻辑封装为 MyBatis 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 " + " order by tc.code " + "</script>";
@Select(FIND_PROVINCEABBREVIATIONS_LIST)
List<ProvinceAbbreviationsVo> ;


