Terrain erzeugen

Installation

Ein eleganter Weg, das DataProcessing-Paket zu kompilieren und zu verwenden, ist mit Hilfe von Docker. Es sind dann keine Pakete auf der Host-Maschine zu installieren. Dies geschieht folgendermaßen:

cd aux/DataProcessing
docker build -t dataprocessing .

Andernfalls kann DataProcessing normal kompiliert werden. Eine Anleitung und alle benötigten Pakete finden Sie in DataProcessing/Dockerfile.

Datenquelle

Terraindaten sollten als Digitales Geländemodell (DGM) im GeoTiFF-Format vorliegen. Ist für ein Projekt kein DGM verfügbar, kann auf die globalen, frei verfügbaren SRTM-Daten der NASA zurückgegriffen werden.

Anleitung

In diesem Beispiel wird von folgenden Gegebenheiten ausgegangen:

  • DGM-Tiles liegen als GeoTIFFs in terrain/
  • Ziel-Verzeichnis ist tiles/terrain/
  • EPSG ist 28992 (für UTM 32 N auf 25832 ändern)
  • Docker-Image dataprocessing wird verwendet (siehe oben). Wenn das Programm ohne Docker installiert wurde, kann in jedem Kommando der Teil docker run -i  -v $PWD:/work -t dataprocessing einfach weggelassen werden.
  1. setup.xml anlegen:

    mkdir -p tiles
    cat >setup.xml <<EOF
    <?xml version="1.0" encoding="UTF-8"?>
    <ProcessingSettings>
        <processpath>tiles</processpath>
        <logpath>.</logpath>
    </ProcessingSettings>
    EOF
    
  2. Ausdehnung errechnen:

    docker run -i  -v $PWD:/work -t dataprocessing ogCalcExtent \
        --srs 'EPSG:28992' \
        --input terrain/*.tif
    ...
    IF THIS IS ELEVATION: LOD=18: Tile Coords: (133964, 86546)-(134572, 86885)
    ....
    

In diesem Beispiel wählen wir LoD 18 und Ausdehnung 133964 86546 134572 86885. Es können andere LoD und Ausdehnung gewählt werden.

  1. Terrainebene erzeugen:

    docker run -i  -v $PWD:/work -t dataprocessing ogCreateLayer \
        --name terrain \
        --lod 18 \
        --extent 133964 86546 134572 86885 \
        --type elevation
    
  2. Daten hinzufügen:

    for file in terrain/*.tif; do docker run -i  -v $PWD:/work -t dataprocessing ogAddData \
        --numthreads 4 \
        --layer terrain \
        --srs 'EPSG:28992' \
        --fill \
        --elevation $file;
    done
    
  3. Höchste Zoomstufe triangulieren:

    docker run -i  -v $PWD:/work -t dataprocessing ogTriangulate \
        --numthreads 4 \
        --layer terrain \
        --maxpoints 512 \
        --verbose \
        --triangulate
    
  4. Basierend auf dem in Schritt 5 erzeugten TIN können nun die niedrigeren Zoomstufen errechnet werden:

    docker run -i  -v $PWD:/work -t dataprocessing ogResample \
        --numthreads 4 \
        --layer terrain \
        --type elevation
    

Nun existieren die TIN-Tiles in tiles/terrain. Dieser Ordner kann nun in den entsprechenden Ordner der PlexMap-Installation kopiert werden.