在测试GPS信号的过程中,我们可以通过NMEA_0183协议获取到当前测试件的经纬度坐标,但是如果需要测试所得到经纬度的精准度的话,我们需要通过将经纬度转换为地图中的坐标点,本文以Google Earth作为代表进行阐述。
首先需要获取到你测试过程中所读取到的经纬度坐标。如果最开始获取到的GPS信号是NMEA 0183协议格式下的信号,可通过Python进行切片处理,到经纬度信号处理得到。下图所展示的是经过处理之后的经纬度数据。
此时,使用Python脚本对导出来的GPS信号的经纬度信号进行处理,生成.kml格式文件,最后导入到Google 地球上面,运行之后就可以自然而然的看到最后的路线图。
具体的脚本如下:
def csvtokml(filename,savepath,cavfilepath):
df = pd.read_csv(cavfilepath, header=None, usecols=[0, 1], sep = ',', encoding = 'gbk') # 读经纬度,标记
fullname = filename+'.kml'
with open(os.path.join(savepath,fullname), 'a') as file:
file.write('<?xml version="1.0" encoding="UTF-8"?>' +'\n')
file.write('<kml xmlns="http://earth.google.com/kml/2.1">' +'\n')
file.write('<Document>' +'\n')
for num in range(df.shape[0]):
file.write('<Style id="iconEcnu">'+'\n')
file.write('<IconStyle>'+'\n')
file.write('<heading>2</heading>'+'\n')
file.write('<Icon>'+'\n')
file.write('<href>http://maps.google.com/mapfiles/kml/paddle/red-circle.png</href>'+'\n')
file.write('</Icon>'+'\n')
file.write('</IconStyle>'+'\n')
file.write('</Style>'+'\n')
file.write('<Placemark>' +'\n')
file.write('<styleUrl>iconEcnu</styleUrl>'+'\n')
des = "<description>"+str(df.iloc[num,0])+"</description>"
coordinate = "<Point><coordinates>"+str(df.iloc[num,0])+","+str(df.iloc[num,1])+",0</coordinates></Point>"#此处0代表海拔,如果有海拔,可更改
file.write(des +'\n')
file.write(coordinate +'\n')
file.write('</Placemark>' +'\n')
file.write('</Document>' +'\n')
file.write('</kml>' +'\n')