Geocoding pomocou jazyka R
Geocoding je proces prevádzania adries na zemepisné súradnice, které sa môžu použiť pre umiestnenie týchto adries na mapu. Využitie takto obohatených dát je široké. Od analytiky po praktické použitie v oblastiach ako logistika, marketing, verejná správa, zdravotníctvo a mnoho iných.
Knižnice pre geocoding
V dnešnom príspevku sa budem venovať procesu geokódovania inzerátov získaných webscrapingom (procesu som sa venoval v tomto článku) a následnému spojeniu týchto geokódovaných údajov s údajmi o obciach v SR. Tento proces otvára dvere k hlbšiemu porozumeniu vašich dát a umožňuje pokročilé geopriestorové analýzy.
Tentokrát si vystačíme s tromi knižnicami. S tidyverse na manipuláciu s dátami, tidygeocoder na samotný geocoding adries a sf pre prácu s priestorovými dátami (v našom prípade bodmi a polygónmi) sme pripravení načítať a spracovať naše dáta.
Knižnice
# import libraries
pacman::p_load(
tidyverse,
tidygeocoder,
sf
)Načítanie dát a geocoding
Načítame geopriestorové údaje o obciach a údaje o inzerátoch. Údaje o obciach sa dajú jednoducho získať pomocou knižnice giscoR a funkcie gisco_get_communes(). Ja som mal tieto dáta už pripravené vo formáte RDS.
Načítanie dát
# Read geospatial data for communes
communes <- readRDS("data/geospatial_data/communes.RDS") |>
select(NAME_NSI)
# Read advertisements data
advertisements_complete <- readRDS("data/advertisements_complete.RDS")
Každý z inzerátov v datasete obsahuje adresu. Cieľom je extrahovať unikátne adresy z týchto reklám a premeniť ich na geopriestorové údaje. Geokódovanie vykonávam pomocou funkcie geocode() metódou OpenStreetMap. Tento proces môže trvať dlho, keďže každú sekundu sa odošle jedna požiadavka.
Geokódovanie adries
# Extract unique addresses from advertisements data
advertisements <- advertisements_complete |>
select(address) |>
rename(address1 = address) |>
as_tibble() |>
mutate(address1 = str_extract(address1,
"^[^,]+,[^,]+")) |>
unique()
# Geocode addresses using OpenStreetMap method
geocoded_advertisements <- geocode(advertisements,
address = address1,
method = 'osm',
lat = latitude ,
long = longitude)
Po geokódovaní adries ich spojím späť s údajmi z inzerátov. To umožní priradiť každému inzerátu geografickú polohu. V tejto fáze tiež aplikujem filter, aby som zabezpečil, že v analýze zohľadňujem iba reklamy v špecifickom geografickom rozsahu, ktorý odpovedá oblasti Slovenska. Občas sa totiž stalo, že adresa bola lokalizovaná v zahraničí.
Prepojenie inzerátov a geografických dát
# Join geocoded addresses with advertisements data
advertisements_complete_geocoded <- advertisements_complete |>
left_join(geocoded_advertisements, by = c("address" = "address1"), keep = FALSE, multiple = "first") |>
filter(latitude <= 49.613611 & latitude >= 47.75740 & longitude <= 22.565833 & longitude >= 16.833333) |>
st_as_sf(coords = c("longitude", "latitude"), crs = 4326)
Posledným krokom je priestorové spojenie geokódovaných reklám s dátami o obciach. Tento proces mi umožní zistiť, v ktorých obciach sa nachádzajú inzerované byty. Využívam k tomu knižnicu sf, ktorá je štandardom pre prácu s priestorovými dátami v R. Keďže už pracujem s priestorovými údajmi, musím použit špecifický typ spojenia st_join metódou st_contains, ktorý spája dve priestorové jednotky (body, polygóny) podľa toho, či jedna obsahuje druhú. Výsledný dataset integruje originálne informácie o inzerciách s ich geopriestorovými vlastnosťami a príslušnosťou k obciam.
Uloženie finálneho súboru
# Spatial join with communes data
advertisements_complete_geocoded <- communes %>%
st_join(advertisements_complete_geocoded, join = st_contains)
# Save the final geocoded advertisements data
saveRDS(advertisements_complete_geocoded, "data/advertisements_complete_geocoded.RDS")Nasledujúce kroky
Geokódovanie a práca s geopriestorovými dátami otvárajú nové možnosti pre analýzu a vizualizáciu informácií. V tomto prípade som prešiel od jednoduchých adresných údajov k ich geografickej reprezentácii a integrácii s údajmi o obciach. Tento prístup umožňuje lepšie porozumieť distribúcii inzerovaných bytov na území Slovenska, čo je jednak dôležité pre nacenenie nehnuteľnosti a v praxi často kľúčové pre efektívne plánovanie marketingových a obchodných stratégií. Výhodou, pri tvorbe modelu strojového učenia (napr. algoritmy ako random forest, xgboost a iné) zas je, že súradnice môžeme rotovať a tým optimalizovať ako budú výsledné rozhodovacie stromy vyzerať.



Leave a Reply