Webes térinformatika - PaciTrip 2. rész (Téradatok előkészítése)

Folytatom korábban megkezdett sorozatunkat, mely során egy webes térképes alkalmazás felépítésének lépéseit mutatom be. Az előző részben (Ötlet, koncepció, vázlat) ismertettem, hogyan született meg az utazásaink útvonalát megjelenítő alkalmazás ötlete, milyen koncepciót fogalmaztam meg és milyen (vázlatos) felhasználói felület lebeg a szemem előtt. Ebben a részben a téradatok előkészítéséről lesz szó. Megmutatom, hogyan töltöttem le az állomások pontjait és az útvonalszakaszok vonalait, hogyan csatoltam ehhez alfanumerikus leíró adatokat és milyen formátumba exportáltam, hogy aztán az alkalmazás könnyen fel tudja használni ezeket.

Utazásaink előtt mindig végzünk egy kis "kutatómunkát". Útikönyvekből, utazásokkal foglalkozó blogokról, weboldalakról összegyűjtjük és térképre tesszük azokat a helyeket, amelyek érdekelnek bennünket és szeretnénk felkeresni őket. Ehhez a Google My Maps-et használjuk. Erre a térképre csak pontszerű jelölőket helyezünk és 3 információt rögzítünk mellé:

  • a hely neve,
  • melyik országban található,
  • mikor láttuk?

Ezt országok alapján ki is szoktuk színezni, hogy kicsit átláthatóbb legyen a ponthalmaz.

PaciTrip - Pontszerű jelölők az érdekes helyekről a Google My Maps térképen

Amikor kitaláltuk, hogy melyik országba vagy országokba utazunk és milyen módon (saját autóval vagy repülővel és bérelt autóval), akkor a hagyományos Google Maps (Google Térkép) útvonaltervezője segítségével fűzzük fel ezeket az állomásokat mindenféle szempontot figyelembe véve. A szempontok nem is lényegesek most, inkább csak az, hogy általában egy-egy naphoz tartozik egy útvonal, aminek a linkjét belerakjuk egy Google Dokumentumba, amiben egyéb adatokat is gyűjtünk az útvonal által érintett állomásról.

PaciTrip - Google Maps útvonalterv

PaciTrip - Részlet az egyik útitervből

A PaciTrip alkalmazáshoz első pillantásra ezekre lenne szükségünk: az útvonalszakaszokra és az érintett állomásokra. Sajnos a hagyományos Google Maps-ről nem lehet letölteni ezeket a téradatokat. "Szerencsére" a legtöbb esetben nem is ezekre van szükség, hiszen ezek az utazás előtti, tervezett állapotot mutatják, nem a tényleges útvonalat. A tervtől ugyanis lényegében minden utunkon eltérünk, mindig van valamilyen, kisebb vagy nagyobb változás. Néha megcsúszunk az idővel és kénytelenek vagyunk kihagyni egy állomást, máskor hallunk egy helyről vagy látunk valamit, ami érdekesnek ígérkezik és oda (is) ellátogatunk, stb. Ezért ahhoz, hogy a valóságot ábrázolhassuk az alkalmazásban, úgyis módosítani kellene az útvonalakon. Ha pedig már hozzá kell nyúlni, tegyük ezt olyan környezetben, ahonnan aztán le tudjuk tölteni a téradatokat. A Google My Maps ilyen, az ott elkészített útvonalterveket le lehet tölteni KMZ formátumban. Így aztán ezen a felületen szoktam (továbbra is naponként) reprodukálni az egyes napok útvonalszakaszait a tényleges állomásokkal és (amennyire emlékszem persze) a valóban bejárt útvonallal.

PaciTrip - Az IreTrip útvonal szakaszai egy Google My Maps térképen

