[Geowanking] Location encodings, URL schemes

Martin May maym at foobar.lu
Thu Feb 17 14:43:36 PST 2005


Doesn't sound like a crap idea to me :) I would think that this has been 
discussed before, too, but I can't find any references to it.

I think that you should go ahead and build a prototype for it (a Firefox 
extension maybe?). Shouldn't be too difficult. It could have a 
configuration dialogue that lets you specify what to do with the 
lat/long (fire up external up and pass in parameters, or go to a URL 
with the lat/long in the query string). The hard part will be getting 
people to use it. Standardizing it might help, so maybe you should do a 
write-up and submit it to the W3C?

Good luck,
Martin

Andy Armstrong wrote:

> Somebody please tell me either that this already exists or suggest why 
> it shouldn't :)
>
> Start with a compact alpha-encoded representation for a latitude, 
> longitude pair. I think this was discussed recently - basically you'd 
> encode each as a base 26 fixed point number using letters as digits 
> and then interleave the latitude and longitude string so that 
> 'astbfqklzp' would be a more precise encoding of 'astb'. Psuedocode 
> below[1].
>
> Now define a 'geo:' URL scheme that uses that representation as the 
> address:
>
>    The location is <a href="geo:astbfqklzp">here</a>
>
> Clicking on a link would take you to a map but it'd be /your/ choice 
> of map rather than the author of the original page's choice of map. 
> You could, for example, set things up so that clicking on a geo: URL 
> fired up your route planning software and started a new route with 
> your home as the start point and the location described by the link as 
> the destination.
>
> I'm sure somebody must have discussed this before. Or maybe it's just 
> a crap idea :)
>
> [1] Psuedocode implementation of the encoding scheme:
>
> limit(x, min, max, mod)
>    while x < min
>       x := x + mod
>    while x >= max
>       x := x - mod
>    return x
>
> encodeAngle(angle, prec)
>    angle := limit(angle, 0, 360, 360) / 360
>    enc := ''
>    while prec-- > 0
>       angle := angle * 26;
>       digit := int(angle)
>       angle := angle - digit
>       enc := enc + ('a' + digit)
>    return enc
>
> interleave(a, b)
>    if a = '' or b = ''
>       return ''
>    return left(a, 1) + left(b, 1) + interLeave(mid(a, 2), mid(b, 2))
>
> encodeLocation(latitude, longitude, prec)
>    lat = encodeAngle(latitude, prec / 2)
>    lon = encodeAngle(longitude, prec / 2)
>    return interleave(lat, lon)
>




More information about the Geowanking mailing list