maposmatic-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Maposmatic-dev] [PATCH] Do not dplicate code from ocitysmap


From: David Decotigny
Subject: [Maposmatic-dev] [PATCH] Do not dplicate code from ocitysmap
Date: Fri, 11 Sep 2009 23:26:39 +0200

This patch imports one module from ocitysmap to compute the extension of a 
bbox, instead of duplicating the code of the routine. This patch relates to 
patch ocitysmap's 78c067e3ece79d62e87893c6747b6c609571c6bb.
---
 www/maposmatic/views.py |   34 +++++++++++-----------------------
 1 files changed, 11 insertions(+), 23 deletions(-)

diff --git a/www/maposmatic/views.py b/www/maposmatic/views.py
index 9f6e4c0..e2201e0 100644
--- a/www/maposmatic/views.py
+++ b/www/maposmatic/views.py
@@ -38,20 +38,7 @@ import psycopg2
 import www.settings
 import math
 from www.maposmatic.widgets import AreaField
-
-EARTH_RADIUS = 6370986 # meters
-
-# FIXME: we copy the ocitysmap BoundingBox.spheric_sizes() here
-# because importing ocitysmap requires mapnik for the webservice.
-def spheric_sizes(lat1, long1, lat2, long2):
-    """Metric distances at the bounding box top latitude.
-    Returns the tuple (metric_size_lat, metric_size_long)
-    """
-    delta_lat = abs(lat1 - lat2)
-    delta_long = abs(long1 - long2)
-    radius_lat = EARTH_RADIUS * math.cos(math.radians(lat1))
-    return (EARTH_RADIUS * math.radians(delta_lat),
-            radius_lat * math.radians(delta_long))
+from ocitysmap.coords import BoundingBox as OCMBoundingBox
 
 # Test if a given city has its administrative boundaries inside the
 # OpenStreetMap database. We don't go through the Django ORM but
@@ -131,20 +118,21 @@ class MapRenderingJobForm(ModelForm):
                     self._errors[f] = ErrorList([msg])
                     del cleaned_data[f]
 
-            (metric_size_lat, metric_size_long) = \
-                spheric_sizes(cleaned_data.get("lat_upper_left"),
-                              cleaned_data.get("lon_upper_left"),
-                              cleaned_data.get("lat_bottom_right"),
-                              cleaned_data.get("lon_bottom_right"))
+            lat_upper_left = cleaned_data.get("lat_upper_left")
+            lon_upper_left = cleaned_data.get("lon_upper_left")
+            lat_bottom_right = cleaned_data.get("lat_bottom_right")
+            lon_bottom_right = cleaned_data.get("lon_bottom_right")
+
+            boundingbox = OCMBoundingBox(lat_upper_left,
+                                         lon_upper_left,
+                                         lat_bottom_right,
+                                         lon_bottom_right)
+            (metric_size_lat, metric_size_long) = boundingbox.spheric_sizes()
             if metric_size_lat > www.settings.BBOX_MAXIMUM_LENGTH_IN_METERS or 
\
                     metric_size_long > 
www.settings.BBOX_MAXIMUM_LENGTH_IN_METERS:
                 msg = _(u"Bounding Box too big")
                 self._errors['bbox'] = ErrorList([msg])
 
-            lat_upper_left = cleaned_data.get("lat_upper_left")
-            lon_upper_left = cleaned_data.get("lon_upper_left")
-            lat_bottom_right = cleaned_data.get("lat_bottom_right")
-            lon_bottom_right = cleaned_data.get("lon_bottom_right")
             if (lat_upper_left > 51.956 or
                 lon_upper_left < -7.838 or
                 lat_bottom_right < 41.458 or
-- 
1.6.0.4





reply via email to

[Prev in Thread] Current Thread [Next in Thread]