A felületnek vannak kötöttségei, pl. egy térkép legfeljebb 10 útvonalat tartalmazhat, így a 10 napnál hosszabb utakat két térképen tudom csak ábrázolni. Egy útvonaltervezés legfeljebb 10 állomásból állhat, így az olyan napokat, amikor ennél több állomásunk volt, ketté kell bontanom. Azonban ha elkészültem, a térkép neve melletti menü gombra kattintva kiválaszthatom az Exportálás KML-be/KMZ-be opciót és letölthetem a téradatokat. Itt van lehetőségem választani, hogy csak egy útvonalat vagy az egész térképet töltöm-e le, én többnyire az egész térképet le szoktam tölteni.

PaciTrip - Google My Maps térkép egészének vagy részének exportálása

Így már rendelkezésre állnak az utazás nyers téradatai. További feldolgozásukhoz a QGIS-t használom. Első lépésben egy új projekthez hozzáadom az imént letöltött KMZ fájlt. Ehhez a Layer > Add layer > Add vector layer menüpontot vagy a bal oldali függőleges eszköztáron a legfelső ikont választom. A KMZ kitallózása után az Add gombra kattintva egy újabb ablak (Select Vector Layers to Add...) jelenik meg, ahol ki tudom választani, a KMZ tartalmából mely elemeket szeretném a projekthez hozzáadni. Ebben az esetben mindegyikre szükség lesz, így először a Select All, majd az OK gombot megnyomva vonalas és pontszerű geometriákat tartalmazó rétegek jelennek meg a térképen és a Layers panelen.

PaciTrip - A letöltött KMZ megnyitása QGIS-ben

A status bar (alsó, szürke sáv) jobb oldalán látszik, hogy az adataink WGS84 (EPSG:4326) vetületben vannak, ezt tartsuk észben!

PaciTrip - A KMZ téradatai WGS84 vetületben (EPSG:4326) nyílnak meg

Érdemes (bár a későbbi adatfeldolgozás szempontjából nem létfontosságú) egy kicsit rendszerezni a rétegeket: felül legyenek a pontokat tartalmazó rétegek, lehetőleg időrendben, alattuk pedig a vonalakat tartalmazó rétegek, szintén időrendben. A rétegsorrend változtatását drag-and-drop módszerrel, egérrel gyorsan elvégezhetjük. Ennél jóval fontosabb lépés az adataink szerkezetének megismerése. Tudjuk, hogy vannak pontokat és vannak vonalakat tartalmazó rétegek, azt azonban nem tudjuk, milyen számszerű és szöveges információkat tárolt el a Google az egyes pontok, illetve vonalak mellé. Ezért valamelyik pont rétegen és valamelyik vonal rétegen jobb egérgombbal kattintva válasszuk az Open Attribute Table menüpontot. Külön ablakban jelenik majd meg a réteghez tartozó attribútum tábla, amelyben a kiválasztott réteghez tartozó alfanumerikus adatokat láthatjuk táblázatos formában.

PaciTrip - Az első nap állomásainak nyers attribútum táblája 

PaciTrip - Az első nap útvonalának nyers attribútum táblája

