|
1 | | -Under development. README to be populated later. |
| 1 | +This library makes use of [pynmea2](https://github.com/Knio/pynmea2) to parse through input NMEA data, organize it, and output it to CSV files or to a PostgreSQL database. |
2 | 2 |
|
3 | | -Reference materials: |
4 | | -https://www.trimble.com/OEM_ReceiverHelp/V4.44/en/NMEA-0183messages_MessageOverview.html |
| 3 | +## Setup |
| 4 | + |
| 5 | +Your input file should have a format similiar to those under `test_data`. To have your data datetime stamped, it must be in a format like that of `test_data/test_data_all.nmea`, with RMC sentences containing date and time stamps proceed other sentences in the same cycle. |
| 6 | + |
| 7 | +If working with a database, the database access information/credentials must be setup in `db_creds.py`. |
| 8 | + |
| 9 | + |
| 10 | +## Usage |
| 11 | +``` |
| 12 | +$ cd ~/Downloads/nmea_parser/ |
| 13 | +$ pip install -r requirements.txt |
| 14 | +... |
| 15 | +$ python nmea_parser.py --help |
| 16 | +usage: nmea_parser.py [-h] [--drop_previous_db_tables] filepath {csv,db,both} |
| 17 | +
|
| 18 | +positional arguments: |
| 19 | + filepath file system path to file containing NMEA data |
| 20 | + {csv,db,both} where to output data: CSV files, database, or both |
| 21 | +
|
| 22 | +optional arguments: |
| 23 | + -h, --help show this help message and exit |
| 24 | + --drop_previous_db_tables |
| 25 | + drop previous DB tables before importing new data; |
| 26 | + only applies when output_method is 'db' or 'both' |
| 27 | +``` |
| 28 | +## Examples |
| 29 | +### Example 1 |
| 30 | +``` |
| 31 | +$ ls -l *.csv |
| 32 | +ls: *.csv: No such file or directory |
| 33 | +$ python nmea_parser.py test_data/test_data_all.nmea csv |
| 34 | +
|
| 35 | +Reading in data... done. |
| 36 | +
|
| 37 | +Processing data... done. |
| 38 | +
|
| 39 | +Writing data to CSVs... data from logfile 'test_data/test_data_all.nmea' written to: |
| 40 | + test_data_all_GNRMC.csv |
| 41 | + test_data_all_GNVTG.csv |
| 42 | + test_data_all_GNGGA.csv |
| 43 | + test_data_all_GNGSA.csv |
| 44 | + test_data_all_GPGSV.csv |
| 45 | + test_data_all_GLGSV.csv |
| 46 | + test_data_all_GNGLL.csv |
| 47 | +done. |
| 48 | +
|
| 49 | +All done. Exiting. |
| 50 | +
|
| 51 | +
|
| 52 | +$ ls -l *.csv |
| 53 | +-rw-r--r-- 1 Thomas staff 14310 Dec 30 18:19 test_data_all_GLGSV.csv |
| 54 | +-rw-r--r-- 1 Thomas staff 9502 Dec 30 18:19 test_data_all_GNGGA.csv |
| 55 | +-rw-r--r-- 1 Thomas staff 6852 Dec 30 18:19 test_data_all_GNGLL.csv |
| 56 | +-rw-r--r-- 1 Thomas staff 18472 Dec 30 18:19 test_data_all_GNGSA.csv |
| 57 | +-rw-r--r-- 1 Thomas staff 8672 Dec 30 18:19 test_data_all_GNRMC.csv |
| 58 | +-rw-r--r-- 1 Thomas staff 5779 Dec 30 18:19 test_data_all_GNVTG.csv |
| 59 | +-rw-r--r-- 1 Thomas staff 40263 Dec 30 18:19 test_data_all_GPGSV.csv |
| 60 | +``` |
| 61 | + |
| 62 | +### Example 2 |
| 63 | +``` |
| 64 | +$ python nmea_parser.py test_data/test_data_all.nmea db |
| 65 | +
|
| 66 | +Reading in data... done. |
| 67 | +
|
| 68 | +Processing data... done. |
| 69 | +
|
| 70 | +Writing data to database... data from logfile 'test_data/test_data_all.nmea' written to: |
| 71 | + 'nmea_gn_rmc' table in 'nmea_data' database |
| 72 | + 'nmea_gn_vtg' table in 'nmea_data' database |
| 73 | + 'nmea_gn_gga' table in 'nmea_data' database |
| 74 | + 'nmea_gn_gsa' table in 'nmea_data' database |
| 75 | + 'nmea_gp_gsv' table in 'nmea_data' database |
| 76 | + 'nmea_gl_gsv' table in 'nmea_data' database |
| 77 | + 'nmea_gn_gll' table in 'nmea_data' database |
| 78 | +done. |
| 79 | +
|
| 80 | +All done. Exiting. |
| 81 | +``` |
| 82 | + |
| 83 | +### Example 3 |
| 84 | +``` |
| 85 | +$ python nmea_parser.py test_data/test_data_all.nmea both |
| 86 | +
|
| 87 | +Reading in data... done. |
| 88 | +
|
| 89 | +Processing data... done. |
| 90 | +
|
| 91 | +Writing data to CSVs... data from logfile 'test_data/test_data_all.nmea' written to: |
| 92 | + test_data_all_GNRMC.csv |
| 93 | + test_data_all_GNVTG.csv |
| 94 | + test_data_all_GNGGA.csv |
| 95 | + test_data_all_GNGSA.csv |
| 96 | + test_data_all_GPGSV.csv |
| 97 | + test_data_all_GLGSV.csv |
| 98 | + test_data_all_GNGLL.csv |
| 99 | +done. |
| 100 | +
|
| 101 | +Writing data to database... data from logfile 'test_data/test_data_all.nmea' written to: |
| 102 | + 'nmea_gn_rmc' table in 'nmea_data' database |
| 103 | + 'nmea_gn_vtg' table in 'nmea_data' database |
| 104 | + 'nmea_gn_gga' table in 'nmea_data' database |
| 105 | + 'nmea_gn_gsa' table in 'nmea_data' database |
| 106 | + 'nmea_gp_gsv' table in 'nmea_data' database |
| 107 | + 'nmea_gl_gsv' table in 'nmea_data' database |
| 108 | + 'nmea_gn_gll' table in 'nmea_data' database |
| 109 | +done. |
| 110 | +
|
| 111 | +All done. Exiting. |
| 112 | +``` |
| 113 | + |
| 114 | + |
| 115 | +## References Used in Development |
| 116 | +https://github.com/Knio/pynmea2/blob/master/README.md |
| 117 | + |
| 118 | +https://www.trimble.com/OEM_ReceiverHelp/V4.44/en/NMEA-0183messages_MessageOverview.html |
| 119 | + |
| 120 | +https://www.u-blox.com/sites/default/files/products/documents/u-blox8-M8_ReceiverDescrProtSpec_%28UBX-13003221%29.pdf (section 31 'NMEA Protocol') |
0 commit comments