Halieutique¶

In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import gstlearn as gl
import gstlearn.plot as gp
import gstlearn.document as gdoc
import os
import geopandas as gpd
from shapely.geometry import Polygon

Le jeu de données du groupe de travail CIEM WGACEGG: densités acoustiques (NASC) d'anchois et de sardine par unité d'échantillonnage de 1 mille nautique de long, observées au printemps 2018 et 2021.

Description des colonnes :

  • survey : campagne
  • year : année
  • time : date/heure enregistrement donnée
  • x : longitude en ° décimal WGS84
  • y : latitude en ° décimal WGS84
  • NASC : densité acoustique en m2.MN-2
  • sp : espèce anchois = "ENGR-ENC"
  • sardine ="SARD-PIL"

Pour plus d'infos sur l'origine de ces données : Doray, M., Van Der Kooij, J., Boyra, G. (Eds.), 2021. ICES Survey Protocols - Manual for acoustic surveys coordinated under the ICES Working Group on Acoustic and Egg Surveys for Small Pelagic Fish (WGACEGG). https://doi.org/10.17895/ICES.PUB.7462.

Lecture du fichier de données

In [2]:
file_csv = gdoc.loadData("halieutic", "AC-SPRING-IBBB-NASC_ANE-PIL_2018-2021.csv")
rawDat = pd.read_csv(file_csv,sep=";")
rawDat.head()
Out[2]:
survey year time x y NASC sp
0 AC_SPRING_IBBB 2018 04/05/2018 19:20:00 -9.295565 40.381000 0.0 ENGR-ENC
1 AC_SPRING_IBBB 2018 04/05/2018 19:43:00 -9.229598 40.381582 0.0 ENGR-ENC
2 AC_SPRING_IBBB 2018 04/05/2018 19:58:00 -9.185515 40.382482 0.0 ENGR-ENC
3 AC_SPRING_IBBB 2018 05/05/2018 07:32:00 -9.036932 40.382898 0.0 ENGR-ENC
4 AC_SPRING_IBBB 2018 05/05/2018 07:39:00 -9.014982 40.382750 0.0 ENGR-ENC

Creation de la base de données

In [3]:
dbDat = gl.Db()
for field in ["year","x","y","NASC"] :
    dbDat[field] = rawDat[field]
In [4]:
dbDat.setLocators(["x","y"],gl.ELoc.X)
dbDat.setLocator("NASC",gl.ELoc.Z)

Conversion des coordonnées

In [5]:
crsFrom="EPSG:4326"
crsTo="EPSG:2154"
a = gpd.points_from_xy(dbDat["x"], dbDat["y"], crs=crsFrom)
a = a.to_crs(crsTo)
dbDat["x"] = a.x
dbDat["y"] = a.y

Lecture du Polygone

In [6]:
file_csv = gdoc.loadData("halieutic", "WGACEGGspringPolygon.csv")
csv = gl.CSVformat(True, 0, ";", ".")
poly = gl.Polygons.createFromCSV(file_csv, csv)

Conversion des coordonnées

In [7]:
crsFrom="EPSG:4326"
crsTo="EPSG:2154"
a = gpd.points_from_xy(poly.getX(0), poly.getY(0), crs=crsFrom)
a = a.to_crs(crsTo)
poly.setX(0,a.x)
poly.setY(0,a.y)

Lectures des traits de côte.

In [8]:
# Suppression des warnings
import warnings
warnings.filterwarnings("ignore", category=FutureWarning) 
warnings.filterwarnings("ignore", category=RuntimeWarning) 
# Frontières des pays du monde dans un geopandaframe
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) # Warning
# Voir https://github.com/geopandas/geopandas/issues/2751
# Alternative:
#import geodatasets as gda
#world = gpd.read_file(gda.get_path('naturalearth.land'))
# Focus sur le Portugal
minx=(-10,36)
miny=(-1,36)
maxx=(-1,49)
maxy=(-10,49)
polyGpd = Polygon([minx, miny, maxx, maxy])
world['geometry'] = world.geometry.intersection(polyGpd) # Warning

Conversion des coordonnées

In [9]:
crsTo="EPSG:2154"
world = world.to_crs(crsTo)

Affichage des traits de côtes où l'on ajoute les points de données et le polygon utilisant la même CRS.

In [10]:
ax = world.plot(figsize=[10,10])
ax = ax.gstpoint(dbDat,size=1)
ax = ax.polygon(poly)