Open VincentAntoine opened 8 months ago
Les données de préavis comportent des informations sur les espèces à bord ainsi que sur les espèces à débarquer, le pêcheur ayant la possibilité de ne pas débarquer la totalité de sa pêche.
Intuitivement, l'idée que l'on peut se faire de cette possibilité est que s'il y a 150 kg de XXX à bord et 120 kg de XXX à débarquer, alors 30 kg de XXX sont destinés à rester à bord.
En pratique, plusieurs difficultés apparaissent :
Requête faite sur Monitorfish pour cette analyse :
WITH operation_numbers AS (
SELECT DISTINCT operation_number, software
FROM logbook_reports
WHERE
operation_datetime_utc >= CURRENT_TIMESTAMP AT TIME ZONE 'UTC' - INTERVAL '1 week'
AND operation_datetime_utc <= CURRENT_TIMESTAMP AT TIME ZONE 'UTC'
AND log_type = 'PNO'
AND flag_state = 'FRA'
AND transmission_format = 'ERS'
),
t AS (
SELECT
operation_numbers.operation_number,
COALESCE(software, 'N/A') software,
(xpath(
'//ers:RAS/attribute::FA',
catch,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
))[1]::VARCHAR || '.' || (xpath(
'//ers:RAS/attribute::SA',
catch,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
))[1]::VARCHAR || '.' || (xpath(
'//ers:RAS/attribute::ID',
catch,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
))[1]::VARCHAR AS fao_area,
(xpath(
'//ers:SPE/attribute::SN',
catch,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
))[1]::VARCHAR AS species,
(xpath(
'//ers:SPE/attribute::WT',
catch,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
))[1]::varchar::DOUBLE PRECISION AS weight_onboard,
(xpath(
'//ers:PRO/attribute::CF',
catch,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
))[1]::varchar::DOUBLE PRECISION AS conversion_factor,
(xpath(
'//ers:SPE/attribute::WL',
catch,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
))[1]::varchar::DOUBLE PRECISION AS weight_to_land
FROM logbook_raw_messages
JOIN operation_numbers ON operation_numbers.operation_number = logbook_raw_messages.operation_number
JOIN LATERAL unnest(xpath(
'//ers:SPE',
xml_message::xml,
ARRAY[ARRAY['ers', 'http://ec.europa.eu/fisheries/schema/ers/v3']]
)) catch ON true
)
SELECT
conversion_factor IS NOT NULL AS has_conversion_factor,
conversion_factor = 1 AS conversion_factor_is_one,
abs(weight_onboard - weight_to_land) < 0.01 * greatest(weight_onboard, weight_to_land) AS onboard_equals_to_land,
abs(weight_onboard - weight_to_land * conversion_factor) < 0.01 * greatest(weight_onboard, weight_to_land * conversion_factor) AS onboard_equals_to_land_times_cf,
COUNT(DISTINCT operation_number) AS number_of_pnos,
COUNT(*) AS number_of_catches,
SUM(weight_onboard) AS weight_onboard,
SUM(weight_to_land) AS weight_to_land
FROM t
GROUP BY
conversion_factor IS NOT NULL,
conversion_factor = 1,
abs(weight_onboard - weight_to_land) < 0.01 * greatest(weight_onboard, weight_to_land) ,
abs(weight_onboard - weight_to_land * conversion_factor) < 0.01 * greatest(weight_onboard, weight_to_land * conversion_factor)
ORDER BY 5 DESC
Résultats : 4000 t de captures dans les préavis des navires français sur une semaine dont :
Conclusion : il n'est pas possible en l'état d'avoir une info fiable sur les espèces à débarquer vs les espèces à bord. On garde ce ticket en archive pour trace de l'analyse faite.
Suite à une demande SIP, investigation faite des données d'espèces à bord VS espèces débarquées dans les données de préavis. A ce jour pas de demande claire pour exploiter ces données dans l'app, mais ce ticket consigne les recherches faites sur le sujet pour une éventuelle reprises ultérieure.