Skip to content

Instantly share code, notes, and snippets.

@MicahElliott
Created November 29, 2010 08:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MicahElliott/719734 to your computer and use it in GitHub Desktop.
Save MicahElliott/719734 to your computer and use it in GitHub Desktop.
Use gmaps to parse and calculate distance between two points.
#! /usr/bin/env python
""" Use gmaps to parse and calculate distance between two points.
"""
__author__ = 'Micah Elliott http://MicahElliott.com'
__version__ = '0.1'
### -------------------------------------------------------------------
import os, sys
from urllib import urlopen, quote_plus
from xml.dom.minidom import parseString
from simplejson import loads
from math import sqrt
usage = 'geodist "addr1" "addr2"'
units = 'miles'
provider = 'google'
if len(sys.argv) != 3:
print>>sys.stderr, usage
sys.exit(1)
addr1, addr2 = sys.argv[1:3]
##addr1 = 'fort knox'
##addr2 = 'white house'
print "Using %s to calculate distance between: \n %s\n %s\n" % (provider, addr1, addr2)
uri = 'http://maps.google.com/maps/geo?q=%s&output=json'
#uri = 'http://maps.google.com/maps/geo?q=%s&output=json&sensor=true_or_false&key=your_api_key'
lookup1 = uri % addr1
lookup2 = uri % addr2
##print lookup1
def get_ll(lookup):
json = loads( urlopen(lookup).read() )
lat_lon = json['Placemark'][0]['ExtendedData']['LatLonBox']
return lat_lon['east'], lat_lon['north']
lat1, lon1 = get_ll(lookup1)
lat2, lon2 = get_ll(lookup2)
lat_diff = 69.1 * (lat2-lat1)
lon_diff = 53.0 * (lon2-lon1)
dist = sqrt( lat_diff**2 + lon_diff**2 )
print 'Distance: %s %s' % (dist, units)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment