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}