Georeferenzierung: persistenter Standort-Bezug statt Neuberechnung je Import

Neues Project.geoAnchor: verbindet EINEN Modell-Punkt mit seiner realen
LV95-Koordinate. Bisher berechnete jeder Standort-Import (Gebäude/Terrain/
OSM) unabhängig einen neuen Bezug aus der jeweils gesuchten Adresse — bei
mehreren Importen mit leicht unterschiedlichen Suchbegriffen landete
importierter Kontext lagefalsch zueinander.

Der erste Import in einem Projekt setzt den Bezug automatisch (Modell-(0,0)
= gesuchter Ort) und speichert ihn; alle weiteren Importe verwenden densel-
ben Bezug, unabhängig vom neu gesuchten Ort (der bestimmt nur noch WOVON
Daten geladen werden, nicht mehr WOHIN sie im Modell platziert werden).
UI: Anzeige des aktiven Bezugs im Import-Dialog mit Zurücksetzen-Option.

Löst das strukturelle Problem noch nicht vollständig (der Bezug sitzt immer
bei Modell-(0,0) — passt nur, wenn das eigene Gebäude dort gezeichnet ist),
aber behebt die akute Inkonsistenz zwischen mehreren Importen.
This commit is contained in:
2026-07-12 19:33:16 +02:00
parent 450932a0c3
commit 02c36bd35b
8 changed files with 106 additions and 1 deletions
+19
View File
@@ -2170,6 +2170,25 @@ export interface Project {
* Feld noch nicht.
*/
referenceElevationMasl?: number;
/**
* Georeferenzierung: verbindet EINEN Modell-Punkt (lokale Meter) mit seiner
* realen LV95-Koordinate. Wird beim ERSTEN Standort-Import automatisch
* gesetzt (Modell-Position per Default (0,0), editierbar) und danach für
* ALLE weiteren Importe (Gebäude/Terrain/OSM) wiederverwendet — vorher
* berechnete jeder Import unabhängig einen neuen Bezug aus der jeweils
* gesuchten Adresse, wodurch mehrere Importe lagefalsch zueinander landen
* konnten, sobald nicht exakt derselbe Suchbegriff verwendet wurde.
* `label` ist die Anzeige-Adresse (rein informativ). Optional, damit
* bestehende Projekte ohne Bezug gültig bleiben.
*/
geoAnchor?: {
/** Reale Landeskoordinate (LV95/EPSG:2056, Meter). */
lv95: { e: number; n: number };
/** Zugehöriger Punkt im Modell (lokale Meter), Default (0,0). */
model: Vec2;
/** Anzeige-Adresse/Bezeichnung des Bezugspunkts. */
label?: string;
};
}
// ── Helfer ───────────────────────────────────────────────────────────────