Version 3.0: Überarbeitung mit Berechnungsprotokoll, Datenfluss, korrektem Netzausgleichungskonzept

Änderungen:
1. JXL-Analyse:
   - TreeView zeigt Stationen mit allen Messungen korrekt an
   - Hz, V, Distanz, Prismenkonstante werden angezeigt
   - Anschlussmessungen separat markiert
   - Neues Berechnungsprotokoll mit Export (TXT/PDF)

2. Georeferenzierung:
   - Automatische Punktzuordnung über Tripel-Analyse
   - Button 'Automatische Zuordnung' hinzugefügt
   - Option für ausgeglichene Punkte

3. COR Generator:
   - Nur ComputedGrid-Methode (korrekte Werte)
   - Option für ausgeglichene Punkte

4. Datenfluss zwischen Modulen:
   - Globaler Speicher (AdjustedPointsStore)
   - Button 'Ausgeglichene Punkte übernehmen'
   - Status-Anzeige in GUI

5. Netzausgleichung:
   - KORREKTES KONZEPT implementiert:
     * Festpunkte = Passpunkte (5001, 5002)
     * Neupunkte = Standpunkte (werden ausgeglichen)
     * Messpunkte = Detailpunkte (werden ausgeglichen)
   - Klare Unterscheidung in GUI

6. Tests mit Beispieldatei bestanden:
   - 84/84 Punkte stimmen mit COR-Referenz überein
This commit is contained in:
Developer 2026-01-18 20:59:22 +00:00
parent 05a40b12a0
commit 3d6eb10edb
6 changed files with 2083 additions and 418 deletions

File diff suppressed because one or more lines are too long

