GNavigia und NASA SRTM-Daten

Hö­hen­da­ten, aus der Luft ge­grif­fen ...

Brand­neu: SRTM-Daten V3 «no vo­ids»

Seit An­fang 2015 lie­gen ver­bes­ser­te SRTM (Shutt­le Ra­dar To­po­lo­gy Mis­si­on) Da­ten vor. Die Ver­sion 3 der SRTM Da­ten ist in ge­wis­ser Wei­se ei­ne Re­vo­lu­ti­on, da erst­ma­lig kei­ne Hö­he fehlt! Daraus las­sen sich neue Fea­tu­res bau­en, z. B. die Be­rech­nung ei­ner Schum­me­rung (hill sha­ding) auf dem ei­ge­nen Rech­ner. GNavigia Ver­sion 5 kann das. Wie es geht, wie man das kon­fi­gu­riert und was das be­deu­tet, ha­be ich auf ei­ner se­pa­ra­ten Sei­te im Netz er­läu­tert:

  «Schum­me­rung aus SRTM V3 Da­ten lo­kal er­zeu­gen»

mit der ul­ti­ma­ti­ven Er­wei­te­rung für Skan­di­na­vi­en (Nor­we­gen, Schwe­den, Finn­land):

  «SRTM V3 glei­che Da­ten lo­kal er­zeu­gen»

Denn ak­tu­ell gilt: Die OSM-Gemein­de ver­wal­tet die Ka­cheln im­mer re­strik­ti­ver. Zeit­wei­se wa­ren auf dem Netz kei­ne Ka­cheln für die Schum­me­rung ver­füg­bar. Um von all dem Zir­kus un­ab­hän­gig zu sein, gibt es nun (auch) ei­ne hand­ge­mach­te Schum­me­rung. Zu­sam­men mit ei­ner Post­greSQL Da­ten­bank, die für die Schum­me­rung nicht er­for­der­lich ist, kann man sich un­ter Ein­satz von ca. 100 GB Plat­ten­platz «in sei­ne ei­ge­ne Welt» zu­rück­zie­hen. Aber auch oh­ne das lie­fert der neue An­satz ein deut­lich schö­ne­res Kar­ten­bild:
GNavigia Hill shading/Schummerung

Die In­ter­po­la­ti­on von Hö­hen

Neh­men wir ein­mal an, sie hät­ten ei­nen Track in ei­nem Pro­gramm di­gi­ta­li­siert, das Ih­nen kei­ne Hö­hen lie­fert, dann ste­hen Sie nach dem Ein­le­sen der Da­ten vor ei­nem Track mit lau­ter Null­hö­hen. Für ei­nen be­grenz­ten Be­reich der Er­de wur­den im Rah­men ei­ner Space Shutt­le Mis­si­on Hö­hen be­rech­net, die in ei­nem 3"-Ras­ter (ca. 90 m) vor­lie­gen und dem En­dan­wen­der kos­ten­los zur Ver­fü­gung ste­hen. Die über­ar­bei­te­ten, ge­glät­te­ten Da­ten wer­den als SRTM3-V3 be­zeich­net. Sie lie­gen als ge­pack­te Da­tei­en vor, die die Welt in 1°x1° gro­ße Be­rei­che tei­len. Die­se Da­ten kann sich GNavigia auf zwei un­ter­schied­li­che Ar­ten nutz­bar ma­chen:
  • In­ter­po­la­ti­on der Hö­hen aus den Hö­hen­li­ni­en ei­ner Post­greSQL-Daten­bank, sehr auf­wän­dig!
  • Down­load der ge­pack­ten HGT-Datei und In­ter­po­la­ti­on der Da­ten aus der Da­tei.
Die im fol­gen­den be­schrie­be­ne Vor­ge­hens­wei­se ist stets die glei­che, egal ob die Da­ten aus der Da­ten­bank oder der Da­tei stam­men. Der Be­nut­zer muss bei­de Ar­ten in ge­wis­sem Um­fang kon­fi­gu­rie­ren. Für den prak­ti­schen Ein­satz wird aber nur die Lö­sung über di­rek­ten Down­load der Da­tei­en in Fra­ge kom­men.
*
Am Bei­spiel «Rund um Ra­de­vorm­wald» wird die In­ter­po­la­ti­on von Hö­hen aus SRTM-Daten er­läu­tert. Die höchs­te Stadt im Ber­gi­schen Land eig­net sich we­gen der gro­ßen Hö­hen­un­ter­schie­de be­son­ders gut für die­sen Zweck. Die Funk­tio­na­li­tät der In­ter­po­la­ti­on selbst ver­steckt sich un­ter Be­ar­bei­ten/Track in den Tie­fen ei­nes Un­ter­menüs.

