Subset a SpatialPolygonsDataFrame oleh ID di R?

13

Saya telah menggunakan gIntersectfungsi dari rgeospaket untuk menentukan poligon yang bersilangan di dua SpatialPolygonsDataFrames (spdfs). Hasilnya adalah matriks logis dengan rownames yang terdiri dari ID poligon dari sfdf # 1 dan colnames ID poligon dari spdf # 2. Saya ingin menggunakan matriks ini untuk mengelompokkan dua spdf asli, menghilangkan poligon yang tidak memiliki tumpang tindih, sebelum menggunakan fungsi gIntersection. Saya dapat dengan mudah mengkonversi matriks logis menjadi dua vektor ID (satu untuk setiap spdf) yang mewakili poligon dengan setidaknya beberapa tumpang tindih.

Pertanyaan saya adalah - dapatkah saya menggunakan vektor ID poligon untuk subset sebuah spdf? Jika demikian, apakah ini akan dengan benar mengelompokkan nilai dalam @dataslot? Saya tahu saya biasanya dapat mengelompokkan spdf menggunakan sintaks ini:

spdf[spdf@data$myVariable[someVector], ]

Ini tidak akan berfungsi untuk ID, karena mereka terkubur lebih dalam di dalam struktur daftar spdf.

Alberto
sumber

Jawaban:

11

Id matriks yang dikembalikan dari gIntersect harus sesuai dengan rownames di setiap objek sp sumber. Anda harus dapat mengindeks posisi rownames hanya untuk subset data.

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]
Jeffrey Evans
sumber
Saya hanya ingin memeriksa - apakah ini juga berfungsi langsung pada objek spdf? (mis. spdf[r, ])
Alberto
Ya, ia bekerja pada objek sp dan indeks menyebar melalui ID yang menautkan semua objek slot, yang sesuai dengan nama data @data.
Jeffrey Evans
Mungkin saya tidak membaca dengan benar tetapi ini terlihat sedikit salah? Anda harus mengekstrak string r nama baris, menggunakan bilangan bulat akan mengekstrak secara normal
MichaelChirico
@MichaelChirico untuk mengembalikan posisi baris yang diketahui ini benar. Jika Anda hanya tahu nilai nama baris daripada Anda dapat membuat indeks menggunakan sesuatu seperti itu (nama nama (x)% dalam% c (1,5)) dan, tidak, kecuali jika string karakter yang benar ditugaskan ke nama nama daripada nilai-nilai tidak perlu dikutip. Rownames default adalah vektor yang dikutip dari 1: n
Jeffrey Evans