Mindkét attribútum táblában egy-egy oszlop érdekes számunkra, az objektum neve (Name oszlop). A többi oszlopban számunkra érdektelen értékek szerepelnek vagy eleve üresek. Ezeket tehát ki is törölhetnénk, azonban a KMZ fájlokat a QGIS csak megjeleníteni képes, szerkeszteni nem. Ezért először minden réteget el kell mentenünk egy olyan formátumba, amelyet a QGIS könnyen és gyorsan tud szerkeszteni, például: shapefájlként (SHP). Az exportálás során rögtön abba a vetületbe transzformáljuk az adatokat, amelyben később szükségünk lesz rájuk. Mivel az alkalmazást OpenStreetMap alaptérképpel képzeltük el, amely Pseudo Mercator (EPSG:3857) vetületet használ, célszerű az adatainkat is ebben a vetületben tárolni. Az exportáláshoz minden réteg nevére (sorban, külön-külön) jobb egérgombbal kell kattintani, ott kiválasztani a Save as opciót. A megjelenő ablakban először válasszuk ki a megfelelő formátumot (ESRI Shapefile), majd tallózzuk ki, hova és milyen néven szeretnénk menteni az új shapefájlt. A CRS opciónál válasszuk ki az EPSG:3857 vetületet, ha nincs a legördülő menüben, a mellette lévő ikonra kattintva elérhetővé válik a QGIS által kezelt összes vetület, s ki tudjuk keresni. A karakterkódolás (Encoding) legyen UTF-8, a KMZ karakterkódolása amúgy is ilyen volt és később is ez lesz számunkra a legjobb. S végül a Select fields to export and their export options részt nyissuk ki (a szöveg előtti háromszögre kattintva), ha még nincs nyitva. A Deselect All gombra kattintva minden oszlop neve elől eltűnik a pipa, így egyetlen attribútumát sem exportálnánk a rétegnek. A geometriák nevére azonban szükségünk lesz, így a Name oszlop elé tegyük vissza a pipát. Az OK gombra kattintva a QGIS létrehozza a SHP fájlt és hozzá is adja a projekthez új rétegként.

Az átláthatóság érdekében az újonnan hozzáadott réteg láthatóságát ki szoktam kapcsolni, az éppen exportált réteget pedig el is távolítom a projektből (jobb-klikk > Remove).

PaciTrip - Réteg mentése shapefájlként QGIS-ben

Az egyes objektumok neve mellett szükség lenne egy-egy olyan oszlopra is, amely egyértelműen azonosítja a geometriákat. A szakaszok esetében a név akár azonosítónak is használható lehetne, hiszen ezekből pontosan tudjuk, melyik napi szakaszról van szó, ám az egységesség és a következetesség érdekében inkább vezessünk be ezeknél is egy azonosító (id) oszlopot. Ehhez új oszlopot kell adnunk minden egyes réteghez, majd mindegyik rétegnél be kell írnunk az azonosítókat az egyes pontokhoz vagy vonalakhoz tartozó sorokba.

A következő lépéseket minden réteg esetében el kell végezni!

  1. A réteg nevére jobb egérgombbal kattintva ki kell választani a Properties menüpontot.
  2. A megjelenő Layer Properties ablak bal oldalán a Source Fields fület választjuk.
  3. A felül található ikonokból megnyomjuk a ceruza formájút (Toggle editing mode), ezáltal szerkeszthetővé tesszük a réteget.
  4. Rákattintunk az immár aktív első ikonra (New field) és a megjelenő Add Field ablakban adunk egy nevet az új oszlopnak (id), a típusát (type) pedig Text (string), vagyis szövegesnek választjuk.
  5. Ismét a ceruza (Toggle editing mode) ikonra kattintunk és ezzel lezárjuk a szerkesztési munkát. A QGIS érzékeli, hogy történt változás, ezért megkérdezi, szeretnénk-e menteni a változtatásokat, itt kattintsunk a Save gombra.

PaciTrip - ID mező hozzáadása a réteghez QGIS-ben

Általánosságban jobban szeretem a számszerű és más leíró adatoktól független azonosítókat. Itt azért használok mégis szöveget, hogy csökkentsem a hibázás lehetőségét. Az útvonalak esetében az azonosító így fog kinézni: 'Dxx', ahol xx az utazás napjának sorszáma két számjeggyel írva, azaz az 1. nap (vagy Day 1) azonosítója a 'D01' lesz. Az állomások esetében az azonosító így fog kinézni: 'DxxSyy' ahol xx az utazás napjának sorszáma két számjeggyel kiírva, yy pedig a napon belüli állomás sorszáma két számjeggyel írva, azaz a 3. nap (Day 3) 4. állomásának (Stop 4) azonosítója a 'D03S04' lesz. Ezek így "beszédes" azonosítók, melyek olyan leíró adatokat tartalmaznak, amelyeket célszerűbb lenne külön oszlopban tárolni és egy ponton külön oszlopba is írjuk majd őket, ám addig számomra átláthatóbbá teszi az állomásokat, amikor majd az összeset egy állományban kezeljük.

