QgsProjectUtils.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # -*- coding: utf-8 -*-
  2. __author__ = 'wanger'
  3. __date__ = '2024-08-27'
  4. __copyright__ = '(C) 2024 by siwei'
  5. __revision__ = '1.0'
  6. # 导入QGIS核心模块
  7. from qgis.core import QgsProject
  8. class QgsProjectUtils:
  9. def __init__(
  10. self,
  11. qgsfile: str
  12. ):
  13. self.project = QgsProject.instance()
  14. self.project.read(qgsfile)
  15. # 读取qgs文件中的图层列表
  16. def getLayersSourceAndSld(self):
  17. absolutepath = self.project.absolutePath()
  18. filename = self.project.baseName()
  19. result = {}
  20. print("absolutepath={};filename={}".format(absolutepath, filename))
  21. # 遍历所有图层名称
  22. for layerid in self.project.mapLayers():
  23. layer = self.project.mapLayer(layerid)
  24. layername = layer.name()
  25. source = layer.source()
  26. obj = {}
  27. if (source.__contains__("dbname")):
  28. obj = self.sourceToDBConfig(source)
  29. else:
  30. obj = self.sourceToFileConfig(source)
  31. # layer生成.sld样式文件
  32. sldpath = '{}\{}_{}.sld'.format(absolutepath, layer.name(), layer.geometryType().name.lower())
  33. layer.saveSldStyle(sldpath)
  34. obj["sld"] = sldpath
  35. result[layername] = obj
  36. return result
  37. #获取qgs模板名称
  38. def getQgsBaseName(self):
  39. return self.project.baseName()
  40. # 将数据库连接字符串转换成object
  41. def sourceToDBConfig(self, source):
  42. result = {
  43. "sourcetype": "db"
  44. }
  45. arr = source.split(" ")
  46. for attr in arr:
  47. if attr.__contains__("="):
  48. cur = attr.split("=")
  49. key = cur[0].replace("'", "")
  50. value = cur[1].replace("'", "").replace("\"", "")
  51. if key == "table":
  52. result[key] = value.split(".")[1]
  53. result["schema"] = value.split(".")[0]
  54. else:
  55. result[key] = value
  56. return result
  57. # 将本地文件连接字符串转换成object
  58. def sourceToFileConfig(self, source):
  59. result = {
  60. "sourcetype": "file",
  61. "path": source
  62. }
  63. return result