-- 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
);
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] → [地图服务]