Megosztás a következőn keresztül:


Hőtérkép-réteg hozzáadása térképhez

A hőtérképek, más néven pontsűrűség-térképek az adatvizualizációk egy típusa. Az adatok sűrűségét színek tartományával jelölik, és a térképen a "gyakori helyek" adatokat jelenítik meg. A hőtérképek kiválóan alkalmasak nagy számú ponttal rendelkező adathalmazok renderelésére.

Ha szimbólumként több tízezer pontot jelenít meg, az a térképterület nagy részét lefedheti. Ez az eset valószínűleg számos szimbólum átfedését eredményezi. Megnehezíti az adatok jobb megértését. Ha azonban ugyanazt az adathalmazt ábrázolja, mint egy hőtérkép, könnyen láthatóvá válik az egyes adatpont sűrűsége és relatív sűrűsége.

A hőtérképek számos különböző forgatókönyvben használhatók, például:

  • Hőmérsékleti adatok: Közelítő adatokat biztosít arról, hogy mi a hőmérséklet két adatpont között.
  • Zajérzékelők adatai: Nem csak az érzékelő zajának intenzitását jeleníti meg, hanem betekintést is nyújthat a távolságból történő eloszlatásba. Előfordulhat, hogy egy helyen nem magas a zajszint. Ha több érzékelő zajlefedettségi területe átfedésben van, előfordulhat, hogy ez az átfedő terület magasabb zajszintet tapasztal. Így az átfedésben lévő terület látható lenne a hőtérképen.
  • GPS-nyomkövetés: A sebességet súlyozott magasságtérképként tartalmazza, ahol az egyes adatpont intenzitása a sebességen alapul. Ez a funkció például lehetővé teszi annak megtekintését, hogy egy jármű hol gyorsult.

Tipp

A hőtérkép-rétegek alapértelmezés szerint az adatforrás összes geometriája koordinátáit renderelik. Ha úgy szeretné korlátozni a réteget, hogy csak pontgeometriai jellemzőket jelenítsen meg, állítsa a filter réteg tulajdonságát értékre ['==', ['geometry-type'], 'Point']. Ha MultiPoint-funkciókat is szeretne használni, állítsa a filter réteg tulajdonságát értékre ['any', ['==', ['geometry-type'], 'Point'], ['==', ['geometry-type'], 'MultiPoint']].


Hőtérképréteg hozzáadása

Ha egy pontforrást hőtérképként szeretne megjeleníteni, adja át az adatforrást az HeatMapLayer osztály egy példányának, és adja hozzá a térképhez.

Az alábbi kódban minden hőpontnak 10 képpontos sugara van minden nagyítási szinten. A jobb felhasználói élmény érdekében a hőtérkép a címkeréteg alatt található. A címkék jól láthatóak maradnak. A mintában szereplő adatok az USGS Földrengésveszély programból származnak. Ez a jelentős földrengések, hogy történt az elmúlt 30 napban.

//Create a data source and add it to the map.
var datasource = new atlas.source.DataSource();
map.sources.add(datasource);

//Load a dataset of points, in this case earthquake data from the USGS.
datasource.importDataFromUrl('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson');

//Create a heat map and add it to the map.
map.layers.add(new atlas.layer.HeatMapLayer(datasource, null, {
  radius: 10,
  opacity: 0.8
}), 'labels');

A Simple Heat Map Layer minta bemutatja, hogyan hozhat létre egyszerű hőtérképet pontfunkciók adatkészletéből. A minta forráskódját az Egyszerű hőtérkép-réteg forráskódja című témakörben találja.

Képernyőkép egy hőtérképet megjelenítő térképről.

A hőtérkép-réteg testreszabása

