20 |
|
|
21 |
from color import Color |
from color import Color |
22 |
|
|
23 |
from classification import Classification |
import classification |
24 |
|
|
25 |
from table import Table |
from table import Table |
26 |
|
|
109 |
def __init__(self, title, filename, projection = None, |
def __init__(self, title, filename, projection = None, |
110 |
fill = Color.None, |
fill = Color.None, |
111 |
stroke = Color.Black, |
stroke = Color.Black, |
112 |
stroke_width = 1, |
lineWidth = 1, |
113 |
visible = 1): |
visible = 1): |
114 |
"""Initialize the layer. |
"""Initialize the layer. |
115 |
|
|
118 |
projection -- the projection object. Its Inverse method is |
projection -- the projection object. Its Inverse method is |
119 |
assumed to map the layer's coordinates to lat/long |
assumed to map the layer's coordinates to lat/long |
120 |
coordinates |
coordinates |
121 |
fill -- the fill color or None if the shapes are not filled |
fill -- the fill color or Color.None if the shapes are not filled |
122 |
stroke -- the stroke color or None if the shapes are not stroked |
stroke -- the stroke color or Color.None if the shapes are not stroked |
123 |
visible -- boolean. If true the layer is visible. |
visible -- boolean. If true the layer is visible. |
124 |
|
|
125 |
colors are expected to be instances of Color class |
colors are expected to be instances of Color class |
142 |
self.shapetable = Table(filename) |
self.shapetable = Table(filename) |
143 |
self.table = self.shapetable |
self.table = self.shapetable |
144 |
|
|
145 |
self.__classification = Classification(self) |
# |
146 |
self.__classification.SetDefaultStroke(stroke) |
# this is really important so that when the classification class |
147 |
self.__classification.SetDefaultStrokeWidth(stroke_width) |
# tries to set its parent layer the variable will exist |
148 |
|
# |
149 |
|
self.__classification = None |
150 |
|
|
151 |
|
self.SetClassification(classification.Classification(self)) |
152 |
|
self.__classification.SetDefaultLineColor(stroke) |
153 |
|
self.__classification.SetDefaultLineWidth(lineWidth) |
154 |
self.__classification.SetDefaultFill(fill) |
self.__classification.SetDefaultFill(fill) |
155 |
|
|
156 |
self.UnsetModified() |
self.UnsetModified() |
214 |
else: |
else: |
215 |
return None |
return None |
216 |
|
|
217 |
|
def GetFieldType(self, fieldName): |
218 |
|
self.open_shapefile() |
219 |
|
info = self.table.field_info_by_name(fieldName) |
220 |
|
if info is not None: |
221 |
|
return info[0] |
222 |
|
else: |
223 |
|
return None |
224 |
|
|
225 |
def NumShapes(self): |
def NumShapes(self): |
226 |
"""Return the number of shapes in the layer""" |
"""Return the number of shapes in the layer""" |
227 |
self.open_shapefile() |
self.open_shapefile() |
268 |
return self.__classification |
return self.__classification |
269 |
|
|
270 |
def SetClassification(self, clazz): |
def SetClassification(self, clazz): |
271 |
|
|
272 |
|
# prevent infinite recursion when calling SetLayer() |
273 |
|
if clazz == self.__classification: |
274 |
|
return |
275 |
|
|
276 |
self.__classification = clazz |
self.__classification = clazz |
277 |
|
self.__classification.SetLayer(self) |
278 |
self.changed(LAYER_LEGEND_CHANGED, self) |
self.changed(LAYER_LEGEND_CHANGED, self) |
279 |
|
|
280 |
def TreeInfo(self): |
def TreeInfo(self): |