R como hemos visto es capaz de manejar datos espaciales incluso los podemos cargar usando un shp , GEOJSON, Kml, GML entre otros. No obstante hay veces que necesitamos crear un SpatialPointsDataFrame utilizando los datos u objetos que hemos ido generando con R. Con este fin necesitaremos:
- Unas coordenadas para los puntos
- Un DataFrame que contenga los datos
- El sistema de coordenadas con el que queremos trabajar
Vamos a ponernos manos a la obra creando las coordenadas de los puntos y los datos asociados a cada punto. Ten en cuenta que deben estar en el mismo orden.
#install de package in R , just if you don't have it already install.packages("sp") #load the library library('sp') #------------------------------------ #Create a matrix with the coordinates #------------------------------------ #coordinates as vector coor1=c(48,0) coor2=c(48.5,0) #coordinate as matrix coordinates=rbind(coor1, coor2) #------------------------------ # data for each coordinate #----------------------------- mydata=as.data.frame(rbind("point1", "point1"))
El siguiente paso es definir el sistema de coordenadas para nuestros puntos. Podemos usar la web http://spatialreference.org/ref/epsg/wgs-84/ para buscar el sistema de coordenadas y su definición tanto por código EPSG como en formato proj4
#---------------------------- #Corrdinate reference system #---------------------------- #There are to options todefine de CRS #visit http://spatialreference.org/ref/epsg/wgs-84/ #just with the epsg code myCRS=CRS("+init=epsg:4326") #proj4 (recomended) myCRS=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_d
Finalmente construimos nuestro SpatialPointsDataFrame con los tres elementos que hemso creado
#-------------------------------------- #built my SpatialPointsDataFrame #-------------------------------------- mypoints=SpatialPointsDataFrame(coords=coordinates,data=mydata, proj4string = myCRS) plot(mypoints, axes=TRUE)
Si hacemos el plot obtendremos lo que aparece en la imagen de abajo.
Para saber mas a cerca de como manejar los SpatialPointsDataFrame tienes esta entrada del blog
Descárgate el código en este enlace.