|
|
-- ============================================
|
|
|
-- 无人机指挥中心数据库初始化脚本
|
|
|
-- 包含用户认证、威胁区域管理、路径规划等核心功能
|
|
|
-- ============================================
|
|
|
|
|
|
-- 创建数据库
|
|
|
CREATE DATABASE IF NOT EXISTS command_center CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
USE command_center;
|
|
|
|
|
|
-- 设置字符集
|
|
|
SET NAMES utf8mb4;
|
|
|
SET CHARACTER SET utf8mb4;
|
|
|
SET character_set_connection=utf8mb4;
|
|
|
|
|
|
-- ============================================
|
|
|
-- 1. 用户认证系统
|
|
|
-- ============================================
|
|
|
|
|
|
-- 创建用户表
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
username VARCHAR(50) NOT NULL UNIQUE,
|
|
|
password VARCHAR(255) NOT NULL,
|
|
|
role ENUM('admin', 'operator') NOT NULL DEFAULT 'operator',
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
|
|
-- ============================================
|
|
|
-- 2. 威胁区域管理系统
|
|
|
-- ============================================
|
|
|
|
|
|
-- 删除现有威胁区表(如果存在)以确保结构正确
|
|
|
DROP TABLE IF EXISTS threat_zones;
|
|
|
|
|
|
-- 创建威胁区表
|
|
|
CREATE TABLE threat_zones (
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
type ENUM('radar', 'missile', 'aircraft', 'ground', 'weather') NOT NULL,
|
|
|
level ENUM('low', 'medium', 'high', 'critical') NOT NULL,
|
|
|
description TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
|
|
geometry_type ENUM('circle', 'polygon', 'rectangle') NOT NULL,
|
|
|
geometry_data JSON NOT NULL COMMENT '存储几何形状数据',
|
|
|
time_start TIMESTAMP NULL COMMENT '威胁区开始时间',
|
|
|
time_end TIMESTAMP NULL COMMENT '威胁区结束时间',
|
|
|
status ENUM('active', 'inactive') NOT NULL DEFAULT 'active',
|
|
|
created_by INT DEFAULT NULL,
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
INDEX idx_type (type),
|
|
|
INDEX idx_level (level),
|
|
|
INDEX idx_status (status),
|
|
|
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
|
|
|
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
|
|
-- ============================================
|
|
|
-- 3. 路径规划系统
|
|
|
-- ============================================
|
|
|
|
|
|
-- 删除现有路径规划表(如果存在)以确保结构正确
|
|
|
DROP TABLE IF EXISTS path_plans;
|
|
|
|
|
|
-- 创建路径规划表(增强版本,支持完整的路径保存和历史查看)
|
|
|
CREATE TABLE path_plans (
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
name VARCHAR(255) DEFAULT NULL COMMENT '路径规划名称',
|
|
|
description TEXT DEFAULT NULL COMMENT '路径描述信息',
|
|
|
start_latitude DECIMAL(10, 7) NOT NULL COMMENT '起点纬度',
|
|
|
start_longitude DECIMAL(10, 7) NOT NULL COMMENT '起点经度',
|
|
|
end_latitude DECIMAL(10, 7) NOT NULL COMMENT '终点纬度',
|
|
|
end_longitude DECIMAL(10, 7) NOT NULL COMMENT '终点经度',
|
|
|
path_points JSON NOT NULL COMMENT '路径点数据,包含lng, lat, altitude',
|
|
|
smoothed_path_points JSON DEFAULT NULL COMMENT '平滑后的路径点数据',
|
|
|
original_path_points JSON DEFAULT NULL COMMENT '原始A*算法路径点(未平滑)',
|
|
|
algorithm VARCHAR(20) NOT NULL DEFAULT 'astar' COMMENT '使用的规划算法',
|
|
|
distance DECIMAL(10, 2) DEFAULT NULL COMMENT '路径总距离(米)',
|
|
|
estimated_time INT DEFAULT NULL COMMENT '预计时间(分钟)',
|
|
|
flight_altitude INT DEFAULT 100 COMMENT '飞行高度(米)',
|
|
|
flight_speed DECIMAL(5, 2) DEFAULT 10.00 COMMENT '飞行速度(米/秒)',
|
|
|
waypoint_count INT DEFAULT 0 COMMENT '路径点数量',
|
|
|
threat_zones_avoided JSON DEFAULT NULL COMMENT '避开的威胁区ID列表',
|
|
|
threat_zones_passed JSON DEFAULT NULL COMMENT '穿过的威胁区ID列表',
|
|
|
target_order JSON DEFAULT NULL COMMENT '目标点访问顺序',
|
|
|
planning_options JSON DEFAULT NULL COMMENT '规划时的选项参数',
|
|
|
execution_result JSON DEFAULT NULL COMMENT '执行结果信息',
|
|
|
status ENUM('planned', 'executing', 'completed', 'failed', 'cancelled') NOT NULL DEFAULT 'planned',
|
|
|
visibility ENUM('public', 'private') NOT NULL DEFAULT 'public' COMMENT '路径可见性',
|
|
|
color VARCHAR(7) DEFAULT '#FF5722' COMMENT '路径显示颜色',
|
|
|
created_by INT DEFAULT NULL COMMENT '创建者ID',
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
executed_at TIMESTAMP NULL COMMENT '开始执行时间',
|
|
|
completed_at TIMESTAMP NULL COMMENT '完成时间',
|
|
|
INDEX idx_status (status),
|
|
|
INDEX idx_algorithm (algorithm),
|
|
|
INDEX idx_created_at (created_at),
|
|
|
INDEX idx_created_by (created_by),
|
|
|
INDEX idx_visibility (visibility),
|
|
|
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='路径规划表(增强版)';
|
|
|
|
|
|
-- ============================================
|
|
|
-- 3.1 多对多路径规划系统
|
|
|
-- ============================================
|
|
|
|
|
|
-- 删除现有多对多路径规划表(如果存在)以确保结构正确
|
|
|
DROP TABLE IF EXISTS multi_to_multi_plans;
|
|
|
|
|
|
-- 创建多对多路径规划表
|
|
|
CREATE TABLE multi_to_multi_plans (
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
name VARCHAR(255) DEFAULT NULL COMMENT '多对多规划名称',
|
|
|
description TEXT DEFAULT NULL COMMENT '规划描述信息',
|
|
|
planning_mode ENUM('task_assignment', 'collaborative') NOT NULL DEFAULT 'task_assignment' COMMENT '规划模式:任务分配或协同规划',
|
|
|
|
|
|
-- 起点和目标点信息
|
|
|
start_points JSON NOT NULL COMMENT '起点数据数组,格式:[{id, lat, lng, altitude, name}]',
|
|
|
target_points JSON NOT NULL COMMENT '目标点数据数组,格式:[{id, lat, lng, altitude, name, priority}]',
|
|
|
start_points_count INT NOT NULL DEFAULT 0 COMMENT '起点数量',
|
|
|
target_points_count INT NOT NULL DEFAULT 0 COMMENT '目标点数量',
|
|
|
|
|
|
-- 分配和路径信息
|
|
|
assignment_type ENUM('one_to_one', 'many_to_few', 'few_to_many') NOT NULL COMMENT '分配类型',
|
|
|
assignment_strategy ENUM('greedy', 'hungarian', 'optimal') NOT NULL DEFAULT 'greedy' COMMENT '分配策略',
|
|
|
assignments JSON NOT NULL COMMENT '分配结果,格式:[{startPointId, targetPointIds, paths}]',
|
|
|
|
|
|
-- 算法参数
|
|
|
algorithm VARCHAR(20) NOT NULL DEFAULT 'astar' COMMENT '路径规划算法',
|
|
|
flight_altitude INT DEFAULT 100 COMMENT '飞行高度(米)',
|
|
|
flight_speed DECIMAL(5, 2) DEFAULT 10.00 COMMENT '飞行速度(米/秒)',
|
|
|
max_flight_time INT DEFAULT 30 COMMENT '最大飞行时间(分钟)',
|
|
|
safe_distance DECIMAL(8, 2) DEFAULT 50.00 COMMENT '安全距离(米)',
|
|
|
|
|
|
-- 统计信息
|
|
|
total_distance DECIMAL(12, 2) DEFAULT NULL COMMENT '总距离(米)',
|
|
|
total_time INT DEFAULT NULL COMMENT '总时间(分钟)',
|
|
|
max_time INT DEFAULT NULL COMMENT '最大单机时间(分钟)',
|
|
|
min_time INT DEFAULT NULL COMMENT '最小单机时间(分钟)',
|
|
|
avg_time DECIMAL(8, 2) DEFAULT NULL COMMENT '平均单机时间(分钟)',
|
|
|
threat_level_stats JSON DEFAULT NULL COMMENT '威胁等级统计,格式:{low: count, medium: count, high: count}',
|
|
|
|
|
|
-- 威胁区域处理
|
|
|
threat_zones_avoided JSON DEFAULT NULL COMMENT '避开的威胁区ID列表',
|
|
|
threat_zones_passed JSON DEFAULT NULL COMMENT '穿过的威胁区ID列表',
|
|
|
|
|
|
-- 规划选项和结果
|
|
|
planning_options JSON DEFAULT NULL COMMENT '规划选项参数',
|
|
|
execution_result JSON DEFAULT NULL COMMENT '执行结果信息',
|
|
|
optimization_metrics JSON DEFAULT NULL COMMENT '优化指标结果',
|
|
|
|
|
|
-- 状态管理
|
|
|
status ENUM('planned', 'executing', 'completed', 'failed', 'cancelled') NOT NULL DEFAULT 'planned',
|
|
|
visibility ENUM('public', 'private') NOT NULL DEFAULT 'public' COMMENT '方案可见性',
|
|
|
|
|
|
-- 元数据
|
|
|
created_by INT DEFAULT NULL COMMENT '创建者ID',
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
executed_at TIMESTAMP NULL COMMENT '开始执行时间',
|
|
|
completed_at TIMESTAMP NULL COMMENT '完成时间',
|
|
|
|
|
|
-- 索引
|
|
|
INDEX idx_planning_mode (planning_mode),
|
|
|
INDEX idx_assignment_type (assignment_type),
|
|
|
INDEX idx_algorithm (algorithm),
|
|
|
INDEX idx_status (status),
|
|
|
INDEX idx_created_at (created_at),
|
|
|
INDEX idx_created_by (created_by),
|
|
|
INDEX idx_visibility (visibility),
|
|
|
INDEX idx_start_points_count (start_points_count),
|
|
|
INDEX idx_target_points_count (target_points_count),
|
|
|
|
|
|
-- 外键约束
|
|
|
FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='多对多路径规划表';
|
|
|
|
|
|
-- ============================================
|
|
|
-- 4. 操作日志系统
|
|
|
-- ============================================
|
|
|
|
|
|
-- 操作日志表
|
|
|
CREATE TABLE IF NOT EXISTS operation_logs (
|
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
|
operation_type ENUM('create_threat_zone', 'delete_threat_zone', 'update_threat_zone', 'plan_path', 'plan_multi_to_multi', 'execute_path', 'save_scheme', 'delete_scheme', 'load_scheme') NOT NULL COMMENT '操作类型',
|
|
|
operation_name VARCHAR(100) NOT NULL COMMENT '操作名称',
|
|
|
operation_description TEXT COMMENT '操作描述',
|
|
|
user_id INT DEFAULT NULL COMMENT '操作用户ID',
|
|
|
user_name VARCHAR(50) DEFAULT NULL COMMENT '操作用户名',
|
|
|
ip_address VARCHAR(45) DEFAULT NULL COMMENT 'IP地址',
|
|
|
user_agent TEXT DEFAULT NULL COMMENT '用户代理',
|
|
|
request_data JSON DEFAULT NULL COMMENT '请求数据',
|
|
|
response_data JSON DEFAULT NULL COMMENT '响应数据',
|
|
|
operation_result ENUM('success', 'failed', 'partial') NOT NULL DEFAULT 'success' COMMENT '操作结果',
|
|
|
error_message TEXT DEFAULT NULL COMMENT '错误信息',
|
|
|
execution_time_ms INT DEFAULT NULL COMMENT '执行时间(毫秒)',
|
|
|
affected_resources JSON DEFAULT NULL COMMENT '影响的资源',
|
|
|
operation_context JSON DEFAULT NULL COMMENT '操作上下文',
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
|
|
|
|
|
INDEX idx_operation_type (operation_type),
|
|
|
INDEX idx_user_id (user_id),
|
|
|
INDEX idx_created_at (created_at),
|
|
|
INDEX idx_operation_result (operation_result)
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
|
|
|
|
|
|
-- ============================================
|
|
|
-- 5. 插入初始数据
|
|
|
-- ============================================
|
|
|
|
|
|
-- 插入默认管理员用户
|
|
|
INSERT INTO users (username, password, role)
|
|
|
VALUES ('admin', '$2a$10$X7UrH5QxX5QxX5QxX5QxX.5QxX5QxX5QxX5QxX5QxX5QxX5QxX5Qx', 'admin')
|
|
|
ON DUPLICATE KEY UPDATE username = username;
|
|
|
|
|
|
-- 插入示例路径规划数据(增强版本)
|
|
|
INSERT INTO path_plans (
|
|
|
name, description, start_latitude, start_longitude, end_latitude, end_longitude,
|
|
|
path_points, smoothed_path_points, original_path_points, algorithm, distance,
|
|
|
estimated_time, flight_altitude, flight_speed, waypoint_count, threat_zones_avoided,
|
|
|
planning_options, status, visibility, color, created_by
|
|
|
) VALUES
|
|
|
(
|
|
|
'长沙市区巡逻路径',
|
|
|
'A*算法规划路径,距离1.20km,避开2个威胁区',
|
|
|
28.194090, 112.982279, 28.200000, 112.990000,
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.982279, 'lat', 28.194090, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.197000, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 100)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.982279, 'lat', 28.194090, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.197000, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 100)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.982279, 'lat', 28.194090, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.984000, 'lat', 28.195500, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.197000, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.987000, 'lat', 28.198500, 'altitude', 100),
|
|
|
JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 100)
|
|
|
),
|
|
|
'astar', 1200.50, 8, 100, 10.0, 3,
|
|
|
JSON_ARRAY(1, 2),
|
|
|
JSON_OBJECT('gridSize', 0.001, 'maxIterations', 8000, 'smoothed', true),
|
|
|
'completed', 'public', '#FF5722', 1
|
|
|
),
|
|
|
(
|
|
|
'湘江沿岸监控路径',
|
|
|
'A*算法规划路径,距离1.80km,避开2个威胁区',
|
|
|
28.196000, 112.985000, 28.205000, 112.995000,
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.196000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.988000, 'lat', 28.199000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.992000, 'lat', 28.202000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 120)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.196000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.988000, 'lat', 28.199000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.992000, 'lat', 28.202000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 120)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.196000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.986500, 'lat', 28.197500, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.988000, 'lat', 28.199000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.990000, 'lat', 28.200500, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.992000, 'lat', 28.202000, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.993500, 'lat', 28.203500, 'altitude', 120),
|
|
|
JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 120)
|
|
|
),
|
|
|
'astar', 1800.75, 12, 120, 10.0, 4,
|
|
|
JSON_ARRAY(1, 3),
|
|
|
JSON_OBJECT('gridSize', 0.001, 'maxIterations', 8000, 'smoothed', true),
|
|
|
'executing', 'public', '#2196F3', 1
|
|
|
),
|
|
|
(
|
|
|
'橘子洲头勘察路径',
|
|
|
'直线规划路径,距离0.80km,无威胁区域',
|
|
|
28.180000, 112.970000, 28.185000, 112.975000,
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.970000, 'lat', 28.180000, 'altitude', 50),
|
|
|
JSON_OBJECT('lng', 112.972000, 'lat', 28.182000, 'altitude', 60),
|
|
|
JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 50)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.970000, 'lat', 28.180000, 'altitude', 50),
|
|
|
JSON_OBJECT('lng', 112.972000, 'lat', 28.182000, 'altitude', 60),
|
|
|
JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 50)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.970000, 'lat', 28.180000, 'altitude', 50),
|
|
|
JSON_OBJECT('lng', 112.972000, 'lat', 28.182000, 'altitude', 60),
|
|
|
JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 50)
|
|
|
),
|
|
|
'straight', 800.25, 5, 50, 8.0, 3,
|
|
|
JSON_ARRAY(),
|
|
|
JSON_OBJECT('gridSize', 0.001, 'maxIterations', 0, 'smoothed', false),
|
|
|
'planned', 'public', '#4CAF50', 1
|
|
|
),
|
|
|
(
|
|
|
'高速避障路径测试',
|
|
|
'A*算法规划路径,距离2.15km,避开4个威胁区',
|
|
|
28.175000, 112.965000, 28.210000, 113.000000,
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.965000, 'lat', 28.175000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.970000, 'lat', 28.178000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.195000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 113.000000, 'lat', 28.210000, 'altitude', 150)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.965000, 'lat', 28.175000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.970000, 'lat', 28.178000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.195000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 113.000000, 'lat', 28.210000, 'altitude', 150)
|
|
|
),
|
|
|
JSON_ARRAY(
|
|
|
JSON_OBJECT('lng', 112.965000, 'lat', 28.175000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.967000, 'lat', 28.176000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.970000, 'lat', 28.178000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.972000, 'lat', 28.180000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.975000, 'lat', 28.185000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.980000, 'lat', 28.190000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.985000, 'lat', 28.195000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.990000, 'lat', 28.200000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.995000, 'lat', 28.205000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 112.998000, 'lat', 28.208000, 'altitude', 150),
|
|
|
JSON_OBJECT('lng', 113.000000, 'lat', 28.210000, 'altitude', 150)
|
|
|
),
|
|
|
'astar', 2150.80, 15, 150, 12.0, 6,
|
|
|
JSON_ARRAY(1, 2, 3, 4),
|
|
|
JSON_OBJECT('gridSize', 0.0005, 'maxIterations', 10000, 'smoothed', true),
|
|
|
'completed', 'public', '#FF9800', 1
|
|
|
);
|
|
|
|
|
|
-- ============================================
|
|
|
-- 6. 数据验证和显示
|
|
|
-- ============================================
|
|
|
|
|
|
-- 验证数据插入
|
|
|
SELECT '=== 数据库初始化完成 ===' as status;
|
|
|
SELECT 'Users count:' as info, COUNT(*) as count FROM users;
|
|
|
SELECT 'Threat zones count:' as info, COUNT(*) as count FROM threat_zones;
|
|
|
SELECT 'Path plans count:' as info, COUNT(*) as count FROM path_plans;
|
|
|
SELECT 'Multi-to-multi plans count:' as info, COUNT(*) as count FROM multi_to_multi_plans;
|
|
|
SELECT 'Operation logs count:' as info, COUNT(*) as count FROM operation_logs;
|
|
|
|
|
|
-- 显示威胁区域统计
|
|
|
SELECT
|
|
|
level as '威胁级别',
|
|
|
COUNT(*) as '数量',
|
|
|
GROUP_CONCAT(type SEPARATOR ', ') as '类型'
|
|
|
FROM threat_zones
|
|
|
WHERE status = 'active'
|
|
|
GROUP BY level
|
|
|
ORDER BY FIELD(level, 'low', 'medium', 'high', 'critical');
|
|
|
|
|
|
-- 显示路径规划统计
|
|
|
SELECT
|
|
|
algorithm as '算法',
|
|
|
status as '状态',
|
|
|
COUNT(*) as '数量',
|
|
|
ROUND(AVG(distance), 2) as '平均距离(米)'
|
|
|
FROM path_plans
|
|
|
GROUP BY algorithm, status
|
|
|
ORDER BY algorithm, status;
|
|
|
|
|
|
-- ============================================
|
|
|
-- 7. 无人机信息表
|
|
|
-- ============================================
|
|
|
|
|
|
DROP TABLE IF EXISTS drones;
|
|
|
CREATE TABLE drones (
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
name VARCHAR(100) NOT NULL COMMENT '无人机名称',
|
|
|
type VARCHAR(100) NOT NULL COMMENT '无人机类型/型号',
|
|
|
serial_number VARCHAR(100) NOT NULL UNIQUE COMMENT '无人机序列号',
|
|
|
app_key VARCHAR(255) NOT NULL COMMENT 'DJI App Key',
|
|
|
app_secret VARCHAR(255) NOT NULL COMMENT 'DJI App Secret',
|
|
|
description TEXT DEFAULT NULL COMMENT '备注/描述',
|
|
|
latitude DECIMAL(10,7) DEFAULT NULL COMMENT '当前纬度',
|
|
|
longitude DECIMAL(10,7) DEFAULT NULL COMMENT '当前经度',
|
|
|
battery INT DEFAULT NULL COMMENT '当前电量百分比',
|
|
|
status ENUM('connected','disconnected','flying','paused') NOT NULL DEFAULT 'disconnected' COMMENT '无人机状态',
|
|
|
last_heartbeat_at TIMESTAMP NULL COMMENT '最后一次收到消息时间',
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
|
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='无人机信息表';
|
|
|
|
|
|
-- ============================================
|
|
|
-- 8. 无人机历史轨迹表
|
|
|
-- ============================================
|
|
|
CREATE TABLE IF NOT EXISTS drone_tracks (
|
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
|
drone_id INT NOT NULL,
|
|
|
latitude DECIMAL(10,7) NOT NULL,
|
|
|
longitude DECIMAL(10,7) NOT NULL,
|
|
|
recorded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
|
FOREIGN KEY (drone_id) REFERENCES drones(id) ON DELETE CASCADE
|
|
|
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='无人机历史轨迹点';
|
|
|
|
|
|
-- ============================================
|
|
|
-- 初始化完成
|
|
|
-- ============================================
|
|
|
|
|
|
-- ============================================
|
|
|
-- 初始化完成
|
|
|
-- ============================================ |