Fix: Netzausgleichung - NUR 5xxx als Festpunkte, alle anderen werden ausgeglichen
This commit is contained in:
parent
3d6eb10edb
commit
ea4038863a
File diff suppressed because one or more lines are too long
22
main.py
22
main.py
|
|
@ -1387,9 +1387,9 @@ class GeoreferencingTab(QWidget):
|
|||
class NetworkAdjustmentTab(QWidget):
|
||||
"""
|
||||
Tab für Netzausgleichung - KORREKTES KONZEPT:
|
||||
- Festpunkte = Passpunkte (5001, 5002, etc.) - werden NICHT ausgeglichen
|
||||
- Neupunkte = Standpunkte (1001, 1002, etc.) - werden ausgeglichen
|
||||
- Messpunkte = 3000er Serie - werden ausgeglichen
|
||||
- Festpunkte = NUR 5xxx-Passpunkte (5001, 5002, etc.) - werden NICHT ausgeglichen
|
||||
- Neupunkte = ALLE anderen Punkte (Standpunkte, Anschlusspunkte, Messpunkte) - werden AUSGEGLICHEN
|
||||
- Das gesamte Netz wird spannungsfrei ausgeglichen
|
||||
"""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
|
|
@ -1428,10 +1428,10 @@ class NetworkAdjustmentTab(QWidget):
|
|||
points_layout = QVBoxLayout(points_group)
|
||||
|
||||
info_label = QLabel(
|
||||
"💡 KORREKTES KONZEPT:\n"
|
||||
" • Festpunkte (grün): Passpunkte mit bekannten Koordinaten - werden NICHT ausgeglichen\n"
|
||||
" • Neupunkte (blau): Standpunkte des Tachymeters - werden AUSGEGLICHEN\n"
|
||||
" • Messpunkte (gelb): Detailpunkte - werden AUSGEGLICHEN"
|
||||
"💡 KORREKTES KONZEPT (Netzausgleichung):\n"
|
||||
" • Festpunkte (grün): NUR 5xxx-Passpunkte (5001, 5002) - werden NICHT ausgeglichen\n"
|
||||
" • Neupunkte (blau/gelb): ALLE anderen Punkte - werden AUSGEGLICHEN\n"
|
||||
" (inkl. Standpunkte 1xxx, Anschlusspunkte 2xxx/6xxx, Messpunkte 3xxx)"
|
||||
)
|
||||
info_label.setStyleSheet("background-color: #f0f0f0; padding: 10px;")
|
||||
points_layout.addWidget(info_label)
|
||||
|
|
@ -1612,9 +1612,9 @@ class NetworkAdjustmentTab(QWidget):
|
|||
lines.append("=" * 90)
|
||||
lines.append("")
|
||||
lines.append("KONZEPT:")
|
||||
lines.append(" • Festpunkte = Passpunkte mit bekannten Koordinaten (NICHT ausgeglichen)")
|
||||
lines.append(" • Neupunkte = Standpunkte des Tachymeters (AUSGEGLICHEN)")
|
||||
lines.append(" • Messpunkte = Detailpunkte (AUSGEGLICHEN)")
|
||||
lines.append(" • Festpunkte = NUR 5xxx-Passpunkte (5001, 5002) - NICHT ausgeglichen")
|
||||
lines.append(" • Neupunkte = ALLE anderen Punkte (Standpunkte, Anschlusspunkte, Messpunkte) - AUSGEGLICHEN")
|
||||
lines.append(" • Das gesamte Netz wird spannungsfrei ausgeglichen")
|
||||
lines.append("")
|
||||
lines.append("-" * 90)
|
||||
lines.append("STATISTIK")
|
||||
|
|
@ -1644,7 +1644,7 @@ class NetworkAdjustmentTab(QWidget):
|
|||
|
||||
# Neupunkte (ausgeglichen)
|
||||
lines.append("-" * 90)
|
||||
lines.append("NEUPUNKTE (Standpunkte - AUSGEGLICHEN)")
|
||||
lines.append("NEUPUNKTE (inkl. Standpunkte & Anschlusspunkte - AUSGEGLICHEN)")
|
||||
lines.append("-" * 90)
|
||||
lines.append(f"{'Punkt':<12} {'X [m]':>14} {'Y [m]':>14} {'Z [m]':>12} {'σX [mm]':>10} {'σY [mm]':>10} {'σPos [mm]':>10}")
|
||||
lines.append("-" * 90)
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -712,34 +712,41 @@ class JXLParser:
|
|||
|
||||
def get_reference_points(self) -> List[str]:
|
||||
"""
|
||||
Gibt die echten Passpunkte zurück.
|
||||
Das sind Punkte mit bekannten Koordinaten, die zur Orientierung verwendet werden.
|
||||
WICHTIG: Standpunkte (1001, 1002 etc.) sind KEINE Festpunkte!
|
||||
Gibt die absoluten Festpunkte (Passpunkte) zurück.
|
||||
|
||||
Festpunkte sind:
|
||||
- Punkte aus Referenzlinien (5001, 5002)
|
||||
- Punkte mit Method="Coordinates" oder "AzimuthOnly" (und NICHT als Station verwendet)
|
||||
KORREKTE LOGIK:
|
||||
- NUR 5xxx-Serie (5001, 5002, etc.) sind echte Festpunkte
|
||||
- ALLE anderen Punkte (Standpunkte, Anschlusspunkte, Messpunkte) werden ausgeglichen
|
||||
- Auch Punkte die als Anschlusspunkte verwendet werden (2xxx, 6xxx) sind KEINE Festpunkte!
|
||||
|
||||
Festpunkte werden erkannt durch:
|
||||
1. Punktnummer beginnt mit 5 (5xxx Serie)
|
||||
2. ODER Punkte aus Referenzlinien mit Method="Coordinates"
|
||||
"""
|
||||
ref_points = set()
|
||||
|
||||
# Alle Stationsnamen sammeln (diese sind KEINE Festpunkte)
|
||||
station_names = set(s.name for s in self.stations.values() if s.name)
|
||||
|
||||
# Punkte aus Referenzlinien - das sind die echten Passpunkte
|
||||
for line in self.lines.values():
|
||||
if line.start_point and line.start_point not in station_names:
|
||||
ref_points.add(line.start_point)
|
||||
if line.end_point and line.end_point not in station_names:
|
||||
ref_points.add(line.end_point)
|
||||
|
||||
# Punkte mit Method="Coordinates" (aber nicht Stationen)
|
||||
# Methode 1: 5xxx-Serie = absolute Festpunkte
|
||||
for name, point in self.points.items():
|
||||
if name in station_names:
|
||||
continue # Stationen überspringen
|
||||
if point.method == 'Coordinates':
|
||||
ref_points.add(name)
|
||||
elif point.method == 'AzimuthOnly':
|
||||
ref_points.add(name)
|
||||
if point.deleted:
|
||||
continue
|
||||
# Prüfe ob Punktname mit 5 beginnt und eine Nummer ist
|
||||
try:
|
||||
if name.startswith('5') and name.isdigit():
|
||||
ref_points.add(name)
|
||||
except:
|
||||
pass
|
||||
|
||||
# Methode 2: Punkte aus Referenzlinien mit expliziten Koordinaten
|
||||
for line in self.lines.values():
|
||||
if line.start_point:
|
||||
# Prüfe ob es ein 5xxx Punkt ist oder explizit Coordinates hat
|
||||
start_point = self.points.get(line.start_point)
|
||||
if start_point and start_point.method == 'Coordinates':
|
||||
ref_points.add(line.start_point)
|
||||
if line.end_point:
|
||||
end_point = self.points.get(line.end_point)
|
||||
if end_point and end_point.method == 'Coordinates':
|
||||
ref_points.add(line.end_point)
|
||||
|
||||
return list(ref_points)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue