|
|
#!/usr/bin/env python3
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
"""
|
|
|
摄像头地理位置配置工具
|
|
|
用于设置摄像头的经纬度坐标和朝向角度
|
|
|
"""
|
|
|
|
|
|
import os
|
|
|
import sys
|
|
|
|
|
|
def update_config_file(lat, lng, heading, api_key=None):
|
|
|
"""更新配置文件中的摄像头位置信息"""
|
|
|
config_path = "src/config.py"
|
|
|
|
|
|
# 读取配置文件
|
|
|
with open(config_path, 'r', encoding='utf-8') as f:
|
|
|
content = f.read()
|
|
|
|
|
|
# 更新纬度
|
|
|
if "CAMERA_LATITUDE = " in content:
|
|
|
lines = content.split('\n')
|
|
|
for i, line in enumerate(lines):
|
|
|
if line.startswith('CAMERA_LATITUDE = '):
|
|
|
lines[i] = f'CAMERA_LATITUDE = {lat} # 摄像头纬度'
|
|
|
break
|
|
|
content = '\n'.join(lines)
|
|
|
|
|
|
# 更新经度
|
|
|
if "CAMERA_LONGITUDE = " in content:
|
|
|
lines = content.split('\n')
|
|
|
for i, line in enumerate(lines):
|
|
|
if line.startswith('CAMERA_LONGITUDE = '):
|
|
|
lines[i] = f'CAMERA_LONGITUDE = {lng} # 摄像头经度'
|
|
|
break
|
|
|
content = '\n'.join(lines)
|
|
|
|
|
|
# 更新朝向
|
|
|
if "CAMERA_HEADING = " in content:
|
|
|
lines = content.split('\n')
|
|
|
for i, line in enumerate(lines):
|
|
|
if line.startswith('CAMERA_HEADING = '):
|
|
|
lines[i] = f'CAMERA_HEADING = {heading} # 摄像头朝向角度'
|
|
|
break
|
|
|
content = '\n'.join(lines)
|
|
|
|
|
|
# 更新API key(如果提供)
|
|
|
if api_key and 'GAODE_API_KEY = ' in content:
|
|
|
lines = content.split('\n')
|
|
|
for i, line in enumerate(lines):
|
|
|
if line.startswith('GAODE_API_KEY = '):
|
|
|
lines[i] = f'GAODE_API_KEY = "{api_key}" # 高德地图API密钥'
|
|
|
break
|
|
|
content = '\n'.join(lines)
|
|
|
|
|
|
# 写回配置文件
|
|
|
with open(config_path, 'w', encoding='utf-8') as f:
|
|
|
f.write(content)
|
|
|
|
|
|
def main():
|
|
|
print("=" * 60)
|
|
|
print("🚁 无人机摄像头地理位置配置工具")
|
|
|
print("=" * 60)
|
|
|
print()
|
|
|
|
|
|
print("📍 请设置摄像头的地理位置信息")
|
|
|
print("提示: 可以通过高德地图等应用获取准确的经纬度坐标")
|
|
|
print()
|
|
|
|
|
|
try:
|
|
|
# 获取纬度
|
|
|
lat = float(input("请输入摄像头纬度 (例: 39.9042): "))
|
|
|
if not (-90 <= lat <= 90):
|
|
|
raise ValueError("纬度必须在-90到90之间")
|
|
|
|
|
|
# 获取经度
|
|
|
lng = float(input("请输入摄像头经度 (例: 116.4074): "))
|
|
|
if not (-180 <= lng <= 180):
|
|
|
raise ValueError("经度必须在-180到180之间")
|
|
|
|
|
|
# 获取朝向
|
|
|
heading = float(input("请输入摄像头朝向角度 (0-360°, 0为正北): "))
|
|
|
if not (0 <= heading <= 360):
|
|
|
raise ValueError("朝向角度必须在0到360之间")
|
|
|
|
|
|
# 可选:设置高德API Key
|
|
|
print("\n🔑 高德地图API Key设置 (可选)")
|
|
|
print("如果您有高德开放平台的API Key,请输入以获得更好的地图体验")
|
|
|
api_key = input("请输入高德API Key (留空跳过): ").strip()
|
|
|
|
|
|
# 更新配置
|
|
|
update_config_file(lat, lng, heading, api_key if api_key else None)
|
|
|
|
|
|
print("\n✅ 配置更新成功!")
|
|
|
print(f"📍 摄像头位置: ({lat:.6f}, {lng:.6f})")
|
|
|
print(f"🧭 朝向角度: {heading}°")
|
|
|
if api_key:
|
|
|
print("🔑 API Key 已设置")
|
|
|
|
|
|
print("\n🎯 建议使用步骤:")
|
|
|
print("1. 运行 python run.py 启动系统")
|
|
|
print("2. 选择Web模式获得最佳体验")
|
|
|
print("3. 按 'm' 键打开地图查看效果")
|
|
|
print("4. 按 'c' 键校准距离参数以提高精度")
|
|
|
|
|
|
except ValueError as e:
|
|
|
print(f"❌ 输入错误: {e}")
|
|
|
print("请重新运行程序并输入正确的数值")
|
|
|
sys.exit(1)
|
|
|
except Exception as e:
|
|
|
print(f"❌ 配置失败: {e}")
|
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
main() |