Bonjour a tous, quelques conseils/idees seraient le bienvenue pour un probleme auquel je dois faire face, en esperant etre assez clair.

Objets existants:
Tracks : Id, DetectionId, Position(xy,z), Timestamp
Detection: Id, Position(xy,z), Timestamp
Sachant qu'un tracks change de position avec l'aide des detections qui le font avancer (les positions ne sont pas forcement les memes:smoth).

But:
Avoir la possibilite de verifier que 2 tracks ou plus representent en fait le meme track (effet bias, ou autre )... (utiliser actuellement interpolation qui permet de comparer ce qui constitues les differentes positions des tracks )

Probleme:
Avoir la possibilite de limiter le nombre de comparaisons entre tracks en filterant par plusieurs attributs :
osition area (geohashes)
sachant que les tracks se deplacent et peuvent donc changer de area(geohashes).

cela ce fait on the fly, en gros un stream de track arrive (pouvant etre des nouveaus, ou des updates de tracks)

Nom : det_track.png
Affichages : 68
Taille : 11,1 Ko

J'avais penser garder en memoire 3 concurrentdictionnary:

LastTrackGeohash<TrackId, LastGeohash> Track already exist in our memory
TrackPositions<TrackId, LimitedQueue(TrackPosition)> Updated positions in time for the Track (limited by number of points)
TracksPerGeohashes<Geohash, GlobalTrackIds[]> Tracks list per geohash area.

Track arrive :
recherche dans LastTrackGeohash
si il exist pas
track ajouter dans les 3 dictionnary
si il existe, et que le geohashes sont les memes
rajoute la nouvelle position dans TrackPositions
si il existe et geohashes different
je met a jour le LastTrackGeohash
remove it from TracksPerGeohasheset
add a new entry to the new geohashes for TracksPerGeohasheset

j'espere avoir etait clair.

Si quelqu'un a une meilleur approche..

Merci d'avance.