控制网复测平面基准归算程序(包含控制网复测平面基准计算,平面控制网稳定性计算,水准测段高差稳定计算三个程序功能)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GCshow.py 6.5KB

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