A fenti névkonvenciónak megfelelően írjuk is be az azonosítókat minden réteg minden eleméhez! Ezeket a lépéseket ismét minden réteg esetében el kell végezni:

  1. A réteg nevére jobb egérgombbal kattintva ki kell választani az Open Attribute Table menüpontot.
  2. Az attribútum tábla feletti ceruza ikonra (Toggle editing mode) ikonra kattintva szerkeszthetővé kell tenni a réteget.
  3. Minden sorban az id oszlopba be kell írni a sorhoz tartozó azonosítót a névkonvenciónak megfelelően.
  4. Az attribútum tábla ikon sorában a lemez ikonra (Save edits) kattintva elmentjük a beírt értékeket.
  5. A ceruza (Toggle editing mode) ikonra kattintva lezárjuk a szerkesztési munkát.
  6. Bezárjuk az attribútum táblát. (Nem kötelező, de egy ponton követhetetlenül sok attribútum tábla lesz megnyitva, ha kimarad.)

PaciTrip - Az első nap állomásainak azonosítókkal kiegészített attribútum táblája

PaciTrip - Az első nap útvonalának azonosítókkal kiegészített attribútum táblája

Most, hogy már minden útvonal szakasz és minden állomás rendelkezik egy azonosítóval és egy névvel, összedolgozhatjuk az egyes napok állományait egyetlen rétegbe. Ehhez a QGIS kínál eszközt, amely a Toolbox-ban érhető el. A Toolbox megnyitásához ez eszköztáron a fogaskerék ikonra (Toolbox) kell kattintani. Ennek hatására alapértelmezetten a képernyő jobb oldalán megjelenik egy panel (Processing Toolbox), amelynek a tetején található egy keresősáv. Ide kell beírni a 'merge' szót, a felkínált eszközök közül pedig a Vector general eszközcsoporton belül a Merge vector layers tool-ra lesz szükségünk. Ez az eszköz több azonos geometriai típusú vektoros réteg tartalmát fűzi össze egy vektoros rétegbe.

Az eszköz nevére kattintva megjelenik egy ablak, ahol 3 paramétert kell megadnunk:

  1. Ki kell választani, mely rétegeket szeretnénk egybeolvasztani, itt alapértelmezetten a projekthez korábban hozzáadott rétegeket sorolja fel és csak pipát kell tenni a kiválasztottak elé.
  2. Meg kell határozni, mi legyen a létrejövő új vektoros állomány vetülete. Itt az EPSG:3857 (Pseudo Mercator) vetületet választom, mivel végül majd minden adatot ebben a vetületben szeretnék tárolni.
  3. Meg kell adni, milyen formában és hova jöjjön létre az új vektoros állomány. Alapértelmezetten egy ideiglenes, csak memóriában tárolt réteget hozna létre, nekünk azonban jobb lenne egy-egy shapefájlba menteni, így a Merged paraméter beviteli mezője melletti ... ikonra kattintva válasszuk a Save to file opciót és adjuk meg hova és milyen néven jöjjön létre az új állomány. (A fájl típusnál .SHP fájlt válasszunk!)
  4. A tool futtatásához kattints a Run in background gombra! (A QGIS 3.0 verziójában csak ez található ott, ne is keressetek sima "Run" vagy "Run in foreground" gombot.)

PaciTrip - Merge vector layers tool futtatása

A toolt kétszer kell futtatni, egyszer az útvonalak összeolvasztásához, egyszer pedig az állomások összedolgozásához. A továbbiakban pedig már csak ezzel a két shapefájllal kell dolgoznunk

