aboutsummaryrefslogtreecommitdiff
path: root/geocodage.py
blob: 913f8902a86a09fbc23e7e7cda387bdb0ebed9e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# fonction a utiliser :
# - geocodageIUTV si vous êtes à l'IUT (utilisation nécessaire du proxy)
# - geocodage sinon

import urllib
import urllib2
from xml.dom import minidom

def geocodageIUTV(adresse):
    try:
        proxy = urllib2.ProxyHandler({'https': '192.168.1.246:3128'})
        opener = urllib2.build_opener(proxy)
        urllib2.install_opener(opener)
        reponse = urllib2.urlopen(getURL(adresse))
        return analyseResultat(reponse)
    except:
        return None

def geocodage(adresse):
    try:
        url = "http://nominatim.openstreetmap.org/search?format=xml&q=" + \
              urllib.quote_plus(adresse)
        reponse = urllib2.urlopen(getURL(adresse))
        return analyseResultat(reponse)
    except:
        return None

def getURL(adresse):
    return "https://nominatim.openstreetmap.org/search?format=xml&q=" + urllib.quote_plus(adresse)

def analyseResultat(reponse):
    xml = reponse.read()
    doc = minidom.parseString(xml)
    place = doc.getElementsByTagName("place")[0]
    lat = place.attributes["lat"].value
    lon = place.attributes["lon"].value
    return lat, lon
    
#  fonction de test (ne pas utiliser dans votre code)
def index(req):
    req.content_type = "text/html"
    pos = geocodageIUTV(req.form["adresse"])
    if pos == None:
        req.write("Adresse non trouvée")
    else:
        lat, lon = pos
        req.write("Latitude = " + str(lat) + ", Longitude = " + str(lon))