public async Task <List <TrajectoryModel> > GetList()
        {
            var result = new List <TrajectoryModel>();

            try
            {
                var connString = _configuration.GetConnectionString("DefaultConnectionString");

                await using var conn = new NpgsqlConnection(connString);
                await conn.OpenAsync();

                var sql = @"SELECT ST_AsGeoJSON(s.traj)::json As geometry, s.mmsi as ShipID, si.name as shipName, si.shiptype as shipType
                            FROM ships s
                            INNER JOIN shipsinfo si
                            ON s.mmsi = si.mmsi
                            ORDER BY s.mmsi
                            LIMIT 1";

                await using (var cmd = new NpgsqlCommand(sql, conn))
                    await using (var reader = await cmd.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            var model = new TrajectoryModel
                            {
                                ShipID   = await reader.GetFieldValueAsync <int>(1),
                                ShipName = !reader.IsDBNull(2) ? await reader.GetFieldValueAsync <string>(2) : String.Empty,
                                ShipType = !reader.IsDBNull(3) ? await reader.GetFieldValueAsync <string>(3) : String.Empty,
                                Geometry = !reader.IsDBNull(0) ? await reader.GetFieldValueAsync <string>(0) : String.Empty
                            };

                            result.Add(model);
                        }
                        ;
                    }
            }
            catch (Exception e)
            {
                var x = e;
                throw;
            }

            return(result);
        }
 public void trainGesture(string gestureName, IEnumerable <BaseTrajectory> trainingTraces)
 {
     knownGestures[gestureName] = new TrajectoryModel(this, gestureName, trainingTraces);
 }