Software/GeoClue/0.9

This is a snapshot of the frontpage from Feb 11 2008. Please use the Geoclue front page if you're looking for current information.

.

GeoClue - geographic information service.

GeoClue is a D-Bus API and library that provides all kinds of geographic information to applications. The information may originally come in various forms from many sources (backends), but GeoClue offers it to applications in a simple, abstracted form.

GeoClue is Free Software. It is developed for Linux, but should be portable to any platform that uses the D-Bus messaging bus.

The following APIs (and backend types) are supported or planned:

Some reference backends are included, but creating your own is encouraged.

There is a lot of ideas you can implement with this service. For example we could automatically set a weather forecast program to show the weather of your current location.

Getting the code

The code is licensed under the GNU LGPL and is available in freedesktop.org Git repository. You can browse through gitweb or clone the repository:

GeoClue is still in early stages of development, so be prepared for hickups. For help with Git, see Usage notes here on freedesktop.org and documentation on Git homepage.

Iain Holmes and Jussi Kukkonen are working on a rewrite at http://folks.o-hand.com/jku/git/geoclue.git/ -- we believe a fairly total API change is needed to make geoclue really work as intended. We're hoping this will be the "main branch" soon.

Contacting the developers

The mailing list is a good place for questions and comments. If you've found a bug or have a feature request, file a bug in our bugzilla. You are also welcome to join the ad-hoc irc channel #geoclue on GimpNet (irc.gimp.org). If you are behind a restrictive firewall, try IRC@Work.

Architecture

GeoClue for Application Writers -- D-Bus service or C library

There are two methods to accessing this service. You can use the raw D-Bus API through any prospective bindings or you can use the utility C wrapper provided with the package.

Backends

The idea is to have several different backends. A GPS is naturally the most accurate source, but it does not work well indoors, and a device might not always be available. Yet, even without a GPS, a bit less accurate position is easily available using other methods, and this information will in most cases be just as useful. Also sometimes you might not want to expose your exact coordinates ("send nukes here"-problem) - thus the API will have ways to serve different types of location data.

Also since there are several web services to provide you with street address -> coordinate (and backwards) coding, this will be one useful service GeoClue will make accessible through itself. A street address or a "plaze" name (see below for plazes) might be more useful to show to your IM buddies for example, since it is more human readable than a lat,lon coordinate pair. Yet for mapping uses etc, it should be good that both are always made available, plus some way to determine the accuracy of the data. Sure, "Boston" is located in W+71°+3'+37"&ie=UTF8&z=16&ll=42.358211,-71.060278&spn=0.006961,0.021415&om=1&iwloc=A N 42° 21' 29" W 71° 3' 37" but the area is a lot larger than the actual coordinate reference point, which points to a street corner between Tremont and Beacon Street.

Work that needs to be done

short TODO items:

Developer docs

Document the D-Bus interfaces -- both provider and application API.

gnome applet

Make a small applet that can pop up an info box when a location is first reported. "You are in Olathe, KS". When left clicked on brings up a 320x240 image (can just be a static image for now I will add map to it.) with an entry below it that you can type in an address along with a search button. When you left click the applet it would bring up a menu with a properties box. This box would allow you to set preference for what service to use. basically a drop down for "Manual entry", "www.hostip.info", "Gps device" There can be five of these for position, mapping, geocoding, tracking, routing.

Mockup

Something like this could pop up from the notification system once GeoClue finds we are in a significantly new place. How and when this happens needs to be determined somehow. Perhaps like, when moving to a new city or switching networks etc. We shouldnt pop these up repeatedly while moving around with GPS location though, that'd be annoying.

.-------------------------------------.
|                                  [x]|
|  *New Location*                     |
|                                     |
|  Helsinki, FINLAND                  |
|                                     |
|  Is this wrong?  [ Correct it! ]    | <- gives a correction dialog
|                                     |
|  [ ] Stop tracking my location      |
|      automatically.                 |
|                                     |
`-------------------------------------'
Correction dialog:
.-( Set Location )-------------------------------(x)-.
|                                                    |
| Address: [ 20 Ames St, Cambridge, MA ] [ Look up ] |
|                                                    |
|.--------------------------------------------------.|
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||               m a p   w i d g e t                ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
||                                                  ||
|`--------------------------------------------------'|
|                                                    |
|                                   [ Set Location ] |
|                                                    |
`----------------------------------------------------'

Backend

Already Implemented

  1. maps yahoo
  2. position manual
  3. position hostip.info
  4. geocode yahoo

Needs

  1. maps static image (big world image or svg of world)
  2. position plazes.com
  3. track turtle
  4. routing ?
  5. position GPSD

Application ideas

People

Add yourself here if you are interested, so its easier to keep track of us.. :)


GeoClue Hack session 1 at Boston2006

1. Mapping 1. Position 1. Geocoding 1. Routing 1. Track

Mapping - Gtk+/D-Bus interface to retrieve map data from yahoo.com using a plugin. Other sources of mapping could be used. On a mapping backend you may not always have a map backend. So it might be a good idea to cache that map data.

Position - Provides position, velocity, and time data. One backend currently supported is gpsd, connected to a GPS sensor.

Geocoding - Find nearest points of interest based on current location. Will have a yahoo.com backend.

Routing - Ability to submit desitinations to a backend like yahoo.com in order to generate a route.

Track - Ability to leave a cookie crumb trail.

Ideas

Gossip / Jabber

Gnome Blog

Wordpress

Current progress: AndrewTurner, one of the GeoPress developers is also part of this now, and he said he'd talk to the GeoRSS folks to get feedback on how to do the extension of the XMLRPC API so that we can get somethign everyone can support.

F-Spot

Stars (and Maemo Stars)

Tasks

Keith - Conglomerate (code) Sean - plazes.com backend

Tuomas - looking up XMLRPC

Sean - gnome blogger

Datasources and APIs