Be­vor Hö­hen­da­ten über­tra­gen wer­den kön­nen, muss ge­nau ein Track aus­ge­wählt wer­den, auf des­sen Track­punk­te die Ope­ra­tio­nen an­ge­wen­det wer­den sol­len. Wäh­len Sie aus dem Me­nü der Appli­ka­ti­on her­aus Be­ar­bei­ten/Track/Hö­hen aus SRTM-Daten in­ter­po­lie­ren/Al­le ak­ti­ven Track­punk­te. Es er­scheint ein Dia­log, der, falls GPS-Mes­sun­gen vor­lie­gen soll­ten, die Dif­fe­ren­zen ta­bel­la­risch dar­stellt und ein Ab­bre­chen oder auch nur die Ein­schrän­kung auf be­stimm­te Wer­te er­mög­licht. Kli­cken auf die Spal­te mit dem Kreuz ([X]) wech­selt zwi­schen drei Zu­stän­den:
  • al­le Punk­te se­lek­tiert
  • kein Punkt se­lek­tiert
  • nur Punk­te mit Null­hö­hen se­lek­tiert, falls es über­haupt ein­zel­ne Null­hö­hen gibt.
Die Spal­te Ge­nau­ig­keit wird zur­zeit noch mit 0.0 be­legt, sie ist für spä­te­re Ana­ly­sen re­ser­viert. Mit­hil­fe der Schalt­flä­che Zen­trie­ren kann man sich das nä­he­re Um­feld ei­nes Punk­tes ge­nau­er an­se­hen. Klickt man ein zwei­tes Mal für den­sel­ben Punkt, wird die vor­aus­ge­hen­de Dar­stel­lung an­ge­zeigt. Wei­te­res Kli­cken wan­dert im Sta­pel der An­zei­ge wei­ter zu­rück. (In Vor­be­rei­tung.)
*
Wird ei­ne SRTM-Höhe von 0.0 an­ge­zeigt, dann liegt es dar­an, dass (in be­son­ders fla­chen Ge­bie­ten kann das vor­kom­men) die nächs­te Hö­hen­li­nie zu weit vom Track­punkt ent­fernt ist. Ei­nen sol­chen Wert in­ter­po­liert man spä­ter über die be­kann­te In­ter­po­la­ti­ons­funk­ti­on für zu 0 ge­setz­te Hö­hen.

SRTM-Höhen aus HGT-Datei­en er­mit­teln
GNavigia Ver­sion 5.0

GNavigia Ver­sion 5.0 kann per HTTP-Re­quest die HGT-Datei­en V3 («no vo­ids») ab­ru­fen und aus­wer­ten, die vom US Geo­de­tic Sur­vey be­reit­ge­stell­te wer­den. Die Da­tei­en wer­den für die In­ter­po­la­ti­on von Hö­hen be­nutzt, aber auch zur Be­rech­nung ei­ner Schum­me­rung. Da­mit Hö­hen­da­ten ab­ge­ru­fen wer­den, müs­sen Sie ein Ver­zeich­nis an­ge­ben, ei­nen so­ge­nann­ten «Ca­che», in dem die Da­ten ab­ge­legt wer­den! An­sons­ten war­ten Sie ewig auf ein Er­geb­nis und der An­bie­ter der Da­ten är­dert sich über den Ver­brauch an Da­ten­vo­lu­men und Band­brei­te. Da­her gilt: Oh­ne Ca­che kei­ne Da­ten­nut­zung!
*
Da­mit SRTM-Höhen ver­wen­det wer­den, müs­sen Sie zwei Din­ge tun:
  • Sie müs­sen ein Ver­zeich­nis an­ge­ben, in dem die HGT-Datei­en ab­ge­legt wer­den kön­nen, und
  • sie müs­sen im Me­nü un­ter «Ex­tras/Ein­stel­lun­gen» im Rei­ter «Hö­hen» an­ge­ben, dass SRTM-Höhen ver­folgt wer­den sol­len.
Letz­te­res ist nur dann nö­tig, wenn Sie beim Kli­cken in die Kar­te Hö­hen­an­ga­ben in der Sta­tus­leis­te se­hen wol­len. Al­le an­de­ren Funk­tio­nen ar­bei­ten auch oh­ne den zwei­ten Schritt.
*
Die Kon­fi­gu­ra­ti­on ge­schieht da­zu im En­vi­ron­ment (der Um­ge­bung). Wie das geht und was Sie min­des­tens tun müs­sen, ist un­ter Sys­tem­tipps in epi­scher Brei­te be­schrie­ben. Set­zen Sie min­des­tens
 GNAVIGIA_SRTM_CACHE=C:\Ca­che\SRTM
