前言
本项目旨在利用现代技术手段重现老式天气预报风格。系统整合百度天气提供的实时数据,通过 WebGIS 技术实现地图可视化展示和数据的动态交互。前端采用 HTML5、CSS3 和 JavaScript,结合 Leaflet 框架;后端使用 Java 处理城市信息与天气查询。
一、省会城市信息构建
在进行 WebGIS 可视化开发之前,首先需要对全国的省会城市信息进行查询,以便后续调用天气接口。
1、省会城市空间查询
查询语句如下:
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 后台查询
将查询逻辑封装成 Java 接口供前端调用。Mapper.java 核心代码如下:
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> findProvinceAbbreviations();
Service 层实现:


