ohi logo
OHI Science | Citation policy

Summary

This pressure layer represents the spatial distribution of artisanal fishing pressure globally. A subset of fishing data provided by the Sea Around Us Project is used to estimate artisanal catch in tons per half degree cells around the world. Catch is standardized by net primary production in a similar fashion to the commercial fishing pressure layers.

Updates from previous assessment

The artisanal fisheries pressure layer has not been updated since the first global assessment in 2012. Previous methods are detailed in Halpern et al. (2008) where the layer was originally developed (page 5 of supplement).

In brief, the original method used small-scale fisheries data provided by the FAO for just 59 countries.

The Sea Around Us Project developed a multivariate regression model to isolate geographic, demographic, and socioeconomic variables that best predict the SAUP-validated artisanal catch rates from FAO (excluding values estimated by SAUP). The best and simplest model involved only two variables, length of coastline and unemployment rate. This model was used to predict artisanal catch values for countries without FAO-reported data. Finally, we distributed these national total catch values (CT) into 1 km2 cells.


Data Source

Reference: Pauly D. and Zeller D. (Editors), 2015. Sea Around Us Concepts, Design and Data (seaaroundus.org)

Downloaded: June 27, 2016 (sent by email from Arā€™ash Tavakolie)

Description: Catch per half degree cell (tons)

Native data resolution: 0.5 degree

Time range: 1950 - 2010

Format: Tabular


Methods

Setup

#set options for all chunks in code
knitr::opts_chunk$set(warning=FALSE, message=FALSE)

library(parallel)
library(foreach)
library(doParallel)
library(raster)
library(rasterVis)
library(RColorBrewer)

cols = rev(colorRampPalette(brewer.pal(11, 'Spectral'))(255)) # rainbow color scheme
mytheme=rasterTheme(region=cols)
source("~/github/ohiprep/src/R/common.R")

#ocean raster at 1km
  ocean = raster(file.path(dir_M, 'model/GL-NCEAS-Halpern2008/tmp/ocean.tif'))
  
#set mollweide projection CRS
  mollCRS=crs('+proj=moll +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs')
  
#paths
 dir_anx <- file.path(dir_M,'git-annex/globalprep/prs_fish/v2016')

Net Primary Productivity

The annual mean net primary productivity data was processed in npp.Rmd.

npp_files <- list.files(file.path(dir_anx,'VGPM_primary_productivity/int/annual_npp'),pattern = 'annual_mean_npp_2',full.names = T)

plot(raster(npp_files[13]), col=cols, main = 'Net Primary Production 2015', axes=F)

Standardize catch by NPP

Although our catch data goes back to 1950, we only have net primary productivity data back to 2003. Therefore we can only create artisanal fishing pressure layers for the years 2003 - 2010.

catch_files <- list.files('int/annual_artisanal_rasters',full.names=T)

registerDoParallel(3)

foreach (yr = c(2003:2010)) %dopar%{
  
  #1. get net primary production for that year
  npp <- npp_files[substr(npp_files,111,114)==yr]%>%
          raster()%>%
          projectRaster(raster(catch_files[1]))%>%
          resample(raster(catch_files[1]))
  
  #2. Get artisanal catch raster
  art <- catch_files[substr(catch_files,30,33) == yr]%>%
          raster()
  
  #3. Divide catch by npp and save to github
  overlay(art,npp,fun=function(x,y){x/y},filename = paste0('int/artisanal_npp/artisanal_npp_',yr,'.tif'),overwrite=T)  
  
}
catch_files <- list.files('int/annual_artisanal_rasters',full.names=T)
plot(projectRaster(ocean,raster(catch_files[1])), col='cornsilk2', axes=F, main='Catch (tons) standardized by NPP \n 2010', legend=F) 
plot(raster('int/artisanal_npp/artisanal_npp_2010.tif'),main='Catch (tons) standardized by NPP \n 2010',col=cols,axes=F,add=T)

Five year mean

We calculate the means over a rolling window of 5 years to account for interannual variability. The data is log transformed.

art_npp <- list.files('int/artisanal_npp',full.names=T)

registerDoParallel(4)

foreach (i = 2003:2006) %dopar%{
  
  yrs <- c(i:(i+4))
  
  out <- art_npp[which(substr(art_npp,33,36) %in% yrs)]%>%
            stack()%>%
            calc(fun=function(x){mean(x,na.rm=T)}, filename = paste0('int/mean_artisanal/mean_catch_',yrs[1],'_',yrs[5],'.tif'),overwrite=T)%>%
            calc(fun=function(x){log(x+1)})
  
  writeRaster(out,filename = paste0('int/mean_artisanal/mean_catch_log',yrs[1],'_',yrs[5],'.tif'),overwrite=T)
  
}

Reference Point

Look at all catch data standardized by NPP from 2003 - 2010 and use the 99.99th quantile as the reference point.

art_npp <- list.files('int/artisanal_npp',full.names=T)

