gdal_contour -a elev dtm110733.tif contour.shp -i 10.0
03 January 2014
Mit gdal_contour steht ein Programm zur Verfügung, das aus einem digitalen Terrainmodell Höhenkurven berechnet:
gdal_contour -a elev dtm110733.tif contour.shp -i 10.0
Mit diesem Befehl werden Höhenkurven mit einer Äquidistanz von 10 Metern erzeugt und in der Shapedatei contour.shp
gespeichert. Zusätzlich wird die Höhe in das Attribut elev
geschrieben.
Ohne jegliches Zutun wirken die Höhenkurven aber unruhig und es sind viele «Kleinst»-Höhenkurven vorhanden:
Ein schöneres Kartenbild ergibt sich durch vorgängiges Prozessieren des digitalen Terrainmodells. Mit einem Shell-Skript wird das Terrainmodell zehn Mal mit einer bestimmten Resamplingmethode umprojiziert. Das Umprojizieren ist in diesem Fall aber belanglos, da a) nichts umprojiziert wird und b) nur das Verschmieren der Rasterwerte durch das Resampling interessiert:
#!/bin/bash
cp $1 tmp_$1
for i in {1..10}
do
gdalwarp -co COMPRESS=PACKBITS -overwrite -r cubicspline tmp_$1 smooth_$1
cp smooth_$1 tmp_$1
done
rm contour_smooth.*
gdal_contour -a elev smooth_$1 contour_smooth.shp -i 10.0
ogr2ogr -overwrite -dialect SQLITE contour_smooth_reduced.shp contour_smooth.shp -sql "SELECT * FROM contour_smooth WHERE ST_Length(GEOMETRY) > 100"
Das 10-fache Resampling findet in der for-Schleife statt. Anschliessend werden die Höhenkurven erzeugt. Der letzte Befehl löscht alle Höhenkurven, deren Länge kleiner 100 Meter ist. Dieser Befehl funktioniert erst mit gdal ≥ 1.10.
Et voilà: