Analiza potovalnega časa z gibanjem Uberja (QGIS3)

Opozorilo

Uber Movement data has been discontinued [view announcement]. You can still follow the tutorial using the archive data provided in the tutorial and learn the technique of travel time analysis using QGIS.

Uber Movement deli anonimizirane in združene podatke o potovalnem času za številna mesta po svetu. Izdelek Potovalni časi podjetja Uber Movement je javna zbirka podatkov, ki meri potovanje iz območja v območje po mestu. Ti časi temeljijo na dejanskih vožnjah Uberja in so natančen prikaz zastojev in prometnih vzorcev v mestu. Gre za obsežen javno dostopen nabor podatkov, zbranih iz več milijonov dejanskih voženj s taksijem. To vodilo prikazuje tehnike za uporabo agregiranih zbirk podatkov o prometu za analizo potovalnega časa v QGIS-u.

Pregled naloge

Za iskanje potovalnih časov do izbrane lokacije v mestu Bangalore v Indiji bomo uporabili zbirko podatkov o prometu. Ustvarili bomo tudi Izokronski zemljevid za 30-minutni prag potovalnega časa.

Druga znanja, ki jih boste pridobili

  • Nalaganje datoteke GeoJSON v QGIS

Pridobivanje podatkov

Prenesli bomo nabor podatkov Travel Times za mesto Bangalore v Indiji.

  1. Pojdite na spletno mesto Uber Movement in kliknite na Cities.

../../_images/data013.png
  1. Poiščite Banglore.

../../_images/data023.png
  1. Kliknite na Download data.

../../_images/data032.png
  1. V pojavnem oknu Download data preklopite na GEO BOUNDARIES. Vsebovala bo datoteko Banglore wards GeoJSON. Sprejmite licenčne informacije in za prenos kliknite na BANGLORE_WARDS.JSON .

../../_images/data042.png
  1. Nato preklopite na ALL DATA`. Ti podatki so na voljo od leta 2016 do 2020, vsako leto pa je razdeljeno na 4 četrtletja. Prenesli bomo podatke za 3. četrtletje leta ``2019. Izberite ga in kliknite Travel Times by Hour of Day (Weekdays Only)`. Ta datoteka bo vsebovala vse anonimne podatke o potovanju z uberjem ob delavnikih v Bangaloreju od julija do septembra 2019.

../../_images/data051.png

Podatke lahko prenesete s spodnjih povezav.

bangalore_wards.json

bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate.csv

Vir podatkov: [UBER]

Postopek

  1. Poiščite datoteko bangalore_wards.json na plošči Browser in jo povlecite na delovno površino. Nato bomo naložili sloj osnovne karte OpenStreetMap-a. Za dostop do osnovne karte bomo uporabili vtičnik QuickMapServices. Po namestitvi pojdite na Web ‣ QuickMapServices ‣ OSM ‣ OSM Standard. V projekt bo dodana plast območij osnovne karte iz OpenStreetMap-a. Nato kliknite gumb Open Data Source Manager.

../../_images/019.png
  1. Preklopite na zavihek Delimited Text. Poiščite datoteko bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate.csv in jo izberite. Ker je ta datoteka CSV samo tabelarični podatek, izberite možnost No geometry (attribute only table) in kliknite Add.

../../_images/029.png
  1. Sloj``bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate`` bo dodan med Layers`. Ta sloj vsebuje anonimizirane in agregirane podatke o lokaciji potovanj med različnimi območji mesta. Vsaka vrstica tabele vsebuje stolpce za izvorno območje (sourceid), ciljno območje (dstid), uro dneva (hod) in povprečni potovalni čas, agregiran iz vseh potovanj med temi območji ob tej uri (mean_travel_time). Več o tem podatkovnem nizu si lahko preberete v poglavju Movement: Travel Times Calculation Methodology (pdf). Preden nadaljujemo, preverimo, koliko podatkovnih zapisov je prisotnih v sloju. Z desno tipko na miški kliknite sloj bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate in izberite Show Feature Count`. Ob njem se bo prikazalo skupno število vrstic iz tabele. To je precej velika tabela, vendar za našo analizo ne potrebujemo vseh podatkovnih vrstic. Zdaj bomo določili našo ciljno lokacijo in filtrirali podatkovno tabelo za naš namen.

../../_images/039.png
  1. Izračunati želimo vsa območja, ki so dostopna v 30 minutah od določene lokacije. S pomočjo osnovnega zemljevida OSM Standard lahko poiščete lokacijo, ki vas zanima. Nato izberite sloj bangalore_wards, uporabite orodje Identify in nanj kliknite. Rezultati bodo prikazali atribute območja, ki vsebuje lokacijo. Za namen te vadnice predpostavimo, da je naša ciljna lokacija v območju JP Nagar z MOVEMENT_ID 193.

../../_images/049.png
  1. Zapise o času potovanja lahko filtriramo samo na tiste, ki imajo to območje dan kot cilj. Analizo lahko omejimo tudi na največjo jutranjo uro vožnje na delo med 9. in 10. uro. Z desno tipko miške kliknite sloj bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate in izberite Filter`.

../../_images/059.png
  1. Vnesite naslednji izraz filtra in kliknite OK.

"dstid" = 193 AND "hod" = 9
../../_images/069.png
  1. V glavnem oknu QGISa boste videli, da se je število zapisov v filtrirani tabeli zmanjšalo na 197. Ker je v mestu skupaj 198 območij, imamo zapise o potovalnih časih med 1 ciljnim območjem in 197 izvornimi območji. Tabelo atributov obeh slojev odprite z gumbom Open Attribute Table v orodni vrstici Attributes.

../../_images/079.png
  1. Zdaj imamo oblike okrožja v sloju bangalore_wards in tabelarne informacije v sloju bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate. Atributne informacije lahko združimo z oblikami z uporabo skupnega atributa. Tukaj sta stolpec MOVEMENT_ID iz sloja bangalore_wards in stolpec sourceid iz sloja bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate edinstvena identifikatorja oddelkov, ki ju lahko združimo. Ta operacija se imenuje Table Join.

../../_images/088.png
  1. Preden lahko združimo ti dve plasti, moramo zagotoviti, da se vrednosti v obeh stolpcih popolnoma ujemajo. Če sta videti enaki, sta različni vrsti. Ker format GeoJSON ne omogoča določanja vrst lastnosti, se predpostavlja, da so vse vrednosti tipa String - tj. besedilo. Toda ko uvozimo CSV v QGIS, QGIS privzeto poskuša določiti tipe stolpcev na podlagi vrednosti in dodeli ustrezen tip polja. Za datoteko CSV je bil podatkovni tip za stolpec sourceid dodeljen kot Integer. Zato moramo stolpec iz datoteke GeoJSON prav tako pretvoriti v tip Integer. Pojdite na :menuselection:`Procesiranje –> Processing –> Toolbox –> Vector Table –> Field Calculator algorithm. Dvakrat kliknite, da ga zaženete.

../../_images/098.png
  1. Izberite bangalore_wards kot Vhodni sloj. Ime polja poimenujte kot joinfield in izberite Result field type kot Integer. Kot izraz vnesite MOVEMENT_ID. Kliknite gumb poleg Calculated in izberite Save to File… ter vnesite ime izhodne datoteke kot bangalore_wards_fixed.gpkg. Kliknite Run. Zaprite polje kalkulatorja.

../../_images/1036.png
  1. Nova plast bangalore_wards_fixed bo dodana med Layers`. Zdaj smo pripravljeni na izvedbo združitve. Pojdite na Processing ‣ Toolbox ‣ Vector General ‣ Join attributes by field value. Z dvojnim klikom ga zaženite.

../../_images/1147.png
  1. Izberite bangalore_wards_fixed kot Vhodni sloj in joinfield kot Tabelno polje. Izberite bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate kot Input layer 2 in sourceid kot Table field 2. Plast Joined layer poimenujte kot uber_travel_times.gpkg in kliknite Run.

../../_images/1239.png
  1. Nov sloj uber_travel_times bo dodan med Layers`. Oblikujmo ga za vizualizacijo rezultatov združevanja. Kliknite Open the Layer Styling Panel. Izberemo renderer Graduated in mean_travel_time kot Value. Izberite barvno lestvico in kliknite Classify. Videli boste zemljevid, ki prikazuje naraščajoči potovalni čas, do bolj oddaljenega cilja.

../../_images/1337.png
  1. Vendar želimo analizirati in izločiti območja, ki so oddaljena do 30 minut vožnje, zato moramo opraviti še nekaj dodatne obdelave. Preklopite oblikovanje nazaj na upodobitev Single symbol. Z desno tipko na miški kliknite sloj uber_travel_times in izberite Filter.

../../_images/1434.png
  1. Vnesite naslednji izraz, da izberete vsa območja, ki so znotraj 1800 sekund (30 minut) povprečnega potovalnega časa. Vključiti moramo tudi ciljno območje, ki bo imelo potovalni čas enak 0.

"mean_travel_time" <= 1800 OR "MOVEMENT_ID" = 193
../../_images/1531.png
  1. V sloju bo zdaj prikazana skupina poligonov, ki sestavljajo območje zanimanja. Zdaj jih bomo združili v en sam poligon. Pojdite na Processing ‣ Toolbox ‣ Vector Geometry ‣ Dissolve. Z dvoklikom ga zaženite.

../../_images/1629.png
  1. Izberite uber_travel_times kot Vhodni sloj. Plast Dissolved poimenujte kot 30min_isochrone.gpkg. Kliknite Run.

../../_images/1730.png
  1. Med Layers bo dodan nov sloj 30min_isochrone, ki prikazuje rezultat naše analize.

../../_images/1826.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)