Compass is a GPS tracking server that stores data in flat files.
In the compass
directory, copy .env.example
to .env
and fill in the details. Install the dependencies with composer.
After you create a tracking database, you can visit the database's settings page to get a read or write token. These tokens are used with the API to update or retrieve data.
To write to a database, make a POST request in JSON format with the following keys:
POST /api/input
The GeoJSON objects must have at least one property, "timestamp", which is can be any value that can be interpreted as a date. The object can have any additional properties you wish.
The open source iOS GPS Logger will send data in this format by default.
POST /api/input?token=XXXXXXX HTTP/1.1
Content-type: application/json
{
"locations": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-122.621, 45.535]
},
"properties": {
"timestamp": "2017-01-01T10:00:00-0700",
"horizontal_accuracy": 65
}
}
],
"token": "XXXXXXX"
}
To read a database, make a GET request as follows:
GET /api/query
GET /api/last
GET /api/find-from-localtime
This API method can help you answer the question "Where was I when my watch read 9:30am on July 15th?".
Timestamps in Exif data do not include the timezone offset, and there is no standard mechanism for including the timezone offset in Exif. Some Canon cameras put the offset in a field, but not all of them do. You can use this method to find your location given an Exif date.
YYYY-mm-dd HH:MM:SS
This will query the database and find the closest matching location for when your clock read that time.
Compass icon by Ryan Spiering from the Noun Project.
Screenshot of the map view by Sebastiaan Andeweg.
Copyright 2015 by Aaron Parecki
Compass is licensed under the Apache 2.0 license
Compass is built using the Lumen framework, which is licensed under the MIT license