diff --git a/skais/__init__.py b/skais/__init__.py index 834dc3a90c4fe62af22a6facecb79e16795e97fb..db0f98561e5bfd3c062c1edd63c7f4ab8c4d3720 100644 --- a/skais/__init__.py +++ b/skais/__init__.py @@ -1 +1 @@ -__version__ = "0.1a" +__version__ = "0.2a" diff --git a/skais/ais/ais_trajectory.py b/skais/ais/ais_trajectory.py index a20abf4c22039c35f570e22ac912c57dfa95f749..f4ec956b6930cca43121640fc4e2f93a698ce915 100644 --- a/skais/ais/ais_trajectory.py +++ b/skais/ais/ais_trajectory.py @@ -306,7 +306,6 @@ class AISTrajectory(AISPoints): else: bounds = [] if type(features) is list: - nb_channels = len(features) features_vectors = self.df[features].to_numpy() for c in features_vectors.T: bounds.append((0, max(c))) @@ -319,6 +318,8 @@ class AISTrajectory(AISPoints): features_vectors = self.df[features.keys()].to_numpy() else: raise TypeError("Type not supported") + + nb_channels = len(features_vectors.T) data = np.zeros((height, width, nb_channels), dtype=np.float) diff --git a/skais/tests/ais/test_ais_trajectory.py b/skais/tests/ais/test_ais_trajectory.py index 56aa71cd0dfbc24deed6671584a38f7862a732e8..51d776ccfe534ef89e1784ad5936dd68b8695572 100644 --- a/skais/tests/ais/test_ais_trajectory.py +++ b/skais/tests/ais/test_ais_trajectory.py @@ -616,3 +616,39 @@ class TestAISTrajectoryImageGeneration(unittest.TestCase): [0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.25, 0.5]]) / 2 np.testing.assert_array_equal(result, expected) + + def test_generate_array_from_positions_with_line_multi_channel_dict(self): + trajectory = AISTrajectory( + pd.DataFrame( + { + "latitude": [0, 10, 0, 20], + "longitude": [0, 10, 20, 20], + "ts_sec": [i for i in range(4)], + "sog": [10, 10, 20, 40], + "cog": [40, 20, 10, 10] + } + ) + ) + + result = trajectory.generate_array_from_positions(height=9, width=18, link=True, bounding_box='fit', + features={'sog': (0, 40), 'cog': (0, 40)}, node_size=0) + expected = np.array([[[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], + [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.5, 0.25]], + [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], + [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.5, 0.25]], + [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], + [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.5, 0.25]], + [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], + [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.5, 0.25]], + [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.25, 1], [0.25, 0.5], + [0.25, 0.5], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.5, 0.25]], + [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.25, 1], [0.25, 1], [0, 0], [0, 0], [0, 0], + [0.25, 0.5], [0.25, 0.5], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.5, 0.25]], + [[0, 0], [0, 0], [0, 0], [0.25, 1], [0.25, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], + [0, 0], [0, 0], [0.25, 0.5], [0.25, 0.5], [0, 0], [0, 0], [0, 0], [0.5, 0.25]], + [[0, 0], [0.25, 1], [0.25, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], + [0, 0], [0, 0], [0, 0], [0, 0], [0.25, 0.5], [0.25, 0.5], [0, 0], [0.5, 0.25]], + [[0.25, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], + [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0.25, 0.5], [0.5, 0.25]]]) + + np.testing.assert_array_equal(result, expected) \ No newline at end of file