Halieutique¶
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
file_csv = gdoc.loadData("halieutic", "AC-SPRING-IBBB-NASC_ANE-PIL_2018-2021.csv")
rawDat = pd.read_csv(file_csv,sep=";")
rawDat.head()
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
dbDat = gl.Db()
for field in ["year","x","y","NASC"] :
dbDat[field] = rawDat[field]
dbDat.setLocators(["x","y"],gl.ELoc.X)
dbDat.setLocator("NASC",gl.ELoc.Z)
Conversion des coordonnées
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
file_csv = gdoc.loadData("halieutic", "WGACEGGspringPolygon.csv")
csv = gl.CSVformat(True, 0, ";", ".")
poly = gl.Polygons.createFromCSV(file_csv, csv)
Conversion des coordonnées
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.
# 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
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.
ax = world.plot(figsize=[10,10])
ax = ax.gstpoint(dbDat,size=1)
ax = ax.polygon(poly)