R + RStudio + PostGIS + Xubuntu 14.04/Debian jessie

Facebooktwittergoogle_plusredditpinterestlinkedinmail


[In English]

Estos son los pasos para poder obtener datos de una base de datos PostGIS desde RStudio trabajando en Xubuntu 14.04 o en Debian jessie:

  1. Deben estar instaladas las librerías libgeos, libgeos-c1, libgeos-dev y libgeos++-dev; las dos primeras ya las tenía instaladas tanto en Xubuntu como en jessie, pero las dos últimas las he tenido que añadir desde Synaptics, según se indica en este enlace de AskUbuntu.
  2. En RStudio, hay que instalar y después cargar los paquetes RPostgreSQL, rgeos y sp.
  3. Después hay que crear la conexión a la base de datos:

    drv <- dbDriver(“PostgreSQL”)

    con<- dbConnect(drv,dbname=’tuBD’,host=’localhost’,port=5432,user=’tuUsuario’,password=’tuPw’)

  4. Para obtener datos que utilicen información extraída de una tabla con datos espaciales, deben usarse las funciones PostGIS habituales de acceso a geometrías:

data <- dbGetQuery(con,”SELECT nongeocolumn, ST_AsText(geocolumn) FROM yourtable”)

Una vez finalizado el trabajo con la BD, se cierran conexión y driver:

dbDisconnect(con)
dbUnloadDriver(drv)

Los pasos 2-4 están explicados en este enlace de R-bloggers. A partir de él he subido a Github un pequeño script R (accessDB.R) que realiza la instalación y carga de paquetes, y la conexión a la base de datos.


[En español]

These are the steps for retrieving data from a PostGIS database using RStudio under Xubuntu 14.04 or under Debian jessie:

  1. Libraries libgeos, libgeos-c1, libgeos-dev y libgeos++-dev must be installed; both Xubuntu and jessie had the first two of them installed, but I had to add the last ones from Synaptics, as it is explained in this link at AskUbuntu.
  2. In RStudio, you have to install and then load RPostgreSQL, rgeos y sp packages.
  3. After that, you have to create the connection to the database:

    drv <- dbDriver(“PostgreSQL”)

    con<- dbConnect(drv,dbname=’yourDB’,host=’localhost’,port=5432,user=’yourUser’,password=’yourPw’)

  4. In order to get  information from tables which store geospatial data, you have to use the usual PostGIS functions for handling geometries:

data <- dbGetQuery(con,”SELECT nongeocolumn, ST_AsText(geocolumn) FROM yourtable”)

Once the work with the DB is finished, connection and driver must be closed:

dbDisconnect(con)
dbUnloadDriver(drv)

Steps 2-4 are explained in this link at R-bloggers. From the content in this post I have uploaded to Github a little R script (accessDB.R) that installs and load the required packages, and then connects to a database.