コード例 #1
0
from utils import make_nsfind, ET, geocoder_factory
import urllib
from django.utils.http import urlencode

# http://developer.yahoo.com/geo/placemaker/guide/api_docs.html


def geocode(q, api_key):
    find = make_nsfind({'ns': 'http://wherein.yahooapis.com/v1/schema'})
    args = {
        'documentContent': q,
        'documentType': 'text/plain',
        'appid': api_key,
    }
    et = ET.parse(
        urllib.urlopen('http://wherein.yahooapis.com/v1/document',
                       urlencode(args)))
    place = find(et, 'ns:document/ns:placeDetails/ns:place')
    if place is None:
        return None, (None, None)
    else:
        name = find(place, 'ns:name').text.decode('utf8')
        lat = float(find(place, 'ns:centroid/ns:latitude').text)
        lon = float(find(place, 'ns:centroid/ns:longitude').text)
        return name, (lat, lon)


geocoder = geocoder_factory(geocode)
コード例 #2
0
ファイル: geonames.py プロジェクト: bquinn/geocoders
from utils import simplejson, geocoder_factory
import urllib
from django.utils.http import urlencode

# http://www.geonames.org/export/geonames-search.html


def geocode(q):
    data = simplejson.load(
        urllib.urlopen('http://ws.geonames.org/searchJSON?' +
                       urlencode({
                           'q': q,
                           'maxRows': 1,
                           'lang': 'en',
                           'style': 'full'
                       })))
    if not data['geonames']:
        return None, (None, None)

    place = data['geonames'][0]
    name = place['name']
    if place['adminName1'] and place['name'] != place['adminName1']:
        name += ', ' + place['adminName1']
    return name, (place['lat'], place['lng'])


# No API key required, but let's fulfil the contract anyway
geocoder = geocoder_factory(geocode, takes_api_key=False)
コード例 #3
0
ファイル: yandex.py プロジェクト: Quard/geocoders
    args = {
        'geocode': q,
        'key': api_key,
        'results': 1,
        'format': 'json',
    }
    if plng:
        args['plng'] = plng
    if ll and spn:
        ll = hasattr(ll, '__iter__') and ','.join(map(str, ll)) or ll
        args['ll'] = ll
        spn = hasattr(spn, '__iter__') and ','.join(map(str, spn)) or spn
        args['spn'] = spn
    if rspn and ll and spn:
        args['rspn'] = rspn

    url = 'http://geocode-maps.yandex.ru/1.x/?%s' % urllib.urlencode(args)
    json = simplejson.load(urllib.urlopen(url))

    try:
        member = json['response']['GeoObjectCollection']['featureMember']\
            [0]['GeoObject']
        return (
            member['metaDataProperty']['GeocoderMetaData']['text'],
            tuple(map(float, member['Point']['pos'].split(' ')[::-1]))
        )
    except (KeyError, IndexError):
        return (None, (None, None))

geocoder = geocoder_factory(geocode)
コード例 #4
0
ファイル: allPythonContent.py プロジェクト: Mondego/pyreco
            'maxRows': 1,
            'lang': 'en',
            'style': 'full'
        })
    ))
    if not data['geonames']:
        return None, (None, None)
    
    place = data['geonames'][0]
    name = place['name']
    if place['adminName1'] and place['name'] != place['adminName1']:
        name += ', ' + place['adminName1']
    return name, (place['lat'], place['lng'])

# No API key required, but let's fulfil the contract anyway
geocoder = geocoder_factory(geocode, takes_api_key = False)

########NEW FILE########
__FILENAME__ = google
import urllib
from utils import simplejson, geocoder_factory

# https://developers.google.com/maps/documentation/geocoding/


def geocode(q, api_key=None):
    json = simplejson.load(urllib.urlopen(
        'http://maps.googleapis.com/maps/api/geocode/json?' + urllib.urlencode({
            'address': q,
            'sensor': 'false',
        })