Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DATA] duplicated segments same start or end for the same excursion fct_segments #397

Open
rv2931 opened this issue Dec 20, 2024 · 8 comments

Comments

@rv2931
Copy link
Collaborator

rv2931 commented Dec 20, 2024

Je voulais faire quelques tests de traitement de trajectoire, notamment en créant des listes chaînées/calcul vectoriel de segments pour les excursions et je me suis rendu compte qu'il existe des segments dans la base qui sont dupliqués:

  • Pour une même excursion il existe plusieurs segments avec le même timestamp_start ou le même timestamp_end. On trouve environ 150 cas pour timestamp_start et pour timestamp_end qui sont sûrement liés aux mêmes excursions mais on en trouve pour des excursions récentes (début décembre)

je sais qu'il y avait des soucis dans les données récupérées de spire avec des positions figées sur plusieurs positions mais je n'avais pas noté qu'il pouvait y avoir
ça me fait dire qu'on pourrait commencer à penser un mécanisme de suivi de qualité des données dans un traitement ETL séparé dont celui-ci serait le premier indicateur ? à compléter avec d'autres (cumule de coupure API, ...)

Pour ce cas-ci, après éventuellement avoir identifié les différents et la potentielle cause, on peut tenter de faire un nettoyage et voir si les problème se reproduit, non ? ça permettrait d'être plus serein lorsqu'on relancera l'ETL sur tout l'historique ?

Les requêtes utilisées:

select fs2.excursion_id , fs2.timestamp_start, COUNT(*)
from fct_segment fs2
group by fs2.excursion_id , fs2.timestamp_start
having count(*) > 1
order by fs2.timestamp_start desc, fs2.excursion_id desc
select fs2.excursion_id , fs2.timestamp_end, COUNT(*)
from fct_segment fs2
group by fs2.excursion_id , fs2.timestamp_end
having count(*) > 1
order by fs2.timestamp_end desc, fs2.excursion_id desc

Fichiers CSV:
bloom_db__select_fs2_excursion_id_fs2_timestamp_end_COUNT_from_fct_segmen_202412200937.csv
bloom_db__select_fs2_excursion_id_fs2_timestamp_start_COUNT_from_fct_segm_202412200929.csv

@marthevienne
Copy link
Collaborator

Hello @rv2931, je mets ma main à coupé que c'est à cause du spoofing. On a un navire qui émet sa position au même timestamp et un autre qui émet sa position par le MMSI avec un timestamp plus éloigné dans le temps. On a donc des segments avec un timestamp qui se répète parce que :

  • les segments négatifs sont toujours pris en compte
  • les positions multiples par MMSI pour une même timestamp_spire ne sont pas filtrées

@marthevienne
Copy link
Collaborator

En plus, quand on traite par batch les vessel_positions, on ne garde pas l'ordre dans lequel arrive les positions : on les trie par ordre de timestamp_position.

@rv2931
Copy link
Collaborator Author

rv2931 commented Dec 20, 2024

Ça me paraîtrait bizarre que pour un spoofing on arrive à avoir des timestamps identiques par contre qu'on est trajectoires bizarre avec des vitesse incohérentes entre deux positions qui font le tour de la terre sur deux timestamp rapproché c'est fort probable.
D'ailleurs je le disais que les vitesses infinies que j'avais détecté y a pas longtemps pourraient tres bien venir d'un spoofing. Mais là comme ça je dirais que le spoofing donnerait pas ce genre de duplicata mais je le trompe peut-être j'ai pas été dans le détail

@rv2931
Copy link
Collaborator Author

rv2931 commented Dec 20, 2024

En fait je me disais que faire des listes chaînées entre les segments permettrait de s'assurer de l'intégrité des trajectoires et ça n'a pas manqué, ça m'a permis de détecter ces soucis. Après ça l'a l'air d'être dans pas mal de cas des vrais duplicas (même position, même timestamp) mais sûrement pas pour tous reste a voir d'où ça peut venir, spoofing ou pas. Mais mettre en place une liste de chaîne simplifiera les choses je pense

@marthevienne
Copy link
Collaborator

marthevienne commented Dec 20, 2024

Les duplicats de positions les uns à la suite des autres sont filtrés. Ça veut dire qu'il y a quelque chose qui interrompt cette suite de duplicats.

@marthevienne
Copy link
Collaborator

Les vitesses dont tu parles sont fournies par les navires il me semble, elles ne sont pas calculées par Spire

@marthevienne
Copy link
Collaborator

Je t'assure que j'ai vu ce comportement pour du spoofing. Je vais regarder les données que t'as sorti

@rv2931
Copy link
Collaborator Author

rv2931 commented Dec 20, 2024

Les vitesses dont tu parles sont fournies par les navires il me semble, elles ne sont pas calculées par Spire

Oui c'est vrai qu'on fait pas de recalcul de vitesse. Par contre ce serait intéressant de le faire je pense car j'imagine que lorsque le filet ou pire le chalut est sorti, ils essaient d'avoir une vitesse fond (ou surface par contre celle il n'y a quel bateau qui nous la donner si c'est bien celle là qui est transmise) bien précise et s'adapte selon le courant. Ça peut permettre d'avoir une info de plus pour détecter des conditions de pêche. Mais c'est au doit mouillé, a vérifier

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants