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

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"

8

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

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

Lihat ?writeSpatialShapeopsi.


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.


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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.