STRUKTURA RASTROVÝCH DAT dva typy rastrové vrstvy v GIS 1) Digitální obraz TV, počítač, mobil - obrazovka obraz z bodů mapa - mřížka s barevnými plochami 2) Rastrová data data pro analýzu a) binární - ano/ne b) pořadová - číslicové označení výsledku klasifikace - kódová tabulka c) číselná - celá nebo reálná čísla, hodnota fyzikální veličiny výšková data - DMT obrazová data DPZ - údaj o zářivé energii rastr je jednoduchý vs. velké soubory 3 barvy 0-255 16 777 216 barev obraz 1024 768 pixelů představuje přes 2 MB dat reálná čísla každé vyžaduje 32 bit = 4 byty byte = 8 bit 20 km x 20 km s buňkou/pixelem 50 m 400x400=160 000 pixelů Struktura pro rastrová data potíž: databáze je stavěná na informaci o reálných objektech informaci uložit a zpracovat k tomu je třeba definovat: - prvky, které má reprezentovat - vztahy mezi nimi To je základ pro rozhodnutí jak tabulky mají být propojené Tento model prvků a vztahů fungoval u vektorových dat (body, čáry, polygony) příklad databáze: hry režisér představení vztahy: každá hra má jednoho režiséra každý režisér může režírovat více her každá hra může mít několik představení představení může být vždy jen jedné hry žádný přímý vztah mezi režisérem a představením
Prvek v případě rastru: a) celá vrstva b) buňka (pixel) Celá vrstva: atributy zapisovatelné do tabulky: geografický rozsah, zdroj dat, datum pořízení, čím pořízeno atp. Geografický rozsah polygon, vrstvu lze vyhledat mezi ostatními vrstvami Buňky: nelze zapsat jako atributy jedna hodnota v buňce Možnosti a) zpřístupnit v databázi hodnoty pixelů vyžaduje detailní programování na spodní úrovni počítačové struktury rozšíření jazyka SQL jazyk 4. generace, uživatelská příjemnost použít jazyk jen 3. generace - např. ORACLE obsahuje jazyk s verzí Tomlinovy mapové algebry DB obvykle k uložení a manipulaci s rastrovou vrstvou, ale ne k analýze b) vytvořit jiný software, ne databázový, s využitím zvláštní datové struktury POLE datová struktura pole - array každý prvek pole je identifikován číslem Příklad: naplnění pole z souboru 64 jmen: array JMENA [1..64] Načti jména ze souboru do pole JMENA první prvky pole JMENA [1] JMENA [2] JMENA [3]... Mirovský Pešek Měkota
Program pro vyhledání daného jména v seznamu 64 jmen: i = 1 s = FALSE repeat until H = TRUE or i > 64 if JMENA [i] = Měkota then s = TRUE i = i + 1 Pole může být i dvojrozměrné řádky a sloupce Pole je i efektivní způsob uložení dat zvláště pro uložení rastrových dat práce počítače: data z úložiště do paměti, uložení v podobě daného počtu jednotek (bytes, slova), každá jednotka má adresu (číslo od nuly do počtu jednotek v paměti) uložení pole v paměti: adresa 12905 12906 12907 obsah Mirovský Pešek Měkota Každý program potřebuje vědět adresu dat, která má zpracovat Určení adresy prvků pole: program zná adresu prvního prvku, další podle indexu. Například pro JMENA [3] 1. index prvku je 3 2. první prvek má index 1 3. tento prvek je na adrese o (3-1)=2 větší než začátek -- offset 4. adresa prvního prvku je 12605 5. adresa tohoto prvku je 12605+2=12607 jen dva výpočty (krok 3. a 5.)
Uplatnění pro rastrová data v GIS místo jmen jsou řádky a sloupce není třeba jiné uspořádání paměti je třeba stanovit pořadí ukládání a velikost pole adresa 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 hodnota A A A B A A B B A B B B A A A A Není žádná konvence operace převrácení Zavedení pole: array OBRAZ [0..3, 0..3] určení adresy prvku pole: adresa = (číslo řádky * délka řádky) + číslo sloupce OBRAZ [2,3] adresa = 2*4 + 3 = 11 Tento předpis se zavede do programu s načtením pole Důležitá vlastnost pole: načtení každého prvku trvá stejně dlouho bez ohledu na velikost pole Přístup ke každé adrese je stejně rychlý načtení čísla do CPU časová efektivita pole O(1) - efektivní z hlediska času z hlediska místa je efektivita pole O(n 2 ) největší nevýhoda pole pro uložení rastrových dat
ZMENŠENÍ VELIKOSTI SOUBORU místo na disku více dat (vrstev) v paměti snížení velikosti rastrového souboru vstup nejrychlejší přesun dat mezi pamětí a CPU pomalejší mezi diskem a pamětí nejpomalejší v síti METODY 1. co nejmenší objem paměti pro jeden pixel využití celých čísel způsob uložení čísla: mantisa a exponent pro reálná čísla 32 bit pro celá čísla: převod do dvojkové soustavy a uložení 1 byte = 8 bit maximálně 256 celých čísel ale úspora 4násobná Dvojkové číslo Dekadické číslo 00000000 0 00000001 1 11111111 255 Pokud i záporná čísla : od -128 do +127 Logické vrstvy obsahují hodnoty jen FLASE nebo TRUE stačí jeden bit 2. pracovat jen s vybranou částí celé vrstvy optimalizace oproti počtu opakování přístupu k disku dva extrémy: a) celá vrstva v paměti O(n 2 ) úložný prostor, ale 1 operace s diskem b) jeden pixel v paměti 1 jednotka prostoru, ale O(n 2 ) operací s diskem kompromis: jedna řádka v paměti: O(n) prostoru, O(n) operací s diskem využití v případě nedostatku paměti pro velké soubory (obrazy s velkým počtem sloupců)
3. řádková komprese binární i pořadová data velký počet stejných hodnot uložení kolikrát se hodnota opakuje za sebou adresa 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 hodnota 3 A 1 B 2 A 2 B 1 A 3 B 4 A Ale: každý pixel jiný -- dvojnásobná velikost 4. quadtree řádková komprese ve dvou směrech homogenní oblasti jsou představeny jednou větší buňkou vrstva je rozdělena na větší části a buňky očíslovány v určitém pořadí Mortonovo uspořádání homogenní buňky se nedělí, další se dělí stejným způsobem s druhou číslicí ve shodném pořadí uložení v paměti: adresa 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QT adresa 0 1 2 3 10 11 12 13 20 21 22 23 30 31 32 33 Hodnota/ směrovač A 4 8 12 A A B A A B B B B A B A Úspora pro velké homogenní plochy v obraze potřeba čtvercové plochy - strana velikosti mocniny 2 doplnění o žádná data
Quad kvadrant tree obvyklé vyjádření této struktury uzly: listy větve kořen Datová struktura pro obrazová data také u obrazu je velikost důležitá ale: obraz je pro vizualizaci - může být uložen jakkoli, ale plně zobrazitelný menší velikost šetří: úložný prostor a čas přenosu do paměti opět využití shodnosti hodnot v obrazových datech
1. GIF Graphics Interchange Format využívá obecného kompresního algoritmu LZW - Lempel, Ziv a Welch algoritmus hledá opakující se sestavy hodnot (ne jen jednotlivých hodnot) tyto sestavy jsou zapsány kódem - datový slovník třeba znát jaké hodnoty se v obraze mohou vyskytnout Popis algoritmu: 1. vezmi jednu hodnotu z dat řetězec S 2. vezmi další hodnotu řetězec T 3. je-li S+T v datovém slovníku THEN a. přidej T k S a vytvoř nový řetězec S b. vrať se na krok 2 4. ELSE a. zapiš kód pro S b. přidej S+T do datového slovníku 5. jdi na krok 1 Příklad: data na vstupu jsou: ABABABAB výchozí datový slovník je : hodnota kód A 1 B 2 1. S = A, T = B; řetězec AB není ve slovníku a. AB je dodáno do slovníku s kódem 3 b. zapsána hodnota 1 reprezentující řetězec A 2. S=B, T=A; řetězec BA není ve slovníku a. BA je dodáno do slovníku s kódem 4 b. zapsána hodnota 2 reprezentující řetězec B 3.S=A, T=B, řetězec AB je ve slovníku a. vytvořen řetězec S=AB b. T=A 31. řetězec ABA není ve slovníku a. ABA je dodáno do slovníku s kódem 5 b. zapsána hodnota 3 reprezentující řetězec AB Postupně se s opakujícími se řetězci komprese zvyšuje.
Při vizualizaci se rekonstruuje obraz podle datového slovníku uloženého s kódovými daty v souboru, takže se nepřenáší do paměti kromě LZW komprese schopnost prokládat data liché řádky a sudé zvlášť vizuální kontrola správnosti výběru dat 2. JPEG Joint Photographic Experts Group netřeba držet veškeré detaily obrazu ztrátová komprese: 1. namísto barvy jen č/b zjednodušení barevné informace konverze z RGB do formátu YCbCr, možná zpětná konverze Y jas, hodnota šedi, Cb a Cr - barva the Cb and Cr vrstvy obsahují jen každý druhý pixel v řádku někdy i sloupci redukce 2krát nebo 4krát 2. vynechání nedůležitých frekvencí v obraze každou hodnotu měnící se v čase nebo prostoru lze vyjádřit jako vlnu hlavní frekvence vedlejší frekvence, harmonická Joseph Fourier každou křivku (funkci) lze vyjádřit kombinací sinusovek obrazová data měnící se řada čísel signál
a) rastr 8 8 pixelů b) první řádka jako profil c) celý rastr jako plocha d) rastr po filtraci blok koeficientů 8x8 systémem podobném Mortonovu uspořádání: největší vlevo nahoře výrazné uspořádání dat možnost uplatnění řádkové komprese sloučení nízkých hodnot koeficientů Huffmanovo kódování vypuštění méně důležitých frekvencí v obou směrech bloku 8x8 počet vypuštěných frekvencí lze volit výrazná úspora velikosti souboru