def testWrongCorners(self): """ Check what happens if the upper_left and lower_right corner are specified. Postgres ourght to return the upper_right and lower_left anyway. """ upper_right = GeoTypes.pointFromValues(2.0,2.0) lower_left = GeoTypes.pointFromValues(1.0,1.0) upper_left = GeoTypes.pointFromValues(1.0,2.0) lower_right = GeoTypes.pointFromValues(2.0,1.0) b = GeoTypes.boxFromPoints(upper_left,lower_right) self.curs.execute("INSERT INTO %s VALUES (%%(b)s)" % (self.tbl_name,), {'b':b}) self.curs.execute("SELECT b FROM %s" % (self.tbl_name,)) ret = self.curs.fetchall()[0] ol = ret[0] assert ol.__class__.__name__ == "Box" assert ol.getUpperRight() == upper_right assert ol.getLowerLeft() == lower_left assert ol == b, ("Broken box equallity", ol, b)
def testPath(self): p1 = GeoTypes.pointFromValues(1.0,2.0) p2 = GeoTypes.pointFromValues(3.0,4.0) p3 = GeoTypes.pointFromValues(5.0,6.0) polygon = GeoTypes.polygonFromPoints(p1,p2,p3) self.curs.execute("INSERT INTO %s VALUES (%%(p)s)" % (self.tbl_name,), {'p':polygon}) self.curs.execute("SELECT p FROM %s" % (self.tbl_name,)) ret = self.curs.fetchall()[0] op = ret[0] assert op.__class__.__name__ == "Polygon" assert op == polygon
def testLineSeg(self): start = GeoTypes.pointFromValues(1.0,2.0) end = GeoTypes.pointFromValues(3.0,4.0) l = GeoTypes.lineSegFromPoints(start,end) self.curs.execute("INSERT INTO %s VALUES (%%(l)s)" % (self.tbl_name,), {'l':l}) self.curs.execute("SELECT l FROM %s" % (self.tbl_name,)) ret = self.curs.fetchall()[0] ol = ret[0] assert ol.__class__.__name__ == "LineSeg" assert ol.getStart() == start assert ol.getEnd() == end assert ol == l
def testCircle(self): centre = GeoTypes.pointFromValues(1.0,1.0) radius = 5 c = GeoTypes.circleFromCentreAndRadius(centre,radius) self.curs.execute("INSERT INTO %s VALUES (%%(c)s)" % (self.tbl_name,), {'c':c}) self.curs.execute("SELECT c FROM %s" % (self.tbl_name,)) ret = self.curs.fetchall()[0] oc = ret[0] assert oc.__class__.__name__ == "Circle" assert oc.getCentre() == centre assert oc.getRadius() == radius assert oc == c
def testBox(self): upper_right = GeoTypes.pointFromValues(2.0,2.0) lower_left = GeoTypes.pointFromValues(1.0,1.0) b = GeoTypes.boxFromPoints(upper_right,lower_left) self.curs.execute("INSERT INTO %s VALUES (%%(b)s)" % (self.tbl_name,), {'b':b}) self.curs.execute("SELECT b FROM %s" % (self.tbl_name,)) ret = self.curs.fetchall()[0] ol = ret[0] assert ol.__class__.__name__ == "Box" assert ol.getUpperRight() == upper_right, "%s != %s" % (repr(ol.getUpperRight()),repr(upper_right)) assert ol.getLowerLeft() == lower_left assert ol == b
def run2d(self, test_func): p1 = GeoTypes.OGpointFromValues(1.0, 2.0) p2 = GeoTypes.OGpointFromValues(3.0, 4.0) raw = test_func(self, p1, p2) ret = raw[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "OGPoint" assert p4.__class__.__name__ == "OGPoint" assert p3.getX() == 1.0 assert p3.getY() == 2.0 assert p4.getX() == 3.0 assert p4.getY() == 4.0
def run2d(self, test_func): p1 = GeoTypes.OGlineStringFromSequence(((1.0, 2.0), (3.0, 4.0))) p2 = GeoTypes.OGlineStringFromSequence(((5.0, 6.0), (7.0, 8.0))) raw = test_func(self, p1, p2) ret = raw[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "OGLineString" assert p4.__class__.__name__ == "OGLineString" assert p3[0].getX() == 1.0 assert p3[0].getY() == 2.0 assert p3[1].getX() == 3.0 assert p3[1].getY() == 4.0 assert p4[0].getX() == 5.0 assert p4[0].getY() == 6.0
def run2d(self, test_func): p1 = GeoTypes.OGmultiPointFromSequence(((1.0, 2.0), (3.0, 4.0))) p2 = GeoTypes.OGmultiPointFromSequence(((5.0, 6.0), (7.0, 8.0))) raw = test_func(self, p1, p2) ret = raw[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "OGMultiPoint" assert p4.__class__.__name__ == "OGMultiPoint" assert p3[0].getX() == 1.0, "failed p3[0].getX() != %s" % str( p3[0].getX()) assert p3[0].getY() == 2.0 assert p3[1].getX() == 3.0 assert p3[1].getY() == 4.0 assert p4[0].getX() == 5.0 assert p4[0].getY() == 6.0
def testPoint(self): p1 = GeoTypes.pointFromValues(1.0,2.0) p2 = GeoTypes.pointFromValues(3.0,4.0) self.curs.execute("INSERT INTO %s VALUES (%%(p1)s, %%(p2)s)" % (self.tbl_name,), {'p1':p1, 'p2':p2}) self.curs.execute("SELECT p1,p2 FROM %s" % (self.tbl_name,)) ret = self.curs.fetchall()[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "Point" assert p4.__class__.__name__ == "Point" assert p3.getX() == 1.0 assert p3.getY() == 2.0 assert p4.getX() == 3.0 assert p4.getY() == 4.0
def run3d(self, test_func): p1 = GeoTypes.OGmultiPointFromSequence( ((1.0, 2.0, 9.0), (3.0, 4.0, 10.0))) p2 = GeoTypes.OGmultiPointFromSequence( ((5.0, 6.0, 11.0), (7.0, 8.0, 12.0))) raw = test_func(self, p1, p2) ret = raw[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "OGMultiPoint" assert p4.__class__.__name__ == "OGMultiPoint" assert p3[0].getX() == 1.0 assert p3[0].getY() == 2.0 assert p3[0].getZ() == 9.0 assert p4[0].getX() == 5.0 assert p4[0].getY() == 6.0 assert p4[0].getZ() == 11.0
def run2d(self, test_func): p1 = GeoTypes.OGmultiLineStringFromOGLineStrings( GeoTypes.OGlineStringFromSequence(((1.0, 2.0), (3.0, 4.0))), GeoTypes.OGlineStringFromSequence(((5.0, 6.0), (7.0, 8.0)))) p2 = GeoTypes.OGmultiLineStringFromOGLineStrings( GeoTypes.OGlineStringFromSequence(((1.0, 2.0), (3.0, 4.0))), GeoTypes.OGlineStringFromSequence(((5.0, 6.0), (7.0, 8.0)))) raw = test_func(self, p1, p2) ret = raw[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "OGMultiLineString" assert p4.__class__.__name__ == "OGMultiLineString"
def run3d(self, test_func): p1 = GeoTypes.OGgeometryCollectionFromOGGeometries( # A Polygon GeoTypes.OGpolygonFromOGLines( GeoTypes.OGlinearRingFromOGPoints( GeoTypes.OGpointFromValues(1, 2, 3), GeoTypes.OGpointFromValues(2, 2, 3), GeoTypes.OGpointFromValues(2, 1, 3), GeoTypes.OGpointFromValues(1, 2, 3), ), GeoTypes.OGlinearRingFromOGPoints( GeoTypes.OGpointFromValues(1, 2, 3), GeoTypes.OGpointFromValues(2, 2, 3), GeoTypes.OGpointFromValues(2, 1, 3), GeoTypes.OGpointFromValues(1, 2, 3), )), # A Linear Ring GeoTypes.OGlinearRingFromOGPoints( GeoTypes.OGpointFromValues(3, 4, 3), GeoTypes.OGpointFromValues(4, 4, 3), GeoTypes.OGpointFromValues(4, 3, 3), GeoTypes.OGpointFromValues(3, 4, 3), ), ) p2 = p1 raw = test_func(self, p1, p2) ret = raw[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "OGGeometryCollection" assert p4.__class__.__name__ == "OGGeometryCollection"
def run3d(self, test_func): p1 = GeoTypes.OGmultiPolygonFromOGPolygons( GeoTypes.OGpolygonFromOGLines( GeoTypes.OGlinearRingFromOGPoints( GeoTypes.OGpointFromValues(1, 2, 3), GeoTypes.OGpointFromValues(2, 2, 3), GeoTypes.OGpointFromValues(2, 1, 3), GeoTypes.OGpointFromValues(1, 2, 3), ), GeoTypes.OGlinearRingFromOGPoints( GeoTypes.OGpointFromValues(1, 2, 3), GeoTypes.OGpointFromValues(2, 2, 3), GeoTypes.OGpointFromValues(2, 1, 3), GeoTypes.OGpointFromValues(1, 2, 3), )), GeoTypes.OGpolygonFromOGLines( GeoTypes.OGlinearRingFromOGPoints( GeoTypes.OGpointFromValues(3, 4, 3), GeoTypes.OGpointFromValues(4, 4, 3), GeoTypes.OGpointFromValues(4, 3, 3), GeoTypes.OGpointFromValues(3, 4, 3), ), GeoTypes.OGlinearRingFromOGPoints( GeoTypes.OGpointFromValues(3, 4, 3), GeoTypes.OGpointFromValues(4, 4, 3), GeoTypes.OGpointFromValues(4, 3, 3), GeoTypes.OGpointFromValues(3, 4, 3), ))) p2 = p1 raw = test_func(self, p1, p2) ret = raw[0] p3 = ret[0] p4 = ret[1] assert p3.__class__.__name__ == "OGMultiPolygon" assert p4.__class__.__name__ == "OGMultiPolygon"
def __init__(self): self.factory = GeoTypes.OGGeoTypeFactory() self.parser = GeoTypes.HEXEWKBParser(factory)
def setUp(self): self.factory = GeoTypes.OGGeoTypeFactory() self.parser = GeoTypes.HEXEWKBParser(self.factory)