[GRASS-de] synthetisches Höhenmodell einer Fläche beliebiger Raumlage
Jochen Schwarze
j-eins at gmx.de
Do Nov 25 11:59:28 CET 2004
Hallo Klaus!
Das scheint mir mehr ein Fall für r.mapcalc zu sein.
Deine geologische Trennfläche (welcher Art auch immer) ist mathematisch
gesprochen ja eine Ebene (wenn das auch nicht immer der geologischen Realität
entspricht). Diese Ebene kann durch einen Stützvektor P0 (ein beliebiger
Punkt deiner Fläche, z.B. die Raumkoordinaten eines Aufschlusses) und zwei
Spannvektoren A und B (z.B. Streichrichtung und Einfallen, die sind dann
auch gleich linear unabhängig) beschrieben werden, wobei dann für jeden Punkt
X deiner Fläche gilt:
X = P0 + rA + sB (Parameterdarstellung mit den Parametern r und s),
oder als Gleichungssystem:
x = p1 + ra1 + sb1
y = p2 + ra2 + sb2
z = p3 + ra3 + sb3
(Eine andere Möglichkeit an das Gleichungssystem zu kommen, wäre es z.B. die
Raumlage dreier Punkte X0, X1, X2 auf der Ebene zu kennen (drei Aufschlüsse).
Die Spannvektoren der Ebene ergäben sich dann als A=X1-X0 und B=X2-X0, P0=X0)
Durch Umformug (Gauss-Verfahren) kannst du nun die Parameter r und s
eliminieren und erhältst etwas in der Form:
lx + my + nz = k beziehungsweise z = (k - lx - my) / n.
x und y sind nun deine 'geografischen Koordinaten des moving windows bei
r.mapcalc' , z die Höhenlage der Fläche. In r.mapcalc gesprochen:
r.mapcalc 'geoflaeche=(k - l*x() - m*y())/n'
(nebenbeibemerkt eignet sich grass mit r.mapcalc auch gut als 3D
Funktionenplotter!!!)
Zum Ausstrich dieser Fläche interessiert nun der Anteil, welcher unter der
Geländeoberfläche (z.B. dgm) liegt:
r.mapcalc 'geoflaeche_real=if(geoflaeche<dgm,geoflaeche,null())'
Das Ergebnis könnte man dann noch mit r.poly vektorisieren.
Viel Spass und halt uns auf dem laufenden!
Gruss, Jochen