Cómo exportar un conjunto de datos con "SpatialPolygonsDataFrame" como un archivo de forma

12

¿Cómo exportar conjuntos de datos espaciales en R, como el tornadosconjunto de datos en el GISToolspaquete, como un archivo de forma con la misma referencia espacial y los valores exactos?

library(GISTools)

data(tornados)

Deseado:

  • "SpatialPolygonsDataFrame" a "shapefile"
  • "(Forzado) SpatialPointsDataFrame" a "shapefile"
  • "(No forzado) SpatialPointsDataFrame" a "shapefile"
  • "SpatialLinesDataFrame" a "shapefile".
Mokhless
fuente
1
rgdal::writeOGR
hrbrmstr
¿Qué significa forzado aquí?
mdsumner
No estoy seguro de lo que significa "Forzado" pero lo encontré en la documentación de "GISTools" bajo el tipo de datos de tornado.
Mokhless

Respuestas:

16

La respuesta de Wesley es correcta. Entonces, para exportar específicamente los datos de tornado que necesita hacer:

library(GISTools)
library(rgdal)
data(tornados)

writeOGR(obj=torn, dsn="tempdir", layer="torn", driver="ESRI Shapefile") # this is in geographical projection

writeOGR(obj=torn2, dsn="tempdir", layer="torn2", driver="ESRI Shapefile") # this is in equal area projection

Para R, estos dos conjuntos de datos simplemente se tratan como SpatialPointsDataFrames.

> class(torn)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"

> class(torn2)
[1] "SpatialPointsDataFrame"
attr(,"package")
[1] "sp"
cengel
fuente
8

Tenga en cuenta que también hay una función en el maptoolspaquete para lograr esto, a saber writeSpatialShape:

library(maptools)
writeSpatialShape(torn, "torn").

Ver ?writeSpatialShapeopciones.

MichaelChirico
fuente
2
Esta función no retiene la información de proj4string.
Jeffrey Evans el
@ JeffreyEvans: entonces, ¿hay alguna manera de pasar eso? quizás reasignarlo en el paquete SIG que va a hacer.
val
@val just usewriteOGR
MichaelChirico
@MichaelChirico: gracias, pero ahí es donde comencé y el problema es que se trunca a un error ... campos duplicados. Hay publicaciones al respecto.
val
6

Debes mirar el paquete rgdal , específicamente la writeOGRfunción.

Por ejemplo, descargué por primera vez los archivos de forma de "Estados y provincias" de 110 m de resolución de Natural Earth , descomprimiéndolos en ~/scratch/ne_110m_admin_1_states_provinces. Los leí en R a través de:

library(rgdal)
setwd("~/scratch")
states <- readOGR(dsn="ne_110m_admin_1_states_provinces",
    layer="ne_110m_admin_1_states_provinces")

En este punto, el objeto stateses a SpatialPolygonsDataFrame. Ahora creo un nuevo directorio (" tempdir") y guardo los archivos de forma allí:

dir.create("tempdir")
writeOGR(obj=states, dsn="tempdir", layer="states", driver="ESRI Shapefile")

Las formas ahora se guardan en el directorio ~/scratch/tempdir, como archivos states.shp, etc. Puede hacer lo mismo con un SpatialPointsDataFrame, solo vea el primer ejemplo en la documentación de la writeOGRfunción.

Wesley
fuente
4
library(raster)
shapefile(tornados, filename='path/to/file.shp')

Asegúrese de tener (o se haya otorgado) permisos para escribir en el directorio.

Momchill
fuente