下载地址(文章指定相关附件):https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:6827
这个代码实现了一个GPS位置模拟器,主要功能包括:
基于基准位置生成随机GPS坐标点
记录移动轨迹历史数据
支持设置模拟持续时间和采样间隔
将数据保存为JSON格式文件
包含位置精度、海拔、速度等附加信息
源码部分:
import random
import time
from datetime import datetime
import json
import os
class GPSSimulator:
def init(self, base_lat=39.9042, base_lng=116.4074, radius=0.1):
"""
初始化GPS模拟器
:param base_lat: 基准纬度(北京)
:param base_lng: 基准经度(北京)
:param radius: 随机范围半径(度)
"""
self.base_lat = base_lat
self.base_lng = base_lng
self.radius = radius
self.history = []
self.max_history = 100
def generate_random_point(self):
"""生成随机GPS点"""
lat = self.base_lat + (random.random() - 0.5) * self.radius
lng = self.base_lng + (random.random() - 0.5) * self.radius
return {
'latitude': round(lat, 6),
'longitude': round(lng, 6),
'timestamp': datetime.now().isoformat(),
'altitude': random.randint(0, 100),
'speed': random.uniform(0, 10),
'accuracy': random.uniform(5, 20)
}
def record_history(self, point):
"""记录历史位置"""
self.history.append(point)
if len(self.history) > self.max_history:
self.history.pop(0)
def save_to_file(self, filename='gps_data.json'):
"""保存GPS数据到文件"""
with open(filename, 'w') as f:
json.dump({
'current': self.history[-1] if self.history else None,
'history': self.history
}, f, indent=2)
def simulate_movement(self, duration=60, interval=1):
"""
模拟移动
:param duration: 持续时间(秒)
:param interval: 间隔时间(秒)
"""
start_time = time.time()
while time.time() - start_time < duration:
point = self.generate_random_point()
self.record_history(point)
print(f"模拟位置: 纬度 {point['latitude']}, 经度 {point['longitude']}")
time.sleep(interval)
self.save_to_file()
if name == 'main':
print("GPS位置模拟器启动")
simulator = GPSSimulator()
try:
simulator.simulate_movement(duration=30, interval=2)
except KeyboardInterrupt:
print("\n模拟结束,保存数据...")
simulator.save_to_file()
print("数据已保存到gps_data.json")