控制网复测平面基准归算程序(包含控制网复测平面基准计算,平面控制网稳定性计算,水准测段高差稳定计算三个程序功能)
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

GCshow.py 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import sqlite3
  2. from PySide6.QtGui import QStandardItemModel, QStandardItem
  3. from PySide6.QtCore import QItemSelectionModel
  4. def main_function(ui, db_path, utf_en):
  5. # 确保 utf_en 是字节字符串
  6. if not isinstance(utf_en, bytes):
  7. utf_en = utf_en.encode('utf-8')
  8. # 设置 QTabWidget 的可见性和标签文本
  9. tabs_to_show = [(0, '水准测段高差计算成果表')]
  10. for index in range(ui.tabWidget.count()):
  11. visible = index in [t[0] for t in tabs_to_show]
  12. ui.tabWidget.setTabVisible(index, visible)
  13. for index, text in tabs_to_show:
  14. ui.tabWidget.setTabText(index, text)
  15. # 连接到数据库并执行查询
  16. db1 = sqlite3.connect(db_path)
  17. db1.text_factory = lambda x: str(x, 'utf-8')
  18. cursor1 = db1.cursor()
  19. # 查询 GC_Output_Point 表中的 TableName 字段
  20. query_table_names = "SELECT DISTINCT TableName FROM GC_Output_Point"
  21. cursor1.execute(query_table_names)
  22. query = """
  23. SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_HDiff, New_RLen, Correct_Factor, Period_Diff, Dis_Ass
  24. FROM GC_Output_Point
  25. WHERE TableName = ?
  26. """
  27. cursor1.execute(query, (utf_en,))
  28. result = cursor1.fetchall()
  29. cursor1.close()
  30. db1.close()
  31. # 创建 QStandardItemModel 实例
  32. model = QStandardItemModel()
  33. model.setColumnCount(len(result[0]))
  34. # 设置表头
  35. headers = ['序号', '结果期数', '起点', '终点', '高差', '路线长', '修正数', '期间差异', '变形判定']
  36. model.setHorizontalHeaderLabels(headers)
  37. for row_data in result:
  38. items = []
  39. for i, item in enumerate(row_data):
  40. if i == 4 or i == 5: # 索引4(高差)
  41. item = f"{item:.6f}" # 格式化为6位小数
  42. elif i == 6: # 索引 6(修正数)
  43. item = f"{item:.2f}"
  44. elif i == 7: # 假设 Period_Diff 在索引 7
  45. if item is not None and isinstance(item, (int, float)):
  46. item = f"{item:.2f}" # 格式化为2位小数
  47. else:
  48. item = "" # 如果是 None 或非数字类型,显示空字符串
  49. elif i == 8: # 假设 Dis_Ass 在索引 8
  50. if item is not None and isinstance(item, str):
  51. item = item # 显示字符串内容
  52. else:
  53. item = "" # 如果是 None,显示空字符串
  54. items.append(QStandardItem(str(item)))
  55. model.appendRow(items)
  56. # 设置并展示表格
  57. ui.resultTableView.setModel(model)
  58. ui.resultTableView.show()
  59. # 隐藏 QLabel
  60. ui.default_remind.hide()
  61. def search_show_function(ui, db_path, utf_en):
  62. # 确保 utf_en 是字节字符串
  63. if not isinstance(utf_en, bytes):
  64. utf_en = utf_en.encode('utf-8')
  65. tabs_to_show = [(0, '输入数据'), (1, '水准测段高差计算成果表')]
  66. for index in range(ui.View.count()):
  67. visible = index in [t[0] for t in tabs_to_show]
  68. ui.View.setTabVisible(index, visible)
  69. for index, text in tabs_to_show:
  70. ui.View.setTabText(index, text)
  71. # 连接到数据库并执行查询
  72. db1 = sqlite3.connect(db_path)
  73. db1.text_factory = lambda x: str(x, 'utf-8')
  74. cursor1 = db1.cursor()
  75. # 查询 GC_Input_Point 表中的数据
  76. input_query = """
  77. SELECT New_ID, Last_ResultName, Last_SPName, Last_EPName,Last_HDiff,Last_RLen, New_ResultName, New_SPName, New_EPName,New_HDiff, New_RLen
  78. FROM GC_Input_Point
  79. WHERE TableName = ?
  80. """
  81. cursor1.execute(input_query, (utf_en,))
  82. input_result = cursor1.fetchall()
  83. # 创建 QStandardItemModel 实例
  84. input_model = QStandardItemModel()
  85. input_model.setColumnCount(len(input_result[0]))
  86. # 设置表头
  87. input_headers = ['序号', '上期成果名', '上期测段起点', '上期测段终点', '上期高差', '上期路线长', '本期成果名',
  88. '本期测段起点', '本期测段终点',
  89. '本期高差', '本期路线长']
  90. input_model.setHorizontalHeaderLabels(input_headers)
  91. for row_data in input_result:
  92. items = []
  93. for i, item in enumerate(row_data):
  94. if item is None:
  95. item = "" # 如果是 None,显示空字符串
  96. else:
  97. if i in [4, 5, 10, 11]: # 索引4,5,10,11(高差和路线长)
  98. item = f"{item:.6f}" # 格式化为6位小数
  99. items.append(QStandardItem(str(item)))
  100. input_model.appendRow(items)
  101. # 设置并展示输入数据表格
  102. ui.View.setTabText(0, '输入数据')
  103. ui.resultTableView1.setModel(input_model)
  104. ui.resultTableView1.show()
  105. # 隐藏 QLabel
  106. ui.default_remind1.hide()
  107. # 查询 GC_Output_Point 表中的数据
  108. output_query = """
  109. SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_HDiff, New_RLen, Correct_Factor, Period_Diff, Dis_Ass
  110. FROM GC_Output_Point
  111. WHERE TableName = ?
  112. """
  113. cursor1.execute(output_query, (utf_en,))
  114. output_result = cursor1.fetchall()
  115. # 创建 QStandardItemModel 实例
  116. output_model = QStandardItemModel()
  117. output_model.setColumnCount(len(output_result[0]))
  118. # 设置表头
  119. output_headers = ['序号', '结果期数', '起点', '终点', '高差', '路线长', '修正数', '期间差异', '变形判定']
  120. output_model.setHorizontalHeaderLabels(output_headers)
  121. for row_data in output_result:
  122. items = []
  123. for i, item in enumerate(row_data):
  124. if i == 4 or i == 5: # 索引4(高差)和索引5(路线长)
  125. item = f"{item:.6f}" # 格式化为6位小数
  126. elif i == 6: # 索引 6(修正数)
  127. item = f"{item:.2f}"
  128. elif i == 7: # 假设 Period_Diff 在索引 7
  129. if item is not None and isinstance(item, (int, float)):
  130. item = f"{item:.2f}" # 格式化为2位小数
  131. else:
  132. item = "" # 如果是 None 或非数字类型,显示空字符串
  133. elif i == 8: # 假设 Dis_Ass 在索引 8
  134. if item is not None and isinstance(item, str):
  135. item = item # 显示字符串内容
  136. else:
  137. item = "" # 如果是 None,显示空字符串
  138. items.append(QStandardItem(str(item)))
  139. output_model.appendRow(items)
  140. # 设置并展示输出数据表格
  141. ui.View.setTabText(1, '水准测段高差计算成果表')
  142. ui.reconTableView1.setModel(output_model)
  143. ui.reconTableView1.show()
  144. # 返回一个选择模型
  145. selectionModel = QItemSelectionModel(input_model) # Item选择模型
  146. ui.resultTableView1.setSelectionModel(selectionModel)
  147. return selectionModel
  148. # 关闭数据库连接
  149. cursor1.close()
  150. db1.close()
  151. # 隐藏 QLabel
  152. ui.default_remind1.hide()