#get data across all years
vals <- c()

for(i in 2003:2010){

  m <- art_npp[which(substr(art_npp,33,36) == i)]%>%
    raster()%>%
    getValues()

  vals <- c(vals,m)

}
min <- log(min(vals,na.rm=T)+1) #0
max <- log(max(vals,na.rm=T)+1) #11.66215

vals <- vals[!is.na(vals)]

ref <- log(quantile(vals,prob = 0.9999,na.rm=T)+1) #10.89199

The reference point is 10.8919858, the range of data is 4.361688810^{-11} to 11.6621537.

Rescale

mean_files <- list.files('int/mean_artisanal',full.names=T, pattern = 'log')

foreach (i = 2003:2006) %dopar%{
  
  yrs <- c(i:(i+4))
  
  out <- mean_files[which(substr(mean_files,34,37) == i)]%>%
            raster()%>%
            calc(fun=function(x){ifelse(x>ref,1,x/ref)})%>%
            projectRaster(crs = mollCRS,over=T)%>%
            resample(ocean,method='ngb',filename = paste0(file.path(dir_anx),'/out/artisanal/art_press_',yrs[1],'-',yrs[5],'.tif'),overwrite=T)
  
}

Results

#looking at the most recent layer

r <- raster(file.path(dir_anx,'out/artisanal/art_press_2006-2010.tif'))
plot(ocean, col='cornsilk2', axes=F, main='Artisanal Fishing Pressure Layer\n OHI 2016', legend=F) 
plot(r,col=cols,axes=F,box=F,add=T)

histogram(r)

Extract the data by OHI region

setwd('globalprep/prs_fish/v2016')

source("../../../src/R/common.R")

#paths
 dir_git <- file.path(dir_M,'git-annex/globalprep/prs_fish/v2016/out/artisanal')


library(raster)
library(rgdal)
library(dplyr)

# raster/zonal data

zones <- raster(file.path(dir_M, "git-annex/globalprep/spatial/d2014/data/rgn_mol_raster_1km/sp_mol_raster_1km.tif"))  # raster data
rgn_data <- read.csv(file.path(dir_M, "git-annex/globalprep/spatial/d2014/data/rgn_mol_raster_1km/regionData.csv"))    # data for sp_id's used in raster


### Low bycatch data first
# get raster data:
rasts <- list.files(dir_git)

pressure_stack <- stack()
for(raster in rasts){ # raster = "art_press_2003-2007.tif"
  tmp <- raster(file.path(dir_git, raster))
  pressure_stack <- stack(pressure_stack, tmp)
}

# extract data for each region:
regions_stats <- zonal(pressure_stack,  zones, fun="mean", na.rm=TRUE, progress="text")
regions_stats2 <- data.frame(regions_stats)
setdiff(regions_stats2$zone, rgn_data$ant_id) # antarctica regions are in there, makes sense....no land
setdiff(rgn_data$ant_id, regions_stats2$zone) # 213 is in there, that makes sense (Antarctica)

data <- merge(rgn_data, regions_stats, all.y=TRUE, by.x="rgn_id", by.y="zone") %>%
  gather("year", "pressure_score", starts_with("art")) 

lb_data <- data %>%
  mutate(year = substring(year, 16, 19)) %>%
  mutate(year = as.numeric(year)) %>%
  mutate(year = year + 6) %>%
  filter(ant_typ == "eez") %>%
  dplyr::select(rgn_id, rgn_nam, year, pressure_score)

write.csv(lb_data, "int/lb_artisanal.csv", row.names=FALSE)

## save toolbox data for different years/regions

# function to extract data more easily
saveData <- function(newYear){ # newYear= 2012
  
  criteria_year <- ~year == newYear

    tmp  <- lb_data %>%
      filter_(criteria_year) %>%
      dplyr::select(rgn_id, pressure_score) %>%
      arrange(rgn_id)
  
  write.csv(tmp, sprintf('output/artisanal_fish_lb_%s.csv', newYear), row.names=FALSE)
}


### extract data 
for(newYear in (max(lb_data$year) - 3):(max(lb_data$year))){
  saveData(newYear)
}


### try visualizing the data using googleVis plot
library(googleVis)
plotData <- lb_data %>%
  dplyr::select(rgn_nam, year, pressure_score)

Motion=gvisMotionChart(plotData, 
                       idvar="rgn_nam", 
                       timevar="year")
plot(Motion)

print(Motion, file='art_lb.html')

Citation Information

Fishing data
Pauly D. and Zeller D. (Editors), 2015. Sea Around Us Concepts, Design and Data (seaaroundus.org)

Net Primary Productivity data
Behrenfeld, M.J. and Falkowski, P.G., 1997. Photosynthetic rates derived from satelliteā€based chlorophyll concentration. Limnology and oceanography, 42(1), pp.1-20.

Downloaded from http://www.science.oregonstate.edu/ocean.productivity/standard.product.php