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)
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 pastrack ajouter dans les 3 dictionnarysi il existe, et que le geohashes sont les memesrajoute la nouvelle position dans TrackPositionssi il existe et geohashes differentje 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.








Répondre avec citation
Partager