Az előző példa a sugár és az átlátszatlanság beállításával testre szabta a hőtérképet. A hőtérkép-réteg számos testreszabási lehetőséget kínál, többek között a következőket:

  • radius: Egy képpont sugarat határoz meg, amelyben az egyes adatpontokat renderelni kell. A sugarat beállíthatja rögzített számként vagy kifejezésként. Egy kifejezés használatával a sugár a nagyítási szint alapján skálázható, és konzisztens térbeli területet jelölhet a térképen (például egy 5 mérföldes sugarat).

  • color: A hőtérkép színezésének módját adja meg. A színátmenet a hőtérképek gyakori jellemzője. A hatást egy interpolate kifejezéssel érheti el. A hőtérkép színezésére egy kifejezést is használhat step , amely vizuálisan felbontja a sűrűséget olyan tartományokra, amelyek hasonlítanak egy körvonal- vagy sugárstílus-térképre. Ezek a színpaletták határozzák meg a színeket a minimálistól a maximális sűrűségértékig.

    A hőleképezésekhez színértékeket adhat meg az heatmap-density érték kifejezéseként. Annak a területnek a színe, ahol nincs adat, az "Interpoláció" kifejezés 0. indexében vagy egy "Lépcsőzetes" kifejezés alapértelmezett színében van definiálva. Ezzel az értékkel háttérszínt határozhat meg. Ez az érték gyakran átlátszóra vagy félig átlátszó feketére van állítva.

    Íme néhány példa színkifejezésekre:

    Interpolációs színkifejezés Lépcsőzetes színkifejezés
    [
        "interpolátum",
        [lineáris],
        .hőtérkép sűrűsége],
        0, "átlátszó",
        0.01, "lila",
        0.5, "#fb00fb",
        1, "#00c3ff"
    ]
    [
        "lépés",
        .hőtérkép sűrűsége],
        "transzparens",
        0.01, "haditengerészet",
        0.25, "zöld",
        0,50, "sárga",
        0,75, "piros"
    ]
  • opacity: Meghatározza, hogy a hőtérkép rétege mennyire átlátszó vagy átlátszó.

  • intensity: Szorzót alkalmaz az egyes adatpont súlyára a hőtérkép általános intenzitásának növelése érdekében. Ez különbséget okoz az adatpontok súlyában, így könnyebben megjeleníthetők.

  • weight: Alapértelmezés szerint minden adatpont súlya 1, és a súlyozásuk egyenlő. A súlyozási beállítás szorzóként működik, és beállíthatja számként vagy kifejezésként. Ha egy szám súlyként van beállítva, az egyenértékű azzal, hogy minden adatpontot kétszer helyez el a térképen. Ha például a súly 2, akkor a sűrűség megduplázódik. A súlyozási beállítás számra állítása a hőtérképet az intenzitási beállításhoz hasonlóan jeleníti meg.

    Ha azonban kifejezést használ, az egyes adatpont súlyozása az egyes adatpont tulajdonságain alapulhat. Tegyük fel például, hogy minden adatpont egy földrengést jelöl. A nagyságrendi érték fontos metrika volt minden földrengés-adatponthoz. Földrengések történnek minden alkalommal, de a legtöbb alacsony nagyságrendű, és nem veszik észre. Egy kifejezésben a nagyságrendérték használatával rendelje hozzá a súlyt az egyes adatpontokhoz. Azáltal, hogy a nagyságrendi értéket használja a súly hozzárendeléséhez, jobban ábrázolja a földrengések jelentőségét a hőtérképen.

  • source és source-layer: Lehetővé teszi az adatforrás frissítését.

A Hőtérkép-réteg beállításai minta bemutatja, hogy a hőtérkép-réteg különböző lehetőségei hogyan befolyásolják a renderelést. A minta forráskódját a Heat Map Layer Options forráskódjában találja.

Képernyőkép egy hőtérképet megjelenítő térképről és egy szerkeszthető beállításokkal rendelkező panelről, amely bemutatja, hogy a hőtérkép-réteg különböző beállításai hogyan befolyásolják a renderelést.

Konzisztens, nagyítható hőtérkép

