Introducerea limitelor geografice | R-bloggeri

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

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ă!

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.