使用 python 程序从终端提取 gpsd 输出

extracting gpsd output from terminal using python program

我从 python 程序执行了 运行 与 GPS 相关的命令。

sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock
cgps -s

现在我想在我的 python 代码中使用纬度和经度等信息。我怎样才能得到这些数据? 而这些经纬度值会不断变化。那么我可以使用 python 获取值吗? 上面命令的输出是这样的

┌───────────────────────────────────────────┐┌─────────────────────────────────┐
│    Time:       2018-04-10T05:49:46.000Z   ││PRN:   Elev:  Azim:  SNR:  Used: │
│    Latitude:    12.945873 N               ││   1    08    177    23      Y   │
│    Longitude:   77.569187 E               ││   3    35    195    29      Y   │
│    Altitude:   913.1 m                    ││   7    22    313    09      Y   │
│    Speed:      1.2 kph                    ││   8    54    127    24      Y   │
│    Heading:    0.0 deg (true)             ││   9    44    335    25      Y   │
│    Climb:      0.0 m/min                  ││  11    20    168    21      Y   │
│    Status:     3D FIX (158 secs)          ││  16    15    032    00      Y   │
│    Longitude Err:   +/- 12 m              ││  18    10    154    00      Y   │
│    Latitude Err:    +/- 6 m               ││  22    21    175    26      N   │
│    Altitude Err:    +/- 17 m              ││  23    75    038    10      N   │
│    Course Err:      n/a                   ││  27    37    068    14      N   │
│    Speed Err:       +/- 87 kph            ││  28    18    231    00      N   │
│    Time offset:     0.727                 ││  30    08    292    00      N   │
│    Grid Square:     MK82sw                ││                                 │
└───────────────────────────────────────────┘└─────────────────────────────────┘

您可以使用正则表达式:

例如:

s = """
┌───────────────────────────────────────────┐┌─────────────────────────────────┐
│    Time:       2018-04-10T05:49:46.000Z   ││PRN:   Elev:  Azim:  SNR:  Used: │
│    Latitude:    12.945873 N               ││   1    08    177    23      Y   │
│    Longitude:   77.569187 E               ││   3    35    195    29      Y   │
│    Altitude:   913.1 m                    ││   7    22    313    09      Y   │
│    Speed:      1.2 kph                    ││   8    54    127    24      Y   │
│    Heading:    0.0 deg (true)             ││   9    44    335    25      Y   │
│    Climb:      0.0 m/min                  ││  11    20    168    21      Y   │
│    Status:     3D FIX (158 secs)          ││  16    15    032    00      Y   │
│    Longitude Err:   +/- 12 m              ││  18    10    154    00      Y   │
│    Latitude Err:    +/- 6 m               ││  22    21    175    26      N   │
│    Altitude Err:    +/- 17 m              ││  23    75    038    10      N   │
│    Course Err:      n/a                   ││  27    37    068    14      N   │
│    Speed Err:       +/- 87 kph            ││  28    18    231    00      N   │
│    Time offset:     0.727                 ││  30    08    292    00      N   │
│    Grid Square:     MK82sw                ││                                 │
└───────────────────────────────────────────┘└─────────────────────────────────┘
"""
import re
print re.findall("(?:Longitude:).*(?=E )", s)
print re.findall("(?:Latitude:).*(?=N )", s)

输出:

['Longitude:   77.569187 ']
['Latitude:    12.945873 ']