This would allow us to check if the BBox of the current feature is too large ; this needs jQuery's update, which should come with Thomas' patches --- www/maposmatic/nominatim.py | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/www/maposmatic/nominatim.py b/www/maposmatic/nominatim.py index f4f8726..691b2bf 100644 --- a/www/maposmatic/nominatim.py +++ b/www/maposmatic/nominatim.py @@ -33,6 +33,7 @@ Simple API to query http://nominatim.openstreetmap.org Most of the credits should go to gthe Nominatim team. """ +import json import www.settings import psycopg2 from urllib import urlencode @@ -194,17 +195,25 @@ def _retrieve_missing_data_from_GIS(entries): for table_name in ("polygon", "line"): # Lookup the polygon/line table for both osm_id and # the opposite of osm_id - cursor.execute("""select osm_id, admin_level, way_area + cursor.execute("""select osm_id, admin_level, way_area, + ST_AsGeoJSON(ST_Envelope(ST_Transform(way, + 4326))) AS JsonBBox from planet_osm_%s where osm_id = -%s""" \ % (table_name,entry["osm_id"])) result = tuple(set(cursor.fetchall())) if len(result) == 1: - osm_id, admin_level, way_area = result[0] + osm_id, admin_level, way_area, geojsonbbox = result[0] + bbox = json.loads(geojsonbbox) + minx = str(bbox['coordinates'][0][0][0]) + miny = str(bbox['coordinates'][0][0][1]) + maxx = str(bbox['coordinates'][0][2][0]) + maxy = str(bbox['coordinates'][0][1][1]) entry["ocitysmap_params"] \ = dict(table=table_name, id=osm_id, admin_level=admin_level, - way_area=way_area) + way_area=way_area, minx=minx, miny=miny, + maxx=maxx, maxy=maxy) # Make these first in list, priviledging level 8 entry_rank = (ADMIN_LEVEL_RANKS.get(admin_level,9), -way_area) -- 1.7.1