1087
main.py

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
"""
JXL Parser Module - Trimble JXL-Datei Parser
Liest und analysiert Trimble JXL-Dateien (XML-basiert)
Version 3.0 - Überarbeitet für korrekte Stationierungserkennung
"""
import xml.etree.ElementTree as ET
@ -66,6 +67,10 @@ class Station:
# Orientierung
orientation_correction: Optional[float] = None
# Anzahl Messungen
num_backsight_measurements: int = 0
num_backsight_points: int = 0
record_id: str = ""
timestamp: str = ""
@ -77,6 +82,7 @@ class Target:
prism_constant: float = 0.0
target_height: float = 0.0
record_id: str = ""
timestamp: str = ""
@dataclass
@ -124,6 +130,47 @@ class Line:
start_station: float = 0.0
@dataclass
class Measurement:
"""Detaillierte Messung mit allen Rohdaten"""
point_name: str
station_id: str
station_name: str
target_id: str
# Rohdaten
horizontal_circle: Optional[float] = None
vertical_circle: Optional[float] = None
edm_distance: Optional[float] = None
face: str = "Face1"
# Berechnete Koordinaten
north: Optional[float] = None
east: Optional[float] = None
elevation: Optional[float] = None
# Prismenkonstante
prism_constant: float = 0.0
prism_type: str = ""
target_height: float = 0.0
# Klassifikation
classification: str = "" # BackSight, Normal
deleted: bool = False
# Standardabweichungen
hz_std_error: Optional[float] = None
vz_std_error: Optional[float] = None
dist_std_error: Optional[float] = None
# Atmosphäre
pressure: Optional[float] = None
temperature: Optional[float] = None
timestamp: str = ""
record_id: str = ""
class JXLParser:
"""Parser für Trimble JXL-Dateien"""
@ -146,6 +193,12 @@ class JXLParser:
# Alle Messungen (auch gelöschte)
self.all_point_records: List[Point] = []
# Detaillierte Messungen für Protokoll
self.measurements: List[Measurement] = []
# Station zu Messungen Mapping
self.station_measurements: Dict[str, List[Measurement]] = {}
self.raw_xml = None
self.file_path: str = ""
@ -171,10 +224,15 @@ class JXLParser:
# Stationskoordinaten aus Punkten zuweisen
self._assign_station_coordinates()
# Detaillierte Messungen erstellen
self._create_detailed_measurements()
return True
except Exception as e:
print(f"Fehler beim Parsen: {e}")
import traceback
traceback.print_exc()
return False
def _parse_element(self, element):
@ -192,7 +250,7 @@ class JXLParser:
elif tag == 'StationRecord':
self._parse_station(element, record_id, timestamp)
elif tag == 'TargetRecord':
self._parse_target(element, record_id)
self._parse_target(element, record_id, timestamp)
elif tag == 'BackBearingRecord':
self._parse_backbearing(element, record_id)
elif tag == 'InstrumentRecord':
@ -385,12 +443,21 @@ class JXLParser:
if ori_elem is not None and ori_elem.text:
station.orientation_correction = float(ori_elem.text)
num_bs_meas = element.find('NumberOfBacksightMeasurements')
if num_bs_meas is not None and num_bs_meas.text:
station.num_backsight_measurements = int(num_bs_meas.text)
num_bs_pts = element.find('NumberOfBacksightPoints')
if num_bs_pts is not None and num_bs_pts.text:
station.num_backsight_points = int(num_bs_pts.text)
self.stations[record_id] = station
def _parse_target(self, element, record_id: str):
def _parse_target(self, element, record_id: str, timestamp: str = ""):
"""Parst ein Target/Prisma"""
target = Target()
target.record_id = record_id
target.timestamp = timestamp
type_elem = element.find('PrismType')
if type_elem is not None and type_elem.text:
@ -531,6 +598,58 @@ class JXLParser:
station.east = point.east
station.elevation = point.elevation
def _create_detailed_measurements(self):
"""Erstellt detaillierte Messungen für das Berechnungsprotokoll"""
self.measurements = []
self.station_measurements = {}
for point in self.all_point_records:
if not point.station_id:
continue
# Station finden
station = self.stations.get(point.station_id)
station_name = station.name if station else "?"
# Target/Prismenkonstante finden
target = self.targets.get(point.target_id)
prism_const = target.prism_constant if target else 0.0
prism_type = target.prism_type if target else ""
target_height = target.target_height if target else 0.0
meas = Measurement(
point_name=point.name,
station_id=point.station_id,
station_name=station_name,
target_id=point.target_id,
horizontal_circle=point.horizontal_circle,
vertical_circle=point.vertical_circle,
edm_distance=point.edm_distance,
face=point.face,
north=point.north,
east=point.east,
elevation=point.elevation,
prism_constant=prism_const,
prism_type=prism_type,
target_height=target_height,
classification=point.classification,
deleted=point.deleted,
hz_std_error=point.hz_std_error,
vz_std_error=point.vz_std_error,
dist_std_error=point.dist_std_error,
pressure=point.pressure,
temperature=point.temperature,
timestamp=point.timestamp,
record_id=point.record_id
)
self.measurements.append(meas)
# Station-Mapping
if point.station_id not in self.station_measurements:
self.station_measurements[point.station_id] = []
self.station_measurements[point.station_id].append(meas)
def get_active_points(self) -> Dict[str, Point]:
"""Gibt nur aktive (nicht gelöschte) Punkte zurück"""
return {name: p for name, p in self.points.items() if not p.deleted}
@ -549,10 +668,25 @@ class JXLParser:
return [p for p in self.all_point_records
if p.station_id == station_id and not p.deleted]
def get_detailed_measurements_from_station(self, station_id: str) -> List[Measurement]:
"""Gibt detaillierte Messungen von einer Station zurück"""
return self.station_measurements.get(station_id, [])
def get_prism_constants(self) -> Dict[str, float]:
"""Gibt alle verwendeten Prismenkonstanten zurück"""
return {tid: t.prism_constant for tid, t in self.targets.items()}
def get_unique_prism_types(self) -> List[Tuple[str, str, float]]:
"""Gibt eindeutige Prismentypen mit Konstanten zurück: (ID, Type, Constant)"""
seen = set()
result = []
for tid, target in self.targets.items():
key = (target.prism_type, target.prism_constant)
if key not in seen:
seen.add(key)
result.append((tid, target.prism_type, target.prism_constant))
return result
def modify_prism_constant(self, target_id: str, new_constant: float):
"""Ändert die Prismenkonstante für ein Target"""
if target_id in self.targets:
@ -576,6 +710,62 @@ class JXLParser:
return list(self.lines.values())[0]
return None
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!
Festpunkte sind:
- Punkte aus Referenzlinien (5001, 5002)
- Punkte mit Method="Coordinates" oder "AzimuthOnly" (und NICHT als Station verwendet)
"""
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)
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)
return list(ref_points)
def get_station_points(self) -> List[str]:
"""
Gibt Standpunkte zurück (1000er, 2000er Serie, etc.)
Das sind Punkte, an denen das Instrument aufgestellt wurde.
Gibt eindeutige Namen zurück.
"""
return list(set(station.name for station in self.stations.values() if station.name))
def get_measurement_points(self) -> List[str]:
"""
Gibt reine Messpunkte zurück (3000er Serie, etc.)
Das sind Punkte, die weder Passpunkte noch Standpunkte sind.
"""
ref_points = set(self.get_reference_points())
station_points = set(self.get_station_points())
measurement_points = []
for name, point in self.get_active_points().items():
if name not in ref_points and name not in station_points:
measurement_points.append(name)
return measurement_points
def gon_to_rad(self, gon: float) -> float:
"""Konvertiert Gon zu Radiant"""
return gon * math.pi / 200.0
@ -592,24 +782,167 @@ class JXLParser:
summary.append(f"Zone: {self.zone_name}")
summary.append(f"Datum: {self.datum_name}")
summary.append(f"Winkeleinheit: {self.angle_units}")
summary.append(f"")
summary.append("")
summary.append(f"Anzahl Punkte (aktiv): {len(self.get_active_points())}")
summary.append(f"Anzahl Stationen: {len(self.stations)}")
summary.append(f"Anzahl Messungen gesamt: {len(self.all_point_records)}")
summary.append(f"Anzahl Targets/Prismen: {len(self.targets)}")
summary.append(f"Anzahl Referenzlinien: {len(self.lines)}")
# Stationsübersicht
summary.append(f"\nStationen:")
for sid, station in self.stations.items():
summary.append(f" - {station.name}: {station.station_type}")
return "\n".join(summary)
def get_calculation_protocol(self) -> str:
"""
Erstellt ein detailliertes Berechnungsprotokoll mit allen Rohdaten
"""
lines = []
lines.append("=" * 80)
lines.append("BERECHNUNGSPROTOKOLL")
lines.append("=" * 80)
lines.append(f"Job: {self.job_name}")
lines.append(f"Datei: {self.file_path}")
lines.append("")
# Koordinatensystem
lines.append("-" * 80)
lines.append("KOORDINATENSYSTEM")
lines.append("-" * 80)
lines.append(f"System: {self.coordinate_system}")
lines.append(f"Zone: {self.zone_name}")
lines.append(f"Datum: {self.datum_name}")
lines.append(f"Winkeleinheit: {self.angle_units}")
lines.append(f"Distanzeinheit: {self.distance_units}")
lines.append("")
# Instrumente
lines.append("-" * 80)
lines.append("INSTRUMENTE")
lines.append("-" * 80)
for inst_id, inst in self.instruments.items():
if inst.model:
lines.append(f" {inst.model} (SN: {inst.serial})")
lines.append(f" Typ: {inst.instrument_type}")
lines.append(f" EDM-Präzision: {inst.edm_precision*1000:.1f} mm + {inst.edm_ppm} ppm")
lines.append(f" Winkel-Präzision: {inst.hz_precision*1000:.3f} mgon")
lines.append("")
# Atmosphäre
lines.append("-" * 80)
lines.append("ATMOSPHÄRISCHE BEDINGUNGEN")
lines.append("-" * 80)
for atm_id, atm in self.atmospheres.items():
lines.append(f" Druck: {atm.pressure:.1f} hPa, Temperatur: {atm.temperature:.1f} °C")
lines.append(f" PPM: {atm.ppm:.2f}, Refraktionskoeff.: {atm.refraction_coefficient:.3f}")
lines.append("")
# Prismenkonstanten
summary.append(f"\nPrismenkonstanten:")
lines.append("-" * 80)
lines.append("PRISMENKONSTANTEN")
lines.append("-" * 80)
seen = set()
for tid, target in self.targets.items():
summary.append(f" - {target.prism_type}: {target.prism_constant*1000:.1f} mm")
key = (target.prism_type, target.prism_constant)
if key not in seen:
seen.add(key)
lines.append(f" {target.prism_type}: {target.prism_constant*1000:+.1f} mm")
lines.append("")
return "\n".join(summary)
# Referenzlinien
if self.lines:
lines.append("-" * 80)
lines.append("REFERENZLINIEN")
lines.append("-" * 80)
for name, line in self.lines.items():
lines.append(f" {name}: {line.start_point}{line.end_point}")
lines.append("")
# Stationierungen
lines.append("=" * 80)
lines.append("STATIONIERUNGEN UND MESSUNGEN")
lines.append("=" * 80)
for station_id, station in sorted(self.stations.items(), key=lambda x: x[1].timestamp):
lines.append("")
lines.append("-" * 80)
lines.append(f"STATION: {station.name}")
lines.append("-" * 80)
lines.append(f" Typ: {station.station_type}")
lines.append(f" Instrumentenhöhe: {station.theodolite_height:.4f} m")
lines.append(f" Maßstab: {station.scale_factor:.8f}")
if station.east is not None:
lines.append(f" Koordinaten: E={station.east:.4f}, N={station.north:.4f}, H={station.elevation or 0:.4f}")
# Backbearing finden
for bb_id, bb in self.backbearings.items():
if bb.station_record_id == station_id:
lines.append(f" Orientierung:")
lines.append(f" Anschlusspunkt: {bb.backsight}")
if bb.face1_hz is not None:
lines.append(f" Hz-Kreis (L1): {bb.face1_hz:.6f} gon")
if bb.face2_hz is not None:
lines.append(f" Hz-Kreis (L2): {bb.face2_hz:.6f} gon")
if bb.orientation_correction is not None:
lines.append(f" Orientierungskorrektur: {bb.orientation_correction:.6f} gon")
# Messungen
measurements = self.get_detailed_measurements_from_station(station_id)
# Anschlussmessungen
backsight_meas = [m for m in measurements if m.classification == 'BackSight' and not m.deleted]
if backsight_meas:
lines.append("")
lines.append(" ANSCHLUSSMESSUNGEN:")
for m in backsight_meas:
lines.append(f" Punkt: {m.point_name}")
if m.horizontal_circle is not None:
lines.append(f" Hz: {m.horizontal_circle:.6f} gon")
if m.vertical_circle is not None:
lines.append(f" V: {m.vertical_circle:.6f} gon")
if m.edm_distance is not None:
lines.append(f" D: {m.edm_distance:.4f} m (Prismenkonstante: {m.prism_constant*1000:+.1f} mm)")
if m.east is not None:
lines.append(f" → E={m.east:.4f}, N={m.north:.4f}, H={m.elevation or 0:.4f}")
# Normale Messungen
normal_meas = [m for m in measurements if m.classification != 'BackSight' and not m.deleted]
if normal_meas:
lines.append("")
lines.append(" MESSUNGEN:")
lines.append(f" {'Punkt':<10} {'Hz [gon]':>14} {'V [gon]':>14} {'D [m]':>12} {'PK [mm]':>10} {'E':>12} {'N':>12} {'H':>10}")
lines.append(" " + "-" * 96)
for m in normal_meas:
hz = f"{m.horizontal_circle:.6f}" if m.horizontal_circle is not None else "-"
v = f"{m.vertical_circle:.6f}" if m.vertical_circle is not None else "-"
d = f"{m.edm_distance:.4f}" if m.edm_distance is not None else "-"
pk = f"{m.prism_constant*1000:+.1f}"
e = f"{m.east:.4f}" if m.east is not None else "-"
n = f"{m.north:.4f}" if m.north is not None else "-"
h = f"{m.elevation:.4f}" if m.elevation is not None else "-"
lines.append(f" {m.point_name:<10} {hz:>14} {v:>14} {d:>12} {pk:>10} {e:>12} {n:>12} {h:>10}")
# Alle berechneten Punkte
lines.append("")
lines.append("=" * 80)
lines.append("BERECHNETE KOORDINATEN")
lines.append("=" * 80)
lines.append(f"{'Punkt':<12} {'East [m]':>14} {'North [m]':>14} {'Elev [m]':>12} {'Methode':<20}")
lines.append("-" * 80)
for name, point in sorted(self.get_active_points().items()):
e = f"{point.east:.4f}" if point.east is not None else "-"
n = f"{point.north:.4f}" if point.north is not None else "-"
h = f"{point.elevation:.4f}" if point.elevation is not None else "-"
lines.append(f"{name:<12} {e:>14} {n:>14} {h:>12} {point.method:<20}")
lines.append("")
lines.append("=" * 80)
lines.append(f"Protokoll erstellt")
lines.append("=" * 80)
return "\n".join(lines)
def create_copy(self):
"""Erstellt eine tiefe Kopie des Parsers"""

View File

@ -0,0 +1,765 @@
================================================================================
BERECHNUNGSPROTOKOLL
================================================================================
Job: Baumschulenstr_93
Datei: test_data/Baumschulenstr_93.jxl
--------------------------------------------------------------------------------
KOORDINATENSYSTEM
--------------------------------------------------------------------------------
System: Germany
Zone: ETRS89_UTM32
Datum: ETRS89
Winkeleinheit: Gons
Distanzeinheit: Metres
--------------------------------------------------------------------------------
INSTRUMENTE
--------------------------------------------------------------------------------
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
SX12 (SN: 30710160)
Typ: TrimbleSX10
EDM-Präzision: 1.0 mm + 1.5 ppm
Winkel-Präzision: 0.278 mgon
--------------------------------------------------------------------------------
ATMOSPHÄRISCHE BEDINGUNGEN
--------------------------------------------------------------------------------
Druck: 1012.3 hPa, Temperatur: 2.0 °C
PPM: -17.39, Refraktionskoeff.: 0.142
Druck: 1012.7 hPa, Temperatur: 2.0 °C
PPM: -17.50, Refraktionskoeff.: 0.142
Druck: 1012.5 hPa, Temperatur: 2.0 °C
PPM: -17.44, Refraktionskoeff.: 0.142
Druck: 1012.4 hPa, Temperatur: 2.0 °C
PPM: -17.42, Refraktionskoeff.: 0.142
Druck: 1012.4 hPa, Temperatur: 2.0 °C
PPM: -17.42, Refraktionskoeff.: 0.142
Druck: 1012.4 hPa, Temperatur: 2.0 °C
PPM: -17.42, Refraktionskoeff.: 0.142
Druck: 1012.4 hPa, Temperatur: 2.0 °C
PPM: -17.42, Refraktionskoeff.: 0.142
Druck: 1012.3 hPa, Temperatur: 2.0 °C
PPM: -17.39, Refraktionskoeff.: 0.142
Druck: 1012.3 hPa, Temperatur: 2.0 °C
PPM: -17.39, Refraktionskoeff.: 0.142
Druck: 1012.2 hPa, Temperatur: 2.0 °C
PPM: -17.36, Refraktionskoeff.: 0.142
Druck: 1011.8 hPa, Temperatur: 6.0 °C
PPM: -13.13, Refraktionskoeff.: 0.142
Druck: 1011.7 hPa, Temperatur: 6.0 °C
PPM: -13.10, Refraktionskoeff.: 0.142
Druck: 1011.8 hPa, Temperatur: 6.0 °C
PPM: -13.13, Refraktionskoeff.: 0.142
Druck: 1011.7 hPa, Temperatur: 6.0 °C
PPM: -13.10, Refraktionskoeff.: 0.142
Druck: 1011.9 hPa, Temperatur: 6.0 °C
PPM: -13.16, Refraktionskoeff.: 0.142
Druck: 1011.7 hPa, Temperatur: 6.0 °C
PPM: -13.10, Refraktionskoeff.: 0.142
Druck: 1011.6 hPa, Temperatur: 6.0 °C
PPM: -13.07, Refraktionskoeff.: 0.142
Druck: 1011.6 hPa, Temperatur: 6.0 °C
PPM: -13.07, Refraktionskoeff.: 0.142
Druck: 1011.6 hPa, Temperatur: 6.0 °C
PPM: -13.07, Refraktionskoeff.: 0.142
Druck: 1013.5 hPa, Temperatur: 2.0 °C
PPM: -17.73, Refraktionskoeff.: 0.142
Druck: 1013.6 hPa, Temperatur: 2.0 °C
PPM: -17.76, Refraktionskoeff.: 0.142
Druck: 1014.4 hPa, Temperatur: 2.0 °C
PPM: -17.98, Refraktionskoeff.: 0.142
Druck: 1015.1 hPa, Temperatur: 3.0 °C
PPM: -17.14, Refraktionskoeff.: 0.142
--------------------------------------------------------------------------------
PRISMENKONSTANTEN
--------------------------------------------------------------------------------
DRTarget: +0.0 mm
CustomPrism: -34.4 mm
SSeries360Prism: +2.0 mm
--------------------------------------------------------------------------------
REFERENZLINIEN
--------------------------------------------------------------------------------
5001-5002: 5001 → 5002
================================================================================
STATIONIERUNGEN UND MESSUNGEN
================================================================================
--------------------------------------------------------------------------------
STATION: 1001
--------------------------------------------------------------------------------
Typ: ReflineStationSetup
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=22.7880, N=13.5648, H=-1.9522
Orientierung:
Anschlusspunkt: 5001
Hz-Kreis (L1): 239.236244 gon
Orientierungskorrektur: -0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 5001
Hz: 239.236244 gon
V: 85.789957 gon
D: 26.5920 m (Prismenkonstante: +0.0 mm)
→ E=0.0000, N=-0.0000, H=0.0000
Punkt: 5002
Hz: 264.591917 gon
V: 85.212801 gon
D: 22.9704 m (Prismenkonstante: +0.0 mm)
→ E=0.0000, N=11.4075, H=-0.0352
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
2001 265.436604 88.516654 22.8548 +0.0 0.0137 11.7471 -1.3606
2002 351.584401 89.059438 17.5917 +0.0 20.2138 30.9645 -1.6634
2003 92.434873 93.453802 11.0245 +0.0 33.7824 13.0973 -2.6163
2004 184.530811 88.986816 29.0897 +0.0 20.4904 -15.4289 -1.4378
3001 91.788959 93.222299 11.1076 -34.4 33.8381 13.2197 -2.5746
3002 11.990548 89.833351 16.9801 -34.4 26.3084 30.1404 -1.9029
3003 168.045338 90.540987 17.2672 -34.4 26.3573 -3.2932 -2.1149
3004 238.208180 92.287471 26.8102 -34.4 0.0479 -0.5301 -3.0209
3005 253.466021 93.513311 23.8905 -34.4 -0.0383 6.7887 -3.4141
6001 270.486529 90.313536 40.9848 +2.0 -18.1960 13.9129 -2.1764
6002 268.633987 90.496928 38.4763 +2.0 -15.6773 12.6476 -2.2858
6003 268.815519 90.375034 49.1165 +2.0 -26.3181 12.5495 -2.2735
6004 270.337427 89.526485 47.5121 +2.0 -24.7228 13.8446 -1.5594
3006 268.849564 80.035382 21.9763 -34.4 1.1818 13.1309 1.8446
3007 278.253596 80.281424 22.5075 -34.4 0.8672 16.7446 1.8414
--------------------------------------------------------------------------------
STATION: 1002
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-20.8826, N=13.0076, H=-1.7418
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1002
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-20.8826, N=13.0076, H=-1.7418
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1002
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-20.8826, N=13.0076, H=-1.7418
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1002
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-20.8826, N=13.0076, H=-1.7418
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1002
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-20.8826, N=13.0076, H=-1.7418
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1002
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-20.8826, N=13.0076, H=-1.7418
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1001
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=22.7880, N=13.5648, H=-1.9522
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1002
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-20.8826, N=13.0076, H=-1.7418
Orientierung:
Anschlusspunkt: 6002
Hz-Kreis (L1): 93.956217 gon
Orientierungskorrektur: 0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 6002
Hz: 93.956631 gon
V: 95.946279 gon
D: 5.2442 m (Prismenkonstante: +2.0 mm)
→ E=-15.6772, N=12.6476, H=-2.2853
Punkt: 6001
Hz: 71.377052 gon
V: 98.724150 gon
D: 2.8662 m (Prismenkonstante: +2.0 mm)
→ E=-18.1961, N=13.9129, H=-2.1769
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
6004 282.315481 87.360125 3.9370 +2.0 -24.7269 13.8469 -1.5604
6003 265.248250 95.575732 5.4814 +2.0 -26.3212 12.5555 -2.2746
2005 55.324054 89.930544 9.4179 +0.0 -13.1377 18.3656 -1.7304
2006 155.116934 88.419445 2.6637 +0.0 -19.7623 10.5922 -1.6684
2007 284.456560 88.475945 9.2002 +0.0 -29.7882 15.3035 -1.4972
2008 2.836596 90.344968 9.3302 +0.0 -20.4209 22.3261 -1.7980
3008 104.036919 79.578164 8.1132 -34.4 -13.1745 11.0805 -0.2805
3009 106.271269 55.493144 9.7865 -34.4 -13.1684 10.7560 3.7827
3010 141.264009 71.879009 11.5367 -34.4 -14.0423 4.4805 1.8356
3011 84.212803 46.227865 10.7756 -34.4 -13.1661 13.7897 5.6887
3012 103.241791 40.453887 12.2564 -34.4 -13.1636 11.1912 7.5580
3013 107.313392 32.554379 15.0589 -34.4 -13.1644 10.6017 10.9218
2009 93.004786 91.128691 7.7513 +0.0 -13.1436 12.6014 -1.8945
7002 89.208170 98.211357 13.5359 +0.0 -7.4870 13.1927 -3.6751
7001 48.986594 82.685411 10.3531 +0.0 -13.1343 19.7463 -0.4237
3014 90.215335 100.063679 10.6263 -34.4 -10.4540 12.9684 -3.5927
3015 85.047972 96.965032 15.3344 -34.4 -5.7525 14.3185 -3.5971
3016 90.506741 95.662644 18.8422 -34.4 -2.1676 12.8421 -3.5976
3017 128.641072 85.046657 5.0761 -34.4 -16.9595 9.8712 -1.3065
3018 121.542651 89.814930 9.1162 -34.4 -13.1429 8.2567 -1.7125
3019 181.651710 85.735400 8.5887 -34.4 -21.1285 4.4806 -1.1057
3020 249.998353 92.016901 11.0188 -34.4 -31.1979 9.2528 -2.1284
3021 294.162896 92.650905 9.6096 -34.4 -29.6094 16.9228 -2.1847
3022 313.819047 97.218087 12.9748 -34.4 -30.1454 21.8961 -3.3677
3023 0.216398 105.393377 6.1904 -34.4 -20.8602 18.9426 -3.3759
6005 328.887378 93.120336 9.2044 +2.0 -25.6326 20.8779 -2.2430
--------------------------------------------------------------------------------
STATION: 1003
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=23.0704, N=14.0268, H=-1.9693
Orientierung:
Anschlusspunkt: 2003
Hz-Kreis (L1): 94.959326 gon
Orientierungskorrektur: 0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 2003
Hz: 94.959794 gon
V: 93.444510 gon
D: 10.7719 m (Prismenkonstante: +0.0 mm)
→ E=33.7823, N=13.0972, H=-2.6165
Punkt: 2004
Hz: 185.005488 gon
V: 88.969885 gon
D: 29.5737 m (Prismenkonstante: +0.0 mm)
→ E=20.4905, N=-15.4288, H=-1.4376
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
2001 264.353319 88.495229 23.1772 +0.0 0.0139 11.7472 -1.3607
2002 350.428306 88.979489 17.1793 +0.0 20.2143 30.9640 -1.6634
3024 266.931582 70.929310 23.2213 -34.4 1.1879 12.8538 5.6065
3025 245.321058 72.500049 25.2564 -34.4 1.2132 3.9834 5.6149
3026 278.310255 64.079301 25.9902 -34.4 -0.0288 17.4009 9.3765
3027 258.776027 57.318373 27.9772 -34.4 0.0016 9.4491 13.1187
3028 276.496934 56.966420 28.8298 -34.4 -0.9148 16.7583 13.7277
3029 244.136925 63.974174 27.2106 -34.4 1.0963 3.3743 9.9548
--------------------------------------------------------------------------------
STATION: 1004
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-22.6960, N=19.7653, H=-1.9656
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1004
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-22.6960, N=19.7653, H=-1.9656
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1004
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-22.6960, N=19.7653, H=-1.9656
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1004
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-22.6960, N=19.7653, H=-1.9656
Orientierung:
Anschlusspunkt: 6003
Hz-Kreis (L1): 206.655476 gon
Orientierungskorrektur: 0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 6003
Hz: 206.657696 gon
V: 92.187503 gon
D: 8.0781 m (Prismenkonstante: +2.0 mm)
→ E=-26.3185, N=12.5495, H=-2.2740
Punkt: 6002
Hz: 135.399836 gon
V: 91.831919 gon
D: 9.9997 m (Prismenkonstante: +2.0 mm)
→ E=-15.6769, N=12.6476, H=-2.2853
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
2008 41.618403 87.175760 3.4242 +0.0 -20.4245 22.3221 -1.7969
6005 290.628459 95.011142 3.1504 +2.0 -25.6350 20.8717 -2.2410
6006 281.200295 90.279540 25.9497 +2.0 -48.1527 24.8060 -2.0922
6007 278.204159 90.037385 26.1203 +2.0 -48.5506 23.4929 -1.9826
6008 277.946838 90.365116 20.3991 +2.0 -42.9005 22.5858 -2.0956
--------------------------------------------------------------------------------
STATION: 1005
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-46.0315, N=23.5752, H=-1.9509
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1005
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-46.0315, N=23.5752, H=-1.9509
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1005
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-46.0315, N=23.5752, H=-1.9509
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1005
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-46.0315, N=23.5752, H=-1.9509
Orientierung:
Anschlusspunkt:
--------------------------------------------------------------------------------
STATION: 1005
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-46.0315, N=23.5752, H=-1.9509
Orientierung:
Anschlusspunkt: 6008
Hz-Kreis (L1): 107.537751 gon
Orientierungskorrektur: 0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 6008
Hz: 107.533353 gon
V: 92.515106 gon
D: 3.2862 m (Prismenkonstante: +2.0 mm)
→ E=-42.8992, N=22.5856, H=-2.0952
Punkt: 6005
Hz: 97.532711 gon
V: 90.814217 gon
D: 20.5754 m (Prismenkonstante: +2.0 mm)
→ E=-25.6340, N=20.8780, H=-2.2433
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
6006 300.079231 93.294893 2.4571 +2.0 -48.1559 24.8057 -2.0923
6007 268.029207 90.729397 2.5210 +2.0 -48.5528 23.4885 -1.9831
2010 72.458666 89.315065 5.4129 +0.0 -40.8707 25.2065 -1.8862
2011 156.471149 86.446196 8.2701 +0.0 -42.7364 16.0074 -1.4383
2012 200.203267 89.983377 14.4081 +0.0 -51.0073 10.0538 -1.9468
2012 200.203040 89.983277 14.4082 +0.0 -51.0073 10.0537 -1.9467
2012 - - - +0.0 -51.0073 10.0537 -1.9467
2013 348.886840 89.532943 2.9308 +0.0 -46.5964 26.4510 -1.9271
3030 123.407671 92.690617 5.3146 -34.4 -41.6286 20.6712 -2.1988
3031 150.550871 91.959334 7.5101 -34.4 -42.3583 17.0694 -2.2065
3032 171.423745 91.076213 14.2322 -34.4 -43.9146 9.5389 -2.2176
3033 95.228223 101.998035 7.2508 -34.4 -39.0022 22.9320 -3.4510
--------------------------------------------------------------------------------
STATION: 1006
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=22.9235, N=13.8783, H=-1.9035
Orientierung:
Anschlusspunkt: 2003
Hz-Kreis (L1): 94.113814 gon
Orientierungskorrektur: -0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 2003
Hz: 94.113477 gon
V: 93.746786 gon
D: 10.9105 m (Prismenkonstante: +0.0 mm)
→ E=33.7824, N=13.0974, H=-2.6165
Punkt: 2004
Hz: 184.745778 gon
V: 89.092575 gon
D: 29.4123 m (Prismenkonstante: +0.0 mm)
→ E=20.4904, N=-15.4290, H=-1.4377
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
2001 264.684949 88.648383 23.0157 +0.0 0.0135 11.7470 -1.3606
2002 350.986209 89.205135 17.3011 +0.0 20.2132 30.9638 -1.6635
3034 281.517975 53.972186 31.8128 -34.4 -2.2586 19.0099 16.7875
3035 264.965948 52.745699 31.5184 -34.4 -2.0392 11.6794 17.1551
3036 242.150573 56.648773 34.3234 -34.4 -2.4008 0.4984 16.9473
--------------------------------------------------------------------------------
STATION: 1007
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-21.6340, N=18.9681, H=-1.8149
Orientierung:
Anschlusspunkt: 2006
Hz-Kreis (L1): 167.403390 gon
Orientierungskorrektur: 0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 2006
Hz: 167.408936 gon
V: 89.021905 gon
D: 8.5832 m (Prismenkonstante: +0.0 mm)
→ E=-19.7633, N=10.5927, H=-1.6684
Punkt: 2007
Hz: 245.795284 gon
V: 87.963994 gon
D: 8.9448 m (Prismenkonstante: +0.0 mm)
→ E=-29.7872, N=15.3031, H=-1.4971
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
2008 19.861431 89.726355 3.5698 +0.0 -20.4212 22.3255 -1.7979
2005 94.059110 89.430934 8.5181 +0.0 -13.1378 18.3652 -1.7303
3037 263.845826 68.234399 8.3395 -34.4 -29.3024 18.1412 1.2646
3038 237.574470 82.696322 10.3659 -34.4 -30.2838 13.4734 -0.5015
3039 239.173775 64.655784 11.1020 -34.4 -30.2231 13.8426 2.9225
3040 240.356419 50.325380 12.7866 -34.4 -30.1643 14.1136 6.3263
3041 238.337593 41.760336 15.2528 -34.4 -30.2609 13.6479 9.5368
--------------------------------------------------------------------------------
STATION: 1008
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-46.5669, N=23.4502, H=-1.9004
Orientierung:
Anschlusspunkt: 2012
Hz-Kreis (L1): 198.338432 gon
Orientierungskorrektur: 0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 2012
Hz: 198.338354 gon
V: 90.188111 gon
D: 14.1139 m (Prismenkonstante: +0.0 mm)
→ E=-51.0074, N=10.0534, H=-1.9468
Punkt: 2013
Hz: 359.438362 gon
V: 90.507602 gon
D: 3.0015 m (Prismenkonstante: +0.0 mm)
→ E=-46.5963, N=26.4513, H=-1.9270
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
2010 72.862313 89.864020 5.9607 +0.0 -40.8710 25.2065 -1.8863
2011 152.768282 86.837999 8.3845 +0.0 -42.7361 16.0064 -1.4380
3042 166.156719 62.148888 14.0756 -34.4 -43.5965 11.3962 4.6592
3043 86.632675 40.256544 8.6348 -34.4 -41.0189 23.7766 4.6629
--------------------------------------------------------------------------------
STATION: 1009
--------------------------------------------------------------------------------
Typ: StandardResection
Instrumentenhöhe: 0.0000 m
Maßstab: 1.00000000
Koordinaten: E=-17.1322, N=16.5482, H=-1.9002
Orientierung:
Anschlusspunkt: 2005
Hz-Kreis (L1): 65.535513 gon
Orientierungskorrektur: 0.000000 gon
ANSCHLUSSMESSUNGEN:
Punkt: 2005
Hz: 65.536867 gon
V: 87.784398 gon
D: 4.3917 m (Prismenkonstante: +0.0 mm)
→ E=-13.1379, N=18.3655, H=-1.7304
Punkt: 2006
Hz: 203.824812 gon
V: 87.961169 gon
D: 6.5149 m (Prismenkonstante: +0.0 mm)
→ E=-19.7621, N=10.5924, H=-1.6684
MESSUNGEN:
Punkt Hz [gon] V [gon] D [m] PK [mm] E N H
------------------------------------------------------------------------------------------------
2007 264.369524 88.185531 12.7231 +0.0 -29.7873 15.3006 -1.4973
2008 330.334676 89.119160 6.6450 +0.0 -20.4206 22.3215 -1.7980
3044 293.213801 43.333395 23.2208 -34.4 -31.7552 22.8198 14.9647
3045 257.384179 45.758052 23.7600 -34.4 -33.7186 12.8359 14.6527
3046 241.436091 50.884481 26.1075 -34.4 -34.8991 6.8759 14.5487
3047 242.756804 57.619234 18.6917 -34.4 -31.1404 9.3356 8.0915
3048 272.480606 51.260329 15.9696 -34.4 -29.5497 17.0862 8.0716
3049 293.161612 51.415627 16.0312 -34.4 -28.6287 21.4665 8.0763
3050 248.483832 78.157600 14.9904 -34.4 -30.7496 11.1797 1.1691
================================================================================
BERECHNETE KOORDINATEN
================================================================================
Punkt East [m] North [m] Elev [m] Methode
--------------------------------------------------------------------------------
1001 22.7880 13.5648 -1.9522 ReflineSetup
1002 -20.8826 13.0076 -1.7418 Resection
1003 23.0704 14.0268 -1.9693 Resection
1004 -22.6960 19.7653 -1.9656 Resection
1005 -46.0315 23.5752 -1.9509 Resection
1006 22.9235 13.8783 -1.9035 Resection
1007 -21.6340 18.9681 -1.8149 Resection
1008 -46.5669 23.4502 -1.9004 Resection
1009 -17.1322 16.5482 -1.9002 Resection
2001 0.0135 11.7470 -1.3606 DirectReading
2002 20.2132 30.9638 -1.6635 DirectReading
2003 33.7824 13.0974 -2.6165 DirectReading
2004 20.4904 -15.4290 -1.4377 DirectReading
2005 -13.1379 18.3655 -1.7304 DirectReading
2006 -19.7621 10.5924 -1.6684 DirectReading
2007 -29.7873 15.3006 -1.4973 DirectReading
2008 -20.4206 22.3215 -1.7980 DirectReading
2009 -13.1436 12.6014 -1.8945 DirectReading
2010 -40.8710 25.2065 -1.8863 DirectReading
2011 -42.7361 16.0064 -1.4380 DirectReading
2012 -51.0074 10.0534 -1.9468 DirectReading
2013 -46.5963 26.4513 -1.9270 DirectReading
3001 33.8381 13.2197 -2.5746 DirectReading
3002 26.3084 30.1404 -1.9029 DirectReading
3003 26.3573 -3.2932 -2.1149 DirectReading
3004 0.0479 -0.5301 -3.0209 DirectReading
3005 -0.0383 6.7887 -3.4141 DirectReading
3006 1.1818 13.1309 1.8446 DirectReading
3007 0.8672 16.7446 1.8414 DirectReading
3008 -13.1745 11.0805 -0.2805 DirectReading
3009 -13.1684 10.7560 3.7827 DirectReading
3010 -14.0423 4.4805 1.8356 DirectReading
3011 -13.1661 13.7897 5.6887 DirectReading
3012 -13.1636 11.1912 7.5580 DirectReading
3013 -13.1644 10.6017 10.9218 DirectReading
3014 -10.4540 12.9684 -3.5927 DirectReading
3015 -5.7525 14.3185 -3.5971 DirectReading
3016 -2.1676 12.8421 -3.5976 DirectReading
3017 -16.9595 9.8712 -1.3065 DirectReading
3018 -13.1429 8.2567 -1.7125 DirectReading
3019 -21.1285 4.4806 -1.1057 DirectReading
3020 -31.1979 9.2528 -2.1284 DirectReading
3021 -29.6094 16.9228 -2.1847 DirectReading
3022 -30.1454 21.8961 -3.3677 DirectReading
3023 -20.8602 18.9426 -3.3759 DirectReading
3024 1.1879 12.8538 5.6065 DirectReading
3025 1.2132 3.9834 5.6149 DirectReading
3026 -0.0288 17.4009 9.3765 DirectReading
3027 0.0016 9.4491 13.1187 DirectReading
3028 -0.9148 16.7583 13.7277 DirectReading
3029 1.0963 3.3743 9.9548 DirectReading
3030 -41.6286 20.6712 -2.1988 DirectReading
3031 -42.3583 17.0694 -2.2065 DirectReading
3032 -43.9146 9.5389 -2.2176 DirectReading
3033 -39.0022 22.9320 -3.4510 DirectReading
3034 -2.2586 19.0099 16.7875 DirectReading
3035 -2.0392 11.6794 17.1551 DirectReading
3036 -2.4008 0.4984 16.9473 DirectReading
3037 -29.3024 18.1412 1.2646 DirectReading
3038 -30.2838 13.4734 -0.5015 DirectReading
3039 -30.2231 13.8426 2.9225 DirectReading
3040 -30.1643 14.1136 6.3263 DirectReading
3041 -30.2609 13.6479 9.5368 DirectReading
3042 -43.5965 11.3962 4.6592 DirectReading
3043 -41.0189 23.7766 4.6629 DirectReading
3044 -31.7552 22.8198 14.9647 DirectReading
3045 -33.7186 12.8359 14.6527 DirectReading
3046 -34.8991 6.8759 14.5487 DirectReading
3047 -31.1404 9.3356 8.0915 DirectReading
3048 -29.5497 17.0862 8.0716 DirectReading
3049 -28.6287 21.4665 8.0763 DirectReading
3050 -30.7496 11.1797 1.1691 DirectReading
5001 0.0000 -0.0000 0.0000 DirectReading
5002 0.0000 11.4075 -0.0352 DirectReading
6001 -18.1961 13.9129 -2.1769 DirectReading
6002 -15.6769 12.6476 -2.2853 DirectReading
6003 -26.3185 12.5495 -2.2740 DirectReading
6004 -24.7269 13.8469 -1.5604 DirectReading
6005 -25.6340 20.8780 -2.2433 DirectReading
6006 -48.1559 24.8057 -2.0923 DirectReading
6007 -48.5528 23.4885 -1.9831 DirectReading
6008 -42.8992 22.5856 -2.0952 DirectReading
7001 -13.1343 19.7463 -0.4237 DirectReading
7002 -7.4870 13.1927 -3.6751 DirectReading
================================================================================
Protokoll erstellt
================================================================================

264
test_with_example.py Normal file
View File

@ -0,0 +1,264 @@
#!/usr/bin/env python3
"""
Test-Skript für das Trimble Geodesy Tool
Testet alle Module mit der Beispieldatei Baumschulenstr_93.jxl
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from modules.jxl_parser import JXLParser
from modules.cor_generator import CORGenerator
from modules.network_adjustment import NetworkAdjustment
def test_jxl_parser():
"""Test des JXL-Parsers"""
print("=" * 80)
print("TEST 1: JXL-Parser")
print("=" * 80)
parser = JXLParser()
success = parser.parse("test_data/Baumschulenstr_93.jxl")
if not success:
print("❌ FEHLER: Datei konnte nicht geladen werden!")
return None
print(f"✓ Datei erfolgreich geladen: {parser.job_name}")
print(f"✓ Koordinatensystem: {parser.coordinate_system}")
print(f"✓ Winkeleinheit: {parser.angle_units}")
print()
# Stationen
print(f"Stationen: {len(parser.stations)}")
for sid, station in sorted(parser.stations.items(), key=lambda x: x[1].timestamp):
print(f" - {station.name}: {station.station_type}")
if station.east is not None:
print(f" Koordinaten: E={station.east:.4f}, N={station.north:.4f}, H={station.elevation or 0:.4f}")
print()
# Targets/Prismenkonstanten
print(f"Prismenkonstanten (eindeutige):")
seen = set()
for tid, target in parser.targets.items():
key = (target.prism_type, target.prism_constant)
if key not in seen:
seen.add(key)
print(f" - {target.prism_type}: {target.prism_constant*1000:+.1f} mm")
print()
# Punkte
active = parser.get_active_points()
print(f"Aktive Punkte: {len(active)}")
print()
# Referenzpunkte (Festpunkte)
ref_points = parser.get_reference_points()
print(f"Referenzpunkte (Passpunkte): {ref_points}")
# Standpunkte
station_points = parser.get_station_points()
print(f"Standpunkte: {station_points}")
# Messpunkte
meas_points = parser.get_measurement_points()
print(f"Messpunkte (erste 10): {meas_points[:10]}...")
print()
# Messungen für erste Station
first_station_id = list(parser.stations.keys())[0]
first_station = parser.stations[first_station_id]
measurements = parser.get_detailed_measurements_from_station(first_station_id)
print(f"Messungen von Station {first_station.name}:")
backsight = [m for m in measurements if m.classification == 'BackSight' and not m.deleted]
normal = [m for m in measurements if m.classification != 'BackSight' and not m.deleted]
print(f" Anschlussmessungen: {len(backsight)}")
for m in backsight:
print(f" - {m.point_name}: Hz={m.horizontal_circle:.6f}, V={m.vertical_circle:.6f}, D={m.edm_distance:.4f}")
print(f" Normale Messungen: {len(normal)}")
for m in normal[:5]: # Nur erste 5
print(f" - {m.point_name}: Hz={m.horizontal_circle:.6f}, V={m.vertical_circle:.6f}, D={m.edm_distance:.4f}")
print()
return parser
def test_cor_generator(parser):
"""Test des COR-Generators"""
print("=" * 80)
print("TEST 2: COR-Generator")
print("=" * 80)
generator = CORGenerator(parser)
points = generator.generate_from_computed_grid()
print(f"{len(points)} Punkte generiert")
print()
# Vergleich mit Referenz-COR
print("Vergleich mit Baumschulenstr_93.cor:")
# Lade Referenz
ref_points = {}
with open("test_data/Baumschulenstr_93.cor", 'r') as f:
for line in f:
line = line.strip()
if not line or line.startswith('|--'):
continue
parts = line.replace('|', ',').split(',')
parts = [p.strip() for p in parts if p.strip()]
if len(parts) >= 4:
name = parts[0]
try:
x = float(parts[1])
y = float(parts[2])
z = float(parts[3])
ref_points[name] = (x, y, z)
except:
continue
# Vergleiche
matches = 0
mismatches = []
for p in points:
if p.name in ref_points:
ref_x, ref_y, ref_z = ref_points[p.name]
dx = abs(p.x - ref_x)
dy = abs(p.y - ref_y)
dz = abs(p.z - ref_z)
if dx < 0.01 and dy < 0.01 and dz < 0.01:
matches += 1
else:
mismatches.append((p.name, dx, dy, dz))
print(f" Übereinstimmungen: {matches}")
print(f" Abweichungen: {len(mismatches)}")
if mismatches[:5]:
print(f" Erste Abweichungen:")
for name, dx, dy, dz in mismatches[:5]:
print(f" - {name}: ΔX={dx:.3f}, ΔY={dy:.3f}, ΔZ={dz:.3f}")
print()
return generator
def test_calculation_protocol(parser):
"""Test des Berechnungsprotokolls"""
print("=" * 80)
print("TEST 3: Berechnungsprotokoll")
print("=" * 80)
protocol = parser.get_calculation_protocol()
lines = protocol.split('\n')
print(f"✓ Protokoll generiert ({len(lines)} Zeilen)")
print()
# Zeige Auszug
print("Auszug:")
for line in lines[:30]:
print(f" {line}")
print(" ...")
print()
# Speichere Protokoll
with open("test_data/berechnungsprotokoll_test.txt", 'w') as f:
f.write(protocol)
print("✓ Protokoll gespeichert: test_data/berechnungsprotokoll_test.txt")
print()
def test_network_adjustment(parser):
"""Test der Netzausgleichung"""
print("=" * 80)
print("TEST 4: Netzausgleichung (KORREKTES KONZEPT)")
print("=" * 80)
adjustment = NetworkAdjustment(parser)
# Beobachtungen extrahieren
obs = adjustment.extract_observations()
print(f"{len(obs)} Beobachtungen extrahiert")
# Punkte initialisieren
adjustment.initialize_points()
print(f"{len(adjustment.points)} Punkte initialisiert")
# KORREKTES KONZEPT: Nur Passpunkte als Festpunkte
ref_points = parser.get_reference_points()
print(f"\nFestpunkte (Passpunkte): {ref_points}")
for name in ref_points:
if name in adjustment.points:
adjustment.set_fixed_point(name)
print(f"{len(adjustment.fixed_points)} Festpunkte gesetzt")
# Neupunkte (Standpunkte) - eindeutige Namen
station_points = list(set(s.name for s in parser.stations.values()))
new_points = [p for p in station_points if p not in adjustment.fixed_points]
print(f"Neupunkte (Standpunkte): {new_points}")
# Messpunkte
meas_points = [p for p in adjustment.points.keys()
if p not in adjustment.fixed_points and p not in station_points]
print(f"Messpunkte: {len(meas_points)}")
try:
result = adjustment.adjust()
print()
print(f"✓ Ausgleichung abgeschlossen:")
print(f" Iterationen: {result.iterations}")
print(f" Konvergiert: {result.converged}")
print(f" Sigma-0: {result.sigma_0_posteriori:.4f}")
print(f" Redundanz: {result.redundancy}")
print()
# Ausgeglichene Standpunkte
print("Ausgeglichene Standpunkte:")
for name in new_points:
if name in adjustment.points:
p = adjustment.points[name]
print(f" {name}: X={p.x:.4f}, Y={p.y:.4f}, Z={p.z:.4f}, σPos={p.std_position*1000:.1f}mm")
return adjustment
except Exception as e:
print(f"❌ FEHLER bei Ausgleichung: {e}")
import traceback
traceback.print_exc()
return None
def main():
print("\n" + "=" * 80)
print("TRIMBLE GEODESY TOOL - UMFANGREICHE TESTS")
print("Testdatei: Baumschulenstr_93.jxl")
print("=" * 80 + "\n")
# Test 1: Parser
parser = test_jxl_parser()
if not parser:
return
# Test 2: COR-Generator
test_cor_generator(parser)
# Test 3: Berechnungsprotokoll
test_calculation_protocol(parser)
# Test 4: Netzausgleichung
test_network_adjustment(parser)
print("\n" + "=" * 80)
print("TESTS ABGESCHLOSSEN")
print("=" * 80 + "\n")
if __name__ == "__main__":
main()