[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