Sie müs­sen GNavigia neu star­ten, falls es ge­öff­net sein soll­te. Da­nach lädt das Pro­gramm Hö­hen­da­ten, ei­nen funk­ti­ons­fä­hi­gen In­ter­net­zu­gang vor­aus­ge­setzt. Durch den Ca­che kön­nen Sie aber auch ei­ne Wei­le off­li­ne ar­bei­ten, da die Da­ten, an­ders als die Ka­cheln, für al­le Maß­stä­be und Zoom­stu­fen die­sel­ben sind.
*
Stan­dard­mä­ßig wird das Pro­gramm ei­nen Ca­che von un­be­grenz­ter Grö­ße an­le­gen. Für Deutsch­land kom­plett be­nö­ti­gen Sie et­wa 250 MB. Wie Sie den Ca­che be­gren­zen kön­nen, fin­den Sie eben­falls un­ter Sys­tem­tipps.
*
Der Ca­che ist schlau. Da sich SRTM-Daten nie wie­der än­dern wer­den bis sie durch bes­se­re und voll­stän­di­ge­re Da­ten er­setzt wer­den, kön­nen Sie der Ca­che­ver­wal­tung mit­tei­len, dass Sie be­stimm­te Da­tei­en nie­mals lö­schen soll. Da­zu müs­sen Sie im Ca­che­ver­zeich­nis die Da­tei «Ca­cheSa­ve.txt» an­le­gen und die Da­tei­en, die nicht ge­löscht wer­den sol­len, ein­tra­gen. Da­zu muss in je­der Zei­le der Da­tei links­bün­dig ge­nau ein Da­teiname ste­hen. Sol­len al­le Da­tei­en, die sich im Ver­zeich­nis be­fin­den, ein­ge­tra­gen wer­den, öff­nen Sie ei­ne «Ein­ga­be­auf­for­de­rung» mit­tels «cmd», wech­seln in das Ver­zeich­nis und tip­pen am Prompt ein:
 C:\Ca­che\SRTM>dir /B >Ca­cheSa­ve.txt 
Da­mit ist die Da­tei er­stellt. Sie darf nur Da­tei­en ent­hal­ten, die auf «hgt.zip» en­den. Sie wird aus­ge­wer­tet, wenn es um das Be­rei­ni­gen des Ca­ches geht. Die Da­tei hat Vor­rang vor der An­ga­be der Grö­ße des Ca­ches. Wenn Sie für 1 GB Da­tei­en an­ge­ben, wird der Ca­che im Lau­fe der Zeit auf 1 GB an­wach­sen. Da die Da­tei­en kom­pri­miert sind und un­ter­schied­lich groß, gibt es kei­ne Über­schlags­for­mel für die An­zahl der Da­tei­en.
*
Die HGT-Datei­en wer­den über ei­nen HTTP-Request syn­chron ge­la­den. Nach 1-2 Se­kun­den soll­te die Da­tei ge­la­den und die Hö­he be­stimmt sein. Da­nach ist nicht nur die Da­tei im Ca­che, auch de­ren Da­ten wer­den im Pro­gramm in ei­nem in­ter­nen Ca­che ver­wal­tet, der na­tür­lich nur so­lan­ge ak­tiv ist, wie das Pro­gramm läuft. Zu­grif­fe dar­auf be­we­gen sich im Be­reich von Mil­li­se­kun­den.
*
Den Pfad für den HTTP-Request ent­nimmt das Pro­gamm ei­ner Set­zung in der Kon­fi­gu­ra­ti­ons­da­tei GNavigiaDigitalElevation.xml, die im Ver­zeich­nis der aus­führ­ba­ren Da­tei­en liegt. Die Set­zun­gen sind ein­ge­tra­gen un­ter:
 <SRTM.V3>
SRTM V2 wird nicht mehr un­ter­stützt.

SRTM-Höhen aus Hö­hen­li­ni­en ei­ner Post­greSQL Da­ten­bank

