Geocoding pomocou jazyka R 150 150 cleandata

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.

geocode_sk

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ť.

  • Post Tags:
  • Ako vytvoriť API v R pomocou knižnice Plumber 150 150 cleandata Ako vytvoriť API v R pomocou knižnice Plumber
  • Ako zrýchliť XGBoost v R: Benchmark trénovania modelu na CPU vs. GPU 150 150 cleandata Ako zrýchliť XGBoost v R: Benchmark trénovania modelu na CPU vs. GPU
  • EDA časových radov: Ako odhaliť vzory skryté v čase 150 150 cleandata EDA časových radov: Ako odhaliť vzory skryté v čase

Leave a Reply

Your email address will not be published.