Data sp spasial adalah objek kelas S4 dan terdiri dari slot (disebut dengan menggunakan @) yang berisi komponen kelas fitur spasial yang diwakili (misalnya, @ data mengandung atribut, @ coords berisi pasangan koordinat, dll ...). Anda dapat mengembalikan nama slot tingkat atas menggunakan slotNames () tetapi tidak rekursif dan tidak akan mengembalikan nama slot bersarang untuk objek kelas poligon. Setiap slot dapat berisi kelas objek yang berbeda dan, sebelum mengoperasikannya, harus diperiksa menggunakan str () atau class (). Slot @data selalu merupakan objek data.frame dan @coords adalah matriks sedangkan @polygons adalah objek daftar dengan slot tambahan (labpt, area, hole, ringDir dan coords).
Slot dan organisasi yang tersedia tergantung pada jenis kelas fitur yang diwakili. Objek SpatialPointsDataFrame adalah yang paling dasar, sedangkan objek SpatialPolygonsDataFrame bersarang (seperti yang terlihat di atas). Struktur bersarang ini, mewakili setiap poligon, harus dipertanggungjawabkan menggunakan sesuatu seperti sapply untuk beroperasi pada setiap objek daftar (poligon).
Berikut adalah contoh yang menggunakan sapply untuk mengembalikan area untuk setiap poligon dengan mengulangi melalui "poligon" lalu, slot, area "bersarang".
sapply(slot(sdat, 'polygons'), function(i) slot(i, 'area'))
Dalam kasus objek poligon, karena mereka disimpan sebagai daftar untuk setiap poligon, Anda dapat menggunakan pengindeksan daftar. Berikut ini adalah contoh untuk mengembalikan poligon pertama (menghasilkan objek kelas "Poligon" dan bukan SpatialPolygonsDataFrame):
sdat@polygons[[1]]
Dalam versi yang lebih baru dari sp pengembang telah memulai, dalam beberapa kasus, menghapus keharusan memanggil slot @data secara langsung.
Misalnya, untuk mengindeks @ data Anda sebelumnya:
sdat@data[sdat@data$att >= 0.5 ,]
dan sekarang:
sdat[sdat$att >= 0.5 ,]
Namun, seperti yang ditunjukkan sebelumnya, ini bukan kasus untuk slot lain (misalnya, koordinat, poligon, dll ...). Sejauh kapan harus menggunakan [] atau $ ini masih tergantung pada jenis operasi. Tanda kurung "[]" dapat digunakan untuk memanggil nama dalam kerangka data tetapi terutama digunakan untuk pengindeksan sedangkan $ secara khusus digunakan untuk memanggil kolom dalam kerangka data. Alasan panggilan "tidak langsung" ke nama kolom berfungsi karena pengembang telah menambahkan fungsionalitas untuk memungkinkan pencarian rekursif melalui objek sp. Namun, untuk menghindari konflik nama (seperti dalam contoh Anda; memiliki kolom x, y dalam bingkai data Anda akan bertentangan dengan nama x, y dalam nama matriks @coord) ada beberapa konsistensi internal yang memeriksa alasan mengapa ini hanya berfungsi di beberapa contoh.
Salah satu karakteristik yang mudah digunakan adalah Anda dapat mengelompokkan objek spasial melalui indeks baris. Di sini saya mengatur ulang 10 objek pertama.
sub.sdat <- sdat[1:10,]
Atau, sebagai alternatif, sampel acak (n = 10) menggunakan vektor indeks baris.
rs.sdat <- sdat[sample(1:nrow(sdat), 10),]
Memahami pengindeksan dan cara menggunakan kurung adalah hal yang sangat penting dalam menulis kode R.
Sunting (03/24/2017): Harap dicatat bahwa kelas fitur sederhana (sf), mengikuti standar GeoJSON, kemungkinan akan menjadi standar baru untuk objek spasial di R. Anda dapat membaca deskripsi rinci tentang kelas ini di CRAN sf situs Wikipedia Fitur untuk R .
R
sintaks, itu tidak khusus untuksp
paket atau objeknya.R
diinstal dengan tutorial: mulailah dari sana dalam penelitian Anda. Web dan media cetak menawarkan banyak sumber daya tambahan untuk belajarR
.