R'de kimliğe göre bir SpatialPolygonsDataFrame alt kümesi?


13

İki SpatialPolygonsDataFrames (spdfs) hangi çokgenlerin kesiştiği belirlemek gIntersectiçin rgeospaketten işlevi kullandım . Sonuç, sfdf # 1'den çokgen kimlikleri içeren rownames ve spdf # 2'den çokgen kimlikleri içeren bir mantıksal matristir. Bu matrisi, işlevi kullanmadan önce üst üste binmeyen çokgenleri atlayarak iki orijinal spdfs'yi alt kümelerde kullanmak istiyorum gIntersection. Mantıksal matrisi, en azından bir miktar örtüşmeyle çokgenleri temsil eden iki kimlik vektörüne (her spdf için bir tane) kolayca dönüştürebilirim.

Benim sorum - bir spdf alt kümesi için bir çokgen kimlikleri vektörü kullanabilir miyim? Öyleyse, @datayuvadaki değerleri doğru şekilde alt gruplara ayıracak mı? Bu sözdizimini kullanarak genellikle spdfs alt kümesi biliyorum:

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

Bu, kimlikler için işe yaramaz, çünkü spdf liste yapısının çok daha derinlerine gömülürler.

Yanıtlar:


11

GIntersect'ten döndürülen matris kimlikleri, her kaynak sp nesnesindeki rown adlarına karşılık gelmelidir. Verileri alt kümeye atamak için rownames konumunu dizine ekleyebilmeniz gerekir.

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]

Sadece kontrol etmek istiyorum - bu da doğrudan spdf nesnesi üzerinde çalışacak mı? (yani, spdf[r, ])
Alberto

Evet, sp nesnelerinde çalışır ve dizin, @data rownames'e karşılık gelen tüm yuva nesnelerini bağlayan kimlikler aracılığıyla yayılır.
Jeffrey Evans

Belki doğru okumuyorum ama bu biraz yanlış görünüyor? Bir üzerinde ayıklamak gerekir dize r ordinally çıkartacaktır tamsayılar kullanarak, sıra isimleri
MichaelChirico

@MichaelChirico bilinen bir satır konumuna dönmek için bu doğru. Yalnızca satır adlarının değerini biliyorsanız, dizin (% c (1,5) içindeki rownames (x)%) () ve rownames'e gerçek bir karakter dizesi atanmadıkça hayır gibi bir dizin kullanarak oluşturabilirsiniz. değerlerin alıntılanmasına gerek yoktur. Varsayılan rownames alıntılanan 1: n vektörüdür
Jeffrey Evans
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.