Spring Boot 结合 Leaflet 实现省级旅游口号 WebGIS 可视化
将旅游口号与地理空间数据结合,能让宣传更直观。本项目使用 Spring Boot 搭建后端,Leaflet 处理前端地图,PostGIS 存储空间数据,旨在构建一个轻量级的省级旅游口号展示平台。
数据设计与空间关联
核心在于表结构设计与空间查询。旅游口号表通过省份代码关联,查询时需同时获取省会城市坐标及省份几何信息。
在数据库层面,我们需要关联三张表:省级行政区划信息、城市基本信息以及旅游口号信息。通过 province_code 进行连接,并筛选出省会、直辖市或首都的点位。
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, slogan.slogan, st_asgeojson(tc.geom) geomJson
FROM biz_geographic_name T, biz_province tc, biz_tourism_slogans_info slogan
WHERE T.bz IN ('省会城市', '直辖市', '首都')
AND st_contains(tc.geom, T.geom)
AND slogan.province_code = tc.code
AND slogan.activity_flag = 1
执行上述语句后,即可得到包含城市经纬度、省份 GeoJSON 数据及口号信息的完整结果集。
后端服务构建
采用经典的 MVC 三层架构。Controller 接收请求,Service 处理业务逻辑,Mapper 层负责数据持久化。
Mapper 层实现
这里使用 MyBatis Plus 来简化 SQL 编写。核心是定义好那个空间查询的注解,直接映射到 VO 对象。
package com.yelang.project.extend.scenicspot.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yelang.project.extend.scenicspot.domain.TourismSlogansInfo;
import com.yelang.project.extend.scenicspot.domain.TourismSlogansInfoVO;
public interface TourismSlogansInfoMapper extends BaseMapper<TourismSlogansInfo> {
static +
+
+
+
+
;
List<TourismSlogansInfoVO> ;
}



