|
|
|
@ -0,0 +1,132 @@
|
|
|
|
|
-- 更新敌人位置到50米范围内
|
|
|
|
|
-- Update Enemy Locations within 50 meters range
|
|
|
|
|
-- 地图中心:(113.045134, 28.262212)
|
|
|
|
|
-- Map Center: (113.045134, 28.262212)
|
|
|
|
|
|
|
|
|
|
USE Client;
|
|
|
|
|
|
|
|
|
|
-- 计算50米对应的经纬度偏移量
|
|
|
|
|
-- 在纬度28.26度附近:
|
|
|
|
|
-- 1度经度 ≈ 98,500米
|
|
|
|
|
-- 1度纬度 ≈ 111,000米
|
|
|
|
|
-- 50米经度偏移 ≈ 50/98500 ≈ 0.0005度
|
|
|
|
|
-- 50米纬度偏移 ≈ 50/111000 ≈ 0.00045度
|
|
|
|
|
|
|
|
|
|
-- 更新所有敌人位置到50米范围内,分布更紧密
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134 + (RAND() - 0.5) * 0.001, -- ±0.0005度 ≈ ±50米
|
|
|
|
|
latitude = 28.262212 + (RAND() - 0.5) * 0.0009, -- ±0.00045度 ≈ ±50米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id LIKE 'ENEMY%';
|
|
|
|
|
|
|
|
|
|
-- 手动设置几个关键敌人位置,确保分布均匀且在50米内
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134, latitude = 28.262212, -- 正中心
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY001';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134 + 0.0003, latitude = 28.262212 + 0.0003, -- 东北30米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY002';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134 - 0.0003, latitude = 28.262212 - 0.0003, -- 西南30米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY003';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134 + 0.0003, latitude = 28.262212 - 0.0003, -- 东南30米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY004';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134 - 0.0003, latitude = 28.262212 + 0.0003, -- 西北30米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY005';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134 + 0.0005, latitude = 28.262212, -- 正东50米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY006';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134 - 0.0005, latitude = 28.262212, -- 正西50米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY007';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134, latitude = 28.262212 + 0.00045, -- 正北50米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY008';
|
|
|
|
|
|
|
|
|
|
UPDATE enemy_records SET
|
|
|
|
|
longitude = 113.045134, latitude = 28.262212 - 0.00045, -- 正南50米
|
|
|
|
|
update_time = NOW()
|
|
|
|
|
WHERE id = 'ENEMY009';
|
|
|
|
|
|
|
|
|
|
-- 验证更新结果,计算距离中心点的实际距离
|
|
|
|
|
SELECT
|
|
|
|
|
id,
|
|
|
|
|
ROUND(longitude, 7) as longitude,
|
|
|
|
|
ROUND(latitude, 7) as latitude,
|
|
|
|
|
threat_level,
|
|
|
|
|
status,
|
|
|
|
|
-- 计算距离中心点的距离(米)
|
|
|
|
|
ROUND(
|
|
|
|
|
6371000 * 2 * ASIN(
|
|
|
|
|
SQRT(
|
|
|
|
|
POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) +
|
|
|
|
|
COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) *
|
|
|
|
|
POW(SIN(RADIANS(113.045134 - longitude) / 2), 2)
|
|
|
|
|
)
|
|
|
|
|
), 1
|
|
|
|
|
) as distance_meters,
|
|
|
|
|
update_time
|
|
|
|
|
FROM enemy_records
|
|
|
|
|
ORDER BY distance_meters, threat_level DESC, id;
|
|
|
|
|
|
|
|
|
|
-- 显示统计信息
|
|
|
|
|
SELECT
|
|
|
|
|
'地图中心坐标' as location_type,
|
|
|
|
|
113.045134 as longitude,
|
|
|
|
|
28.262212 as latitude,
|
|
|
|
|
0 as distance_meters
|
|
|
|
|
UNION ALL
|
|
|
|
|
SELECT
|
|
|
|
|
'敌人位置范围',
|
|
|
|
|
CONCAT(ROUND(MIN(longitude), 7), ' ~ ', ROUND(MAX(longitude), 7)),
|
|
|
|
|
CONCAT(ROUND(MIN(latitude), 7), ' ~ ', ROUND(MAX(latitude), 7)),
|
|
|
|
|
ROUND(MAX(
|
|
|
|
|
6371000 * 2 * ASIN(
|
|
|
|
|
SQRT(
|
|
|
|
|
POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) +
|
|
|
|
|
COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) *
|
|
|
|
|
POW(SIN(RADIANS(113.045134 - longitude) / 2), 2)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
), 1)
|
|
|
|
|
FROM enemy_records;
|
|
|
|
|
|
|
|
|
|
-- 验证所有敌人都在50米范围内
|
|
|
|
|
SELECT
|
|
|
|
|
COUNT(*) as total_enemies,
|
|
|
|
|
COUNT(CASE WHEN
|
|
|
|
|
6371000 * 2 * ASIN(
|
|
|
|
|
SQRT(
|
|
|
|
|
POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) +
|
|
|
|
|
COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) *
|
|
|
|
|
POW(SIN(RADIANS(113.045134 - longitude) / 2), 2)
|
|
|
|
|
)
|
|
|
|
|
) <= 50
|
|
|
|
|
THEN 1 END) as enemies_within_50m,
|
|
|
|
|
ROUND(AVG(
|
|
|
|
|
6371000 * 2 * ASIN(
|
|
|
|
|
SQRT(
|
|
|
|
|
POW(SIN(RADIANS(28.262212 - latitude) / 2), 2) +
|
|
|
|
|
COS(RADIANS(latitude)) * COS(RADIANS(28.262212)) *
|
|
|
|
|
POW(SIN(RADIANS(113.045134 - longitude) / 2), 2)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
), 1) as avg_distance_meters
|
|
|
|
|
FROM enemy_records;
|