Hallo liebes Forum,
ich habe zwei Shape-Datein. Beide stellen die selbe Bebauung dar. Das eine ist sehr aktuell, das andere schon fast zehn Jahre alt. Aber, in dem alten befinden sich noch alle Höhen der Gebäude, in dem neuen jedoch nicht. Zwischenzeitlich wurden auch schon ein paar Bebauungsänderungen vorgenommen (Abriss, Neubau). Ich müsste es irgendwie schaffen, die höhen aus den Gebauden, die sich jetzt mit dem neuen überlagern oder überdecken in das neue zu übertragen.
Leider sind es so viele Eintrage, ca.20000, dass man es nicht einmal eben schnell von Hand machen kann. Wie geht es nun am gescheitesten?
viele Grüße
Alex
ich habe zwei Shape-Datein. Beide stellen die selbe Bebauung dar. Das eine ist sehr aktuell, das andere schon fast zehn Jahre alt. Aber, in dem alten befinden sich noch alle Höhen der Gebäude, in dem neuen jedoch nicht. Zwischenzeitlich wurden auch schon ein paar Bebauungsänderungen vorgenommen (Abriss, Neubau). Ich müsste es irgendwie schaffen, die höhen aus den Gebauden, die sich jetzt mit dem neuen überlagern oder überdecken in das neue zu übertragen.
Leider sind es so viele Eintrage, ca.20000, dass man es nicht einmal eben schnell von Hand machen kann. Wie geht es nun am gescheitesten?
viele Grüße
Alex
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Novosibirsk am Mi., 24.01.2007 - 10:09
PermalinkAnsonsten probiere es mit den Funktionen Union oder Intersect (ehemals Geoprocessing Wizard). Ich weiss nicht mehr genau welche Funktion letztlich die richtige ist.
Das Prinzip wuerde folgendermassen aussehen:
>> Teile alle Polygone (Haeuser) inklusive Attribute mit der Funktion Union oder Intersect, an den Stellen wo sie sich ueberschneiden >> Output Layer 1
>> Fuehre alle Polygone von Output Layer 1, basiert auf ein eindeutiges Attribut, wieder zusammen mit der Funktion Dissolve. >> Output Layer 2
Die Funktionen muessten in den 9er Versionen in der Toolbox zu finden sein.
Gespeichert von Novosibirsk am Mi., 24.01.2007 - 10:12
PermalinkGespeichert von beschti am Mi., 24.01.2007 - 10:13
Permalinkrechte maustaste auf den aktuellen layer > joins & relates > join... > join by spatial location. den "alten" layer als raumbezug auswählen und die untere option auswählen ("each polygon will be given the attributes...").
das sollte dienlich sein, zumindest, wenn die geometrien sich entsprechen.
gruß martin
Gespeichert von Alex am Mi., 24.01.2007 - 15:48
Permalinkich habe es einmal probiert. Sogar in beiden Richtungen. Also erst die neue Datei als Grundlage genommen und dann die Alte als Grundlage. Das Ergebnis war immer exakt die Grundlage. Zwar waren die Eintrage aus beiden Attributtabellen vorhanden, aber so wie du es beschrieben hast, waren sie leer.
Es hat also nicht so geklappt wie es sollte.
Gibt es da noch eine andere Möglichkeit? Diese war je schon recht genial.
Gespeichert von beschti am Mi., 24.01.2007 - 16:22
Permalinkich kann mir eigentlich nur vorstellen, dass die gebäudegeometrien der beiden layer sich dann doch nicht so entsprechen (es heißt ja "falls completely inside of..."). bei mir hat das bisher immer recht gut funktioniert.
zwei ideen, wie es per join doch noch gehen könnte:
1. wenn du eine eindeutige object-id hast, die im alten und neuen layer identisch ist, kannst du die höhen der erhaltenen gebäude prima über "join attributes from a table" anfügen, das wäre das einfachste.
2. etwas komplizierter: erzeuge aus den alten gebäuden einen punktelayer der polygon-centroide und joine diesen, die punkte müssten ja in jedem fall in die polygone "completely inside" fallen.
wie man das macht:
- zwei neue felder in der attributtabelle erzeugen: add field >> eines x, eines y benennen, datentyp double
- rechte maustaste auf den x-feld-header >> calculate values >> den 5 schritten in der dortigen hilfe folgen unter "How to use Visual Basic code to calculate fields based on area, length, perimeter, etc.",
- wiederholen für das y-feld (natürlich mit der änderung "Output = pArea.Centroid.Y")
- attributtabelle >> export...
- menü tools >> add xy-data >> dateipfad angeben, ok.
dann join by spatial location.
klappt's so?