当前位置:   article > 正文

Google Earth导入GPS设备NMEA文本数据_谷歌地球如何导入gps nmea数据

谷歌地球如何导入gps nmea数据

一、提取GPS数据生成TXT文本文件

1. GPS设备NMEA文本数据

gps.txt

$GNGGA,032006.00,2930.35909,N,10634.37156,E,2,12,0.82,252.8,M,-26.5,M,,0000*66
$GNRMC,032007.00,A,2930.35909,N,10634.37156,E,0.000,250.87,190320,2.57,W,D*33
$GNGGA,032007.00,2930.35909,N,10634.37156,E,2,12,0.79,252.8,M,-26.5,M,,0000*63
$GNRMC,032008.00,A,2930.35910,N,10634.37156,E,0.016,250.86,190320,2.57,W,D*32
$GNGGA,032008.00,2930.35910,N,10634.37156,E,2,12,0.82,252.7,M,-26.5,M,,0000*6F
$GNRMC,032009.00,A,2930.35908,N,10634.37150,E,0.450,250.86,190320,2.57,W,D*3A
$GNGGA,032009.00,2930.35908,N,10634.37150,E,2,12,0.86,252.7,M,-26.5,M,,0000*65
$GNRMC,032010.00,A,2930.35904,N,10634.37132,E,0.809,250.76,190320,2.57,W,D*35
$GNGGA,032010.00,2930.35904,N,10634.37132,E,2,12,0.76,252.7,M,-26.5,M,,0000*6A
$GNRMC,032011.00,A,2930.35896,N,10634.37105,E,1.057,250.29,190320,2.57,W,D*32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2. GNGGA数据提取程序

程序运行环境:Python3.6

2.1 算法程序
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
 
 
class GetGPS:
    def __init__(self, srcfile,dstfile):
        self.srcfile=srcfile;
        self.dstfile=dstfile;
 
    def run(self):
        print("GetGPS"+self.srcfile)
        print("run..."+'\n')
        print("SRC: "+self.srcfile+"\n")
        print("DST: " + self.dstfile + "\n")
 
        dstfd = open(self.dstfile, 'wt', encoding='UTF-8')
        if dstfd == None:
            return ;
        with open(self.srcfile, 'rt', encoding='UTF-8') as fd:
            for line in fd:
                line = line.strip('\n')
                #print(line);
                mtype=re.findall(r"\$(.+?),",line,re.M)
                #print(mtype[0])
                if len(mtype) == 0 :
                    continue
                if mtype[0]!="GNGGA":
                    continue
 
               # print(line)
                #print(re.findall(r"[^ ]* [^,]*,[^,]*,(.+?),",line,re.M))
 
                reg = re.compile(r'(?P<mtype>.+?),(?P<time_str>.+?),(?P<latitude_str>.+?),(?P<lathem_str>.+?),(?P<longtitude_str>.+?),(?P<longthem_str>.+?),[^,]*,[^,]*,[^,]*,(?P<altitude_str>.+?),(?P<altunit_str>.+?),')
                regMatch = reg.match(line)
                if regMatch == None :
                    print(line)
                    print("ERROR : regMatch == None")
                    continue
                linebits = regMatch.groupdict()
                #for k, v in linebits.items():
                #    print(k + ": " + v)
                latitude=self.str2latitude(linebits["latitude_str"])
                longtitude=self.str2longtitude(linebits["longtitude_str"])
 
                strtmp=linebits["time_str"]+','+str(latitude)+','+linebits["lathem_str"]+','+str(longtitude)+','+linebits["longthem_str"]\
                      +','+linebits["altitude_str"]+','+linebits["altunit_str"]
                print(strtmp)
                dstfd.write(strtmp+'\n')
 
        fd.close();
        dstfd.close();
 
 
    def str2latitude(self,latitude_str):
        #print(latitude_str)
        degree=latitude_str[0:2]
        minute=latitude_str[2:]
        #print(degree+" "+minute)
        latitude=round(float(degree) + (float(minute) / 60),6)
       # print(latitude)
        return latitude
 
    def str2longtitude(self,longtitude_str):
        # print(longtitude_str)
        degree = longtitude_str[0:3]
        minute = longtitude_str[3:]
        # print(degree+" "+minute)
        longtitude = round(float(degree) + (float(minute) / 60),6)
        # print(longtitude)
        return longtitude
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
2.2 调用方法
if __name__ == '__main__':
    srcfile=r"d://gps.txt"
    dstfile=r"d://gps_out.txt"
    mobj=GetGPS(srcfile,dstfile);
    mobj.run();
  • 1
  • 2
  • 3
  • 4
  • 5
2.3 提取GNGGA生成gps_out.txt文件

#gps_out.txt 数据格式为:世界时间,纬度,纬度半球,经度,经度半球,大地水准面高度异常差值,高度单位

032006.00,29.505985,N,106.572859,E,252.8,M
032007.00,29.505985,N,106.572859,E,252.8,M
032008.00,29.505985,N,106.572859,E,252.7,M
032009.00,29.505985,N,106.572858,E,252.7,M
032010.00,29.505984,N,106.572855,E,252.7,M
  • 1
  • 2
  • 3
  • 4
  • 5

二、Google Earth导入TXT文本文件

1. 启动Google Earth

2. 打开gps_out.txt

【文件】–> 【打开】–>选择gps_out.txt

3. 数据导入向导配置

3.1 指定分隔符

【已限定】–>【逗号】–>【下一步】

3.2 选择维度/经度字段

【维度字段】选择第二项

【经度字段】选择第四项

注意:字段要与gps_out.txt数据格式相对应

3.3 指定字段类型

可采用默认选项

4. 显示GPS数据

4.1 配置Google Earth软件的位置

在Google Earth软件的左侧位置管理窗口中选择临时位置里刚加入的gps_out.txt

4.2 应用样式模板

可选择【否】

4.3 gps数据的展示效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/177394
推荐阅读
相关标签
  

闽ICP备14008679号