Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
reverse-geoplanet is a simple web application to reverse geocode a latitude and longitude using the Flickr reverse geocoder.
branch: master

This branch is 1 commit behind straup:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
apache
bin
python
schema
www
.gitignore
.htaccess
INSTALL.md
README.md

README.md

reverse-geoplanet

reverse-geoplanet is a simple web application to reverse geocode a latitude and longitude using the Flickr reverse geocoder. Results include both the primary Where On Earth (WOE) ID for the lat,lon and a truncated hierarchy of parent WOE IDs. Results are cached in both a MySQL instance local to the application as well as Memcache, if it is installed.

reverse-geoplanet was originally developed for the building=yes project.

You will need a valid Flickr API key in order to use reverse-geoplanet.

Installing reverse-geoplanet

Please consult the INSTALL.md document.

How to

http://example.com/reverse-geoplanet/www/?lat=37.765219&lon=-122.419787

http://example.com/reverse-geoplanet/www/?ll=37.765219,-122.419787

{
    "latitude":"37.765",
    "longitude":"-122.420",
    "geohash":"9q8yy6bm",
    "woeid":"23512048",
    "locality":"2487956",
    "region":"2347563",
    "country":"23424977",
    "created":"1327172399",
    "name":"Mission Dolores, San Francisco, CA, US, United States",
    "placetype":"22",
    "stat":"ok"
}

Do you see the part where the name attribute contains the country name twice? The part where it says "Mission Dolores, San Francisco, CA, US, United States"? That's actually I bug that I am responsible for from back, so many moons ago, when I still worked at Flickr. I'm sorry. It hurts every time I see it...

By default reverse-geoplanet outputs JSON and is expected to be run more as a service for other robots rather than a website for humans. You can force results to be returned as HTML by specifying the inline=1 argument. For example:

http://example.com/reverse-geoplanet/www/?lat=37.765219&lon=-122.419787&inline=1

PHP

You can also call the reverse geocoder directly from a Flamework project like this:

include("include/init.php");
loadlib("reverse_geoplanet");

$lat = 40.721294;
$lon = -73.983994;
$remote = 'http://reverse.example.com/';

dumper(reverse_geoplanet($lat, $lon));
dumper(reverse_geoplanet($lat, $lon, $remote));

The third argument is optional and tells the code to call another remote instance of reverse-geoplanet for results.

If you want to bolt the functionality in to another Flamework project itself you'll need to copy the following files:

(I should probably just write a shell script to automate this...)

Python

There is a client-side Python library included that will call your instance of reverse-geoplanet and also cache the results locally using an in-memory SQLite database. In case you want to do reverse geocoding from your laptop or something. Like this:

$> cd python/reverse_geoplanet

$> python __init__.py 'example.com/reverse-geoplanet/www'

{
    u'stat': u'ok',
    u'name': u'Ygnacio Valley, Concord, CA, US, United States',
    u'locality': u'2384020',
    u'woeid': u'55858555',
    u'region': u'2347563',
    u'created': u'1327172577',
    u'longitude': u'-122.022',
    u'placetype': u'22',
    u'geohash': u'9q9pxrf7',
    u'country': u'23424977',
    u'latitude': u'37.924'
}

Flamework

reverse-geoplanet is built on top of Flamework which means if you're poking around the code you may be wondering what all that other stuff is for. At the moment: Nothing and it's all disabled. In the future, who knows?

See also

Something went wrong with that request. Please try again.