攻防世界原题:可爱的猫猫走丢了,还好猫猫有GPS定位装置,我们陆陆续续在终端收到了GPS数据,你能帮忙找到可爱的猫猫吗?
下载文件内容为:
$GPGGA,090000.00,3416.48590278,N,10856.86623887,E,1,05,2.87,160.00,M,-21.3213,M,,*7E
$GPGGA,090000.05,3416.48590278,N,10856.86623887,E,1,05,2.87,160.00,M,-21.3213,M,,*7B
$GPGGA,090000.10,3416.48590278,N,10856.86623887,E,1,05,2.87,160.00,M,-21.3213,M,,*7F
$GPGGA,090000.15,3416.48590278,N,10856.86623887,E,1,05,2.87,160.00,M,-21.3213,M,,*7A
........
题目已经提醒是GPS数据,因此解析GPS 数据,画出轨迹图像,估计有所发现。以下是一位大佬在网上的解析代码:
import reimport matplotlib.pyplot as plt#要安装这个库,比较快# 预处理正则表达式,用于解析 GPS 数据pattern = re.compile( r"\$GPGGA,(\d+\.\d+),(-?\d+\.\d+),([NS]),(-?\d+\.\d+),([EW]),(\d),(\d+),(\d+\.\d+),(-?\d+\.\d+),M,(-?\d+\.\d+),M,,")
# 初始化经度、纬度列表lons, lats = [], []
# 遍历每一行 GPS 数据for line in open("CatchCat.txt", "r"): # 匹配 GPS 数据 m = pattern.match(line) if m: # 解析 GPS 数据 lat = float(m.group(2)) lat_dir = m.group(3) lon = float(m.group(4)) lon_dir = m.group(5) # 将角度转换为弧度 lat = (lat / 100.0) + (lat % 100.0) / 60.0 lon = (lon / 100.0) + (lon % 100.0) / 60.0 # 根据方向符号调整经度、纬度值 if lat_dir == "S": lat = -lat if lon_dir == "W": lon = -lon # 将经度、纬度添加到列表中 lons.append(lon) lats.append(lat)# 绘制经度、纬度坐标图plt.plot(lons, lats)# 添加坐标轴标签plt.xlabel("Longitude (degrees)")plt.ylabel("Latitude (degrees)")# 显示图表plt.show()
根据图像轨迹得出flag
领取专属 10元无门槛券
私享最新 技术干货