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
上面,我选择任何具有4的类别,并在新列中将其设置为0。
在这一点上,我想命名列ratings
以及为bc
,它会采取0,如果它是缓冲区内,1,如果它在外面。问题是is bc
是SpatialPolygons
并且它不包含属性表。
显然要向SpatialPolygon
对象添加列,您必须将其转换为SpatialPolygonsDataFrame
,但我不知道如何。
我尝试了这个:
buf_df<-as.data.frame(bc)
s_po<-SpatialPolygonsDataFrame(bc,buf_df)
s_po$ratings=0
但是会弹出此错误:
row.names of data and Polygons IDs do not match
1
好吧,如果您阅读了gBuffer的帮助,您会知道,如果byid = TRUE,则结果是SpatialPolygonsDataFrame。
—
杰弗里·埃文斯