I spy with my little eye…

You may have noticed the screenshots in yesterdays post showing a map of corfu (greece) with an overlay which obviously represents some recorded gps track.

For reference, here’s the screenshot:

This shot is from a project I recently revived after it’s been dormant on my harddisk for a few month.

Initially I planned to write an application where I could upload my bicycle tours and create some per-month statistics with some fancy graphs (hence the project-name¬† ‘bike’ in the screenshot)

Some weeks later I took a trip to greece and came back with a bunch of geotagged photos I’ve taken and a handful of GPS tracks on my fellow Hollux M-241.

Geottaged phots make no sense at all, if you have the coordinates but don’t have a clue where these coordinates actually are. So photos, coords and map need to be brought in line.

Once the photos are linked with specific coords on the map you need to have the choice if you want to make them public or not. And if you make them (and the track) public you may wanna write some little travel quide about the tour?

This should be all done with the project – and it’s coming along nicely. Currently I have:

  • gpx parser to check the uploaded tracks and extract/calculate some basic data
  • display the tracks on OSM
  • upload photos and extract the GPS informations
  • link the photos to the map
  • upload comments to the track
  • create elevation & speed graphs from the tracks
  • dynamically create a cache of the OSM tiles on my webserver (around 6000/50Megs atm)s
  • cache the gps graphs

The code currently is a total mess since I’m going the route of some prototype-refacturing hybrid. This time I buidl no fancy framework beforehand but rather write some standalone prototype functions (i.e. to cache the OSM tiles) and if they work out I try build the corresponding¬† framework part around it.

Sounds strange but works.

I’ll try to clean up the code and upload a sample application to the web, but atm there are too many security holes in it. Besides that I’m at a point where it starts to get tricky to integrate all the user interaction without using ajax. Looks like I need to get some jQuery stuff working…