A többi réteget el is lehet távolítani a projektből, ha zavarnak. Több réteg is eltávolítható egyszerre, ha Shift vagy Ctrl gombot nyomva tartva kattintunk a rétegek listájában. Kijelölve az eltávolítani kívánt rétegeket a Layers panel jobb szélső (Remove Layer/Group) ikonjára kattintva minden kijelölt réteget eltávolít.

Mivel a Merge tool futtatásakor be volt pipálva az Open output file after running algorithm jelölőnégyzet, a két új réteg már benne is van a projektünkben, azonban mindkettő a 'Merged' nevet kapta. Ez nem túl szerencsés, ezért nevezzük át a rétegeket, jobb egérgombbal kattintva a nevükre és a Rename opciót választva. További sajátossága ezeknek a rétegeknek, hogy a karakterkódolásuk nem biztos, hogy UTF-8. A toolok által létrehozott téradatok általában az operációs rendszer számára alapértelmezett karakterkódolást kapják. Ezért ha most megnyitjuk valamelyik réteg attribútum tábláját, az ékezetes és más speciális karakterek helyén egészen fura jeleket láthatunk.

PaciTrip - Karakterkódolási hiba a QGIS-ben

Ha ilyet tapasztalunk, érdemes megpróbálni egy másik karakterkódolást használni. Ehhez a réteg nevére jobb egérgombbal kell kattintani, a Properties menüt választani, a megjelenő ablakban pedig a Source fület. A Data source encoding legördülő menüben kell másik értéket választani. Ha sem a System, sem az UTF-8 nem eredményez olvasható karaktereket az attribútum táblában, akkor nagy valószínűséggel valóban rossz karaktereket tartalmaz az adat. Ilyenkor egy korábbi állapothoz érdemes visszatérni és ellenőrizni, hogy ott még olvashatók-e a szövegek. Jelen esetben a System kiválasztása és az OK gomb megnyomása után ennek a rétegnek már olvasható lesz az attribútum táblája.

PaciTrip - Az attribútum tábla a karakterkódolás megváltoztatása után

Közben biztosan feltűnt, hogy az attribútum tábla nem csak két oszlopot (Name, id) tartalmaz, mint korábban, hanem további kettőt, amelyet a Merge tool a futás során írt bele, hogy jelezze számunkra, melyik geometriai elem melyik adatforrásból származik. Ezekre nem lesz szükségünk, így ha zavaróak, akár ki is lehet törölni őket.

Az attribútum tábla oszlopainak (field-ek) törléséhez jobb egérgombbal kell kattintani a rétegen, a Properties menüpontot választani, a Layer Properties ablakban pedig a Source Fields fület. A réteget szerkeszthetővé kell tenni a ceruza ikonra kattintva, majd ki kell jelölni a törölni kívánt oszlopot vagy oszlopokat, amelyek itt egy táblázatban vannak kilistázva néhány leíró vagy metaadatukkal, mint pl. hogy milyen típusú az az oszlop. Ha a kijelölés kész, a második ikonra (Delete field) kattintva a kijelölt mezők eltűnnek. Le kell zárni a szerkesztést (ceruza), elfogadni a változtatásokat és az OK gombra nyomni a Layer Properties ablakban.

Ebben a formában a két réteg már majdnem jó is, van azonban egy speciális eset, amit még kezelnünk kell. Előfordulhat ugyanis, hogy az állomások nagy száma miatt a My Maps-en csak két útvonalként tudtunk ábrázolni egy szakaszt, a példánkban ilyen a Day 5. Az Merge tool futtatása után így a routes.shp két 'D05' azonosítójú vonalat tartalmaz, a stops.shp pedig kétszer tartalmazza azt az állomást, ahol az útvonal "megszakadt" ('D05S10'), egyszer a Day05-part1 vonal végpontjaként, egyszer a Day05-part2 vonal kezdőpontjaként. Ezeket még javítanunk kell, mielőtt tovább léphetnénk.

