Skip to Content

création automatique d'un fichier style à partir d'un fichier texte délimité

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3.  
  4. """
  5. creastyle.py
  6. permet la création de fichier style (.qml) de Quantum GIS à partir d'un
  7. fichier texte avec des valeurs RGB du type (FORM, R, G, B):
  8. AE,250,125,32
  9. etc.
  10. par Martin Laloux
  11. version du 10/2011 pour le Portail SIG
  12. """
  13.  
  14. from xml.etree import cElementTree as ET
  15. from string import *
  16.  
  17. """ création des élements de la balise qgis"""
  18. intro = ET.Element("qgis")
  19. transp = ET.SubElement(intro,"transparencyLevelInt")
  20. transp.text = '255'
  21. classatr = ET.SubElement(intro, "classificationattribute")
  22. classatr.text= "FORM"
  23. typec = ET.SubElement(intro,"uniquevalue")
  24. classif = ET.SubElement(typec,"classificationfield")
  25. classif.text="FORM"
  26.  
  27.  
  28. class symbol:
  29. """création des éléments de la balise symbole"""
  30. def __init__(self,valeurs=[]):
  31. self.typec= typec
  32. self.valeurs = valeurs
  33. self.cle = ['FORM','R','G','B']
  34. self.donnees = dict(zip(self.cle,self.valeurs))
  35. self.symb = ET.SubElement(typec,"symbol")
  36. self.lower = ET.SubElement(self.symb, "lowervalue")
  37. self.upper = ET.SubElement(self.symb, "uppervalue")
  38. self.outline = ET.SubElement(self.symb,"outlinecolor")
  39. self.outsty = ET.SubElement(self.symb, "outlinestyle")
  40. self.outtail = ET.SubElement(self.symb, "outlinewidth")
  41. self.fillc = ET.SubElement(self.symb,"fillcolor")
  42. self.fillp = ET.SubElement(self.symb,"fillpattern")
  43.  
  44. def creation(self):
  45. self.lower.text = self.donnees['FORM']
  46. self.upper.text = self.donnees['FORM']
  47. self.outsty.text="SolidLine"
  48. self.outtail.text="0.26"
  49. self.outline.set("red",self.donnees['R'])
  50. self.outline.set("green",self.donnees['G'])
  51. self.outline.set("blue",self.donnees['B'])
  52. self.fillc.set("red",self.donnees['R'])
  53. self.fillc.set("green",self.donnees['G'])
  54. self.fillc.set("blue",self.donnees['B'])
  55. self.fillp.text = "SolidPattern"
  56.  
  57.  
  58.  
  59. def traitement():
  60. """traitement du fichier texte et écriture du fichier style"""
  61. # ouverture du fichier texte et remplissage de la balise symbol
  62. fichier = "test.txt"
  63. for elem in [split(line,',') for line in open(fichier,"r")]:
  64. symb = symbol(elem)
  65. symb.creation()
  66.  
  67. # écriture du ficher style final
  68. fich_style = ET.ElementTree(intro)
  69. fich_style.write("monstyle.qml")
  70.  
  71. if __name__ == '__main__':
  72. traitement()