coast<-readShapeSpatial("coastline.shp")
landc<-readShapeSpatial("landcover.shp")
ro<-readShapeSpatial("roads.shp")
bc<-gBuffer(ro,width=100)
landc$ratings=1
landc$ratings[landc$LANDUSE_ID==4]=0
Acima, eu pego qualquer categoria que tenha 4 e, na nova coluna, coloque-a como 0.
Nesse ponto, quero a coluna também nomeada ratings
para bc
, onde será necessário 0 se estiver dentro do buffer e 1 se estiver fora. O problema é que o bc
é SpatialPolygons
e não contém a tabela de atributos.
Obviamente, para adicionar uma coluna a um SpatialPolygon
objeto, você deve convertê-la em a SpatialPolygonsDataFrame
, mas não sei como.
Eu tentei isso:
buf_df<-as.data.frame(bc)
s_po<-SpatialPolygonsDataFrame(bc,buf_df)
s_po$ratings=0
mas este erro aparece:
row.names of data and Polygons IDs do not match
r
cartography
gsa
fonte
fonte
Respostas:
O que os objetos "coast", "ro" e "bc" têm a ver com o seu problema? O problema pode estar no fato de você estar usando "readShapeSpatial". Você já tentou o readOGR no rgdal? Se você estiver lendo um shapefile de polígono, o readOGR resultará em um objeto SpatialPolygonsDataFrame.
Na verdade, se você possui um objeto SpatialPolygons e deseja coagir em SpatialPolygonsDataFrame, o dataframe especificado precisará que seus nomes de usuário correspondam aos IDs do polígono no slot de polígonos. Aqui está um exemplo rápido.
fonte
Experimentar:
match.ID
evita o requisito de nomes de nomes para ID de polígonos de correspondênciafonte
É bem simples:
Quando o erro: "row.names de dados e IDs de polígonos não coincidem" surge, esta solução parece útil: renomeie os IDs do quadro de dados para corresponder aos IDs dos polígonos:
fonte
SpatialPolygonsDataFrame
é criado.Acho que a seguinte solução geralmente funciona.
Primeiro, crie um quadro de dados vazio com o ID como campo:
Em seguida, obtenha os IDs do polígono espacial
bc
:Em seguida, use df como o segundo argumento para a função de conversão espacial do quadro de dados:
Como
df
espatial_df
são objetos de quadro de dados, as colunas podem ser facilmente adicionadasfonte