47 |
self.epsg = epsg |
self.epsg = epsg |
48 |
self.params = params |
self.params = params |
49 |
|
|
50 |
def ForwardBBox(self, bbox): |
def _transform_bbox(self, trafo, bbox): |
|
"""Return the bounding box of the corners of the bounding box bbox |
|
|
""" |
|
51 |
# This is not really the correct way to determine the bbox of a |
# This is not really the correct way to determine the bbox of a |
52 |
# projected shape, but for now it works well enough |
# projected bbox, but for now it works well enough |
53 |
llx, lly, urx, ury = bbox |
llx, lly, urx, ury = bbox |
54 |
xs = []; ys = [] |
xs = []; ys = [] |
55 |
x, y = self.Forward(llx, lly) |
for x, y in ((llx, lly), (llx, ury), (urx, lly), (urx, ury)): |
56 |
xs.append(x); ys.append(y) |
x, y = trafo(x, y) |
57 |
x, y = self.Forward(llx, ury) |
xs.append(x); ys.append(y) |
|
xs.append(x); ys.append(y) |
|
|
x, y = self.Forward(urx, ury) |
|
|
xs.append(x); ys.append(y) |
|
|
x, y = self.Forward(urx, lly) |
|
|
xs.append(x); ys.append(y) |
|
|
|
|
58 |
return min(xs), min(ys), max(xs), max(ys) |
return min(xs), min(ys), max(xs), max(ys) |
59 |
|
|
60 |
|
def ForwardBBox(self, bbox): |
61 |
|
"""Return the bounding box of the corners of the bounding box bbox |
62 |
|
""" |
63 |
|
return self._transform_bbox(self.Forward, bbox) |
64 |
|
|
65 |
|
def InverseBBox(self, bbox): |
66 |
|
return self._transform_bbox(self.Inverse, bbox) |
67 |
|
|
68 |
def GetName(self): |
def GetName(self): |
69 |
"""Return the name of the projection.""" |
"""Return the name of the projection.""" |
70 |
return self.name |
return self.name |
104 |
return self.params |
return self.params |
105 |
|
|
106 |
def GetProjectedUnits(self): |
def GetProjectedUnits(self): |
107 |
if self.GetParameter("proj") == "latlong": |
if self.GetParameter("proj") in [ 'latlong', 'longlat' ]: |
108 |
return PROJ_UNITS_DEGREES |
return PROJ_UNITS_DEGREES |
109 |
else: |
else: |
110 |
return PROJ_UNITS_METERS |
return PROJ_UNITS_METERS |