将从 NMEA 日志文件中提取的坐标保存在 CSV 文件中
Save coordinates extracted from NMEA log file in a CSV file
作为 Python 的初学者,我正在处理一项任务。任务是开发一个程序,通过虚拟端口读取 NMEA 日志文件,并且:
- 仅打印 "GPGGA" 行
- 从这些 "GPGGA" 行中打印坐标 (lat,lon)
- 在 CSV 文件中提取这些坐标
- 在 KML 文件中提取这些坐标
我的代码如下:
import serial
from pynmea import nmea
import csv
ser=serial.Serial('COM4')
ser.baudrate=4800
f = open('coord_list.csv', 'w+')
print('Waiting for data')
while True:
try:
message = ser.readline().decode()
message = message.strip()
if '$GPGGA' in message:
print(message)
gpgga = nmea.GPGGA()
gpgga.parse(message)
lat = float(gpgga.latitude)
lon = float(gpgga.longitude)
print("Lat %f Long %f" % (lat, lon))
for i in message:
coord_list = []
coord = [gpgga.latitude,gpgga.longitude]
coord_list.append(coord)
f.write(coord_list)
f.close()
except KeyboardInterrupt:
raise
ser.close()
对于前两个项目符号,示例输出如下:
Waiting for data
$GPGGA,170609.941,5335.6665,N,01021.2637,E,1,09,01.1,35.9,M,40.2,M,,*58
Lat 5335.666500 Long 1021.263700
$GPGGA,170610.941,5335.6665,N,01021.2637,W,1,09,01.1,36.0,M,40.2,M,,*5A
使用这段代码我得到了一个错误:
f.write(coord_list)
TypeError: write() argument must be str, not list
我无法在 CSV 文件下保存坐标。我不知道如何编写正确的代码来解决它。无论我尝试什么,我都会遇到另一个错误或什么都没有。
问题如您的错误所述,write
仅接受字符串。
csv 格式通常以逗号分隔。
所以你可以这样做:
f.write("{},{}\n".format(gpgga.latitude, gpgga.longitude))
您还可以在循环中关闭文件,但不要打开它。所以它不会在第一次循环后写。
作为 Python 的初学者,我正在处理一项任务。任务是开发一个程序,通过虚拟端口读取 NMEA 日志文件,并且:
- 仅打印 "GPGGA" 行
- 从这些 "GPGGA" 行中打印坐标 (lat,lon)
- 在 CSV 文件中提取这些坐标
- 在 KML 文件中提取这些坐标
我的代码如下:
import serial
from pynmea import nmea
import csv
ser=serial.Serial('COM4')
ser.baudrate=4800
f = open('coord_list.csv', 'w+')
print('Waiting for data')
while True:
try:
message = ser.readline().decode()
message = message.strip()
if '$GPGGA' in message:
print(message)
gpgga = nmea.GPGGA()
gpgga.parse(message)
lat = float(gpgga.latitude)
lon = float(gpgga.longitude)
print("Lat %f Long %f" % (lat, lon))
for i in message:
coord_list = []
coord = [gpgga.latitude,gpgga.longitude]
coord_list.append(coord)
f.write(coord_list)
f.close()
except KeyboardInterrupt:
raise
ser.close()
对于前两个项目符号,示例输出如下:
Waiting for data
$GPGGA,170609.941,5335.6665,N,01021.2637,E,1,09,01.1,35.9,M,40.2,M,,*58
Lat 5335.666500 Long 1021.263700
$GPGGA,170610.941,5335.6665,N,01021.2637,W,1,09,01.1,36.0,M,40.2,M,,*5A
使用这段代码我得到了一个错误:
f.write(coord_list)
TypeError: write() argument must be str, not list
我无法在 CSV 文件下保存坐标。我不知道如何编写正确的代码来解决它。无论我尝试什么,我都会遇到另一个错误或什么都没有。
问题如您的错误所述,write
仅接受字符串。
csv 格式通常以逗号分隔。
所以你可以这样做:
f.write("{},{}\n".format(gpgga.latitude, gpgga.longitude))
您还可以在循环中关闭文件,但不要打开它。所以它不会在第一次循环后写。