Cara mengekspor dataset dengan "SpatialPolygonsDataFrame" sebagai shapefile

12

Bagaimana cara mengekspor set data spasial dalam R, seperti tornadosdataset dalam GISToolspaket, sebagai shapefile dengan referensi spasial yang sama persis dan nilai yang tepat?

library(GISTools)

data(tornados)

Diinginkan:

  • "SpatialPolygonsDataFrame" to "shapefile"
  • "(Dipaksa) SpatialPointsDataFrame" to "shapefile"
  • "(Non-Forced) SpatialPointsDataFrame" to "shapefile"
  • "SpatialLinesDataFrame" hingga "shapefile".
Mokhless
sumber
1
rgdal::writeOGR
hrbrmstr
Apa yang dipaksakan di sini?
mdsumner
Saya tidak yakin apa artinya "Terpaksa" tetapi saya menemukannya di dokumentasi "GISTools" di bawah tipe data tornado.
Mokhless

Jawaban:

16

Jawaban Wesley benar. Jadi untuk secara khusus mengekspor data tornado yang perlu Anda lakukan:

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

Untuk R kedua dataset ini hanya diperlakukan sebagai SpatialPointsDataFrames.

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

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

Perhatikan ada juga fungsi dalam maptoolspaket untuk mencapai ini, yaitu writeSpatialShape:

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

Lihat ?writeSpatialShapeopsi.

MichaelChirico
sumber
2
Fungsi ini tidak menyimpan informasi proj4string.
Jeffrey Evans
@ JeffreyEvans: jadi apakah ada cara untuk melewatinya? mungkin menugaskannya kembali dalam paket GIS itu akan.
val
@val hanya menggunakanwriteOGR
MichaelChirico
@MichaelChirico: thx tapi di situlah saya mulai dan masalahnya adalah bahwa itu terpotong ke sebuah Kesalahan ... duplikat bidang. Ada posting tentang itu.
val
6

Anda harus melihat paket rgdal , khususnya writeOGRfungsinya.

Sebagai contoh, saya pertama kali mengunduh shapefile "Negara dan Provinsi" resolusi 110m dari Bumi Alami , membukanya ~/scratch/ne_110m_admin_1_states_provinces. Saya membacanya ke R melalui:

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

Pada titik ini, objeknya statesadalah a SpatialPolygonsDataFrame. Sekarang saya membuat direktori baru (" tempdir") dan menyimpan shapefile di sana:

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

Bentuk sekarang disimpan ke direktori ~/scratch/tempdir, seperti file menyatakan.shp, dll. Anda dapat melakukan hal yang sama dengan a SpatialPointsDataFrame, cukup lihat contoh pertama dalam dokumentasi writeOGRfungsi.

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

Pastikan Anda telah (atau telah memberikan diri Anda) izin untuk menulis ke direktori.

Momchill
sumber