Comment exporter un jeu de données avec «SpatialPolygonsDataFrame» en tant que fichier de formes

12

Comment exporter des jeux de données spatiales en R, comme un tornadosjeu de données dans un GISToolspackage, en tant que fichier de formes avec exactement la même référence spatiale et les valeurs exactes?

library(GISTools)

data(tornados)

Voulu:

  • "SpatialPolygonsDataFrame" à "shapefile"
  • "(Forced) SpatialPointsDataFrame" à "shapefile"
  • "(Non-Forced) SpatialPointsDataFrame" à "shapefile"
  • "SpatialLinesDataFrame" à "shapefile".
Mokhless
la source
1
rgdal::writeOGR
hrbrmstr
Que signifie Forced ici?
mdsumner
Je ne sais pas ce que "Forced" signifie mais je l'ai trouvé dans la documentation "GISTools" sous le type de données tornado.
Mokhless

Réponses:

16

La réponse de Wesley est correcte. Donc, pour exporter spécifiquement les données de tornade, vous devez faire:

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

Pour R, ces deux ensembles de données sont simplement traités comme des SpatialPointsDataFrames.

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

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

Notez qu'il y a aussi une fonction dans le maptoolspackage pour accomplir cela, à savoir writeSpatialShape:

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

Voir ?writeSpatialShapepour les options.

MichaelChirico
la source
2
Cette fonction ne conserve pas les informations de proj4string.
Jeffrey Evans
@JeffreyEvans: existe-t-il un moyen de passer cela? peut-être le réaffecter dans le package SIG qu'il va.
val
@val suffit d'utiliserwriteOGR
MichaelChirico
@MichaelChirico: thx mais c'est là que j'ai commencé et le problème est qu'il tronque en une erreur ... des champs en double. Il y a des articles à ce sujet.
val
6

Vous devriez regarder le paquetage rgdal , en particulier la writeOGRfonction.

Par exemple, j'ai d'abord téléchargé les fichiers de formes «États et provinces» à 110 m de résolution depuis la Terre naturelle , pour les déballer ~/scratch/ne_110m_admin_1_states_provinces. Je les ai lus dans R via:

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

À ce stade, l'objet statesest un SpatialPolygonsDataFrame. Maintenant, je crée un nouveau répertoire (" tempdir") et j'y enregistre les fichiers de formes:

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

Les formes sont maintenant enregistrées dans le répertoire ~/scratch/tempdir, sous forme de fichiers states.shp, etc. Vous pouvez faire la même chose avec a SpatialPointsDataFrame, voyez juste le premier exemple dans la documentation de la writeOGRfonction.

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

Assurez-vous que vous avez (ou que vous vous êtes donné) les autorisations pour écrire dans le répertoire.

Momchill
la source