Skip to contents

This vignette showcases nzsf applied to New Zealand rock lobster.

library(nzsf)
library(ggspatial)
library(lwgeom)
library(ggnewscale)
library(stars)
library(cowplot)
library(patchwork)

theme_set(theme_bw() + theme(axis.title = element_blank()))

col_land <- "#39B600"
col_coast <- "#39B600"
col_stat <- "#00ABFD"
col_qma <- col_box <- "#F8766D"
sf_qma <- get_qma("CRA")

sf_coast <- get_coast(resolution = "medium") %>% 
  st_combine() %>% 
  st_buffer(dist = 4500) %>%
  st_make_valid()

lab <- st_difference(sf_qma, sf_coast) %>% st_centroid()
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries
lab$geometry[1] <- st_point(c(-270000, 772461))
lab$geometry[6] <- st_point(c(150000, -220000))

sf_stat <- get_statistical_areas("CRA") %>% filter(QMA %in% "CRA1")
bbox <- sf_stat %>% st_buffer(dist = 1e5) %>% st_bbox()
box <- st_as_sfc(bbox)

ggplot() +
  # geom_gebco(proj = proj_nzsf(), downsample = 0) +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_coast(resolution = "medium", fill = col_land, colour = col_coast) +
  geom_sf(data = box, colour = NA, fill = col_box, alpha = 0.5) +
  geom_sf_text(data = lab, aes(label = QMA), size = 2.5, colour = col_qma) +
  annotation_north_arrow(location = "tl", which_north = "true", 
                         style = north_arrow_nautical) +
  plot_clip(x = sf_qma)

sf_stat <- get_statistical_areas("CRA")
sf_diff <- st_difference(sf_stat, sf_coast)
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries

lab1 <- sf_diff %>% st_centroid()
#> Warning: st_centroid assumes attributes are constant over geometries
lab2 <- sf_diff %>% st_point_on_surface()
#> Warning: st_point_on_surface assumes attributes are constant over geometries

bb <- sf_qma %>% st_bbox()
# bb[1] <- -750000 # xmin
# bb[2] <- -990000 # ymin
# bb[3] <- 800000 # xmax
# bb[4] <- 1000000 # ymax

p <- ggplot() +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_coast(resolution = "medium", fill = col_land, colour = col_coast) +
  geom_sf_text(data = lab, aes(label = QMA), colour = col_qma) +
  annotation_north_arrow(location = "tl", which_north = "true", 
                         style = north_arrow_nautical) +
  plot_clip(x = bb, expand = TRUE)

ggsave(filename = "CRA_QMA_stat.png", plot = p, width = 6, height = 8.5)

p

bathy <- cbind(coordinates(gebco_NZ), as.data.frame(gebco_NZ)) %>%
  mutate(z = ifelse(z > 10, NA, z)) %>%
  filter(x > -1.4e6, x < 1.4e6, y > -2e6, y < 2e6)

ggplot() +
  # geom_gebco(proj = proj_nzsf(), downsample = 0) +
  geom_tile(data = bathy, aes(x = x, y = y, fill = z)) +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(fill = "forestgreen", colour = "forestgreen") +
  plot_clip(get_statistical_areas(area = "EEZ")) +
  theme(legend.position = "none")

sf_diff <- st_difference(sf_stat, sf_coast)
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries

lab1 <- sf_diff %>% st_centroid()
#> Warning: st_centroid assumes attributes are constant over geometries
lab2 <- sf_diff %>% st_point_on_surface()
#> Warning: st_point_on_surface assumes attributes are constant over geometries

ggplot() +
  geom_sf(data = sf_diff) +
  geom_sf(data = lab1, colour = "red") +
  geom_sf(data = lab2, colour = "blue")

CRA 1

p1 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA1", colour = col_stat) +
  plot_clip(x = bbox) +
  labs(title = "CRA 1") +
  annotation_scale(location = "bl", unit_category = "metric")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi1 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast) +
  geom_sf(data = box, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p1) +
  draw_plot(pi1, x = 0.73, y = 0.63, width = 0.3, height = 0.3)

ggsave(filename = "CRA1.png", plot = p, width = 6, height = 6)

p

CRA 2

stat2 <- get_statistical_areas("CRA") %>% filter(QMA %in% "CRA2")

box2 <- stat2 %>%
  st_buffer(dist = 4e4) %>%
  st_bbox() %>%
  st_as_sfc()

