User Tools

Site Tools


user:sachy:brmdam

This is an old revision of the document!


Precerpavaci elektrarna Cechy-stred

Prehradi-li se Labe na vytoku z CR, muze po osazeni telesa hraze turbinami vzniknout nejvetsi precerpavaci elektrarna v Ceske republice [citation needed]. Dopady stavby na zivotni prostredi jsou zanedbatelne, nebot moznost nezatopena mista osadit dle nadmorske vysky bud vetrniky, nebo repkou, o 666% vylepsi zivotni prostredi v CR.

Data o nadmorske vysce

Nadmorskou vysku pevniny zmapoval a zcenzurovanou verzi zverejnil spojenostatoamericky projekt SRTM. Data lze stahnout ve forme matic o rozmerech 1201×1201 16b integeru o kroku 1m; s vertikalni presnosti ~10m (hodnota skalaru) a plosnym rozlisenim 3“ (tri uhlove sekundy; ~90m).

Stazeni dat pro CR (zabere ~100MB):

#!/bin/bash

for i in {48..51..1}
do
  for e in {011..019..1}
  do
    wget http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N"$i"E"$e".hgt.zip
    unzip ./N"$i"E"$e".hgt.zip -d ./
    rm ./N"$i"E"$e".hgt.zip
  done
done

Zpracovani SRTM dat

Existuje projekt gdal, ale je zabugovany k nepouzitelnosti, proto jsem napsal vlastni C programy “mergeWENS.c” (slouci SRTM matice do jedne) a “hgt2pngn.c” (prevede matici na png obrazek). Stazeni: http://brmlab.s0c4.net/brmdam.tgz

Slouceni .hgt matic do jedne velke matice

SRTM matice nelze trivialne napojit na sebe, protoze prvni/posledni radek/sloupec se prekryva se sousedni matici. Je tedy potreba pouzit muj mergeWENS.c:

clang ./mergeWENS.c -o ./mergeWENS
mergeWENS #WE #NS input.hgt [...] output.hgt
  • #WE = pocet west-to-east matic
  • #NS = pocet north-to-south matic
  • input.hgt … = vstupni hgt matice v poradi od severozapadu, pres severovychod a jihozapad k jihovychodu.
  • output.hgt = vystupni matice

Pro CR a zaokrouhlene okoli (48-51 SS; 11-19 VD) je ten prikaz nasledujici:

./mergeWENS 9 4 ./N51E011.hgt ./N51E012.hgt ./N51E013.hgt ./N51E014.hgt ./N51E015.hgt ./N51E016.hgt ./N51E017.hgt ./N51E018.hgt ./N51E019.hgt ./N50E011.hgt ./N50E012.hgt ./N50E013.hgt ./N50E014.hgt ./N50E015.hgt ./N50E016.hgt ./N50E017.hgt ./N50E018.hgt ./N50E019.hgt ./N49E011.hgt ./N49E012.hgt ./N49E013.hgt ./N49E014.hgt ./N49E015.hgt ./N49E016.hgt ./N49E017.hgt ./N49E018.hgt ./N49E019.hgt ./N48E011.hgt ./N48E012.hgt ./N48E013.hgt ./N48E014.hgt ./N48E015.hgt ./N48E016.hgt ./N48E017.hgt ./N48E018.hgt ./N48E019.hgt ./NallEall.hgt

Konverze do png

Matici je pro potreby zobrazeni prevest do png, opet se opakuje situace se zabugovanymi nastroji v rezozitari/na internetech. Takze pouziju svuj hgt2pngn.c (potrebuje opencv-dev):

clang $(pkg-config --cflags --libs opencv) hgt2pngn.c -o hgt2pngn
./hgt2pngn width height mode input.hgt output.png
  • width = pocet sloupcu vstupni matice
  • height = pocet radku vstupni matice
  • mode = rezim konverze vstupniho 16b skalaru:
    • 8 = grayscale 8b png (ztrati se presnost)
    • 16 = grayscale 16b png (bez ztraty presnosti, ale vetsina sw neumi zpracovat)
    • 3 = RGB 8b png.
      • Cervena = oblasti kde nejsou dostupna SRTM data
      • Zelena = (vyska/256)*32
      • modra = vyska%256
  • input.hgt = vstupni matice
  • output.png = vystupni png

MergeWENS vypise rozmery vystupni matice, coz NENI prosty soucet rozmeru vstupu (kvuli presahum matic do sousednich).

./hgt2pngn 10793 4798 8 ./NallEall.hgt ./NallEall.png
./hgt2pngn 10793 4798 16 ./NallEall.hgt ./NallEall.png
./hgt2pngn 10793 4798 3 ./NallEall.hgt ./NallEall.png

Vypocet a vykresleni zatopene plochy

K vypoctu zatopene plochy je potreba 16bit grayscale PNG z hgt2pngn. O vypocet se stara program damnflood, ktery krom grafickeho vystupu vypocte i nejnizsi bod hraze, jeji vysku, objem zadrzene vody v m^3 a zatopenou plochu v m^2.

clang $(pkg-config --cflags --libs opencv) -lm damnflood.c -o damnflood
damnflood Ax Ay Bx By h input.png output.png
  • Ax, Ay = souradnice pocatku hraze
  • Bx, By = souradnice konce hraze
  • h = jake vysky ma hladina dosahnout (v metrech nad morem)
    • 0 znamena vykresleni pouze hraze (pro debugovani umisteni)
  • input.png = 16b grayscale png
  • output.png = 16b RGB png

Barvy:

  • cervena = teleso hraze
  • modra = zatopena oblast
  • bily bod = chyba mereni SRTM
  • odstiny sede (v podstate cerna) = nethnute informace o terenu z SRTM

Priklad:

./damnflood 3800 1400 4200 1450 423 ./NallEall16.png ./flood16.png
Root : Top : Height = 123 : 501 : 378
Filling west/south side!
Stats:
	Volume: 3523475351700 m^3
	Area: 30450289500 m^2

Data

Zdrojaky k mergeWENS, hgt2pngn, damnflood

8b PNG zatopene oblasti (ztrata presnosti 16b→8b skalovanim)

16b PNG zatopene oblasti (puvodni vyska terenu v m.n.m.)

user/sachy/brmdam.1490968212.txt.gz · Last modified: 2017/03/31 13:50 by sachy