Az állomások esetében egyszerű a javítás: az egyik pontot törölni kell. Ehhez ismét megnyitjuk az attribútum táblát (jobb-klikk és Open Attribute Table menüpont), majd szerkeszthetővé tesszük a réteget (a ceruza ikonra kattintunk). Megkeressük az ismétlődő pontokat, az egyiket kijelöljük a sor elején látható számra kattintva és megnyomjuk az ikonsoron a piros kukát formázó ikont (Delete selected features). A módosítást elmentjük a lemez ikonra kattintva (Save edits), majd lezárjuk a szerkesztést a ceruza ikonra kattintva.

PaciTrip - Rekord törlése az attribútum táblából

Az útvonalak esetében nem törölhetjük egyik vonalat sem, hiszen mindkettőre szükség van, de egyetlen vonalként, vagyis össze kellene fűzni őket. A korábban alkalmazott Merge tool itt nem használható, mert az kettő vagy több réteg összevonására való, itt viszont egy rétegen belül kell geometriákat szerkeszteni. Az ilyen jellegű feladatok elvégzéséhez a szerkesztő eszközöket kell használni, amelyek a Digitizing és az Advanced Digitizing toolbarokon találhatók.

PaciTrip - QGIS Digitizing toolbar

PaciTrip - QGIS Advanced Digitizing toolbar

Míg az előbbi alapértelmezetten látható (első ikonján két piros ceruza látható), az Advanced Digitizing toolbart külön meg kell nyitni. Ehhez bármelyik eszköztárra kattintsunk jobb egérgombbal, majd a Toolbars szekció alatt kattintsunk az Advanced Digitizing toolbar feliratra.

Most, hogy az eszköztár elérhető, nyissuk meg az útvonalak attribútum tábláját és jelöljük ki a két összeolvasztandó útvonal sorát, majd kattintsunk az Advanced Digitizing toolbar jobbról számítva harmadik ikonjára (amin mintha két zöld foltot varrnának, kötöznének össze), ez a Merge Selected Features tool. Megjelenik a Merge Feature Attributes ablak, amely segít kialakítani az új elem attribútumait. A felső sorokban a részelemek attribútumait láthatjuk, a legalsó sorban pedig a létrejövő geometria leendő attribútumait. Ahol szeretnénk változtatni ezeken (pl. a Name oszlopban így már szerepeljen a 'Day05'), ott írjuk át bátran, majd nyomjunk az OK gombra. Ezután a két kijelölt sor eltűnik az attribútum táblából és megjelenik az a sor, amelynek értékeit az imént állítottuk be. A térképen is történt változás, bár ez nehezebben észrevehető: az ötödik nap útvonala immár nem két vonalból áll, hanem csupán egyből.

PaciTrip - Két geometriai elem összeolvasztása

Adatainkat sikeresen tisztítottuk és rendeztük: töröltük a felesleges oszlopokat, javítottuk a hibákat és a különálló állományokból egy-egy shapefájlt készítettünk. Következő nagy feladatunk az lesz, hogy a webes térképes alkalmazás számára fontos információkkal egészítsük ki. Ezek számszerű és szöveges adatok lesznek, amelyeket az azonosítók (id-k) segítségével tudunk majd a geometriákhoz kötni. Ezért az alfanumerikus leíró adatok összeállításához használhatunk egy erre a célra alkalmasabb környezetet is, pl. Excelt. Hogy mégse kelljen nulláról kezdenünk, a két réteg attribútum tábláját exportáljuk ki és így legalább az azonosítók már meglesznek. Az exportáláshoz kattintsunk a réteg nevére jobb egérgombbal, válasszuk a Save as menüpontot. A Save Vector Layer as... ablakban ezúttal a formátum (Format) legördülő menüből válasszuk a Comma Separated Value [CSV] opciót. Adjuk meg, hova és milyen néven mentse a CSV fájlt és nyomjuk meg az OK gombot. Ha azt szeretnénk, hogy a magyar nyelvű Excelben minél egyszerűbb legyen megnyitni a CSV fájlokat, célszerű az exportálás során a karakterkódolást System-re állítani, a Layer Options részen belül a SEPARATOR értékét pedig SEMICOLON-ra.

