5
5
import warnings
6
6
from pandas .util .testing import assert_frame_equal
7
7
from geopandas import GeoDataFrame
8
- from shapely .geometry import Point
8
+ from shapely .geometry import Point , LineString
9
9
from datetime import datetime , timedelta
10
10
from fiona .crs import from_epsg
11
11
from movingpandas .trajectory import Trajectory , DIRECTION_COL_NAME , SPEED_COL_NAME , MissingCRSWarning
@@ -282,9 +282,9 @@ def test_support_for_subclasses_of_point(self):
282
282
283
283
def test_support_for_other_geometry_column_names (self ):
284
284
df = pd .DataFrame ([
285
- {'xxx' : TestPoint (0 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 0 , 0 )},
286
- {'xxx' : TestPoint (6 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 6 , 0 )},
287
- {'xxx' : TestPoint (6 , 6 ), 't' : datetime (2018 , 1 , 1 , 12 , 10 , 0 )}
285
+ {'xxx' : Point (0 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 0 , 0 )},
286
+ {'xxx' : Point (6 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 6 , 0 )},
287
+ {'xxx' : Point (6 , 6 ), 't' : datetime (2018 , 1 , 1 , 12 , 10 , 0 )}
288
288
]).set_index ('t' )
289
289
geo_df = GeoDataFrame (df , geometry = 'xxx' , crs = CRS_METRIC )
290
290
traj = Trajectory (geo_df , 1 )
@@ -294,9 +294,9 @@ def test_support_for_other_geometry_column_names(self):
294
294
295
295
def test_support_for_other_time_column_names (self ):
296
296
df = pd .DataFrame ([
297
- {'geometry' : TestPoint (0 , 0 ), 'xxx' : datetime (2018 , 1 , 1 , 12 , 0 , 0 )},
298
- {'geometry' : TestPoint (6 , 0 ), 'xxx' : datetime (2018 , 1 , 1 , 12 , 6 , 0 )},
299
- {'geometry' : TestPoint (6 , 6 ), 'xxx' : datetime (2018 , 1 , 1 , 12 , 10 , 0 )}
297
+ {'geometry' : Point (0 , 0 ), 'xxx' : datetime (2018 , 1 , 1 , 12 , 0 , 0 )},
298
+ {'geometry' : Point (6 , 0 ), 'xxx' : datetime (2018 , 1 , 1 , 12 , 6 , 0 )},
299
+ {'geometry' : Point (6 , 6 ), 'xxx' : datetime (2018 , 1 , 1 , 12 , 10 , 0 )}
300
300
]).set_index ('xxx' )
301
301
geo_df = GeoDataFrame (df , crs = CRS_METRIC )
302
302
traj = Trajectory (geo_df , 1 )
@@ -308,6 +308,58 @@ def test_support_for_other_time_column_names(self):
308
308
traj .to_linestring ()
309
309
traj .to_linestringm_wkt ()
310
310
311
+ def test_to_point_gdf (self ):
312
+ df = pd .DataFrame ([
313
+ {'geometry' : Point (0 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 0 , 0 )},
314
+ {'geometry' : Point (6 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 6 , 0 )},
315
+ {'geometry' : Point (6 , 6 ), 't' : datetime (2018 , 1 , 1 , 12 , 10 , 0 )}
316
+ ]).set_index ('t' )
317
+ geo_df = GeoDataFrame (df , crs = CRS_METRIC )
318
+ traj = Trajectory (geo_df , 1 )
319
+ point_gdf = traj .to_point_gdf ()
320
+ assert_frame_equal (point_gdf , geo_df )
321
+
322
+ def test_to_line_gdf (self ):
323
+ df = pd .DataFrame ([
324
+ {'geometry' : Point (0 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 0 , 0 )},
325
+ {'geometry' : Point (6 , 0 ), 't' : datetime (2018 , 1 , 1 , 12 , 6 , 0 )},
326
+ {'geometry' : Point (6 , 6 ), 't' : datetime (2018 , 1 , 1 , 12 , 10 , 0 )}
327
+ ]).set_index ('t' )
328
+ geo_df = GeoDataFrame (df , crs = CRS_METRIC )
329
+ traj = Trajectory (geo_df , 1 )
330
+ line_gdf = traj .to_line_gdf ()
331
+
332
+ df2 = pd .DataFrame ([
333
+ {'t' : datetime (2018 , 1 , 1 , 12 , 6 , 0 ), 'prev_t' : datetime (2018 , 1 , 1 , 12 , 0 , 0 ), 'geometry' : LineString ([(0 , 0 ), (6 , 0 )])},
334
+ {'t' : datetime (2018 , 1 , 1 , 12 , 10 , 0 ), 'prev_t' : datetime (2018 , 1 , 1 , 12 , 6 , 0 ), 'geometry' : LineString ([(6 , 0 ), (6 , 6 )])}
335
+ ])
336
+ expected_line_gdf = GeoDataFrame (df2 , crs = CRS_METRIC )
337
+
338
+ assert_frame_equal (line_gdf , expected_line_gdf )
339
+
340
+ def test_to_traj_gdf (self ):
341
+ df = pd .DataFrame ([
342
+ {'geometry' : Point (0 , 0 ), 't' : datetime (1970 , 1 , 1 , 0 , 0 , 0 )},
343
+ {'geometry' : Point (6 , 0 ), 't' : datetime (1970 , 1 , 1 , 0 , 6 , 0 )},
344
+ {'geometry' : Point (6 , 6 ), 't' : datetime (1970 , 1 , 1 , 0 , 10 , 0 )}
345
+ ]).set_index ('t' )
346
+ geo_df = GeoDataFrame (df , crs = CRS_METRIC )
347
+ traj = Trajectory (geo_df , 1 )
348
+ traj_gdf = traj .to_traj_gdf ()
349
+
350
+ props = {'id' : 1 , 'start_t' : datetime (1970 , 1 , 1 , 0 , 0 , 0 ), 'end_t' : datetime (1970 , 1 , 1 , 0 , 10 , 0 ), 'geometry' : LineString ([(0 , 0 ), (6 , 0 ), (6 , 6 )])}
351
+ df2 = pd .DataFrame ([props ])
352
+ expected_line_gdf = GeoDataFrame (df2 , crs = CRS_METRIC )
353
+
354
+ assert_frame_equal (traj_gdf , expected_line_gdf )
355
+
356
+ traj_gdf_wkt = traj .to_traj_gdf (wkt = True )
357
+ props ['wkt' ] = 'LINESTRING M (0.0 0.0 0.0, 6.0 0.0 360.0, 6.0 6.0 600.0)'
358
+ df2 = pd .DataFrame ([props ])
359
+ expected_line_gdf_wkt = GeoDataFrame (df2 , crs = CRS_METRIC )
360
+
361
+ assert_frame_equal (traj_gdf_wkt , expected_line_gdf_wkt )
362
+
311
363
"""
312
364
This test should work but fails in my PyCharm probably due to https://github.com/pyproj4/pyproj/issues/134
313
365
0 commit comments