一、省会城市信息构建
在进行省会城市天气预报的 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
在 Navicat 客户端中执行以上语句后,可以看到查询结果。后续操作中需要使用返回结果中的省会城市中心点经纬度位置来进行天气查询。
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();
为了方便方法复用,将 Mapper 的查询能力封装成一个通用的方法,在 Service 中进行实现。Service 的调用代码如下:
@Override
List<ProvinceAbbreviationsVo> {
.baseMapper.findProvinceAbbreviations();
}



