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".

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"

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.


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.