# GIS引擎集成设计文档 ## 1.4 GIS引擎集成(GeoServer+PostGIS+Leaflet) ### 数据库DDL ```sql -- PostGIS空间表 CREATE TABLE gis_base_map ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, type VARCHAR(50) NOT NULL, geom GEOMETRY(Polygon, 4326) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 监测点位表 CREATE TABLE iot_device ( id SERIAL PRIMARY KEY, device_code VARCHAR(50) UNIQUE NOT NULL, name VARCHAR(100) NOT NULL, device_type VARCHAR(50) NOT NULL, longitude DECIMAL(10, 6) NOT NULL, latitude DECIMAL(10, 6) NOT NULL, gis_layer_name VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, location_geom GEOMETRY(Point, 4326) ); -- 管网数据表 CREATE TABLE water_pipe_network ( id SERIAL PRIMARY KEY, pipe_code VARCHAR(50) UNIQUE NOT NULL, pipe_type VARCHAR(50) NOT NULL, start_point_geom GEOMETRY(Point, 4326), end_point_geom GEOMETRY(Point, 4326), diameter DECIMAL(10, 2), material VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ### API端点规范 ``` GET /api/gis/base-layers # 获取基础图层列表 POST /api/gis/base-layers # 创建基础图层 GET /api/gis/devices # 获取监测点位列表 POST /api/gis/devices # 添加监测点位 GET /api/gis/pipes # 获取管网数据 POST /api/gis/pipes # 添加管网数据 GET /api/gis/map-config # 获取地图配置 ``` ### 前端组件树 ``` GISMap (主组件) ├── MapControl (地图控制) │ ├── LayerSwitch (图层切换) │ ├── BaseMapSwitch (底图切换) │ └── ZoomControl (缩放控制) ├── DeviceMarker (监测点位标记) │ ├── DevicePopup (点位弹窗) │ └── DeviceInfo (点位信息) ├── PipeLayer (管网图层) ├── Trajectory (轨迹回放) └── Legend (图例) ``` ### 数据流图 [前端] → [GIS Controller] → [GIS Service] → [PostGIS] → [GeoServer] → [地图服务]