DEM Preparation

SAR processing requires a high resolution Digital Elevation Model for ortho-rectification and normalization of terrain-specific imaging effects.

In SNAP, the DEM is usually auto-downloaded by the software itself and the user only specifies the DEM source to be used, e.g. SRTM. pyroSAR’s convenience function pyroSAR.snap.util.geocode() can additionally pass SNAP’s option to use an external DEM file via parameters externalDEMFile, externalDEMNoDataValue and externalDEMApplyEGM.

GAMMA does not provide ways to automatically download DEMs for processing and the user thus also needs to provide an external DEM file in GAMMA’s own format. However, several commands are available to prepare these DEMs including conversion from geoid heights to WGS84 ellipsoid heights.

pyroSAR offers several convenience functions to automatically prepare DEM mosaics from different sources to use them in either SNAP or GAMMA.

Download of DEM Tiles

The function pyroSAR.auxdata.dem_autoload() offers convenient download of tiles from different sources overlapping with user-defined geometries. Optionally, a buffer in degrees can be defined. This function internally makes use of the function spatialist.auxil.gdalbuildvrt().

from pyroSAR.auxdata import dem_autoload
from spatialist import Vector

site = 'mysite.shp'
vrt = 'mosaic.vrt'

with Vector(site) as vec:
    vrt = dem_autoload(geometries=[vec],
                       demType='SRTM 1Sec HGT',
                       vrt=vrt,
                       buffer=0.1)

The tiles, which are delivered in compressed archives, are directly connected to a virtual mosaic using GDAL’s VRT format, making it easier to work with them by treating them as a single file. For downloading tiles of some DEM types, e.g. TDX90m, an account needs to be created and the user credentials be passed to function dem_autoload(). See the function’s documentation for further details.

The files are stored in SNAP’s location for auxiliary data, which per default is $HOME/.snap/auxdata/dem. The function dem_autoload() has proven beneficial in server environments where not each node has internet access and the tiles thus need to be downloaded prior to processing on these nodes.

DEM Mosaicing

In a next step we create a mosaic GeoTIFF cropped to the boundaries defined in the VRT using the function pyroSAR.auxdata.dem_create(). The spatial reference system, WGS84 UTM 32N in this case, is defined by its EPSG code but also several other options are available. Since for SAR processing we are interested in ellipsoid heights, we call the function with the according parameter geoid_convert set to True. This function makes use of spatialist.auxil.gdalwarp(). Conversion of vertical reference systems, e.g. from geoid to ellipsoid, requires GDAL version >=2.2.

from pyroSAR.auxdata import dem_create

outname = 'mysite_srtm.tif'

dem_create(src=vrt, dst=outname,
           t_srs=32632, tr=(20, 20),
           resampling_method='bilinear',
           geoid_convert=True, geoid='EGM96')

GAMMA Import

For convenience, pyroSAR’s gamma submodule contains a function pyroSAR.gamma.dem.dem_autocreate(), which is a combination of functions dem_autoload() and dem_create() and further executes GAMMA commands for format conversion. It offers the same parameters as these two functions and a user can additionally decide whether geoid-ellipsoid conversion is done in GDAL or in GAMMA via parameter geoid_mode. The output is a file in GAMMA format, which can directly be used for processing by e.g. function pyroSAR.gamma.geocode().