使用 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 ']
我从 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 ']