trimble_geodesy/README.md

231 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Trimble Geodesy Tool
Ein vollständiges Python-Programm mit grafischer Benutzeroberfläche (GUI) für geodätische Vermessungsarbeiten mit Trimble JXL-Dateien.
## Funktionen
### 1. JXL-Datei Analyse und Bearbeitung
- Trimble JXL-Dateien einlesen und analysieren
- Übersicht über Punkte, Stationen und Messungen
- Passpunkte entfernen
- Prismenkonstanten ändern
- Parameter bearbeiten
### 2. COR-Datei Generierung
- Aus JXL-Dateien Punktdateien im COR-Format berechnen
- Unterstützt zwei Stationierungsarten:
- Erste Stationierung über eine Referenzlinie
- Alle anderen als freie Stationierungen
- Export in verschiedene Formate (COR, CSV, TXT, DXF)
### 3. Koordinatensystem-Transformation
- Rotation um einen wählbaren Punkt
- Verschiebung in XY-Richtung
- Verschiebung in Z-Richtung
- Zwei Eingabemodi:
- Manuelle Eingabe von Transformationsparametern
- Definition über 2 Punkte (Ursprung und Y-Richtung)
- **Keine Maßstabsänderung** (wie gefordert)
### 4. Georeferenzierung
- Mindestens 3 Passpunkte für Transformation
- Rotation und Translation des Koordinatensystems
- **Keine Maßstabsänderung** (keine Helmert-Transformation)
- Restfehler ausgleichen und anzeigen
- Detaillierte Qualitätsparameter (RMSE, Residuen)
### 5. Netzausgleichung
- Methode der kleinsten Quadrate
- Basierend auf Beobachtungen der JXL-Datei
- Automatische Festpunkterkennung
- Ausgabe von:
- Ausgeglichenen Koordinaten
- Standardabweichungen
- Residuen
- Qualitätsparametern (Sigma-0, Chi-Quadrat, RMSE)
### 6. Referenzpunkt-Anpassung (NEU)
- Anpassung des Referenzpunktes 5001 (bei Referenzlinien-Stationierung)
- Eingabe neuer Koordinaten (X, Y, Z) für den Referenzpunkt
- Automatische Neuberechnung aller abhängigen Punkte
- Vorschau der Transformation mit allen betroffenen Punkten
- Export der transformierten JXL-Datei
- Validierung der Eingaben mit Warnungen bei problematischen Werten
## Installation und Start
### Voraussetzungen
- Python 3.8 oder höher
- PyQt5, NumPy, SciPy, lxml
### Wichtiger Hinweis: Externally-Managed-Environment (PEP 668)
Moderne Linux-Distributionen (Ubuntu 23.04+, Debian 12+, Fedora 38+) verwenden ein "externally-managed-environment". Das bedeutet, dass `pip install` ohne Virtual Environment folgenden Fehler erzeugt:
```
error: externally-managed-environment
× This environment is externally managed
```
**Lösung:** Verwenden Sie ein Virtual Environment (empfohlen) oder die automatischen Setup-Scripts.
---
### Methode 1: Automatische Installation (empfohlen)
#### Linux / macOS
```bash
cd /home/ubuntu/trimble_geodesy
# 1. Setup ausführen (einmalig)
./setup.sh
# 2. Programm starten
./run.sh
```
Falls `./setup.sh` nicht ausführbar ist:
```bash
chmod +x setup.sh run.sh
./setup.sh
```
#### Windows
```cmd
cd C:\Pfad\zum\trimble_geodesy
REM 1. Setup ausführen (einmalig)
setup.bat
REM 2. Programm starten
run.bat
```
---
### Methode 2: Manuelle Installation mit Virtual Environment
#### Linux / macOS
```bash
cd /home/ubuntu/trimble_geodesy
# Virtual Environment erstellen
python3 -m venv venv
# Virtual Environment aktivieren
source venv/bin/activate
# Abhängigkeiten installieren
pip install -r requirements.txt
# Programm starten
python3 main.py
```
#### Windows
```cmd
cd C:\Pfad\zum\trimble_geodesy
REM Virtual Environment erstellen
python -m venv venv
REM Virtual Environment aktivieren
venv\Scripts\activate.bat
REM Abhängigkeiten installieren
pip install -r requirements.txt
REM Programm starten
python main.py
```
---
### Fehlerbehebung
**Fehler: `python3-venv` nicht installiert (Linux)**
```bash
sudo apt install python3-venv # Ubuntu/Debian
sudo dnf install python3-venv # Fedora
```
**Fehler: Permission denied bei setup.sh**
```bash
chmod +x setup.sh run.sh
```
**Fehler: Qt-Plattform nicht gefunden**
```bash
sudo apt install libxcb-xinerama0 libxcb-cursor0 # Ubuntu/Debian
```
## Verwendung
### Workflow
1. **JXL-Analyse Tab**: JXL-Datei laden und analysieren
2. **COR-Generator Tab**: Koordinaten generieren und exportieren
3. **Transformation Tab**: Koordinatensystem rotieren/verschieben
4. **Georeferenzierung Tab**: Mit Passpunkten transformieren
5. **Netzausgleichung Tab**: Netzausgleichung durchführen
6. **Referenzpunkt anpassen Tab**: Referenzpunkt 5001 ändern und JXL neu berechnen
## Dateistruktur
```
trimble_geodesy/
├── main.py # Hauptprogramm mit GUI
├── requirements.txt # Python-Abhängigkeiten
├── modules/
│ ├── __init__.py
│ ├── jxl_parser.py # JXL-Datei Parser
│ ├── cor_generator.py # COR-Datei Generator
│ ├── transformation.py # Koordinatentransformation
│ ├── georeferencing.py # Georeferenzierung
│ ├── network_adjustment.py # Netzausgleichung
│ └── reference_point_adjuster.py # Referenzpunkt-Anpassung (NEU)
├── output/ # Ausgabeverzeichnis
└── README.md
```
## Technische Details
### JXL-Format
Das JXL-Format (Trimble JobXML) ist ein XML-basiertes Format für Vermessungsdaten:
- `<PointRecord>`: Punktdaten mit Koordinaten und Messungen
- `<StationRecord>`: Stationsinformationen
- `<TargetRecord>`: Prismeneinstellungen
- `<BackBearingRecord>`: Orientierungsdaten
### COR-Format
Das COR-Format ist ein einfaches Textformat für Koordinaten:
```
|Punkt |X |Y |Z |
|5001 |0.000 |0.000 |0.000 |
|5002 |0 | 11.407 | -0.035 |
```
### Transformation
Die Transformation verwendet eine 4-Parameter-Transformation:
- Translation X, Y, Z
- Rotation um die Z-Achse
- **Kein Maßstabsfaktor** (Maßstab = 1.0)
### Netzausgleichung
Die Netzausgleichung verwendet:
- Gauß-Markov-Modell
- Beobachtungsgleichungen für Richtungen und Strecken
- Iterative Lösung nach Gauß-Newton
- Varianzfortpflanzung für Genauigkeitsmaße
## Lizenz
Dieses Programm wurde für geodätische Vermessungsarbeiten entwickelt.
## Autor
Entwickelt für geodätische Vermessungsarbeiten mit Trimble-Instrumenten.