I am trying to Calculate the percent of each grid square that is developed in 2011 and 2021 by a fishnet. after I call in the rasters and project to the proper crs I keep running into issues with extracting by fishnet. here are the steps
<code>fishnet <- st_make_grid(atl_msa,2500) %>%
st_join(.,atl_msa,predicate='intersects',left=FALSE) %>%
mutate(ID=row_number()) %>%
geom_sf(data=fishnet,color='grey50',fill='gray90',linewidth=0.1)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
<code>fishnet <- st_make_grid(atl_msa,2500) %>%
st_sf() %>%
st_join(.,atl_msa,predicate='intersects',left=FALSE) %>%
mutate(ID=row_number()) %>%
select(ID)
ggplot()+
geom_sf(data=fishnet,color='grey50',fill='gray90',linewidth=0.1)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
theme_void()
</code>
fishnet <- st_make_grid(atl_msa,2500) %>%
st_sf() %>%
st_join(.,atl_msa,predicate='intersects',left=FALSE) %>%
mutate(ID=row_number()) %>%
select(ID)
ggplot()+
geom_sf(data=fishnet,color='grey50',fill='gray90',linewidth=0.1)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
theme_void()
Reclassify the land cover rasters into six categories: ‘Water’,’Developed’,’Forest’,’Farm’,’Wetlands’,’OtherUndeveloped’
<code>land_cover_reclass_matrix = matrix(
lc2011_class <- terra::classify(lc2011,land_cover_reclass_matrix)
levels(lc2011_class) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2011_class_mask <- terra::mask(lc2011_class,atl_msa)
levels(lc2011_class_mask) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2021_class <- terra::classify(lc2021,land_cover_reclass_matrix)
levels(lc2021_class) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2021_class_mask <- terra::mask(lc2021_class,atl_msa)
levels(lc2021_class_mask) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
geom_spatraster(data=lc2011_class_mask,na.rm=TRUE)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
scale_fill_manual(values=c('lightblue','pink','lightgreen','lightyellow','blue','orange'),na.value = "transparent",name='Land Cover')+
ggtitle('Land Cover in 2011'),
geom_spatraster(data=lc2021_class_mask,na.rm=TRUE)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
scale_fill_manual(values=c('lightblue','pink','lightgreen','lightyellow','blue','orange'),na.value = "transparent",name='Land Cover')+
ggtitle('Land Cover in 2021')
<code>land_cover_reclass_matrix = matrix(
c(11,0,
21,1,
22,1,
23,1,
24,1,
41,2,
42,2,
43,2,
81,3,
82,3,
90,4,
95,4,
52,5,
71,5,
31,5),
ncol=2,byrow = TRUE)
lc2011_class <- terra::classify(lc2011,land_cover_reclass_matrix)
levels(lc2011_class) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2011_class_mask <- terra::mask(lc2011_class,atl_msa)
levels(lc2011_class_mask) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2021_class <- terra::classify(lc2021,land_cover_reclass_matrix)
levels(lc2021_class) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2021_class_mask <- terra::mask(lc2021_class,atl_msa)
levels(lc2021_class_mask) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
grid.arrange(ncol=2,
ggplot()+
geom_spatraster(data=lc2011_class_mask,na.rm=TRUE)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
scale_fill_manual(values=c('lightblue','pink','lightgreen','lightyellow','blue','orange'),na.value = "transparent",name='Land Cover')+
theme_void()+
ggtitle('Land Cover in 2011'),
ggplot()+
geom_spatraster(data=lc2021_class_mask,na.rm=TRUE)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
scale_fill_manual(values=c('lightblue','pink','lightgreen','lightyellow','blue','orange'),na.value = "transparent",name='Land Cover')+
theme_void()+
ggtitle('Land Cover in 2021')
)
</code>
land_cover_reclass_matrix = matrix(
c(11,0,
21,1,
22,1,
23,1,
24,1,
41,2,
42,2,
43,2,
81,3,
82,3,
90,4,
95,4,
52,5,
71,5,
31,5),
ncol=2,byrow = TRUE)
lc2011_class <- terra::classify(lc2011,land_cover_reclass_matrix)
levels(lc2011_class) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2011_class_mask <- terra::mask(lc2011_class,atl_msa)
levels(lc2011_class_mask) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2021_class <- terra::classify(lc2021,land_cover_reclass_matrix)
levels(lc2021_class) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
lc2021_class_mask <- terra::mask(lc2021_class,atl_msa)
levels(lc2021_class_mask) <- c('Water','Developed','Forest','Farm','Wetlands','OtherUndeveloped')
grid.arrange(ncol=2,
ggplot()+
geom_spatraster(data=lc2011_class_mask,na.rm=TRUE)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
scale_fill_manual(values=c('lightblue','pink','lightgreen','lightyellow','blue','orange'),na.value = "transparent",name='Land Cover')+
theme_void()+
ggtitle('Land Cover in 2011'),
ggplot()+
geom_spatraster(data=lc2021_class_mask,na.rm=TRUE)+
geom_sf(data=atl_msa,fill='transparent',color='black',linewidth=0.5)+
scale_fill_manual(values=c('lightblue','pink','lightgreen','lightyellow','blue','orange'),na.value = "transparent",name='Land Cover')+
theme_void()+
ggtitle('Land Cover in 2021')
)
then here is where I am having issues(see photo):
<code>lc2011_extract <- terra::extract(lc2011_class,fishnet,fun=table) %>%
mutate(pct_developed = Developed / (Developed + Water + Forest + Farm + Wetlands + OtherUndeveloped) * 100)
<code>lc2011_extract <- terra::extract(lc2011_class,fishnet,fun=table) %>%
mutate(pct_developed = Developed / (Developed + Water + Forest + Farm + Wetlands + OtherUndeveloped) * 100)
</code>
lc2011_extract <- terra::extract(lc2011_class,fishnet,fun=table) %>%
mutate(pct_developed = Developed / (Developed + Water + Forest + Farm + Wetlands + OtherUndeveloped) * 100)
This is the Error I keep getting
<code>Error in `mutate()`:
! Can't transform a data frame with `NA` or `""` names.
1. terra::extract(lc2011_class, fishnet, fun = table) %>% ...
3. dplyr:::mutate.data.frame(...)
<code>Error in `mutate()`:
! Can't transform a data frame with `NA` or `""` names.
Backtrace:
1. terra::extract(lc2011_class, fishnet, fun = table) %>% ...
3. dplyr:::mutate.data.frame(...)
</code>
Error in `mutate()`:
! Can't transform a data frame with `NA` or `""` names.
Backtrace:
1. terra::extract(lc2011_class, fishnet, fun = table) %>% ...
3. dplyr:::mutate.data.frame(...)