Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/answerquest/gpsplayback
playback of archived GPS bus records using Leaflet Playback
https://github.com/answerquest/gpsplayback
Last synced: 3 days ago
JSON representation
playback of archived GPS bus records using Leaflet Playback
- Host: GitHub
- URL: https://github.com/answerquest/gpsplayback
- Owner: answerquest
- License: gpl-3.0
- Created: 2017-11-22T13:24:24.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-02-20T18:25:38.000Z (almost 7 years ago)
- Last Synced: 2024-11-01T11:34:38.427Z (about 2 months ago)
- Language: CSS
- Homepage: https://answerquest.github.io/GPSPlayback/
- Size: 1.28 MB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GPS Playback
A proof-of-concept for playback of archived GPS bus records on a map.See it live:
![screenshot](https://i.imgur.com/wFCXlRf.png)
Sample data from Hyderabad Bus GPS data.
Full script is in index.html
Uses Leaflet plugin [Leaflet.Playback](https://github.com/hallahan/LeafletPlayback)
Note: Limiting the total number of buses being loaded to 200; my page was crashing beyond that. Change `const buslimit = 150` at the start of the script to change that. The CSV file itself (`hydgps.csv`) has over 260 buses' data.
Data received from Srinivas, Hyderabad.
Code by Nikhil, Pune.
both from DataMeet Community, http://datameet.orgDo you have GPS data you want to visualize? Contact Nikhil on nikhil.js [at] gmail.com .
Like this work? Want to see more of it? [Click here to contribute!](https://www.instamojo.com/@nikhilvj/)
## How it works
### The input raw data is in this CSV format:
```
id,latitude,longitude,vehicle,time,busnum,status,time2,col,detail,bustype
1047,17.410196,78.488861,AP07Z4008,2017-11-19 11:45:44,71,Late,19/11/2017 11:45:32,29,60 Mtrs from ASHOK NAGAR X ROAD,DELUXE
1047,17.410196,78.488861,AP07Z4008,2017-11-19 11:45:47,71,Late,19/11/2017 11:45:32,29,60 Mtrs from ASHOK NAGAR X ROAD,DELUXE
1047,17.410196,78.488861,AP07Z4008,2017-11-19 11:45:48,71,Late,19/11/2017 11:45:32,29,60 Mtrs from ASHOK NAGAR X ROAD,DELUXE
```
### The plugin needs a customized GeoJSON per bus, in this format:
```
{
"type": "Feature",
"geometry": {
"type": "MultiPoint",
"coordinates": [
[
78.464539,
17.404537
],
[
78.464539,
17.404537
],
...
[
78.464539,
17.404537
]
]
},
"properties": {
"name": "Bus num: 57 - Default
Vehicle no.AP11Z7274, type: AC",
"time": [
1511072144000,
1511072147000,
1511072148000,
1511072150000,
...
1511072266000
],
"id": "1118",
"vehicle": "AP11Z7274",
"busnum": "57 - Default ",
...
}
}
```
The "time" array is key here. It carries timestamps corresponding to the lat-long co-ordinates array, in EPOCH format. Regular GPX to GeoJSON / CSV to GeoJSON converters online do not encode this time information in this way. Hence a function had to be built for this.### Function csv2busJSON
* takes the CSV path,
* imports it using Papa.parse,
* extracts a unique list of buses by id,
* separates the CSV data by bus,
* converts it into the required GeoJSON format,
* creates an array of bus jsons,
* and passes the array to the mapping function.