Como exportar um conjunto de dados com "SpatialPolygonsDataFrame" como um arquivo de forma


12

Como exportar conjuntos de dados espaciais em R, como tornadosconjunto de dados no GISToolspacote, como um arquivo de forma com a mesma referência espacial exata e os valores exatos?

library(GISTools)

data(tornados)

Desejado:

  • "SpatialPolygonsDataFrame" para "shapefile"
  • "(Forçado) SpatialPointsDataFrame" para "shapefile"
  • "SpatialPointsDataFrame (não forçado)" para "shapefile"
  • "SpatialLinesDataFrame" para "shapefile".

1
rgdal::writeOGR
Hrbrmstr # 7/15

O que significa Forçado aqui?
Mdsumner

Não sei o que significa "Forçado", mas achei na documentação "GISTools" sob o tipo de dados tornado.
Mokhless

Respostas:


16

A resposta de Wesley está correta. Portanto, para exportar especificamente os dados do tornado, você precisa:

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, esses dois conjuntos de dados são simplesmente tratados como SpatialPointsDataFrames.

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

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

8

Observe que também há uma função no maptoolspacote para fazer isso, a saber writeSpatialShape:

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

Veja ?writeSpatialShapepara opções.


2
Esta função não retém as informações do proj4string.
Jeffrey Evans

@ JeffreyEvans: então existe uma maneira de passar isso? talvez reatribua-o no pacote GIS para o qual está indo.
val

uso apenas @valwriteOGR
MichaelChirico

@ MichaelChirico: thx, mas foi aí que eu comecei e o problema é que ele trunca para um erro ... campos duplicados. Existem posts sobre isso.
val

6

Você deve olhar para o pacote rgdal , especificamente a writeOGRfunção.

Por exemplo, baixei primeiro os arquivos de forma "Estados e províncias" de resolução de 110m da Terra Natural , descompactando-os para ~/scratch/ne_110m_admin_1_states_provinces. Eu os li no R via:

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

Neste ponto, o objeto statesé a SpatialPolygonsDataFrame. Agora eu crio um novo diretório (" tempdir") e salve os shapefiles lá:

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

As formas agora são salvas no diretório ~/scratch/tempdir, como arquivos states.shp, etc. Você pode fazer o mesmo com a SpatialPointsDataFrame, apenas veja o primeiro exemplo na documentação da writeOGRfunção.


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

Verifique se você tem (ou se deu) permissões para gravar no diretório.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.