Mit Ver­sion 2.11.12.0 wur­de erst­mals ei­ne ein­fa­che, geo­dä­tisch ge­se­hen hin­rei­chend ex­ak­te In­ter­po­la­ti­on von Hö­hen­da­ten mög­lich, so­fern die OSM-Daten­bank hier­zu mit SRTM-Daten ge­füllt ist. Ers­te Tests ha­ben ge­zeigt, dass sich da­mit Ge­nau­ig­kei­ten um 20 m für die Hö­he er­zie­len las­sen. Das be­reits zu­vor er­wähn­te PDF-Doku­ment er­läu­tert die Vor­ge­hens­wei­se zum Ein­spie­len von NASA SRTM-Daten. Die Sei­te GNavigia Cli­ents ist u. a. dem ODBC-Anschluss von Da­ten­ban­ken ge­wid­met, nur dass hier die Da­ten­quel­le (Da­ta Sour­cepost­gres_srt­m_v2 lau­ten muss. (Un­ter Win­dows 7 64-Bit müs­sen Sie für das Hin­zu­fü­gen des ODBC-Trei­bers statt Sys­tem­steue­rung/Ver­wal­tung/ODBC-Daten­quel­len als Ad­mi­nis­tra­tor das Pro­gramm C:\Win­dows\SysWOW64\odb­cad32.exe aus­füh­ren, um 32-Bit ODBC-Trei­ber hin­zu­zu­fü­gen.)

Di­gi­ta­li­sie­ren von Punk­ten

Beim Di­gi­ta­li­sie­ren von Punk­ten wird au­to­ma­tisch ei­ne SRTM-Höhe in­ter­po­liert, wenn die Funk­tio­na­li­tät zur Ver­fü­gung steht. Da für je­de Hö­he ein neu­er Thread er­zeugt wird, kann es auf lang­sa­men Ma­schi­nen da­zu kom­men, dass die Hö­hen­be­stim­mung nach­läuft. Ein Ver­such auf ei­nem 3000+ Ath­lon mit schnel­ler Klick­fol­ge, 1100 Punk­ten und 180 km Track­län­ge führ­te zu dem Er­geb­nis, dass im Ma­xi­mum fast 800 Threads zu­sätz­lich ak­tiv wa­ren. Nach ei­ner lan­gen Pha­se kon­kur­rie­ren­der Be­rech­nun­gen lie­fen die Er­geb­nis­se am En­de fast si­mul­tan ein, so­dass man dann «die Hö­hen her­an­flie­gen sah», zu­dem in ei­ner et­was an­de­ren Rei­hen­fol­ge als die in­ner­halb des Tracks, zeit­lich ge­se­hen, nicht räum­lich.

In­ter­po­la­ti­ons­for­mel

Die In­ter­po­la­ti­on von Hö­hen ba­siert auf Da­ten­bank­funk­tio­nen, die durch­aus zu un­er­war­te­ten Re­sul­ta­ten füh­ren kön­nen. Da­her soll der ver­wen­de­te Al­go­rith­mus nä­her er­läu­tert wer­den, wo­bei rech­te Win­kel, wie in der Geo­dä­sie üb­lich, mit dop­pel­ten Vier­tel­krei­sen mar­kiert sind:
*
Ei­ne Da­ten­bank­funk­ti­on sucht die bei­den Hö­hen­li­ni­en, für die, wenn man vom zu in­ter­po­lie­ren­den Punkt P das Lot auf die­se fällt, die Län­ge des Lots mi­ni­mal ist. Da­zu wird in ei­nem fes­ten Um­kreis um P ge­sucht und al­le Lo­te wer­den der Län­ge nach auf­stei­gend sor­tiert. Die ers­ten bei­den Er­geb­nis­se lie­fern die nächs­ten Nach­barn des Punk­tes. Zwi­schen den Lot­fuß­punk­ten P1 und P2 wird ge­dank­lich ei­ne Li­nie auf­ge­spannt und der Punkt P wird dar­auf auf­ge­win­kelt. Im Lot­fuß­punkt wird die Hö­he in­ter­po­liert und als die Hö­he von P ver­mu­tet. Wenn die Hö­hen­li­ni­en ziem­lich par­al­lel und mit glei­chen Ab­stän­den ver­lau­fen, ist das auch der Fall.
*
Im skiz­zier­ten Bei­spiel lie­gen die bei­den nächs­ten Li­ni­en aber so, dass der Punkt P zwi­schen P2 und P3 ex­tra­po­liert wer­den müss­te. Dem trägt der Al­go­rith­mus Rech­nung. P wird auf die Li­nie zwi­schen P2 und P3 auf­ge­win­kelt, wo­durch ein ge­ring­fü­gig an­de­res Er­geb­nis für die Hö­he des Punk­tes auf­tritt, als er­war­tet. Al­ler­dings sind we­der die SRTM-Höhen noch mit­tel GPS er­mit­tel­te Ver­gleichs­wer­te ge­nau­er als 10 Me­ter, so­dass der Feh­ler ge­ring ist ge­gen die zu er­war­ten­de Ge­nau­ig­keit.