34 |
|
|
35 |
from Thuban.Model.color import Color, Transparent |
from Thuban.Model.color import Color, Transparent |
36 |
|
|
37 |
from mapscript import layerObj, classObj, colorObj, styleObj, rectObj |
from mapscript import layerObj, classObj, colorObj, styleObj, rectObj, symbolObj, \ |
38 |
|
pointObj, lineObj |
39 |
|
|
40 |
|
|
41 |
# ################################### |
# ################################### |
64 |
3:"embed" } |
3:"embed" } |
65 |
# 2 = Default but will not be imported because |
# 2 = Default but will not be imported because |
66 |
# mapscript dont support it and its not allowed |
# mapscript dont support it and its not allowed |
67 |
|
scalebar_status_type = { 0:"OFF", |
68 |
|
1:"ON", |
69 |
|
3:"embed" } |
70 |
|
# 2 = Default but will not be imported because |
71 |
|
# mapscript dont support it and its not allowed |
72 |
|
|
73 |
|
scalebar_style_type = { 0:"0", |
74 |
|
1:"1" } |
75 |
|
|
76 |
|
scalebar_position_type = { 0:"ul", |
77 |
|
1:"lr", |
78 |
|
2:"ur", |
79 |
|
3:"ll", |
80 |
|
6:"uc", |
81 |
|
7:"lc"} |
82 |
|
|
83 |
layer_status_type = { 0:"OFF", |
layer_status_type = { 0:"OFF", |
84 |
1:"ON", |
1:"ON", |
252 |
getPoints(), setStyle() |
getPoints(), setStyle() |
253 |
""" |
""" |
254 |
|
|
255 |
def __init__(self, mf_symbol): |
def __init__(self, mf_symbol = "newone"): |
256 |
print "nothing" |
# create a circle Object like shown in Thuban |
257 |
|
# because Thuban don't support other symbols |
258 |
|
if mf_symbol == "newone": |
259 |
|
mf_symbol = symbolObj("") |
260 |
|
newpoint = pointObj() |
261 |
|
newpoint.x = 1 |
262 |
|
newpoint.y = 1 |
263 |
|
newline = lineObj() |
264 |
|
newline.add(newpoint) |
265 |
|
mf_symbol.setPoints(newline) |
266 |
|
|
267 |
|
self._symbol = mf_symbol |
268 |
|
|
269 |
|
def get_symbolObj(self): |
270 |
|
return self._symbol |
271 |
|
|
272 |
|
def get_name(self): |
273 |
|
return self._symbol.name |
274 |
|
|
275 |
|
def set_name(self, new_name): |
276 |
|
self._symbol.name = new_name |
277 |
|
|
278 |
|
def set_type(self, new_type): |
279 |
|
# TODO include a function to set the type by a string |
280 |
|
self._symbol.type = new_type |
281 |
|
|
282 |
|
def set_filled(self, new_filled): |
283 |
|
if new_filled: |
284 |
|
self._symbol.filled = 1 |
285 |
|
else: |
286 |
|
self._symbol.filled = 0 |
287 |
|
|
288 |
|
|
289 |
|
|
290 |
class MF_SymbolSet: |
class MF_SymbolSet: |
291 |
""" |
""" |
300 |
# create an extra symbol file and not to include it direct to the |
# create an extra symbol file and not to include it direct to the |
301 |
# mapfile itself |
# mapfile itself |
302 |
def __init__(self, mf_symbolset): |
def __init__(self, mf_symbolset): |
303 |
print "nothing" |
self._symbolset = mf_symbolset |
304 |
|
|
305 |
|
# Initial Symbol List |
306 |
|
self._symbols = [] |
307 |
|
self._numsymbols = self._symbolset.numsymbols |
308 |
|
self._i = 1 |
309 |
|
while self._i < self._numsymbols: |
310 |
|
self._symbols.append(MF_Symbol(self._symbolset.getSymbol(self._i))) |
311 |
|
self._i += 1 |
312 |
|
|
313 |
|
# POINT |
314 |
|
# 1 1 |
315 |
|
# END |
316 |
|
|
317 |
|
def add_symbol(self, new_symbol): |
318 |
|
self._symbolset.appendSymbol(new_symbol.get_symbolObj()) |
319 |
|
self._symbols.append(new_symbol) |
320 |
|
# the save function must be run to set the symbols to the |
321 |
|
# mapfile. I don't know why this ist so but it must be. |
322 |
|
self._symbolset.save("tempsymbol") |
323 |
|
os.remove("tempsymbol") |
324 |
|
|
325 |
|
def get_symbol(self, symbolnr): |
326 |
|
if symbolnr < self._numsymbols: |
327 |
|
return self._symbols[symbolnr-1] |
328 |
|
else: |
329 |
|
return None |
330 |
|
|
331 |
class MF_Class: |
class MF_Class: |
332 |
""" |
""" |
391 |
self._clazz.setExpression(newstring) |
self._clazz.setExpression(newstring) |
392 |
self._expression = self._clazz.getExpressionString() |
self._expression = self._clazz.getExpressionString() |
393 |
|
|
394 |
|
def get_status(self): |
395 |
|
if self._clazz.status == 1: |
396 |
|
return True |
397 |
|
else: |
398 |
|
return False |
399 |
|
|
400 |
|
def set_status(self, new_status): |
401 |
|
if new_status: |
402 |
|
self._clazz.status = 1 |
403 |
|
else: |
404 |
|
self._clazz.status = 0 |
405 |
|
|
406 |
def add_thubanstyle(self, tb_style, type="default"): |
def add_thubanstyle(self, tb_style, type="default"): |
407 |
""" |
""" |
408 |
added a thuban style object to the mapobject |
added a thuban style object to the mapobject |
426 |
new_styleobj.set_color(tb_style.GetFill()) |
new_styleobj.set_color(tb_style.GetFill()) |
427 |
|
|
428 |
|
|
429 |
|
|
430 |
class MF_Layer: |
class MF_Layer: |
431 |
""" |
""" |
432 |
The following parameters and functions, which the mapscript style obj |
The following parameters and functions, which the mapscript style obj |
581 |
new_class.set_expressionstring('/./') |
new_class.set_expressionstring('/./') |
582 |
else: |
else: |
583 |
new_class.set_expressionstring(str(tb_class.GetValue())) |
new_class.set_expressionstring(str(tb_class.GetValue())) |
584 |
|
new_class.set_status(tb_class.IsVisible()) |
585 |
self._classes.append(new_class) |
self._classes.append(new_class) |
586 |
|
|
587 |
|
class MF_Scalebar: |
588 |
|
""" |
589 |
|
The following settings are (not) used: |
590 |
|
imagecolor, height, width, style, intervals, label, color, backgroundcolor, |
591 |
|
outlinecolor, units, status, position, postlabelcache |
592 |
|
""" |
593 |
|
def __init__(self, mf_scalebar): |
594 |
|
self._scalebar = mf_scalebar |
595 |
|
self._color = MF_Color(self._scalebar.color) |
596 |
|
self._imagecolor = MF_Color(self._scalebar.imagecolor) |
597 |
|
self._label = MF_Label(self._scalebar.label) |
598 |
|
|
599 |
|
def get_label(self): |
600 |
|
return self._label |
601 |
|
|
602 |
|
def get_color(self): |
603 |
|
return self._color |
604 |
|
|
605 |
|
def get_imagecolor(self): |
606 |
|
return self._imagecolor |
607 |
|
|
608 |
|
def get_style(self): |
609 |
|
return self._scalebar.style |
610 |
|
|
611 |
|
def set_style(self, new_style): |
612 |
|
self._scalebar.style = new_style |
613 |
|
|
614 |
|
def get_size(self): |
615 |
|
#returns the size |
616 |
|
return (self._scalebar.width, self._scalebar.height) |
617 |
|
|
618 |
|
def set_size(self, new_width, new_height): |
619 |
|
self._scalebar.width = new_width |
620 |
|
self._scalebar.height = new_height |
621 |
|
|
622 |
|
def get_intervals(self): |
623 |
|
return self._scalebar.intervals |
624 |
|
|
625 |
|
def set_intervals(self, new_intervals): |
626 |
|
self._scalebar.intervals = new_intervals |
627 |
|
|
628 |
|
def get_units(self): |
629 |
|
#returns the unittype |
630 |
|
return unit_type[self._scalebar.units] |
631 |
|
|
632 |
|
def set_units(self, units): |
633 |
|
if unit_type.has_key(units): |
634 |
|
self._scalebar.units = units |
635 |
|
else: |
636 |
|
for unit_paar_nr in unit_type: |
637 |
|
if unit_type[unit_paar_nr] == units: |
638 |
|
self._scalebar.units = unit_paar_nr |
639 |
|
|
640 |
|
def get_status(self, art="integer"): |
641 |
|
if art == "string": |
642 |
|
return scalebar_status_type[self._scalebar.status] |
643 |
|
else: |
644 |
|
return self._scalebar.status |
645 |
|
|
646 |
|
def set_status(self, new_status): |
647 |
|
if scalebar_status_type.has_key(new_status): |
648 |
|
self._scalebar.status = new_status |
649 |
|
else: |
650 |
|
for scalebar_status_type_nr in scalebar_status_type: |
651 |
|
if scalebar_status_type[scalebar_status_type_nr] == new_status: |
652 |
|
self._scalebar.status = scalebar_status_type_nr |
653 |
|
|
654 |
|
def get_position(self, art="integer"): |
655 |
|
if art == "string": |
656 |
|
return scalebar_position_type[self._scalebar.position] |
657 |
|
else: |
658 |
|
return self._scalebar.position |
659 |
|
|
660 |
|
def set_position(self, new_position): |
661 |
|
if scalebar_position_type.has_key(new_position): |
662 |
|
self._scalebar.position = new_position |
663 |
|
else: |
664 |
|
for scalebar_position_type_nr in legend_position_type: |
665 |
|
if scalebar_position_type[scalebar_position_type_nr] == new_position: |
666 |
|
self._scalebar.position = scalebar_position_type_nr |
667 |
|
|
668 |
class MF_Map: |
class MF_Map: |
669 |
""" |
""" |
705 |
self._imagecolor = MF_Color(self._mf_map.imagecolor) |
self._imagecolor = MF_Color(self._mf_map.imagecolor) |
706 |
self._web = MF_Web(self._mf_map.web) |
self._web = MF_Web(self._mf_map.web) |
707 |
self._legend = MF_Legend(self._mf_map.legend) |
self._legend = MF_Legend(self._mf_map.legend) |
708 |
|
self._scalebar = MF_Scalebar(self._mf_map.scalebar) |
709 |
|
|
710 |
|
# symbols |
711 |
|
self._symbolset = MF_SymbolSet(self._mf_map.symbolset) |
712 |
|
|
713 |
# if the map name is not set it will return a MS string. |
# if the map name is not set it will return a MS string. |
714 |
if self._mf_map.name != "MS": |
if self._mf_map.name != "MS": |
744 |
self._metadata.add_metadata(self._metafkey,self._metakeydata) |
self._metadata.add_metadata(self._metafkey,self._metakeydata) |
745 |
self._metafkey = self._mf_map.getNextMetaDataKey(self._metafkey) |
self._metafkey = self._mf_map.getNextMetaDataKey(self._metafkey) |
746 |
|
|
747 |
|
def get_symbolset(self): |
748 |
|
return self._symbolset |
749 |
|
|
750 |
def get_status(self): |
def get_status(self): |
751 |
if layer_status_type[self._mf_map.status] == "OFF": |
if layer_status_type[self._mf_map.status] == "OFF": |
752 |
return false |
return false |
753 |
else: |
else: |
754 |
return true |
return true |
755 |
|
|
756 |
|
def get_scalebar(self): |
757 |
|
return self._scalebar |
758 |
|
|
759 |
def get_web(self): |
def get_web(self): |
760 |
return self._web |
return self._web |
761 |
|
|
836 |
Add a thuban layer |
Add a thuban layer |
837 |
""" |
""" |
838 |
new_layer = MF_Layer(layerObj(self._mf_map)) |
new_layer = MF_Layer(layerObj(self._mf_map)) |
839 |
new_layer.set_name(tb_layer.Title()) |
new_layer.set_name(tb_layer.Title()) |
840 |
|
|
841 |
# TODO: implement relative pathnames |
# TODO: implement relative pathnames |
842 |
# yet only absolute pathnames in the LayerObj are set |
# yet only absolute pathnames in the LayerObj are set |
845 |
except: |
except: |
846 |
new_layer.set_data(tb_layer.GetImageFilename(), type="raster") |
new_layer.set_data(tb_layer.GetImageFilename(), type="raster") |
847 |
new_layer.set_type("raster") |
new_layer.set_type("raster") |
848 |
|
new_layer.set_status(tb_layer.Visible()) |
849 |
else: |
else: |
850 |
new_layer.set_status(tb_layer.Visible()) |
new_layer.set_status(tb_layer.Visible()) |
851 |
new_layer.set_type(tb_layer.ShapeType()) |
new_layer.set_type(tb_layer.ShapeType()) |
947 |
def get_color(self): |
def get_color(self): |
948 |
return self._color |
return self._color |
949 |
|
|
950 |
|
def get_partials(self): |
951 |
|
if self._label.partials == 1: |
952 |
|
return True |
953 |
|
else: |
954 |
|
return False |
955 |
|
|
956 |
|
def set_partials(self, new_partials): |
957 |
|
# if partials = True |
958 |
|
if new_partials: |
959 |
|
self._label.partials = 1 |
960 |
|
elif new_partials == False: |
961 |
|
self._label.partials = 0 |
962 |
|
else: |
963 |
|
print "Boolean exspected" |
964 |
|
|
965 |
def get_type(self): |
def get_type(self): |
966 |
return label_font_type[self._label.type] |
return label_font_type[self._label.type] |
967 |
|
|
1046 |
if legend_position_type[legend_position_type_nr] == new_position: |
if legend_position_type[legend_position_type_nr] == new_position: |
1047 |
self._mf_legend.position = legend_position_type_nr |
self._mf_legend.position = legend_position_type_nr |
1048 |
|
|
|
|
|
1049 |
class MF_Projection: |
class MF_Projection: |
1050 |
""" |
""" |
1051 |
The following parameter, which the mapscript style obj contains is used: |
The following parameter, which the mapscript style obj contains is used: |