Alapértelmezés szerint a hőtérkép-rétegben renderelt adatpontok sugara rögzített képpont sugarú az összes nagyítási szinthez. A térkép nagyítása során az adatok összesítve jelennek meg, a hőtérkép rétege pedig másként néz ki.

zoom Egy kifejezéssel skálázhatja az egyes nagyítási szintek sugarát, hogy minden adatpont a térkép ugyanazon fizikai területét fedje le. Ez a kifejezés statikusabbá és konzisztensebbé teszi a hőtérkép rétegét. A térkép minden nagyítási szintje kétszer annyi képpontot foglal el függőlegesen és vízszintesen, mint az előző nagyítási szint.

Ha úgy méretezi a sugarat, hogy az minden nagyítási szinttel megduplázódjon, egy olyan hőtérképet hoz létre, amely konzisztensen néz ki az összes nagyítási szinten. A skálázás alkalmazásához használjon zoom egy 2 exponential interpolation . alapkifejezést, amelyben a képpont sugara a minimális nagyítási szinthez van beállítva, és egy skálázott sugár a maximális nagyítási szinthez 2 * Math.pow(2, minZoom - maxZoom) az alábbi példában látható módon. A térkép nagyításával megtekintheti, hogy a hőtérkép hogyan skálázható a nagyítási szinttel.

A Konzisztens nagyítható hőtérkép minta bemutatja, hogyan hozhat létre hőtérképet, ahol az egyes adatpont sugarai a föld ugyanazon fizikai területét fedik le, így egységesebb felhasználói élményt hozhat létre a térkép nagyítása során. A minta hőtérképe következetesen skáláz a 10-22. nagyítási szint között. A térkép minden nagyítási szintje kétszer annyi képpontot foglal el függőlegesen és vízszintesen, mint az előző nagyítási szint. A sugár minden nagyítási szinttel való megkettőzése olyan hőtérképet hoz létre, amely minden nagyítási szinten konzisztensnek tűnik. A minta forráskódját a Konzisztens nagyítható hőtérkép forráskódja című témakörben találja.

Képernyőkép egy olyan térképről, amely egy hőtérképet jelenít meg, amely egy nagyítási kifejezést használ, amely az egyes nagyítási szintek sugarát skálázza.

A zoom kifejezés csak a és interpolate a kifejezésben step használható. A következő kifejezés egy sugár méterben történő közelítésére használható. Ez a kifejezés egy helyőrzőt radiusMetershasznál, amelyet a kívánt sugárra kell cserélnie. Ez a kifejezés kiszámítja az egyenlítő nagyítási szintje hozzávetőleges képpont sugarát a 0 és a 24 nagyítási szinthez, és egy exponential interpolation kifejezést használ az értékek közötti skálázáshoz ugyanúgy, ahogyan a térképen a tiling rendszer működik.

[
    `'interpolate', 
    ['exponential', 2],
    ['zoom'],
    0, ['*', radiusMeters, 0.000012776039596366526],
    24, [`'*', radiusMeters, 214.34637593279402]
]

Tipp

Ha engedélyezi a fürtözést az adatforráson, az egymáshoz közeli pontok fürtözött pontként vannak csoportosítva. Az egyes fürtök pontszámát használhatja a hőtérkép súlykifejezéseként. Ez jelentősen csökkentheti a megjelenítendő pontok számát. A fürt pontszámát a pont funkció tulajdonságában point_count tárolja a rendszer:

var layer = new atlas.layer.HeatMapLayer(datasource, null, {
   weight: ['get', 'point_count']
});

Ha a fürtözési sugár csak néhány képpont, akkor a megjelenítésben kis eltérés lenne. A nagyobb sugár több pontot csoportosít az egyes fürtökben, és javítja a hőtérkép teljesítményét.

Következő lépések

További információ a cikkben használt osztályokról és módszerekről:

A térképekhez további kód példákat a következő cikkekben talál: