Saya perlu membuka shapefile dari ArcMap di R untuk menggunakannya untuk analisis geostatistik lebih lanjut. Saya sudah mengonversinya menjadi file teks ASCII, tetapi di R itu dikenali sebagai data.frame. Fungsi koordinat tidak berfungsi segera setelah x dan y dikenali sebagai non-numerik.
Bisakah Anda membantu mengatasinya?
Jawaban:
Gunakan shapefile secara langsung. Anda dapat melakukan ini dengan mudah dengan
rgdal
atausf
paket, dan membaca bentuk di suatu objek. Untuk kedua paket, Anda perlu menyediakandsn
- sumber data, yang dalam hal shapefile adalah direktori , danlayer
- yang merupakan nama shapefile, minus ekstensi:(Untuk rgdal, di OSX atau Linux Anda tidak dapat menggunakan steno '~' untuk direktori home sebagai sumber data (
dsn
) direktori - jika tidak Anda akan mendapatkan pesan "Tidak dapat membuka sumber data" yang tidak membantu.sf
Paket tidak memiliki batasan ini, di antara beberapa kelebihan lainnya.)Ini akan memberi Anda objek yang merupakan Spasial * DataFrame (titik, garis, atau poligon) - bidang tabel atribut kemudian dapat diakses oleh Anda dengan cara yang sama seperti kerangka data biasa, yaitu
shape$ID
untuk kolom ID.Jika Anda ingin menggunakan file ASCII yang Anda impor, maka Anda cukup mengonversi bidang teks (karakter) x dan y ke angka, misalnya:
Sunting 2015-01-18 : perhatikan bahwa rgdal sedikit lebih baik daripada maptools (yang awalnya saya sarankan di sini), terutama karena rgdal membaca dan menulis informasi proyeksi secara otomatis.
Catatan:
as.numeric(as.character())
fungsi bersarang - jika teks ASCII Anda dibaca sebagai faktor (kemungkinan), ini memastikan bahwa Anda mendapatkan nilai numerik alih-alih tingkat faktor.rgdal
dansf
memiliki cara yang membingungkan untuk mengakses berbagai jenis file dan basis data (misalnya untuk file GPX, dsn adalah nama file, dan melapisi komponen individu seperti titik arah, titik trek, dll.), dan diperlukan pembacaan yang cermat atas contoh online.sumber
as.character
untuk menyelesaikan masalah.dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
argumen tidak boleh mengandung garis miring --- misalnyadsn = "C:/Users/Downloads/"
seharusnyadsn = "C:/Users/Downloads"
. Semoga ini memecahkan frustrasi seseorang ...Saya setuju dengan Simbamangu dan gissolved dalam hal mempertahankan shapefile tetapi ingin mengarahkan perhatian Anda secara khusus ke perpustakaan rgdal. Ikuti tautan yang disarankan oleh Gissolved untuk NCEAS dan ikuti petunjuk untuk rgdal. Mungkin sulit untuk memasang pada beberapa mesin tetapi secara substansial dapat meningkatkan hasil dalam hal proyeksi.
Pustaka maptools sangat bagus dan memungkinkan Anda untuk menentukan proyeksi untuk shapefile yang Anda baca, tetapi untuk melakukannya Anda perlu tahu bagaimana menentukan proyeksi itu dalam format proj4. contoh mungkin terlihat seperti:
Jika Anda ingin pergi rute ini, maka saya sarankan http://spatialreference.org sebagai tempat untuk mencari tahu seperti apa proyeksi Anda dalam format proj4. Jika itu terlihat merepotkan Anda, rgdal akan membuatnya mudah dengan membaca file .prj ESRI shapefile (file yang berisi definisi proyeksi ESRI untuk shapefile. Untuk menggunakan rgdal pada file yang sama, Anda cukup menulis:
Anda mungkin dapat berseluncur dengan tanpa melakukan ini jika Anda hanya bekerja dengan satu shapefile, tetapi segera setelah Anda mulai melihat beberapa sumber data atau overlay dengan Google Maps, menjaga proyeksi Anda dalam kondisi yang baik menjadi penting.
Untuk beberapa penelusuran bermanfaat pada data spasial di R, termasuk banyak hal tentang mengimpor dan bekerja dengan pola titik, saya memiliki beberapa materi kursus lama daring di https://csde.washington.edu/workshop/point-patterns-and-raster -surfaces / (lebih banyak lokakarya dapat ditemukan di sini ) yang dapat membantu Anda melihat bagaimana metode ini dibandingkan dalam praktik.
sumber
Saya pikir Anda tidak boleh mengkonversi shapefile ke ASCII tetapi sebaliknya gunakan shapefile secara langsung dengan salah satu ekstensi spasial. Di sini Anda dapat menemukan tiga cara untuk membaca (dan menulis) http://www.nceas.ucsb.edu shapefile/scicomp/usecases/ReadWriteESRIShapeFiles . Proyek R-spatial mungkin juga menarik bagi Anda http://cran.r-project.org/web/packages/sp/index.html .
sumber
Anda dapat menggunakan
sf
perpustakaan untuk membuka Shapefile secara langsung diR
. Ini lebih cepat daripadargdal
perpustakaan, periksa di sini: Fitur Sederhana untuk R - Tolok Ukur . Untuk informasi lebih lanjut tentangsf
paket, periksa homepage proyek r-spasial .sumber
Solusi mudah pada 2017 adalah
shapefile()
fungsi diraster
perpustakaan.UPDATE: Ini masih merupakan opsi yang baik di 2019.
sumber
Satu lagi alternatif adalah menggunakan pustaka fastshp yang menawarkan ::
Inilah pertanyaan saya tentang SE tentang cara menggunakannya dengan ggplot2:
Bagaimana saya bisa memformat shapefile yang dimuat melalui fastshp di ggplot2?
sumber