Persistence Interval Example - AretasSensorNetworks/APIExamples GitHub Wiki

When tracking objects in real time, blink rate can be very fast (in the 10s of milliseconds). Therefore it is not advised to have a high persistence rate to the persistent storage. The location ingest API has a "persist" option, allowing you to have a different persistence rate than update rate. The AretasNanotron middleware also has configurable persistence interval option (which just sets the flag in the REST API call at the requested interval).

The configuration property in the middleware:

#how often do we want to persist location data for analytics
aretas.api.locationpersistenceinterval = 30000

The default configuration is to update the persistent storage every 30 seconds. However, you can go much lower than this. The time series database is well optimized to handle faster update intervals although your analytics client may use a very large amount of RAM when querying high interval data points.

Also some analytics options (such as spaghetti trails or cumulative moving average) do not present well with longer update intervals.

Example with Higher Persistence Interval

The following example demonstrates a blink rate of 500 ms and a persistence interval of 2000ms. The "Tag" is an agent based mocker from our test framework, walking up and down a predetermined path:

Example from Real Time Viewer

Now, let's look at different analytics options with this Tag.

Point Cloud

The point cloud is a great way to visualize the real positions as recorded in the system with no alteration (such as averaging, outlier filtering, etc).

Point Cloud for Single Tag

Below is a screen capture for the single mock tag with an persistence interval of 2000ms:

Point Cloud Persistence Interval 2000ms

Given that the velocity of the tag is relatively constant, and the update interval constant, the point cloud is spaced out nicely.

Combining High Persistence Interval and Low Persistence Interval

Below is a screen capture for several tags (some stationary and with DEFAULT persistence interval: 30000ms)

Multiple Tags Mixed Interval Point Cloud

Density Map

While the point clouds are great, Density Maps are an even better tool for visualizing the historical path density of a tag and gives you an indication of where a tag or group of tags have spent the most time, e.g. travelling on a path, in a stationary position, or clustered with other tags.

Example:

Density Map Example

Spaghetti Trails

Spaghetti Trails, or Noodle Maps allow you to join the point cloud into a path the object has traveled. However, spaghetti trails can be discontinuous and not very useful with objects that are stationary or have long update intervals.

Example of a spaghetti trail for a mock tag with 2000ms persistence interval over a period of ONE minute:

Spaghetti Trail Example

Example of a spaghetti trail for a mock tag with 2000ms persistence interval over a period of ~1hr (the tag was only active for 1hr prior to the query)

Spaghetti Trail - Low Persistence Interval - 1hr

Moving Average

Note that the moving average algorithm is a cumulative moving average algorithm and is NOT a path smoothing algorithm. The algorithm is intended for smoothing over positions of stationary assets or personnel tags that don't move around a lot. Even with larger persistence intervals (e.g. 30s) the amount of data over longer periods of time is quite large.

For a relatively stationary asset or personnel that is working at a particular station, you can easily generate 20-30K points over a 30 day period.

Example:

Point Cloud 30 Days No Smoothing

Example with Density Map:

Point Cloud 30 Days No Smoothing Density Map

Example with Density Map and Averaging (Window Size 100)

Point Cloud 30 Days With Smoothing Density Map

Different algorithms for path smoothing are available by request.