Skip to Content
This documentation is provided with the HEAT environment and describes this HEAT instance.
DevelopersRunnerscore-utilsentity-state-to-flightpath

entity-state-to-flightpath

entity-state-to-flightpath turns entity-state records into one or more flightpath channels. The FlightPath widget draws them as 3D trajectories.

Entity-state records are the JSON records array that hydrate-protobuf-v2 emits with extractionTarget: EntityState. entity-state-to-records emits the same shape from DIS traffic. The node reads each entity’s position through JMESPath (a query language for JSON) expressions and emits one point per frame.

The output is a data service payload. It is not a map track. Use entity-state-to-mapdisplay for the MapDisplay widget.

When to use

Use this node when a Next dashboard needs the FlightPath widget for one or more airborne entities.

Pipeline position

hydrate-protobuf-v2 (EntityState) -> entity-state-to-flightpath -> json-merge -> dashboard-v2 entity-state-to-records -> entity-state-to-flightpath

The node reads the latest output of one parent.

Configuration

Configuration is required. latField and lonField must be set.

KeyTypeRequiredDefaultDescription
entriesPathstringNorecords[*]JMESPath to the array of time-ordered records.
timeFieldstringNosimulation_time_secondsDotted path from each record to its simulation time.
entitiesPathstringNoentity_state.entityJMESPath from each record to its entity object or array of objects.
entityNameFieldstringNonameDotted path from each entity to its name.
entityNamesarray of stringNononeEntities to include. When absent or empty, every entity with latitude and longitude values gets its own channel.
latFieldstringYesnoneJMESPath from each entity to its latitude.
lonFieldstringYesnoneJMESPath from each entity to its longitude.
altFieldstringNo""Optional JMESPath to altitude. Omitted from points when empty.
baseCapturedAtstringNo""ISO 8601 base time stamp. When set, simulation time is a relative offset from this base. When empty, simulation time is absolute Unix epoch seconds.
realmNamestringNooverviewRealm name for the channel.
channelIdstringNoflightpath-flightdataChannel id used when entityNames is set.
channelNamestringNoFlightPathDisplay name used when entityNames is set.

Output

A data service payload with flightpath channels in group flightpath.

{ "$heat-dataservice": { "version": "1.0", "groups": [{ "id": "flightpath", "name": "Flight Path" }], "realms": [ { "name": "overview", "channels": [ { "id": "flightpath-flightdata", "name": "FlightPath", "groupId": "flightpath", "shape": "flightpath", "data": [ { "lat": 51.5, "lon": -1.5, "alt": 3000.0, "timestamp": 1718000010000 }, { "lat": 51.6, "lon": -1.4, "alt": 2950.0, "timestamp": 1718000020000 } ] } ] } ] }, "dashboard_users": [] }

Two modes decide how channels are laid out.

  • With entityNames set, all listed entities are merged into one channel with the configured channelId. Points are sorted by simulation time and interleaved.
  • With entityNames absent or empty, each discovered entity gets its own channel named <entity>-flightpath. Entity names are lowercased and spaces and hyphens are normalised.

lat and lon are numbers. alt appears only when altField is set and evaluates to a number. timestamp is Unix epoch milliseconds.

Limitations

  • One parent, latest output only.
  • An entity with a missing or non-numeric position at one frame is skipped for that frame only.
  • The node fails when no entity has a valid position anywhere in the input.
Opens your browser's print dialog. Choose "Save as PDF" as the destination.