
3 min.
Dacă ați lucrat vreodată cu date spațiale în R, acest lucru poate suna un clopoțel…
- Căutați date de limită
- Aflați care versiune este „oficială”
- Descărcați un shapefile
- Dezarhivați-o
- Încărcați-l
- Remediați proiecțiile
- Repeta
În timp ce căutam noi surse de date, am găsit excelenta bază de date geoBoundaries. Cu toate acestea, accesarea datelor poate fi plictisitoare, deoarece acestea sunt furnizate sub formă de fișiere de formă arhivate și, după cum știe orice profesionist GIS, fișierele de formă ar trebui să moară!
Anterior, rgeofrontiere pachetul era pe CRAN, dar a fost arhivat. Așa că am decis să-mi creez propria versiune și geolimitări s-a născut.
Se conectează direct la excelenta bază de date geoBoundaries și returnează curat, gata de utilizare sf obiecte cu un singur apel de funcție. Fără descărcări manuale. Fără încurcătură de fișiere de formă.
Așa funcționează.
Instalare
geolimitări a fost acceptat recent pe CRAN, așa că instalați-l cu:
install.packages("geobounds")
Încărcați pachetul și alte pachete complementare:
library(geobounds) library(sf) library(ggplot2) library(dplyr)
Obținerea nivelurilor administrative (ADM)
Nivelul administrativ 0 (ADM0) corespunde țărilor:
# Panama gb_get_adm0(country = "Panama") |> ggplot() + geom_sf(fill = "#072357") + labs(caption = "Source: www.geoboundaries.org")


De asemenea, puteți prelua mai multe niveluri administrative simultan. De exemplu:
# Simplified files
gb_get(country = "Panama", adm_lvl = "all", simplified = TRUE) |>
ggplot() +
geom_sf(aes(fill = shapeType), color = "grey50", linewidth = 0.1) +
facet_wrap(vars(shapeType)) +
scale_fill_viridis_d() +
labs(
title = "Administrative levels of Panama",
fill = "level",
caption = "Source: www.geoboundaries.org"
)


Limite globale compozite (CGAZ)
Când descărcați fișiere de țară individuale, fiecare țară reflectă propria sa viziune asupra granițelor. Acest lucru are ca rezultat: – suprapunerea granițelor – decalaje geografice – teritorii disputate
Pentru vizualizări globale curate, geoBoundaries oferă un set de date Composite Global Administrative Zones (CGAZ) care poate fi accesat cu gb_get_world().
Iată un exemplu cu fișiere la nivel de țară:
# Using individual (gb_get_adm) shapefiles
gb_get_adm0(country = c("India", "Pakistan")) |>
# Disputed area: Kashmir
ggplot() +
geom_sf(aes(fill = shapeName), alpha = 0.5) +
scale_fill_manual(values = c("#FF671F", "#00401A")) +
labs(
fill = "Country",
title = "Map of India & Pakistan",
subtitle = "Note overlapping in Kashmir region",
caption = "Source: www.geoboundaries.org"
)


Și iată aceeași comparație folosind CGAZ cu gb_get_world():
gb_get_world(c("India", "Pakistan")) |>
ggplot() +
geom_sf(aes(fill = shapeName), alpha = 0.5) +
scale_fill_manual(values = c("#FF671F", "#00401A")) +
labs(
fill = "Country",
title = "Map of India & Pakistan",
subtitle = "CGAZ does not overlap",
caption = "Source: www.geoboundaries.org"
)


Înțelegerea datelor
Baza de date geoBoundaries este supusă unei asigurări riguroase a calității, inclusiv revizuirea manuală și digitalizarea manuală a hărților fizice. Acest lucru asigură cel mai înalt nivel de acuratețe spațială pentru cercetarea științifică și academică.
Această precizie are un cost – unele fișiere pot fi mari și pot dura mai mult pentru descărcare. Pentru vizualizare și cartografiere generală, vă recomandăm să utilizați seturi de date simplificate prin setare simplified = TRUE.
# Different resolutions
norway <- gb_get_adm0("NOR") |>
mutate(res = "Full resolution")
print(object.size(norway), units = "Mb")
#> 26.5 Mb
norway_simp <- gb_get_adm0(country = "NOR", simplified = TRUE) |>
mutate(res = "Simplified")
print(object.size(norway_simp), units = "Mb")
#> 1.5 Mb
norway_all <- bind_rows(norway, norway_simp)
# Plot ggplot2
ggplot(norway_all) +
geom_sf(fill = "#BA0C2F", color = "#00205B") +
facet_wrap(vars(res)) +
theme_minimal() +
labs(caption = "Source: www.geoboundaries.org")


Memorarea în cache
Fișierele descărcate sunt stocate în cache local. Asta înseamnă:
- Descărcați o dată
- Redarea scriptului este rapidă
- Fluxul dvs. de lucru rămâne reproductibil
Puteți seta directorul cache cu:
gb_set_cache_dir("a/path/to/a/folder")
Când ar trebui să utilizați limitele geografice?
Utilizare geolimitări când:
- Aveți nevoie de limite administrative globale de încredere
- Vrei fluxuri de lucru reproductibile
- Preferi codul decât descărcările manuale
- Construiți hărți, tablouri de bord sau analize spațiale
geolimitări nu este singur în acest spațiu. În funcție de nevoile dvs., este posibil să doriți să vă uitați și la:
pământul natural
Un pachet foarte popular pentru a accesa seturile de date Natural Earth direct de la R. Este ușor și excelent pentru hărți globale rapide, în special la scară mică.
Dacă aveți nevoie de straturi fizice (râuri, linii de coastă, altitudine) alături de granițele politice, aceasta este adesea o alegere bună.
giscoR
Dacă te concentrezi pe Europa, giscoR oferă acces direct la datele Eurostat GISCO. Este deosebit de util pentru regiunile NUTS și granițele statistice europene.
osmdata
Când limitele administrative nu sunt suficiente și aveți nevoie de funcții OpenStreetMap (drumuri, POI, utilizarea terenului etc.), osmdata vă oferă capabilități puternice de interogare.
am construit geolimitări pentru a oferi acces direct la produsele geoBooundaries. Este un plus binevenit la ecosistemul R-GIS.
Bucurați-vă!
