aisdb.interp module

linear interpolation of track segments on temporal axis

aisdb.interp.cubic_spline(track, key, intervals)[source]
aisdb.interp.geo_interp_time(tracks, step=datetime.timedelta(seconds=600), original_crs=4269)[source]

Geometric interpolation on vessel trajectory, assumes default EPSG:4269

Parameters:
  • tracks (dict) – messages sorted by mmsi then time. uses mmsi as key with columns: time lon lat cog sog name .. etc

  • step (datetime.timedelta) – interpolation interval

Returns:

dictionary of interpolated tracks

Example

>>> import numpy as np
>>> from datetime import timedelta, datetime
>>> import aisdb
>>> y1, x1 = -66.84683, -61.10595523571155
>>> y2, x2 = -66.83036, -61.11595523571155
>>> y3, x3 = 48.2815186388735, -61.12595523571155
>>> t1 = dt_2_epoch( datetime(2021, 1, 1, 1) )
>>> t2 = dt_2_epoch( datetime(2021, 1, 1, 2) )
>>> t3 = dt_2_epoch(datetime(2021, 1, 1, 3))
>>> # creating a sample track
>>> tracks_short = [
...                 dict( lon=np.array([x1, x2, x3]),
...                 lat=np.array([y1, y2, y3]),
...                 time=np.array([t1, t2, t3]),
...                 dynamic=set(['lon', 'lat', 'time']),
...                 static = set() ) ]
>>> tracks__ = aisdb.interp.geo_interp_time(tracks_short, timedelta(minutes=10))
>>> for tr in tracks__:
...     print(tr)
aisdb.interp.interp_cubic_spline(tracks, step=datetime.timedelta(seconds=600))[source]

Cubic spline interpolation on vessel trajectory

Parameters:
  • tracks (dict) – messages sorted by mmsi then time. uses mmsi as key with columns: time lon lat cog sog name .. etc

  • step (datetime.timedelta) – interpolation interval

Returns:

dictionary of interpolated tracks

aisdb.interp.interp_spacing(spacing: int, tracks, crs=4269)[source]

linear interpolation on vessel trajectory

args:
tracks (dict)

messages sorted by mmsi then time. uses mmsi as key with columns: time lon lat cog sog name .. etc

spacing (int)

interpolation interval in meters

returns:

dictionary of interpolated tracks

>>> import numpy as np
>>> from datetime import timedelta, datetime
>>> y1, x1 = -66.84683, -61.10595523571155
>>> y2, x2 = -66.83036, -61.11595523571155
>>> y3, x3 = -66.82036, -61.12595523571155
>>> t1 = dt_2_epoch( datetime(2021, 1, 1, 1) )
>>> t2 = dt_2_epoch( datetime(2021, 1, 1, 2) )
>>> t3 = dt_2_epoch(datetime(2021, 1, 1, 3))
>>> # creating a sample track
>>> tracks_short = [
...    dict(
...        lon=np.array([x1, x2, x3]),
...        lat=np.array([y1, y2, y3]),
...        time=np.array([t1, t2, t3]),
...        dynamic=set(['lon', 'lat', 'time']),
...        static = set()
...    )
... ]
>>> tracks__ = aisdb.interp.interp_time(tracks_short, timedelta(minutes=10))
>>> tracks__ = aisdb.interp.interp_spacing(spacing=1000, tracks=tracks__)
>>> for tr in tracks__:
...    print(tr)
aisdb.interp.interp_time(tracks, step=datetime.timedelta(seconds=600))[source]

linear interpolation on vessel trajectory

Parameters:
  • tracks (dict) – messages sorted by mmsi then time. uses mmsi as key with columns: time lon lat cog sog name .. etc

  • step (datetime.timedelta) – interpolation interval

Returns:

dictionary of interpolated tracks

Example

>>> import numpy as np
>>> from datetime import timedelta, datetime
>>> import aisdb
>>> y1, x1 = -66.84683, -61.10595523571155
>>> y2, x2 = -66.83036, -61.11595523571155
>>> y3, x3 = 48.2815186388735, -61.12595523571155
>>> t1 = dt_2_epoch( datetime(2021, 1, 1, 1) )
>>> t2 = dt_2_epoch( datetime(2021, 1, 1, 2) )
>>> t3 = dt_2_epoch(datetime(2021, 1, 1, 3))
>>> # creating a sample track
>>> tracks_short = [
...                 dict( lon=np.array([x1, x2, x3]),
...                 lat=np.array([y1, y2, y3]),
...                 time=np.array([t1, t2, t3]),
...                 dynamic=set(['lon', 'lat', 'time']),
...                 static = set() ) ]
>>> tracks__ = aisdb.interp.interp_time(tracks_short, timedelta(minutes=10))
>>> for tr in tracks__:
...     print(tr)
aisdb.interp.np_interp_linear(track, key, intervals)[source]