[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Maposmatic-dev] [PATCH] Add a Nominatim reverse-geocoding service
From: |
Pierre Mauduit |
Subject: |
[Maposmatic-dev] [PATCH] Add a Nominatim reverse-geocoding service |
Date: |
Fri, 6 Aug 2010 18:50:20 +0200 |
The service added aims to query (lat/lon) Nominatim, fetch the resulting
XML, parse it, then returns it into JSON.
---
www/maposmatic/nominatim.py | 18 ++++++++++++++++++
www/maposmatic/views.py | 7 +++++++
www/urls.py | 2 ++
3 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/www/maposmatic/nominatim.py b/www/maposmatic/nominatim.py
index eeeb5f1..85409cb 100644
--- a/www/maposmatic/nominatim.py
+++ b/www/maposmatic/nominatim.py
@@ -42,6 +42,24 @@ from xml.etree.ElementTree import parse as XMLTree
NOMINATIM_BASE_URL = "http://nominatim.openstreetmap.org/search/"
+def reverse_geo(lat, lon):
+ """
+ Query the nominatim service for the given lat/long coordinates and
+ returns the reverse geocoded informations.
+ """
+
+ url = "http://nominatim.openstreetmap.org/reverse?"
+ url = url + ("lat=%f&lon=%f" % (lat, lon))
+
+ f = urllib2.urlopen(url=url)
+ result = []
+
+ for place in XMLTree(f).getroot().getchildren():
+ attribs = dict(place.attrib)
+ for elt in place.getchildren():
+ attribs[elt.tag] = elt.text
+ result.append(attribs)
+ return result
def query(query_text, with_polygons = False):
"""
diff --git a/www/maposmatic/views.py b/www/maposmatic/views.py
index 9998eac..d6b33bb 100644
--- a/www/maposmatic/views.py
+++ b/www/maposmatic/views.py
@@ -196,6 +196,13 @@ def query_nominatim(request, format, squery):
mimetype='text/json')
# Support other formats here.
+def nominatim_reverse(request, lat, lon):
+ """Nominatim reverse geocoding query gateway."""
+ lat = float(lat)
+ lon = float(lon)
+ return HttpResponse(json_encode(nominatim.reverse_geo(lat, lon)),
+ mimetype='text/json')
+
def query_papersize(request):
"""AJAX query handler to get the compatible paper sizes for the provided
layout and bounding box."""
diff --git a/www/urls.py b/www/urls.py
index 9002dc6..d5da562 100644
--- a/www/urls.py
+++ b/www/urls.py
@@ -64,6 +64,8 @@ urlpatterns = patterns('',
(r'^apis/nominatim/([^/]*/)?(.*)$', maposmatic.views.query_nominatim),
+ (r'^apis/reversegeo/([^/]*)/([^/]*)/$',
maposmatic.views.nominatim_reverse),
+
(r'^apis/papersize', maposmatic.views.query_papersize),
# Internationalization
--
1.7.1
- [Maposmatic-dev] [PATCH] Add a Nominatim reverse-geocoding service,
Pierre Mauduit <=