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:
parent
05a40b12a0
commit
3d6eb10edb
File diff suppressed because one or more lines are too long
Binary file not shown.
|
|
@ -1,6 +1,7 @@
|
||||||
"""
|
"""
|
||||||
JXL Parser Module - Trimble JXL-Datei Parser
|
JXL Parser Module - Trimble JXL-Datei Parser
|
||||||
Liest und analysiert Trimble JXL-Dateien (XML-basiert)
|
Liest und analysiert Trimble JXL-Dateien (XML-basiert)
|
||||||
|
Version 3.0 - Überarbeitet für korrekte Stationierungserkennung
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
|
|
@ -66,6 +67,10 @@ class Station:
|
||||||
# Orientierung
|
# Orientierung
|
||||||
orientation_correction: Optional[float] = None
|
orientation_correction: Optional[float] = None
|
||||||
|
|
||||||
|
# Anzahl Messungen
|
||||||
|
num_backsight_measurements: int = 0
|
||||||
|
num_backsight_points: int = 0
|
||||||
|
|
||||||
record_id: str = ""
|
record_id: str = ""
|
||||||
timestamp: str = ""
|
timestamp: str = ""
|
||||||
|
|
||||||
|
|
@ -77,6 +82,7 @@ class Target:
|
||||||
prism_constant: float = 0.0
|
prism_constant: float = 0.0
|
||||||
target_height: float = 0.0
|
target_height: float = 0.0
|
||||||
record_id: str = ""
|
record_id: str = ""
|
||||||
|
timestamp: str = ""
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|
@ -124,6 +130,47 @@ class Line:
|
||||||
start_station: float = 0.0
|
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:
|
class JXLParser:
|
||||||
"""Parser für Trimble JXL-Dateien"""
|
"""Parser für Trimble JXL-Dateien"""
|
||||||
|
|
||||||
|
|
@ -146,6 +193,12 @@ class JXLParser:
|
||||||
# Alle Messungen (auch gelöschte)
|
# Alle Messungen (auch gelöschte)
|
||||||
self.all_point_records: List[Point] = []
|
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.raw_xml = None
|
||||||
self.file_path: str = ""
|
self.file_path: str = ""
|
||||||
|
|
||||||
|
|
@ -171,10 +224,15 @@ class JXLParser:
|
||||||
# Stationskoordinaten aus Punkten zuweisen
|
# Stationskoordinaten aus Punkten zuweisen
|
||||||
self._assign_station_coordinates()
|
self._assign_station_coordinates()
|
||||||
|
|
||||||
|
# Detaillierte Messungen erstellen
|
||||||
|
self._create_detailed_measurements()
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Parsen: {e}")
|
print(f"Fehler beim Parsen: {e}")
|
||||||
|
import traceback
|
||||||
|
traceback.print_exc()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def _parse_element(self, element):
|
def _parse_element(self, element):
|
||||||
|
|
@ -192,7 +250,7 @@ class JXLParser:
|
||||||
elif tag == 'StationRecord':
|
elif tag == 'StationRecord':
|
||||||
self._parse_station(element, record_id, timestamp)
|
self._parse_station(element, record_id, timestamp)
|
||||||
elif tag == 'TargetRecord':
|
elif tag == 'TargetRecord':
|
||||||
self._parse_target(element, record_id)
|
self._parse_target(element, record_id, timestamp)
|
||||||
elif tag == 'BackBearingRecord':
|
elif tag == 'BackBearingRecord':
|
||||||
self._parse_backbearing(element, record_id)
|
self._parse_backbearing(element, record_id)
|
||||||
elif tag == 'InstrumentRecord':
|
elif tag == 'InstrumentRecord':
|
||||||
|
|
@ -385,12 +443,21 @@ class JXLParser:
|
||||||
if ori_elem is not None and ori_elem.text:
|
if ori_elem is not None and ori_elem.text:
|
||||||
station.orientation_correction = float(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
|
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"""
|
"""Parst ein Target/Prisma"""
|
||||||
target = Target()
|
target = Target()
|
||||||
target.record_id = record_id
|
target.record_id = record_id
|
||||||
|
target.timestamp = timestamp
|
||||||
|
|
||||||
type_elem = element.find('PrismType')
|
type_elem = element.find('PrismType')
|
||||||
if type_elem is not None and type_elem.text:
|
if type_elem is not None and type_elem.text:
|
||||||
|
|
@ -531,6 +598,58 @@ class JXLParser:
|
||||||
station.east = point.east
|
station.east = point.east
|
||||||
station.elevation = point.elevation
|
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]:
|
def get_active_points(self) -> Dict[str, Point]:
|
||||||
"""Gibt nur aktive (nicht gelöschte) Punkte zurück"""
|
"""Gibt nur aktive (nicht gelöschte) Punkte zurück"""
|
||||||
return {name: p for name, p in self.points.items() if not p.deleted}
|
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
|
return [p for p in self.all_point_records
|
||||||
if p.station_id == station_id and not p.deleted]
|
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]:
|
def get_prism_constants(self) -> Dict[str, float]:
|
||||||
"""Gibt alle verwendeten Prismenkonstanten zurück"""
|
"""Gibt alle verwendeten Prismenkonstanten zurück"""
|
||||||
return {tid: t.prism_constant for tid, t in self.targets.items()}
|
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):
|
def modify_prism_constant(self, target_id: str, new_constant: float):
|
||||||
"""Ändert die Prismenkonstante für ein Target"""
|
"""Ändert die Prismenkonstante für ein Target"""
|
||||||
if target_id in self.targets:
|
if target_id in self.targets:
|
||||||
|
|
@ -576,6 +710,62 @@ class JXLParser:
|
||||||
return list(self.lines.values())[0]
|
return list(self.lines.values())[0]
|
||||||
return None
|
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:
|
def gon_to_rad(self, gon: float) -> float:
|
||||||
"""Konvertiert Gon zu Radiant"""
|
"""Konvertiert Gon zu Radiant"""
|
||||||
return gon * math.pi / 200.0
|
return gon * math.pi / 200.0
|
||||||
|
|
@ -592,24 +782,167 @@ class JXLParser:
|
||||||
summary.append(f"Zone: {self.zone_name}")
|
summary.append(f"Zone: {self.zone_name}")
|
||||||
summary.append(f"Datum: {self.datum_name}")
|
summary.append(f"Datum: {self.datum_name}")
|
||||||
summary.append(f"Winkeleinheit: {self.angle_units}")
|
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 Punkte (aktiv): {len(self.get_active_points())}")
|
||||||
summary.append(f"Anzahl Stationen: {len(self.stations)}")
|
summary.append(f"Anzahl Stationen: {len(self.stations)}")
|
||||||
summary.append(f"Anzahl Messungen gesamt: {len(self.all_point_records)}")
|
summary.append(f"Anzahl Messungen gesamt: {len(self.all_point_records)}")
|
||||||
summary.append(f"Anzahl Targets/Prismen: {len(self.targets)}")
|
summary.append(f"Anzahl Targets/Prismen: {len(self.targets)}")
|
||||||
summary.append(f"Anzahl Referenzlinien: {len(self.lines)}")
|
summary.append(f"Anzahl Referenzlinien: {len(self.lines)}")
|
||||||
|
|
||||||
# Stationsübersicht
|
return "\n".join(summary)
|
||||||
summary.append(f"\nStationen:")
|
|
||||||
for sid, station in self.stations.items():
|
def get_calculation_protocol(self) -> str:
|
||||||
summary.append(f" - {station.name}: {station.station_type}")
|
"""
|
||||||
|
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
|
# Prismenkonstanten
|
||||||
summary.append(f"\nPrismenkonstanten:")
|
lines.append("-" * 80)
|
||||||
|
lines.append("PRISMENKONSTANTEN")
|
||||||
|
lines.append("-" * 80)
|
||||||
|
seen = set()
|
||||||
for tid, target in self.targets.items():
|
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):
|
def create_copy(self):
|
||||||
"""Erstellt eine tiefe Kopie des Parsers"""
|
"""Erstellt eine tiefe Kopie des Parsers"""
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
================================================================================
|
||||||
|
|
@ -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()
|
||||||
Loading…
Reference in New Issue