Retour au blog
mars 2020·1 min de lectureTraduit par IA
Langue:DeutschEnglishFrançaisÖsterreichischKlingonian Version originale: Deutsch

Visualiser les données d'altitude de la NASA

#hgt#nasa#srtm

Un petit snippet pour visualiser les données d'altitude de la NASA. Vous les trouverez ici : https://lpdaac.usgs.gov/products/srtmgl3v003/

Le script doit être téléversé sur le serveur, et le serveur HTTP doit avoir les droits d'écriture pour le fichier de métadonnées. Lors de la première exécution, un fichier de métadonnées est créé pour améliorer la visualisation et accélérer les rendus suivants : il y stocke l'altitude minimale et maximale. La visualisation mériterait encore quelques optimisations ; si vous avez des idées ou des conseils pour rendre les couleurs un peu plus réalistes, n'hésitez pas à m'écrire à srtm@devdave.de :-) Amusez-vous bien.

<?php
$filename = 'N49E008.hgt';
$gd = imagecreatetruecolor(1201, 1201);
header('Content-Type: image/png');
$minRendered = $maxRendered = 0;
if (file_exists($filename . ".meta")) {
  $createMeta = false;
  list($minH, $maxH) = explode(";", file_get_contents($filename . ".meta"));
} else {
  $createMeta = true;
  $minH = 0;
  $maxH = 2000;
}
$r = $g = $b = 0;
$range = 255 / (($maxH - $minH) / 3);
for ($i = $minH; $i < $maxH; $i++) {
  switch (0) {
    case $i % 3: $r += $range;
    case $i % 2: $g += $range;
    case $i % 1: $b += $range;
  }
  $color[$i] = imagecolorallocate($gd, $r, $g, $b);
}
$fh = fopen($filename, 'rb');
for ($y = 0; $y < 1201; $y++)
for ($x = 0; $x < 1201; $x++) {
  $h = unpack("s", strrev(fread($fh, 2)))[1];
  if ($h == "-32768") continue;
  if ($createMeta) {
    if ($h < $minRendered) $minRendered = $h;
    if ($h > $maxRendered) $maxRendered = $h;
  }
  imagesetpixel($gd, $x, $y, $color[$h]);
}
fclose($fh);
imagepng($gd);
if ($createMeta) file_put_contents($filename . ".meta", $minRendered . ";" . $maxRendered);
?>
Plus récentÉchecs simultanésPlus ancienyoutube-dl : télécharger du MP3 rapidement