Sígueme en Twitter

miércoles, 29 de mayo de 2019

Creación de un shapefile a partir de datos de coordenadas (lat/lon) con RStudio mediante paquete sf


En este artículo explicaré brevemente la forma de importar datos de coordenadas (latitud/longitud) de Excel a un formato de texto plano CSV y su posterior lectura en el entorno de desarrollo de RStudio mediante el paquete sf (Simple Features for R) con el objetivo de crear un archivo shapefile de puntos.
RStudio es un entorno de desarrollo integrado (IDE) para programar en R, cuya naturaleza de software libre (código abierto) ha permitido que se desarrollen gran cantidad de paquetes útiles en distintas disciplinas. Para el manejo de información geográfica (vectorial) destacan principalmente dos paquetes: sp y sf. Es importante mencionar que el paquete sf es de reciente creación y dadas sus potencialidades se perfila como sucesor natural de sp.
La simple tarea de importación de puntos (lat/lon) con el objetivo de crear un shapefile está ampliamente documentada en el caso de programas comerciales tales como ArcGIS y en el caso de software libre QGIS. En ambos casos, el procedimiento es similar y le resultará familiar a los lectores el proceso a continuación descrito en RStudio con la particularidad que se hace a través de líneas de comando.
Si bien es cierto que debemos conocer el manejo básico del lenguaje R, tampoco es un impedimento para realizar esta sencilla labor. A continuación el lector se encontrará con una valiosa oportunidad para adentrarse en las operaciones básicas y su aplicación en el manejo de información geográfica.
Partimos de una tabla que incluye dos columnas correspondientes a las coordenadas de longitud y latitud. Es sencillo, las copiamos y pegamos en un libro de Excel, a continuación lo guardamos con el nombre "lat_lon” y en tipo elegimos CSV (delimitado por comas). El archivo lat_lon.csv será guardado en una carpeta con el nombre “RStudio” en el disco local C de tu computadora (C:\RStudio\lat_lon.csv).

LATD
LONGD
18.0453
-93.9667
18.0014
-93.6192
17.9739
-93.7683
18.0656
-93.6247
18.0214
-93.4989
18.048117
-94.076539

El paquete sf se encarga de representar los elementos geográficos a partir de estructuras de datos tales como vectores, listas, matrices, entre otros. Para poder emplearlo es necesario hacer la instalación del paquete sf en el entorno de RStudio y el establecimiento de la ruta de trabajo.
A continuación se muestran las líneas de comando que debemos de utilizar para realizar el procedimiento completo. Los comentarios aparecen antecedidos por el símbolo # y los comandos nativos de R y el paquete sf aparecen de color rojo.

#Instalación del paquete sf

install.packages("sf")
#Activación del paquete sf
library(sf)

## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3

#Se determina la ruta de trabajo (previo generamos una carpeta en disco C que se llame RSTudio)
#En RStudio las rutas se establecen con diagonal invertida y entre comillas
setwd("C:/RStudio")

Dado que el archivo con extensión CSV se encuentra en la carpeta de trabajo establecida previamente, ya no es necesario escribir toda la ruta, basta con indicar el nombre del mismo y guardarlo en una variable llamada “coordenadas”.
#Importar coordenadas (lat/lon) a partir del archivo lat_lon.csv
coordenadas <- read.csv("lat_lon.csv")

Para asegurarnos que los datos se importaron de manera correcta podemos visualizarlo.
#Visualizamos los datos
View(coordenadas)

Para agregar las coordenadas es necesario indicarle a RStudio los campos correspondientes a X e Y o en este caso de latitud y longitud tal cual vienen escritos en el archivo CSV. Para este ejemplo se guarda en una nueva variable denominada “coordenadas1”. De manera simultánea se agrega el sistema de coordenadas que en este caso corresponde a geográficas (crs = 4326, Lat/Long datum WGS84).

#Comando que convierte un objeto a un sf objeto que permite agregar coordenadas (lat/lon)y se establece el sistema de coordenadas.
coordenadas1 <- st_as_sf(coordenadas, coords = c("LONGD", "LATD"), crs = 4326)

Tenemos la opción de visualizarlo (graficarlo) desde RStudio mencionando la variable “coordenadas1” y la instrucción “plot”.
#Visualizamos los puntos
plot(coordenadas1$geometry, axes= T)


Obtienes un gráfico estructurado de la siguiente manera.


Procedemos a la exportación a formato shapefile el cual se guarda en el directorio que se ha venido trabajando con el nombre “puntos.shp”.

#Guardar en formato shape
st_write(coordenadas1,"puntos.shp",delete_layer = TRUE)
#Si el proceso se generó de manera correcta te aparece algo como se muestra abajo.
Writing layer `puntos' to data source `puntos.shp' using driver `ESRI Shapefile'
features:       6
fields:         0
geometry type:  Point


Dirígete al directorio “C:\RStudio “ y comprobaras que fue creado el archivo de puntos compuesto por 4 elementos (shp, shx, prj, dbf).


Finalmente el archivo se generó de manera correcta e incluye el sistema de coordenadas especificado, para comprobarlo abrimos el archivo “puntos.shp” en cualquier visor de información geográfica e inspeccionamos las propiedades del mismo.