Skip to content

Instantly share code, notes, and snippets.

@aaronpk
Created April 30, 2010 16:47
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save aaronpk/385459 to your computer and use it in GitHub Desktop.
Save aaronpk/385459 to your computer and use it in GitHub Desktop.
A JSON protocol for sharing and storing real-time data streams. Common use would be for sharing location data.
Common minimal format for sending just lat/long data
[
{
uuid: "550e8400-e29b-41d4-a716-446655440000",
date: "2010-04-30T16:50:00Z",
location: {
position: {
latitude: 45.5118,
longitude: -122.6433
}
},
client: {
name: "Geoloqi",
version: "0.1",
platform: "iPhone OS 4"
}
},
{
uuid: "550e8400-e29b-41d4-a716-446655440001",
date: "2010-04-30T16:50:00Z",
location: {
position: {
latitude: 45.5128,
longitude: -122.6435
}
},
client: {
name: "Geoloqi",
version: "0.1",
platform: "iPhone OS 4"
}
}
]
Full data format allowing custom information to be included based on source of location data
[{
uuid: "550e8400-e29b-41d4-a716-446655440000",
date: "2010-04-30T16:50:00Z", (iso8601 format)
location: {
position: {
latitude: 45.5118,
longitude: -122.6433,
geojson: {
type: "Polygon",
coordinates: [[-122.643, 45.512], [-122.650, 45.512], [-122.643, 45.533], [-122.650, 45.533]]
},
altitude: null,
heading: 190,
speed: 56,
horizontal_accuracy: 6.0,
vertical_accuracy: 8.0 (in meters)
}
source: "hardware_gps,wifi,street_address,agps,twitter,foursquare,geomena"
type: "latlng,address,neighborhood,city",
raw: (from hardware gps device) {
dop_h: 2.7,
dop_v: 2.1,
satellites: []
},
raw: (from wifi positioning) {
aps: []
}
raw: (from twitter) {
id: "103994853",
created_at: "Tue Apr 07 22:52:51 +0000 2009",
text: "At least I can get your humor through tweets. RT @abdur: I don't mean this in a bad way, but genetically speaking your a cul-de-sac.",
source: "<a href="http://www.tweetdeck.com/">TweetDeck</a>",
....etc....
}
},
client: {
name: "Geoloqi",
version: "0.1",
platform: "iPhone OS 4",
other: "whatever"
},
environment: {
air_temperature: {
celsius: 20.3
},
humidity: {
percent: 80
},
sound_pressure_level: {
pascals: 10
}
},
body: {
heart_rate: {
bpm: 100
},
core_temperature: {
celsius: 25
}
}
}]
Format for querying positions of multiple users:
[{
user: {
id: "http://aaron.pk",
display_name: "aaronpk",
url: "http://aaronparecki.com",
image_url: "http://aaron.pk/pic.jpg"
},
data: []
},
{
user: {
id: "@caseorganic",
display_name: "caseorganic",
url: "http://oakhazelnut.com",
image_url: "http://a1.twimg.com/profile_images/116264220/kk-caseorganic-48px.jpg"
},
data: []
}]
@pmark
Copy link

pmark commented May 30, 2010

I wonder if a collection of checkins could be of use in implementing a sort of differential correction. Location accuracy might be able to be increased by comparing some aspect of the user's perspective to the same aspect of nearby checkins.

For example, if nearby checkins included a photograph of some fixture in the users' environment (like a building with distinctive lines, a rock formation, a fiducial marker) along with camera inclination and heading, it might be possible to narrow down the user's current position.

Could a checkin leave behind some kind of breadcrumb (like correction data) that improves future checkin accuracy?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment