aisdb.interp module
linear interpolation of track segments on temporal axis
- 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)