Subconjunto de SpatialPolygonsDataFrame por ID em R?

13

Eu usei a gIntersectfunção do rgeospacote para determinar quais polígonos se cruzam em dois SpatialPolygonsDataFrames (spdfs). O resultado é uma matriz lógica com nomes de nomes que compreendem os IDs de polígonos do sfdf # 1 e os nomes de nomes dos IDs de polígonos do spdf # 2. Eu gostaria de usar essa matriz para o subconjunto das duas spdfs originais, omitindo esses polígonos que têm nenhuma sobreposição, antes de usar a função gIntersection. Posso facilmente converter a matriz lógica em dois vetores de IDs (um para cada spdf) que representam esses polígonos com pelo menos alguma sobreposição.

Minha pergunta é - posso usar um vetor de IDs de polígono para definir um spdf? Em caso afirmativo, ele subconecta corretamente os valores no @dataslot? Eu sei que geralmente posso agrupar spdfs usando esta sintaxe:

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

Isso não funcionará para IDs, pois eles estão enterrados muito mais profundamente na estrutura da lista spdf.

Alberto
fonte

Respostas:

11

Os IDs de matriz retornados do gIntersect devem corresponder aos nomes de usuário em cada objeto sp de origem. Você deve ser capaz de indexar apenas a posição de nomes de nomes para subconjunto dos dados.

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]
Jeffrey Evans
fonte
Eu só quero verificar - isso também funcionará diretamente no objeto spdf? (isto é, spdf[r, ])
Alberto
Sim, ele funciona em objetos sp e o índice se propaga através dos IDs que vinculam todos os objetos de slot, que correspondem aos nomes de nomes @data.
precisa
Talvez eu não esteja lendo corretamente, mas isso parece um pouco errado? Você deve extrair em uma seqüência r de nomes de linha, usando números inteiros irá extrair ordinally
MichaelChirico
@MichaelChirico por retornar uma posição de linha conhecida, isso está correto. Se você souber apenas o valor do (s) nome (s) da (s) linha (s), poderá criar o índice usando algo como what (nomes de nomes (x)% em% c (1,5)) e, não, a menos que uma cadeia de caracteres verdadeira seja atribuída a nomes de nomes que os valores não precisam ser citados. Os rownames padrão são um vector citado de 1: N
Jeffrey Evans