mex_vms

Vessel Tracking Data from Mexico’s Vessel Monitoring System (VMS)

About

The raw data come from Datos abiertos. These data are collected and curated by Mexico’s SISMEP (Sistema de Monitoreo Satelital de Embarcaciones Pesqueras). They reports the identity, coordinates, and timestamp of Mexican fishing vessels that comply with Mexico’s fisheries regulation on the matter. Simply put, vessels larger than 10.5m in length overall, with an on-board engine > 80hp, and with a roof must carry a transponder.

The data available require some wrangling to get them into a usable format. This repository attempts to do that. It then makes the data available for others to use.

Clean data vailability, with two different levels of processing

Monthly .csv files are available in the data/clean/ folder here and in a Google Cloud Bucket at at: gs://mex_vms/MEX_VMS/*. Files follow a standard file naming pattern of MEX_VMS_yyyy_mm.csv, where yyyy indicate
the year and mm the month.

On Google BigQuery at mex-fisheries.mex_vms.mex_vms_latest for the same data as in the Google Cloud Bucket, some with level of processing with added features (segmentation, spatial covariates) at mex-fisheries.mex_vms.mex_vms_latest. Both are partitioned by year.

Note that BigQuery data use a standard versioning system every time the tables undergo a major change, like fixing bugs, adding data, or modifying the underlying cleaning code. Past versions include:

Available columns are:

Accessing the data via R

You should be able to access the entire date set using BigQuery (SQL) or R. The following code snippet shows how you might connect to the database:

# Load packages ----------------------------------------------------------------
pacman::p_load(
  bigrquery,
  DBI,
  tidyverse
)

bq_auth("juancarlos.villader@gmail.com") # You'll need to authenticate using your own email

# Establish a connection -------------------------------------------------------
con <- dbConnect(bigquery(),
                 project = "mex-fisheries", # This is the name of the project, leave it as-is
                 dataset = "mex_vms",       # This is the name of the dataset, leave it as-is
                 use_legacy_sql = FALSE, 
                 allowLargeResults = TRUE)
  
mex_vms <- tbl(con, "mex_vms_processed_latest") # This object now contains a tbl that points at mex_vms_processed_v_20250319

# That's it, you can now use dplyr verbs to work with the data.
# For example, get latitude, longitude, and vessel id for the first 1000 rows in the data
mex_vms |> 
    select(vessel_rnpa, lat, lon) |> 
    head(1000) |> 
    collect()

Known issues

Raw data issues

Clean data issues

Other resources

Regulation governing the use of VMS on boats: Norma Oficial Mexicana NOM-062-PESC-2007, Para la utilización del sistema de localización y monitoreo satelital de embarcaciones pesqueras, SECRETARIA DE AGRICULTURA, GANADERIA, DESARROLLO RURAL, PESCA Y ALIMENTACION, Estados Unidos Mexicanos; DOF, 24 de abril 2008, [citado el 21-04-2021]; Disponible en versión HTML en internet: http://sidof.segob.gob.mx/notas/5033406