PaciTrip - QGIS attribútum tábla exportálása CSV formátumba

Excelben megnyitva a CSV fájlokat, további oszlopokat adunk hozzá mindkettőhöz és fel is töltjük a megfelelő értékekkel a szerint, hogy a webest térképes alkalmazásban mit szeretnénk megjeleníteni és/vagy használni. Az állomások adattáblája így néz ki az adatok feltöltése után:

  • id (string): az azonosító, amit a QGIS-ben rögzítettünk, ennek segítségével tudjuk majd visszakapcsolni a pontokhoz az Excel táblázat sorait.
  • day (integer): az utazás adott napjának sorszáma.
  • date (string): az utazás adott napjának dátuma yyyy.mm.dd. formátumban.
  • stop (integer): a napon belül az állomás sorszáma.
  • place (string): a hely neve vagy rövid leírása. Időnként hasonló a Name oszlop tartalmához, de annál gyakran felhasználóbarátabb megfogalmazású.
  • desc (string): a hely hosszabb leírása, fontos információk, érdekes tények, látnivalók. Lehet sima szöveg vagy HTML is.
  • pic (string): a helyről készült kép fájlneve kiterjesztéssel együtt.

PaciTrip - Az állomások leíró adatai

 Az útvonal szakaszok adattáblája így néz ki az adatok feltöltése után:

  • id (string): az azonosító, amit a QGIS-ben rögzítettünk, ennek segítségével tudjuk majd visszakapcsolni a pontokhoz az Excel táblázat sorait.
  • day (integer): az utazás adott napjának sorszáma.
  • date (string): az utazás adott napjának dátuma yyyy.mm.dd. formátumban.
  • blog (string): az utazás adott napjához tartozó blogbejegyzés linkje.

PaciTrip - Az útvonalak leíró adatai

Amikor készen van a két adattábla, Excelből ismét CSV formátumba kell menteni őket. A Mentés másként segítségével én a CSV (pontosvesszővel tagolt) formátumot szoktam választani.

A QGIS-ben nem tudjuk közvetlenül a CSV fájlt kapcsolni a téradatokhoz, csak rétegek kapcsolhatók egymáshoz. Ezért a CSV-ből előbb egy Delimited Text Layert kell készíteni. Ehhez a Layer > Add Layer > Add Delimited Text Layer... opciót kell választani vagy a bal oldali eszköztáron (Manage Layers toolbar) az aposztrófot mintázó ikonra kell kattintani. A CSV réteggé alakítása során ezeket kell beállítani:

  1. Először kitallózzuk a CSV fájlt, majd az ablak alsó (Sample data) részén ellenőrizzük, hogy jól jelennek-e meg az ékezetes karakterek.
  2. Ha nem, akkor az Encoding legördülő menüben megpróbáljuk a System és UTF-8 beállításokat és azzal dolgozunk tovább, amelyikkel jól jelenik meg.
  3. A Layer Name beviteli mezőbe adjunk egy nevet, amiről könnyen felismerjük majd a réteget, pl. stops_data.
  4. A File format részen belül a Custom delimiters rádiógombot választjuk és a Semicolon elé teszünk csak pipát, mivel a tagolókarakter a pontosvessző.
  5. A Record and fields options részen belül a First record has filed names legyen kipipálva, így az első sorban található fejlécet fogja felhasználni a mezők elnevezésekor.
  6. A Geometrdy definiton részben a No geometry (attribute table only) a megfelelő választás, mivel a CSV semmilyen geometriára utaló információt nem tartalmaz.

PaciTrip - CSV fájl hozzáadása Delimited Text Layerként a QGIS projekthez

