Eu estou querendo saber como unir polígonos espaciais usando o código R?
Estou trabalhando com dados do censo em que determinadas áreas mudam ao longo do tempo e desejo unir os polígonos e os dados correspondentes e simplesmente informar sobre as áreas unidas. Estou mantendo uma lista de polígonos que têm alterações de censo a censo e que pretendo mesclar. Gostaria de usar esta lista de nomes de áreas como uma lista de pesquisa para aplicar aos dados do censo de diferentes anos.
Eu estou querendo saber qual função R usar para mesclar polígonos selecionados e respectivos dados. Eu pesquisei no Google, mas simplesmente fiquei confuso com os resultados.
polygon
r
spatial-statistics
attribute-joins
census
Geoconfundido
fonte
fonte
R
'smerge
função.Respostas:
A solução a seguir é baseada em uma postagem de Roger Bivand no R-sig-Geo . Tomei seu exemplo substituindo o shapefile alemão por alguns dados do censo do Oregon que você pode baixar aqui (pegue todos os componentes do shapefile em 'municípios do Oregon e dados do censo').
Vamos começar carregando os pacotes necessários e importando o shapefile para o R.
Em seguida, você precisa de alguma variável de agrupamento para agregar os dados. No nosso exemplo, o agrupamento é simplesmente baseado nas coordenadas do condado. Veja a imagem abaixo: bordas pretas indicam os polígonos originais, enquanto bordas vermelhas representam polígonos agregados por
oregon.id
.Por enquanto, tudo bem. No entanto, atributos de dados relacionados às sub-regiões do shapefile original (por exemplo, densidade populacional, área etc.) são perdidos durante a execução
unionSpatialPolygons
. Acho que você também gostaria de agregar seus dados do censo associados ao shapefile, por isso precisará de uma etapa intermediária.Primeiro você precisa converter seus polígonos em um quadro de dados para realizar a agregação. Agora vamos pegar as colunas de atributo de dados de seis a oito ("AREA", "POP1990", "POP1997") e agregá-las de acordo com os IDs acima, aplicando a função
sum
.Por fim, reconverta seu quadro de dados novamente em um arquivo
SpatialPolygonsDataFrame
shapefile previamente unificadooregon.union
e você obtém polígonos generalizados e seus dados de censo derivados da etapa de agregação de resumo acima.fonte
Aqui está uma solução usando o pacote sf:
fonte
summarise()
com o uso de derivativos com odo_union
argumento, como eu fiz algo parecidosummarise_if(shapefile, predic.function, sum, na.rm = TRUE, do_union = TRUE)
, que acabou somando um VERDADEIRO em cada célula (ou seja, +1 para todas as operações). Precisa investigar mais para descobrir se isso deve ser relatado (pelo menos para um aviso extra) ...?