Estou tentando interceptar dois SpatialPolygonsDataFrames e obter um SpatialPolygonsDataFrame como resultado. Infelizmente, usando a gIntersection
função from rgeos
(que funciona de maneira impressionante para interceptar os polígonos), não consigo recuperar os quadros de dados associados. Considere o seguinte exemplo:
> fracPoly <- gIntersection( toSingle, fromSingle )
> class(toSingle)
[1] "SpatialPolygonsDataFrame"
> class(fromSingle)
[1] "SpatialPolygonsDataFrame"
> class(fracPoly)
[1] "SpatialPolygons"
Eu posso escrever uma função de wrapper que lida com a transferência de data.frames
, mas será um pouco difícil acertar todas as verificações e antes de fazê-lo, esperava que alguém pudesse confirmar que não há melhor maneira ou me indicar outra função (ou opção). para gIntersection
) o que me permitiria manter o associado data.frames
.
Atualizar
Em uma reflexão mais aprofundada, isso pode ser um comportamento muito deliberado por gIntersection
. Afinal, dos dois SPDFs, cujo data.frame você transmite? Então, talvez eu precise escrever um wrapper que mescla os dois.
fonte
Respostas:
Para alguns projetos, eu tinha a mesma necessidade. Muito mais do que manter
data.frame
isso, tivemos que implementar um código adicional para gerenciar o tipo de geometria de saída e prosseguir com alguma limpeza (por exemplo, coleções de geometrias limpas), para ter um geoprocesso de interseção completo. Caso você ainda precise executar essa tarefa no R, tente o pacote RFigisGeo :fonte
O comportamento do gIntersection não é transmitir dados cruzados por design:
Para minha surpresa, o pacote raster tem uma função de interseção , que simplesmente intercepta e entrega os dados também.
As informações completas que obtive sobre isso: http://r-sig-geo.2731867.n2.nabble.com/Intended-usage-of-gIntersection-td7587120.html
fonte
Para aqueles (como eu) para quem as respostas acima não funcionaram, o link aqui explica que você pode fazer isso com a interseção de raster.
Como reter todos os dados de atributo ao recortar dois polígonos em R?
Eu usei isso para cortar um SpatialPointsDataFrame com um shapefile SpatialPolygons; ele cria uma versão cortada / cortada do SpatialPointsDataFrame, mantendo os dados originais.
fonte