X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wrfeed.git/blobdiff_plain/c9813310fa67d77b9996c21eb2cca4841513e8a4..888330ce77e064b6ba0d7d5811f41ae303552985:/wrfeed/controllers/berichte.py diff --git a/wrfeed/controllers/berichte.py b/wrfeed/controllers/berichte.py index 74b7d23..878a83c 100644 --- a/wrfeed/controllers/berichte.py +++ b/wrfeed/controllers/berichte.py @@ -17,6 +17,7 @@ import datetime from xml.etree.ElementTree import Element, SubElement, tostring from sqlalchemy.engine import create_engine +from osgeo import ogr import logging @@ -68,9 +69,13 @@ def create_feed(page_title=None, page_ids=None, region_name=None): raise webob.exc.HTTPNotFound() assert subresult.rowcount == 1 row = subresult.fetchone() + # (2) now we have the border border_wkb = row['border_wkb'] # border as WKB where += ' and contains(geomfromwkb(%s), point(position_longitude, position_latitude))' params += [border_wkb] + # the following variables are needed for the additional filtering below + border = ogr.CreateGeometryFromWkb(border_wkb) + point = ogr.Geometry(ogr.wkbPoint) else: # user wants to have all reports pass @@ -95,6 +100,15 @@ def create_feed(page_title=None, page_ids=None, region_name=None): last_updated = None for row in result: page_id, page_title, report_id, date_report, date_entry, condition, description, author_name, author_userid, author_username, lon, lat = row + + if not region_name is None: + # mysql 5.5 doesn't have specification conform geospacial functions. + # http://dev.mysql.com/doc/refman/5.5/en/functions-for-testing-spatial-relations-between-geometric-objects.html + # therefore we have to do further filtering here. + point.SetPoint(0, lon, lat) + if not point.Within(border): + continue + page_title_url = page_title.replace(u' ', u'_') entry = SubElement(feed, "entry") entry_title = SubElement(entry, "title")