# install.packages("geodata")
library(geodata)
# install.packages("terra")
library(terra)
# para encontrar el shape de un pais por codigo
# country_codes()
Generalidades del paquete Terra
SIG
R
Terra
Map
Consideraciones de la library(terra)
El paquete geodata permite descargar shapes de diferentes paises.
# 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
1<- sf::read_sf("COL_adm1.shp")
shp1 <- terra::vect("COL_adm1.shp") shp2
- 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
<- filter(shp1, NAME_1 == "Arauca")
araucaplot(arauca[,1])
# opción 2: funciona muy bien para los otros dos tipos
<- subset(shp2, shp2$NAME_1 == "Boyacá")
Boyaca 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]]"
# También la coordenada se puede consultar con esta función shp2
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
<- sf::st_transform(shp1, crs = 32618)
shp1.b
<- terra::project(shp2, "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs +type=crs" ) shp2.b
Note
En terra el sistema de coordenada debe especificarse como Proj4,
mientras que sf es con EPSG 👁️