What is Temporal Location?

Temporal location is a concept in Narrative's Data Streaming platform that allows the combination of location and time when filtering orders.

Temporal Location Animation


Temporal location is a concept that allows for the combination of location polygons and time into a single filter.  When used independently location polygons allow users to limit data to devices that have fallen with the boundaries of a set of polygons.   A time filter used individually allows for the filtering of observations by a time range.  Temporal location allows for a more precise definition by allowing users to say that they are looking for observations that happen within a polygon during a given time window.  The time windows can be different for each polygon whereas when used independently the time windows and polygons are global across the entire data set.

Non-Continuous Data Collection Challenges


Device-based geolocation is limited by iOS (and to a lesser extent Android) as to only be collected once every five minutes.  Therefore, joining a location event and device-based events against an exact timestamp will produce results, but will underestimate actual location/device co-occurrence because of the difference in collection cadence.  Narrative has two solutions for the problem, both of which are forms of sessionization based on the observed data. 

Observation Pair Location Extrapolation

Observation pair location extrapolation looks at pairs of observations that have been collected from a given device and can extrapolate the location of the device based on the pair.  In order to eliminate low-quality extrapolations, Narrative allows users to set limits on when an extrapolation will be done.

  • Maximum time gap to extrapolate:  This would define the maximum difference between two observations that could be extrapolated.  For example, if this was set to 10 minutes and two observations that occurred within a 10-minute window would then be extrapolated to second-level granularity. 
  • Maximum distance traveled to extrapolate:  This setting would limit how far a device could have traveled within the maximum time gap and still have us extrapolate it.  As an example, if this was set to 30 meters we would extrapolate a record that had traveled less than 30 meters in that 10-minute window, but would not try to extrapolate data if the observations occurred more than 30 meters apart.

The combination of these two settings should allow the data set to scale while providing protections that the level of inference isn’t such that the data loses utility.

Singleton Based Location Extrapolation

Extrapolating data based on two observations is not in itself sufficient.  For some devices, the observations are gathered more sporadically (when a specific app is open, etc.)  For these devices, we might never receive two observations within the window specified for pair based extrapolation.  

For these devices, we are recommending that we implement a time window extrapolation.  An example is if we saw a single observation at 12:00:00 and we added a window of 5 minutes to the observation it would then match any car data at the same location between 11:47:30 and 12:02:30.

Sample Data

polygon_id timestamp latitude longitude
123 12:01:01 12.234 54.21
123 12:01:02 12.235 54.21
123 12:01:03 12.236 54.22
345 15:20:44 -17.99 67.12


device_id timestamp latitude longitude
xyz 11:58:45 12.234 54.22
xyz 12:03:45 12.235 54.21
xyz 12:08:45 12.235 54.21
abc 14:12:11 16.42 57.11


The tables above show (simplified) example data that illustrates the problem.  Device xyz is the proximity of media_id 123 at the same time, but because of the collection difference, a pure join will not reveal the proximity.  Extrapolation would solve the problem and give the user the expected match.