7 |
|
|
8 |
__version__ = "$Revision$" |
__version__ = "$Revision$" |
9 |
|
|
10 |
|
from math import log, ceil |
11 |
|
|
12 |
import shapelib, shptree |
import shapelib, shptree |
13 |
|
|
14 |
from messages import LAYER_PROJECTION_CHANGED, LAYER_LEGEND_CHANGED, \ |
from messages import LAYER_PROJECTION_CHANGED, LAYER_LEGEND_CHANGED, \ |
140 |
self.numshapes = numshapes |
self.numshapes = numshapes |
141 |
self.shapetype = shapelib_shapetypes[shapetype] |
self.shapetype = shapelib_shapetypes[shapetype] |
142 |
self.bbox = mins[:2] + maxs[:2] |
self.bbox = mins[:2] + maxs[:2] |
143 |
#print "building tree for", self.filename, "..." |
|
144 |
self.shapetree = shptree.SHPTree(self.shapefile.cobject(), 2, 0) |
# estimate a good depth for the quad tree. Each depth |
145 |
#print "done" |
# multiplies the number of nodes by four, therefore we |
146 |
|
# basically take the base 4 logarithm of the number of |
147 |
|
# shapes. |
148 |
|
if self.numshapes < 4: |
149 |
|
maxdepth = 1 |
150 |
|
else: |
151 |
|
maxdepth = int(ceil(log(self.numshapes / 4.0) / log(4))) |
152 |
|
|
153 |
|
self.shapetree = shptree.SHPTree(self.shapefile.cobject(), 2, |
154 |
|
maxdepth) |
155 |
|
|
156 |
def BoundingBox(self): |
def BoundingBox(self): |
157 |
"""Return the bounding box of the layer's shapes in their default |
"""Return the bounding box of the layer's shapes in their default |