def test_transform(self): spot = session.query(Spot).get(1) eq_(session.scalar(functions.wkt(spot.spot_location.transform(2249))), u"POINT(-3890517.610956 3627658.674651)") ok_( session.query(Spot) .filter( sqlite_functions.mbr_contains( functions.buffer(Spot.spot_location.transform(2249), 10), WKTSpatialElement("POINT(-3890517.610956 3627658.674651)", 2249), ) ) .first() is not None ) eq_( session.scalar( functions.wkt( functions.transform( WKTSpatialElement( "POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))", 2249, ), 4326, ) ) ), u"POLYGON((-71.177685 42.39029, -71.177684 42.390383, -71.177584 42.390383, -71.177583 42.390289, -71.177685 42.39029))", )
def test_buffer(self): r = session.query(Road).filter(Road.road_name=='Graeme Ave').one() assert_almost_equal(float(session.scalar(functions.area(r.road_geom.buffer(10.0), diminfo_))), 1094509.76889366) ok_(session.query(Spot).filter(functions.within( 'POINT(-88.5945861592357 42.9480095987261)', Spot.spot_location.buffer(10))).first() is not None) assert_almost_equal(float(session.scalar(functions.area(functions.buffer( 'POINT(-88.5945861592357 42.9480095987261)', diminfo_, 10, 'unit=km arc_tolerance=0.05'), diminfo_))), 312144711.50297302)
def test_buffer(self): r = session.query(Road).filter(Road.road_name == "Graeme Ave").one() assert_almost_equal(session.scalar(functions.area(r.road_geom.buffer(10.0))), 323.99187776147323) ok_( session.query(Spot) .filter(functions.within("POINT(-88.5945861592357 42.9480095987261)", Spot.spot_location.buffer(10))) .first() is not None ) assert_almost_equal( session.scalar(functions.area(functions.buffer("POINT(-88.5945861592357 42.9480095987261)", 10))), 314.12087152405275, )
def test_buffer(self): r = session.query(Road).filter(Road.road_name == 'Graeme Ave').one() assert_almost_equal( session.scalar(functions.area(r.road_geom.buffer(10.0))), 323.99187776147323) ok_( session.query(Spot).filter( functions.within('POINT(-88.5945861592357 42.9480095987261)', Spot.spot_location.buffer(10))).first() is not None) assert_almost_equal( session.scalar( functions.area( functions.buffer( 'POINT(-88.5945861592357 42.9480095987261)', 10))), 314.12087152405275)
def test_buffer(self): r = session.query(Road).filter(Road.road_name == 'Graeme Ave').one() assert_almost_equal( session.scalar(functions.area(r.road_geom.buffer(10.0, 8))), 321.93380659099699) ok_( session.query(Spot).filter( functions.within('POINT(-88.5945861592357 42.9480095987261)', Spot.spot_location.buffer(10))).first() is not None) assert_almost_equal( session.scalar( functions.area( functions.buffer( 'POINT(-88.5945861592357 42.9480095987261)', 10, 2))), 282.84271247461902)
def test_transform(self): spot = session.query(Spot).get(1) eq_(session.scalar(functions.wkt(spot.spot_location.transform(2249))), 'POINT(-3890517.610956 3627658.674651)') ok_( session.query(Spot).filter( sqlite_functions.mbr_contains( functions.buffer(Spot.spot_location.transform(2249), 10), WKTSpatialElement('POINT(-3890517.610956 3627658.674651)', 2249))).first() is not None) eq_( session.scalar( functions.wkt( functions.transform( WKTSpatialElement( 'POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))', 2249), 4326))), 'POLYGON((-71.177685 42.39029, -71.177684 42.390383, -71.177584 42.390383, -71.177583 42.390289, -71.177685 42.39029))' )
def query_from_params(params): """Requête principale de recherche pour avoir les activités et occurences. Params: ``latlon`` requis pour tous les calls (pour la distance). ``bb`` est le bounding box ``radius`` dans une unité inconnue à ce jour """ if not params.get('latlon'): return ValueError("`latlon` parameter required") if 'bb' in params and 'radius' in params: raise ValueError('Invalid input : both `radius` and `bb` were submitted.') db = DBSession() latlon = lat_lon_to_point(params['latlon']) q = Activity._create_query_with_fields(latlon) # By bounding-box if 'bb' in params: q = q.where(Activity.position.within(bb_to_polyon(params['bb']))) # By radius if 'radius' in params: q = q.where(Activity.position.within(functions.buffer(latlon, float(params['radius'])))) # Category if params.get('cat_id'): q = q.where(Activity.category_id == int(params['cat_id'])) # Start datetime if 'start_dt' in params: dt_start = extract_date_time(params['start_dt']) dt_start_is_now = False else: dt_start = datetime.datetime.now() dt_start_is_now = True # End datetime if 'end_dt' in params: dt_end = extract_date_time(params['end_dt']) else: dt_end = dt_start + datetime.timedelta(5) # jours q = q.where(Occurence.dtend <= dt_end) # Get those before they end if dt_start_is_now: in_half_hour = dt_start + datetime.timedelta(0, 1800) res1 = db.execute(q.where(Occurence.dtstart < in_half_hour) \ .where(Occurence.dtend > dt_start) \ .order_by(Occurence.dtend.asc())) else: res1 = [] # Get those before they start res2 = db.execute(q.where(Occurence.dtstart >= dt_start) \ .order_by(Occurence.dtstart) \ .limit(50)) ret1 = [Activity._row_result_to_dict(row, past=True) for row in res1] ret2 = [Activity._row_result_to_dict(row, past=False) for row in res2] return (ret1 + ret2) # maximum renvoyés
def test_buffer(self): r = session.query(Road).filter(Road.road_name=='Graeme Ave').one() assert_almost_equal(session.scalar(functions.area(r.road_geom.buffer(10.0, 8))), 321.93380659099699) ok_(session.query(Spot).filter(functions.within('POINT(-88.5945861592357 42.9480095987261)', Spot.spot_location.buffer(10))).first() is not None) assert_almost_equal(session.scalar(functions.area(functions.buffer('POINT(-88.5945861592357 42.9480095987261)', 10, 2))), 282.84271247461902)