Az Add gomb megnyomásával megjelenik a Layers panelen megjelenik az új réteg, a térképen azonban nem történik változás, mivel ehhez a réteghez nem tartozik geometria. Ha mindkét CSV-ből sikerült réteget készíteni, akkor van 4 rétegünk, amelyekből kettő-kettő összepárosítható (stops - stops_data és routes - routes_data), mivel mindegyikben szerepel az azonosító, amely alapján a leíró adatok sorai a megfelelő geometriához társíthatók. A kapcsolat létrehozását a geometriát tartalmazó réteg felől érdemes kezdeni. Jobb egérgombbal kattintunk a rétegre (pl. stops) és kiválasztjuk a Properties menüpontot, majd a megjelenő ablakban a Joins fület. Az ablak alsó részén van egy zöld plusz jel (Add new join), erre kattintva kapcsolhatunk hozzá egy másik réteget. Az Add Vector Join ablakban a következőket kell beállítani:

  • Join layer: melyik réteget szeretnénk hozzákapcsolni az aktuális réteghez? Értéke: stops_data
  • Join field: a kapcsolni kívánt rétegben melyik oszlop tartalmazza az azonosítókat, amely alapján össze szeretnénk kapcsolni a két réteget? Értéke: id
  • Target field: az aktuális rétegben melyik oszlop tartalmazza az azonosítókat, amely alapján össze szeretnénk kapcsolni a két réteget? Értéke: id
  • Choose which fields are joined: ha kipipáljuk a jelölőnégyzetet, a lenti listában kiválaszthatjuk, mely oszlopokat szeretnénk a forrásrétegből hozzákapcsolni. Értéke: pipáljuk ki, és az id kivételével mindegyik oszlop legyen kipipálva.
  • Custom field name prefix: ha kipipáljuk a jelölőnégyzetet, a beviteli mezőben megadhatunk egy karaktersorozatot, amit a kapcsolt mezők neve elé fog fűzni a QGIS. Így próbálja megelőzni, hogy egy rétegben két azonos nevű oszlop legyen. Ha nem írunk be semmit, akkor a kapcsolni kívánt réteg nevét használja prefixként. Értéke: 'data_'

PaciTrip - Két réteg adattartalmának összekapcsolása

Az OK gombok megnyomása után a réteg attribútum táblájában már szerepelnek a CSV-ből származó adatok is, vagyis sikerült kibővítenünk az állomások és az útvonalak téradatának információtartalmát.

Utolsó lépésként a bővített adattartalmú rétegeket egy webes alkalmazások számára praktikusabb formátumba mentjük el. Ismét jobb egérgombbal kattintunk a réteg nevére, s a Save as opciót választjuk.

  • A fájl formátumok közül a GeoJSON-t választjuk ki.
  • Ellenőrizzük, hogy a vetület Pseudo Mercator (EPSG:3857) legyen.
  • A karakterkódolás mindenképp UTF-8 lesz, de szerencsére nekünk is ez kell.
  • Az exportálandó mezők közül a Name elhagyható. Az állomások esetében a place oszlop jobb leírást tartalmaz, az útvonalak esetében pedig csak a nap számát tartalmazta, amit az id és a day oszlopok is tartalmaznak, így nem lesz rá szükség.

PaciTrip - Útvonalak és állomások GeoJSON formátumban, publikálásra készen

Az exportálások eredményeként birtokunkban van az a két állomány, amely a webes térképes alkalmazás alapjául szolgál majd. Ezeket jelenítjük majd meg OpenLayers segítségével és a most beletöltött leíró adatokat fogjuk felhasználni az időcsúszka kezeléséhez, illetve az információs ablak tartalmának összeállításához.

A sorozat következő részében összeállítjuk a webes térképes alkalmazás vázát, a fő építőelemeket, amihez HTML és CSS kódot állítunk össze.

A PaciTrip webes térképes alkalmazás már elkészült állományait megtalálod GitHub oldalunkon!

Címkék: , ,
© 2017 AdatTérKép