p2 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA2", colour = col_stat) +
  plot_clip(x = box2, expand = FALSE) +
  annotation_scale(location = "br", unit_category = "metric") +
  labs(title = "CRA 2")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi2 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box2, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p2) +
  draw_plot(pi2, x = 0.73, y = 0.63, width = 0.3, height = 0.3)

ggsave(filename = "CRA2.png", plot = p, width = 7, height = 6)

p

pts <- st_sample(stat2, size = 1000) %>% 
  st_sf() %>% 
  mutate(z = rnorm(1:n()))

r0 <- get_standard_grid(cell_size = 5, bounding_box = st_bbox(stat2), 
                        return_raster = TRUE)
#> Warning in get_standard_grid_origin(cell_size = cell_size, bounding_box =
#> bounding_box, : The chosen grid size does not conform to the standard grid
#> specification, consider setting cell_size to one of: 0.25, 0.5, 1, 2, 4, 8, 16,
#> 32, 64, 128, 256, 512, 1024.

r <- rasterize(x = pts, y = r0, field = "z", fun = mean)
# r[] <- ifelse(r[] < 0, NA, r[])
rstar <- st_as_stars(r)

ggplot() +
  # geom_sf(data = pts, aes(colour = z)) +
  geom_stars(data = rstar) +
  scale_fill_viridis_c(option = "C", na.value = NA) +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  plot_clip(x = box2, expand = FALSE) +
  annotation_scale(location = "tr", unit_category = "metric") +
  labs(fill = "Mean")
#> Warning: Removed 3792 rows containing missing values or values outside the scale range
#> (`geom_raster()`).

CRA 3

stat3 <- get_statistical_areas("CRA") %>% filter(QMA %in% "CRA3")

box3 <- stat3 %>%
  st_buffer(dist = 4e4) %>%
  st_bbox() %>%
  st_as_sfc()

p2 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA3", colour = col_stat) +
  plot_clip(x = box3, expand = FALSE) +
  annotation_scale(location = "tl", unit_category = "metric") +
  labs(title = "CRA 3")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi2 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box3, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p2) +
  draw_plot(pi2, x = 0.68, y = 0.04, width = 0.3, height = 0.3)

ggsave(filename = "CRA3.png", plot = p, width = 5, height = 7)

p

CRA 4

stat4 <- get_statistical_areas("CRA") %>% filter(QMA %in% "CRA4")

box4 <- stat4 %>%
  st_buffer(dist = 4e4) %>%
  st_bbox() %>%
  st_as_sfc()

p2 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA4", colour = col_stat) +
  plot_clip(x = box4, expand = FALSE) +
  annotation_scale(location = "tr", unit_category = "metric") +
  labs(title = "CRA 4")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi2 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box4, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p2) +
  draw_plot(pi2, x = 0.72, y = 0.035, width = 0.3, height = 0.3)

ggsave(filename = "CRA4.png", plot = p, width = 6, height = 7)

p

CRA 5

stat5 <- get_statistical_areas("CRA") %>% filter(QMA %in% "CRA5")

box5 <- stat5 %>%
  st_buffer(dist = 4e4) %>%
  st_bbox() %>%
  st_as_sfc()

p2 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA5", colour = col_stat) +
  plot_clip(x = box5, expand = FALSE) +
  annotation_scale(location = "tl", unit_category = "metric") +
  labs(title = "CRA 5")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi2 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box5, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p2) +
  draw_plot(pi2, x = 0.68, y = 0.035, width = 0.3, height = 0.3)

ggsave(filename = "CRA5.png", plot = p, width = 4.6, height = 7)

p

CRA 6

stat6 <- get_statistical_areas("CRA") %>% filter(QMA %in% "CRA6")

box6 <- stat6 %>%
  st_buffer(dist = 4e4) %>%
  st_bbox() %>%
  st_as_sfc()

p2 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "1250k", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA6", colour = col_stat) +
  plot_clip(x = box6, expand = FALSE) +
  annotation_scale(location = "tl", unit_category = "metric") +
  labs(title = "CRA 6")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi2 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box6, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p2) +
  draw_plot(pi2, x = 0.72, y = 0.63, width = 0.3, height = 0.3)

ggsave(filename = "CRA6.png", plot = p, width = 4.65, height = 5)

p

CRA 7

stat7 <- get_statistical_areas("CRA") %>% filter(QMA %in% "CRA7")

box7 <- stat7 %>% st_buffer(dist = 1e4) %>% st_bbox()
box7[2] <- -790000
box7 <- box7 %>% st_as_sfc()

