Az egyik probléma, amellyel a webtérkép-alkalmazás létrehozása során szembesülünk, a térinformációk lehető leggyorsabb megjelenítése.

A GeoJSON formátum könnyebb, mint a GML szabvány, és elkerüli a tartományok közötti problémát is.

Ennek az egyszerű architektúrának problémája lehet: a GeoJSON objektum még mindig nagyon nehéz (a koordináták szöveges formátumába történő kódolásához használt számjegyek miatt), és ennek következtében a térképnek hosszú időbe telik az adatok megjelenítése.

A probléma az, hogy a webnézegető az egyes geometriákat ábrázolja, ezért minél nagyobb a csúcsok száma, annál lassabb lesz a térkép (25 KB/pont).

Nézzünk meg néhány trükköt a GeoJSON méretének csökkentésére és a webtérkép-alkalmazás sebességének javítására:

A TopoJSON egy GeoJSON kiterjesztés, amely a topológiát kódolja.

A TopoJSOn kiküszöböli az elbocsátásokat, kompaktabb geometriai ábrázolásokat kínál, mint a GeoJSON. Például két ország megosztott határa csak egyszer van ábrázolva, ahelyett, hogy mindkét ország megduplázódna, ily módon a megosztott pontokat csak egyszer képviselik.

A TopoJSON kvantitatívan meghatározza a koordinátákat, így az egyes íveket a kvantált koordinátái határozzák meg. A kvantálás egy vonaltranszformációból áll, amely egy skálából és egy fordításból áll, amely a tizedes részű koordinátákat egész számokká alakítja.

A redundanciák kiküszöbölésének és a koordináták számszerűsítésének köszönhetően, A TopoJSON fájlok 80% -kal kisebbek, mint GeoJSON megfelelőik.

TopoJSON konvertálása GeoJSON-vá

A legegyszerűbb a shpescape.com webhely használata, amely lehetővé teszi számunkra, hogy a shapefile fájlokat GeoJSON és TopoJSON formátumúra alakítsuk át.

  • Távolítsa el az összes attribútumot, amelyet nem fog használni az alkalmazásban.
  • Távolítsa el a szóközt is.
  • Szüntesse meg a sortöréseket.

A következő példában láthatjuk, hogy miként ismételjük meg a kulcsokat (NAME, LATITUDE, LONGITUDE, POP_MAX)

Megoldás a fájl zsugorítására és tömörítésére távolítsa el ezeket a kulcsokat, és hozzon létre egy indexet a fejlécen. Az eredmény valami ilyesmi lenne:

Ennek a tömörítésnek az elvégzéséhez vannak olyan eszközeink, mint a HPack vagy a CJSON, mindkettő 60-70% körüli tömörítési arányt kínál.

Az egyik leghatékonyabb lehetőség a GeoJSON méretének csökkentésére vektor egyszerűsítése. Ily módon megszabadulunk a nem szükséges részletektől. Ez az egyszerűsítés vonalakra és sokszögekre szolgálna.

A vonalak vagy sokszögek egyszerűsítése érdekében használhatunk asztali GIS klienst.

A GRASS ideális eszköz ehhez a művelethez, mivel topológiai GIS lévén nem veszítjük el a szomszédságot, így a korrekció még az egyszerűsítés magas szintjén is megmarad. A szóban forgó algoritmus v.generalize.

Nagyobb leegyszerűsítés érdekében használhatunk egy online eszközt, például a mapshaper-t, amely lehetővé teszi számunkra a sorok simítását vagy a csomópontok kiküszöbölését egy shp, geojson vagy topojson fájlból.

A legegyszerűbb módja annak javítja a pontmegjelenítés sebességét olyan plugin használata, amely csoportosítja őket. Ez az opció nagymértékben javítja a megjelenítést az ügyfél oldalon, mivel ez azt jelenti, hogy az ügyfél böngészőjének nem kell 10 000 pontot, hanem csak 10 és 50 között húznia.

A Leaflet pluginjei közül 5-et találunk erre a célra:

Mindegyikből ki akarjuk emelni a PruneCluster-t, miért? Mivel az első kijelzőn mindössze 1,9 másodperc alatt képes 1 000 000 jelzőt reprezentálni, a későbbieken pedig 400 ezredmásodperc alatt.

méretének

Ezenkívül a csoportok valós időben frissíthetők. Tökéletes élő helyzetekhez.

A plugin további előnyei:

  • Megadhatjuk az egyes markerek súlyát.
  • Adjon meg egy kategóriát a könyvjelzők számára. Ily módon létrehozhatunk tartalmunkhoz igazított ikonokat.
  • A csoport nagysága menet közben állítható
  • A könyvjelzők könnyen kiszűrhetők, teljesítményköltség nélkül.

Egy másik lehetőség a hőtérképek vagy hőtérképek létrehozása, amint azt az oktatóanyagban láthattuk a hőimpák létrehozásáról az OpenLayers segítségével. A hőtérkép segíti az ügyfél böngészőjében való ábrázolást, mivel nem szükséges minden pontot megrajzolni, csak azokat rajzolni, amelyek a Abban a pillanatban.

Használjon gyors webtérkép-megjelenítőt

Az olyan API, mint a Leaflet, gyors és intelligens renderelést végez mind a vonalak, mind a sokszögek között. Az egyszerűsítés és a dinamikus nyírás révén több ezer ponttal képesek vagyunk objektumokat megjeleníteni.

Kerülje a GeoJSON használatát

Az egyik lehetőség az lehet, hogy egy külső tessellált szerverre viszi. Például a TileMill.

Bár természetesen a legjobb egy teljes architektúra létrehozása, amely például a PostGIS + GeoServer + GeoWebCache + a választott térképek API-t tartalmazza. Az online webtérkép tanfolyam segít eldönteni, melyik lehetőség a legjobb.

Ne feledje, hogy az űrobjektumok megjelenítéséhez időbe telő térkép valószínűleg nem nyílik meg ...

Használjon vektoros csempéket

A vektorlapok jelentősen gyors térképeket hoznak létre, miközben teljes rugalmasságot kínálnak a tervezésben.

A weblapozáshoz használt képcsempékkel egyenértékű vektoradatok, amelyek a csempék előnyeit alkalmazzák a vektoradatokra: gyorsítótárazáshoz, méretezhetőséghez és térképképek gyors kiszolgálására fejlesztették ki.

Egy érdekes megjegyzést is hagyunk Önnek arról, hogy Abel Vázquez Montoro otthagyott minket a LinkedIn-en:

Ha a cél a vektoros adatcsere megkönnyítése mind sebességben, mind méretben, akkor a nyers GeoJSON-val szemben az optimális lehetőség a Protokoll pufferek használata és az összes csere kezelése a PBF-ben. A sebesség (akár 300% -kal gyorsabb) és a méret (akár 90% -kal kisebb) fejlesztése miatt érdemes megtenni a formátum megváltoztatását mind az ügyfélen, mind a szerveren.