Generalidades del paquete Terra

SIG
R
Terra
Map
Consideraciones de la library(terra)
Author

Daniela O

Published

January 25, 2025

El paquete geodata permite descargar shapes de diferentes paises.

# install.packages("geodata")
library(geodata)
# install.packages("terra")
library(terra)

# para encontrar el shape de un pais por codigo
# country_codes() 
# iniciamos la busquedad del shape del pais

# col_0 <- gadm("colombia", level = 0, version = "latest", resolution = 2, path = getwd())

# plot(col_0)

En path se selecciona la ruta en donde queremos guardar el shape. En resolution 2 es baja mientrras que resolution 1 es alta

#install.packages("sf")
library(sf)
#col_sf <- st_as_sf(col_0)
# Guardar con opcion de sf
write_sf(col_sf, "posts/Paquete_Terra/Colombia_LO.shp")

# Guardar con opcion de terra
writeVector(col_sf, "posts/Paquete_Terra/Colombia_LO.shp")

Ahora podemos visualizar el shape con el parquete sf o terra

1shp1 <- sf::read_sf("COL_adm1.shp")
shp2 <- terra::vect("COL_adm1.shp")
1
Se genera un shape con una tabla de atributos

Para graficar empleamos el comando plot() pero este te gráfica un mapa por cada columna que tenga el shape. Entonces para eso especificamos la columna que queremos

# especificando la columna
1plot(shp1[,4])
1
para el gráfico con sf tienes que especificar el numero de columna mientras que con terra si puedes añadir el nombre de la columna

plot(shp2, "NAME_1") # shape abierto con terra

Manipulación de vectores 😁

library(dplyr)

# opción 1 
arauca<- filter(shp1, NAME_1 == "Arauca")
plot(arauca[,1])

# opción 2: funciona muy bien para los otros dos tipos

Boyaca <- subset(shp2, shp2$NAME_1 == "Boyacá")
plot(Boyaca)

Verificar sistemas de coordenadas de referencias

crs(shp2)
[1] "GEOGCRS[\"WGS 84\",\n    DATUM[\"World Geodetic System 1984\",\n        ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n            LENGTHUNIT[\"metre\",1]]],\n    PRIMEM[\"Greenwich\",0,\n        ANGLEUNIT[\"degree\",0.0174532925199433]],\n    CS[ellipsoidal,2],\n        AXIS[\"geodetic latitude (Lat)\",north,\n            ORDER[1],\n            ANGLEUNIT[\"degree\",0.0174532925199433]],\n        AXIS[\"geodetic longitude (Lon)\",east,\n            ORDER[2],\n            ANGLEUNIT[\"degree\",0.0174532925199433]],\n    ID[\"EPSG\",4326]]"
shp2 # También la coordenada se puede consultar con esta función 
 class       : SpatVector 
 geometry    : polygons 
 dimensions  : 32, 9  (geometries, attributes)
 extent      : -81.84153, -66.87033, -4.228429, 15.91247  (xmin, xmax, ymin, ymax)
 source      : COL_adm1.shp
 coord. ref. : lon/lat WGS 84 (EPSG:4326) 
 names       :  ID_0   ISO   NAME_0  ID_1    NAME_1       TYPE_1   ENGTYPE_1
 type        : <num> <chr>    <chr> <num>     <chr>        <chr>       <chr>
 values      :    53   COL Colombia     1  Amazonas    Comisaría Commissiary
                  53   COL Colombia     2 Antioquia Departamento  Department
                  53   COL Colombia     3    Arauca  Intendencia  Intendancy
 NL_NAME_1 VARNAME_1
     <chr>     <chr>
        NA        NA
        NA        NA
        NA        NA

Reproyectar sistema con paquete terra y sf

shp1.b <- sf::st_transform(shp1, crs = 32618)

shp2.b <- terra::project(shp2, "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs +type=crs" )
Note

En terra el sistema de coordenada debe especificarse como Proj4, mientras que sf es con EPSG 👁️