A heatmap (magyarul általában hőtérképnek nevezzük) a térinformatikában egy interpoláción alapuló adatvizualizációs módszer, amellyel valószínűleg az időjárás jelentésekben találkozunk leggyakrabban. Segítségével kevés számú mért pont adatát ki tudjuk terjeszteni a mérési pontok közötti területekre, melyeket a mért adatokon alapuló becsült értékekkel látunk el.
Miből, hogyan készül a hőtérkép (heatmap)?
Az időjárás jelentésekhez kapcsolódó hőmérsékleti térképek úgy jönnek létre, hogy az ország területén elszórtan elhelyezkedő meteorológiai állomások egyedi mért adatait különböző modellek segítségével kiterjesztik olyan földrajzi területekre is, ahol nincs mért adat. A végeredmény pedig egy olyan térkép lesz, amely alapján a legtöbb földrajzi pontra becsült értékeket mutat, kivétel a mérési helyszíneken, ahol a valós, mért adatokat jeleníti meg. A köztes, becsült adatok megbízhatósága sok tényezőtől függ: a jelenség időbeli és térbeli változékonyságától, a mérőhálózat sűrűségétől, a mérések időbeli gyakoriságától, a mérések pontosságától, az alkalmazott interpolációs módszertől, stb.
Saját heatmap készítése
A heatmap módszere(, alapelve, logikája) alkalmazható más jelenségekre is. A hőtérkép (heatmap) többféle módon is előállítható, ezek közül kettőt mutatok be. Közös a két megoldásban, hogy mindkettő vektoros, pontszerű adatokat igényel bemeneti adatként. Azonban az egyik "csak" egy viszonylag gyors megoldás az adatok vizuális megjelenítésére hőtérkép formájában, míg a mögötte álló adat megmarad vektoros pontszerű rétegnek, addig a másik egy lassabb, számításigényesebb megoldás, amely a pont réteg adatait alapul véve valódi raszter réteget állít elő.
Saját heatmap készítése - vizuális megjelenítés
Első lépésben add hozzá a pontszerű vektor réteget a projekthez!
A pontok rétegére jobb egérgombbal kattintva válaszd ki a Properties menüpontot, a megjelenő Layer Properties ablakban pedig a Style fület! A jobb oldali panelen legfelül a legördülő menüből válaszd ki a Heatmap lehetőséget! A Color Ramp legördülő menüből válassz egy szimpatikus színskálát, esetemben ez egy megfordított Spectral színskála. A Radius értékét és mértékegységét tetszőlegesen változtathatjuk (én 20 milliméterre állítottam), ennek az értéke adja meg azt, hogy egy pont hatását mekkora területre terjeszti ki az algoritmus. Ha a pont réteg attribútum táblájában van olyan oszlop, amely alapján lehet súlyozni az egyes pontokat, akkor ezt is kiválaszthatjuk a Weight points by beviteli mezőben, így nem csupán a pontok helyzete alapján rajzolja ki a hőtérképet (heatmap), hanem a pontokhoz kapcsolódó számszerű adatokat is figyelembe véve. A mintaadatok esetében kiválasztottam a temp oszlopot, így az abban található hőmérsékleti adatokat is figyelembe fogja venni.
Ez a fajta hőtérkép (heatmap) megjelenítés csak vizuális "trükk", az adat nem változik meg. Habár nagy területet lefedő raszteres állománynak látszik, valójában továbbra is egy vektoros adatállományról van szó, amelyben pontok találhatók. Ezzel sajnos az is együtt jár, hogy ha a Radius mértékegysége nem Map Units, hanem bármi más, a megjelenő hőtérkép (heatmap) minden léptékváltásnál újragenerálódik, így közelítve-nagyítva a hőtérkép (heatmap) kinézete változni fog.
Saját heatmap készítése - valódi raszter réteg
Első lépésben add hozzá a pontszerű vektor réteget a projekthez!
A Processing menüben kiválasztjuk a Toolbox menüpontot, amelynek hatására alapértelmezetten a képernyő jobb oldalán megnyílik a Processing Toolbox panel. A panel felső részén található kereső mező segítségével keresd meg a Heatmap (Kernel Density Estimation) tool-t.
Bár a tool nevében is szerepel a Heatmap kifejezés, a Kernel Density Estimation tool többet csinál egyszerű interpolációnál, ez a tool már inkább a hot spot elemzéshez közelít. Ha még csak most ismerkedsz az interpolációs eljárásokkal, elsőre bátran használd ezt a tool-t, de később, ha komolyabb feladatokhoz is használni szeretnéd, kénytelen leszel elmélyülni egy kicsit ezek matematikai-statisztikai hátterében is.
A Point layer legördülő menüben válaszd ki a korábban hozzáadott pont réteget (ha nincs más pont réteg a projektben, akkor alapértelmezetten az van benne)! Add meg a Radius értékét (esetemben 20000 volt), az alábbiak figyelembe vételével:
- ez az érték a térképi vetület mértékegységében értendő (EOV esetében méter, WGS84 esetében földrajzi fok, stb.),
- az algoritmus minden egyes pont körül ekkora területre terjeszti ki a pont hatását, s miután minden pont köré elkészítette a képzeletbeli hatásterületét, minden pixel esetében megszámolja, hány pont hatásterülete esik rá.
Nyisd ki az Advanced parameters panelt az előtte látható fekete nyílra kattintva és a Weight from field [optional] mezőhöz válaszd ki azt az oszlopot, amellyel súlyozni szeretnél. Én itt a hőmérsékleti adatokat tartalmazó temp oszlopot választottam ki.
Add meg az Output raster size értékét pl. a 4 lehetséges érték közül a kettő alsót (Pixel size X és Pixel size Y) határozzuk meg, állítsuk pl. 100 m-re.
Határozd meg, hova és milyen névvel mentse az elkészíteni kívánt rasztert!
Miután lefutott a tool és a létrejött raszter réteget hozzáadta a rétegekhez, jobb egérgombbal a rétegre kattintva válaszd a Properties menüpontot, majd a Style fület. Válaszd ki a Render type legördülő menüből a Singleband pseudocolor opciót, a Color ramp menüből pedig egy szimpatikus színskálát, pl. RdYlBu.
A módszer alkalmazhatósága
A hőtérkép (heatmap) technikai szempontból bármilyen pontszerű állományon használható. Logikailag azonban csak a földrajzi térben folytonos jelenségek esetén értelmezhető, diszkrét adatok esetében nem!
A folytonos jelenségek, mint a hőmérséklet, a légnyomás vagy a tengerszint feletti magasság minden földrajzi pontban létező és értelmezhető jelenségek, így ha két mérési pont között interpolálunk, legfeljebb a becslés hibájával kell számolnunk, de maga a jelenség biztosan létezik a két mérési pont között is.
A diszkrét jelenségek, mint pl. a bűnelkövetések, a balesetek, a lakások (úgy általánosságban a legtöbb társadalmi, gazdasági jelenség) nem léteznek, így nem is értelmezhetők minden földrajzi pontban, így a mérési pontok közötti interpoláció teljesen téves eredményeket ad. Hadd mutassam be, mire gondolok, mondjuk a balesetek példáján! Képzelj el egy folyót, amelynek mindkét partján halad egy-egy út, s mindkettőnek van egy-egy kereszteződése, amelyben viszonylag gyakran történnek balesetek. A pontszerű baleseti adatok hőtérképe (heatmap) a két baleseti gócpont között interpolál, így ha az egyik kereszteződésben 12, a másik kereszteződésben 7 baleset történt, akkor a hőtérkép eredményeképpen azt látjuk, hogy a folyó közepén (a két kereszteződés között félúton) (12+7)/2 = 8,5 közúti baleset történt. Ami logikailag téves eredmény, nem a becslési hibából fakadó anomália, az oka pedig a rosszul megválasztott módszer.
Ilyen esetekben a hőtérképpel (heatmap) gyakran összetévesztett sűrűsödési térképet/elemzést (hot spot analysis) érdemes használni, amely az interpolációnál bonyolultabb térbeli statisztikai elemzés eredménye. A QGIS alapértelmezetten nem tartalmazza ezt az elemzést, de készült olyan plugin, amely segítségével ez is megvalósítható.