140 |
"""Draw the shape layer layer onto the map. |
"""Draw the shape layer layer onto the map. |
141 |
|
|
142 |
Automatically called by render_map. Iterate through all shapes |
Automatically called by render_map. Iterate through all shapes |
143 |
as indicated by self.layer_ids() and draw them, using low-level |
as indicated by self.layer_shapes() and draw them, using |
144 |
renderers returned by self.low_level_renderer(). |
low-level renderers returned by self.low_level_renderer(). |
145 |
""" |
""" |
146 |
scale = self.scale |
scale = self.scale |
147 |
offx, offy = self.offset |
offx, offy = self.offset |
163 |
useraw, draw_func, draw_func_param = self.low_level_renderer(layer) |
useraw, draw_func, draw_func_param = self.low_level_renderer(layer) |
164 |
|
|
165 |
# Iterate through all shapes that have to be drawn. |
# Iterate through all shapes that have to be drawn. |
166 |
for i in self.layer_ids(layer): |
for shape in self.layer_shapes(layer): |
|
shape = layer.Shape(i) |
|
167 |
|
|
168 |
if field is None: |
if field is None: |
169 |
group = defaultGroup |
group = defaultGroup |
170 |
else: |
else: |
171 |
record = table.ReadRowAsDict(i) |
record = table.ReadRowAsDict(shape.ShapeID()) |
172 |
assert record is not None |
assert record is not None |
173 |
group = lc.FindGroup(record[field]) |
group = lc.FindGroup(record[field]) |
174 |
|
|
190 |
data = shape.Points() |
data = shape.Points() |
191 |
draw_func(draw_func_param, data, pen, brush) |
draw_func(draw_func_param, data, pen, brush) |
192 |
|
|
193 |
def layer_ids(self, layer): |
def layer_shapes(self, layer): |
194 |
"""Return the shape ids of the given layer that have to be drawn. |
"""Return an iterable over the shapes to be drawn from the given layer. |
195 |
|
|
196 |
The default implementation simply returns all ids in the layer. |
The default implementation simply returns all ids in the layer. |
197 |
Override in derived classes to be more precise. |
Override in derived classes to be more precise. |
198 |
""" |
""" |
199 |
return range(layer.NumShapes()) |
return layer.ShapeStore().AllShapes() |
200 |
|
|
201 |
def low_level_renderer(self, layer): |
def low_level_renderer(self, layer): |
202 |
"""Return the low-level renderer for the layer for draw_shape_layer |
"""Return the low-level renderer for the layer for draw_shape_layer |