p7 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA7", colour = col_stat) +
  plot_clip(x = box7, expand = FALSE) +
  annotation_scale(location = "tl", unit_category = "metric") +
  labs(title = "CRA 7")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi7 <- ggplot() +
  plot_qma(qma = "CRA", colour = col_qma, fill = "white", size = 0.3) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box7, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p7) +
  draw_plot(pi7, x = 0.72, y = 0.05, width = 0.3, height = 0.3)

ggsave(filename = "CRA7.png", plot = p, width = 6, height = 7)

p

CRA 8

stat8 <- get_statistical_areas(area = "CRA") %>% 
  filter(QMA %in% "CRA8" | area %in% 929)

box8 <- stat8 %>%
  st_buffer(dist = 1e4) %>%
  st_bbox() %>%
  st_as_sfc()

p8 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = "CRA8", colour = col_stat) +
  plot_clip(x = box8, expand = FALSE) +
  annotation_scale(location = "br", unit_category = "metric") +
  labs(title = "CRA 8")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi8 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma, size = 0.3) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box8, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p8) +
  draw_plot(pi8, x = 0.12, y = 0.65, width = 0.3, height = 0.3)

ggsave(filename = "CRA8.png", plot = p, width = 4, height = 7)

p

gebco8 <- crop(gebco_NZ, get_qma(qma = "CRA") %>% 
                 filter(QMA == "CRA8") %>% st_bbox())

bathy8 <- cbind(coordinates(gebco8), as.data.frame(gebco8)) %>%
  mutate(z = ifelse(z < -4500 | z > 500, NA, z))

p <- ggplot() +
  geom_tile(data = bathy8, aes(x = x, y = y, fill = z)) +
  scale_fill_viridis_c(option = "E") +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  plot_clip(x = box8, expand = FALSE) +
  annotation_scale(location = "br", unit_category = "metric") +
  labs(title = "CRA 8", fill = "Depth (m)")

p

p <- ggplot() +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat)

s1 <- p + 
  plot_coast(resolution = "small", fill = col_land, colour = col_coast) +
  labs(title = "resolution = small") + 
  plot_clip(x = box8, expand = FALSE)
s2 <- p + 
  plot_coast(resolution = "medium", fill = col_land, colour = col_coast) +
  labs(title = "resolution = medium") + 
  plot_clip(x = box8, expand = FALSE)
s3 <- p + 
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  labs(title = "resolution = large") + 
  plot_clip(x = box8, expand = FALSE)
s4 <- p + 
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast) +
  labs(title = "resolution = 1500k") + 
  plot_clip(x = box8, expand = FALSE)
s5 <- p + 
  plot_coast(resolution = "1250k", fill = col_land, colour = col_coast) +
  labs(title = "resolution = 1250k") + 
  plot_clip(x = box8, expand = FALSE)
s6 <- p + 
  plot_coast(resolution = "150k", fill = col_land, colour = col_coast) +
  labs(title = "resolution = 150k") + 
  plot_clip(x = box8, expand = FALSE)

s1 + s2 + s3 + s4 + s5 + s6

Combinations

stat78 <- get_statistical_areas(area = "CRA") %>% 
  filter(QMA %in% c("CRA7", "CRA8") | area %in% 929)

box78 <- stat78 %>%
  st_buffer(dist = 1e4) %>%
  st_bbox() %>%
  st_as_sfc()

p78 <- ggplot() +
  plot_qma(qma = "CRA", fill = NA, colour = col_qma) +
  plot_statistical_areas(area = "CRA", fill = NA, colour = col_stat) +
  plot_coast(resolution = "large", fill = col_land, colour = col_coast) +
  geom_cra(feature = "label", qma = c("CRA7", "CRA8"), colour = col_stat) +
  plot_clip(x = box78, expand = FALSE) +
  annotation_scale(location = "br", unit_category = "metric") +
  labs(title = "CRA 7 & 8")
#> Warning: attribute variables are assumed to be spatially constant throughout
#> all geometries
#> Warning: st_centroid assumes attributes are constant over geometries

pi78 <- ggplot() +
  plot_qma(qma = "CRA", fill = "white", colour = col_qma, size = 0.3) +
  plot_coast(resolution = "1500k", fill = col_land, colour = col_coast, 
             size = 0.05) +
  geom_sf(data = box78, colour = NA, fill = col_box, alpha = 0.5) +
  plot_clip(x = "NZ") +
  theme_void()

p <- ggdraw() + 
  draw_plot(p78) +
  draw_plot(pi8, x = 0.13, y = 0.68, width = 0.27, height = 0.27)

ggsave(filename = "CRA7_CRA8.png", plot = p, width = 5, height = 7)

p