def getSpatialCondition self lat1 lng1 lat2 lng2 if lng1 lng2 and lat1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def getSpatialCondition(self, lat1, lng1, lat2, lng2):
if lng1 >= lng2 and lat1 >= lat2:
return """within(coord, PolyFromText("Polygon((
%(lng1)s %(lat1)s,%(lng1)s %(lat2)s,%(lng2)s %(lat2)s,
%(lng2)s %(lat1)s,%(lng1)s %(lat1)s))"))""" %\
{"lat1":lat1,"lng1":lng1,"lat2":lat2,"lng2":lng2}
if lng1 >= lng2 and lat1 < lat2:
return """
within(coord, PolyFromText("Polygon((
%(lng1)s %(lat1)s,%(lng1)s -180,%(lng2)s -180,
%(lng2)s %(lat1)s,%(lng1)s %(lat1)s))")) and
within(coord, PolyFromText("Polygon((
%(lng2)s %(lat2)s,%(lng1)s %(lat2)s,
%(lng1)s 180,%(lng2)s 180,%(lng2)s %(lat2)s))"))""" %\
{"lat1":lat1,"lng1":lng1,"lat2":lat2,"lng2":lng2}
if lng1 < lng2 and lat1 >= lat2:
return """within(coord, PolyFromText("Polygon((
%(lng1)s %(lat1)s,-180 %(lat1)s,
-180 %(lat2)s,%(lng1)s %(lat2)s,%(lng1)s %(lat1)s))")) or
within(coord, PolyFromText("Polygon((
180 %(lat1)s,%(lng2)s %(lat1)s,
%(lng2)s %(lat2)s,180 %(lat2)s,180 %(lat1)s))"))""" %\
{"lat1":lat1,"lng1":lng1,"lat2":lat2,"lng2":lng2}
if lng1 < lng2 and lat1 < lat2:
return """without(coord, PolyFromText("Polygon((
%(lng1)s %(lat1)s,%(lng1)s %(lat2)s,%(lng2)s %(lat2)s,
%(lng2)s %(lat1)s,%(lng1)s %(lat1)s))"))""" %\
{"lat1":lat1,"lng1":lng1,"lat2":lat2,"lng2":lng2}