Hi folks, I’m a long time listener first time caller. I’ve managed to build quite a few projects in TD using a lot of help from the forum but I’ve run up against a problem I don’t know how to find the answers for: I’m building a project that visualises flights in a 20km area overhead. The simplified pipeline looks like this:

External python UDP’ing API (Callsign, Long, Lat and Altitude) →

DAT →

CHOP and Math into Callsign, X, Y and Z →

Filter to smooth transition between changing coordinates (grabbed every 3-5 seconds) →

SOP into points →

Instance particle systems at points.

Simple enough. But the problem is at the points: When a plane leaves the area, TD reassigns the point to a new plane which means every time a new plane appears or an old one dissappears, the planes appear to shuffle around the map instantaneously as all the instances are reassigned to new points. So my questions, as I’m not sure what to even ask is:

Is there a way for points to be additively numbered? I.e let’s say the first planes are A, B and C and they are given point numbers 0, 1, 2.

Plane A = Point 0

Plane B = Point 1

Plane C = Point 2

Then D comes along such that:

A = 0

B = 1

C = 2

D = 3

Now, by default, if A ‘leaves.’ TD will shuffle the points ‘up’ so that

B = 0

C = 1

D = 2

Whereas I need it to keep the planes with their original point numbers, and just remove point 0 rather than reassign it such that

B = 1

C = 2

D = 3

…and so on ad infinitum. (There’s never more than about 15 planes in the area so it’s not like this will result in a massive point cloud.)

In other words, can a key value, like the Callsign be persistently and permanently associated with a point number as long as TD is running?

Alternatively, is there a way of scripting DATs to replace Long, Lat and Altitude bearings if that callsign already exists, and append a row if it doens’t. And to identify a callsign currently in the DAT that is not in the call? From the expressions available and the examples I can find the only method is clearing a table and then appending rows which means any previous calls are lost and unrecorded.

Sorry for the long-winded question, it’s a bit of a logical loop and I’m struggling to work out a solution. Thanks for all your help, both passively through the great content on this forum and actively by any responses.