コード例 #1
0
ファイル: test_overlay.py プロジェクト: cuulee/movingpandas
 def test_clip_pointbased(self):
     polygon = Polygon([(5.1, -5), (7.5, -5), (7.5, 12), (5.1, 12), (5.1, -5)])
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(6.5, 0), 't': datetime(2018, 1, 1, 12, 6, 30)},
         {'geometry': Point(7, 0), 't': datetime(2018, 1, 1, 12, 7, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 11, 0)},
         {'geometry': Point(10, 10), 't': datetime(2018, 1, 1, 12, 30, 0)},
         {'geometry': Point(5, 10), 't': datetime(2018, 1, 1, 12, 45, 0)},
         {'geometry': Point(0, 10), 't': datetime(2018, 1, 1, 13, 0, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     intersections = traj.clip(polygon, pointbased=True)
     # spatial
     result = []
     for x in intersections:
         result.append(x.to_linestring())
     expected_result = [LineString([(6, 0), (6.5, 0), (7, 0)])]
     self.assertEqual(expected_result, result)
     # temporal
     result = []
     for x in intersections:
         result.append((x.get_start_time(), x.get_end_time()))
     expected_result = [(datetime(2018, 1, 1, 12, 6, 0), datetime(2018, 1, 1, 12, 7, 0))]
     self.assertEqual(expected_result, result)
     # ids
     result = []
     for x in intersections:
         result.append(x.id)
     expected_result = ['1_0']
     self.assertEqual(expected_result, result)
コード例 #2
0
    def test_to_line_gdf(self):
        df = pd.DataFrame([
            {
                "geometry": Point(0, 0),
                "t": datetime(2018, 1, 1, 12, 0, 0)
            },
            {
                "geometry": Point(6, 0),
                "t": datetime(2018, 1, 1, 12, 6, 0)
            },
            {
                "geometry": Point(6, 6),
                "t": datetime(2018, 1, 1, 12, 10, 0)
            },
        ]).set_index("t")
        geo_df = GeoDataFrame(df, crs=CRS_METRIC)
        traj = Trajectory(geo_df, 1)
        line_gdf = traj.to_line_gdf()

        df2 = pd.DataFrame([
            {
                "t": datetime(2018, 1, 1, 12, 6, 0),
                "prev_t": datetime(2018, 1, 1, 12, 0, 0),
                "geometry": LineString([(0, 0), (6, 0)]),
            },
            {
                "t": datetime(2018, 1, 1, 12, 10, 0),
                "prev_t": datetime(2018, 1, 1, 12, 6, 0),
                "geometry": LineString([(6, 0), (6, 6)]),
            },
        ])
        expected_line_gdf = GeoDataFrame(df2, crs=CRS_METRIC)

        assert_frame_equal(line_gdf, expected_line_gdf)
コード例 #3
0
ファイル: test_overlay.py プロジェクト: cuulee/movingpandas
 def test_clip_two_intersections_with_same_polygon(self):
     polygon = Polygon([(5, -5), (7, -5), (7, 12), (5, 12), (5, -5)])
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(10, 10), 't': datetime(2018, 1, 1, 12, 30, 0)},
         {'geometry': Point(0, 10), 't': datetime(2018, 1, 1, 13, 0, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     intersections = traj.clip(polygon)
     # spatial 
     result = []
     for x in intersections:
         result.append(x.to_linestring().wkt)
     expected_result = ["LINESTRING (5 0, 6 0, 7 0)", "LINESTRING (7 10, 5 10)"]
     self.assertEqual(expected_result, result)
     # temporal 
     result = []
     for x in intersections:
         result.append((x.get_start_time(), x.get_end_time()))
     expected_result = [(datetime(2018, 1, 1, 12, 5, 0), datetime(2018, 1, 1, 12, 7, 0)),
                        (datetime(2018, 1, 1, 12, 39, 0), datetime(2018, 1, 1, 12, 45, 0))]
     self.assertEqual(expected_result, result)
     # ids
     result = []
     for x in intersections:
         result.append(x.id)
     expected_result = ['1_0', '1_1']
     self.assertEqual(expected_result, result)
コード例 #4
0
 def test_get_linestring_between_interpolate_ValueError(self):
     # test for https://github.com/anitagraser/movingpandas/issues/118
     # (not sure what causes this problem)
     df = pd.DataFrame([
         {
             "geometry": Point(0, 0),
             "t": datetime(2018, 1, 1, 12, 0, 0)
         },
         {
             "geometry": Point(6, 0),
             "t": datetime(2018, 1, 1, 12, 6, 0)
         },
         {
             "geometry": Point(6, 6),
             "t": datetime(2018, 1, 1, 12, 10, 0)
         },
         {
             "geometry": Point(9, 9),
             "t": datetime(2018, 1, 1, 12, 15, 0)
         },
     ]).set_index("t")
     toy_traj = Trajectory(GeoDataFrame(df, crs=31256), 1)
     result = toy_traj.get_linestring_between(
         datetime(2018, 1, 1, 12, 6, 0),
         datetime(2018, 1, 1, 12, 11, 0),
         method="interpolated",
     ).wkt
     assert result == "LINESTRING (6 0, 6 6, 6.6 6.6)"
コード例 #5
0
 def test_get_bbox(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 1), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 5), 't': datetime(2018, 1, 1, 12, 0, 1)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(4326))
     traj = Trajectory(1, geo_df)
     result = traj.get_bbox()
     expected_result = (0, 1, 6, 5)  # (minx, miny, maxx, maxy)
     self.assertEqual(expected_result, result)
コード例 #6
0
 def test_get_length_euclidiean(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 2), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 0, 1)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.get_length()
     expected_result = 6.3
     self.assertAlmostEqual(expected_result, result, 1)
コード例 #7
0
 def test_get_interpolated_position_at_existing_timestamp(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 20, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.get_position_at(datetime(2018, 1, 1, 12, 10, 0), method='interpolated')
     expected_result = Point(6, 0)
     self.assertEqual(expected_result, result)
コード例 #8
0
 def test_endlocation(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.get_end_location()
     expected_result = Point(10, 0)
     self.assertEqual(expected_result, result)
コード例 #9
0
 def test_add_meters_per_sec_latlon(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 1), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 0, 1)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(4326))
     traj = Trajectory(1, geo_df)
     traj.add_speed()
     result = traj.df[SPEED_COL_NAME].tolist()[0]/1000
     expected_result = 676.3
     self.assertAlmostEqual(expected_result, result, 1)
コード例 #10
0
 def test_nonchronological_input(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 2, 0, 0, 0)},
         {'geometry': Point(1, 1), 't': datetime(2018, 1, 3, 0, 0, 0)},
         {'geometry': Point(2, 2), 't': datetime(2018, 1, 1, 0, 0, 0)}
     ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     self.assertEqual(datetime(2018, 1, 1), traj.get_start_time())
     self.assertEqual(datetime(2018, 1, 3), traj.get_end_time())
     self.assertEqual(Point(2, 2), traj.get_start_location())
コード例 #11
0
 def test_add_heading_latlon(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(10, 10), 't': datetime(2018, 1, 1, 12, 10, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(4326))
     traj = Trajectory(1, geo_df)
     traj.add_direction()
     result = traj.df[DIRECTION_COL_NAME].tolist()
     expected_result = [44.561451413257714, 44.561451413257714]
     self.assertAlmostEqual(expected_result[0], result[0], 5)
コード例 #12
0
 def test_plot(self):
     from matplotlib.axes import Axes
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.plot()
     self.assertIsInstance(result, Axes)
コード例 #13
0
 def test_linestring_wkt(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.to_linestring().wkt
     expected_result = "LINESTRING (0 0, 6 0, 10 0)"        
     self.assertEqual(expected_result, result)
コード例 #14
0
 def test_linstring_m_wkt(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(1970, 1, 1, 0, 0, 1)},
         {'geometry': Point(6, 0), 't': datetime(1970, 1, 1, 0, 0, 2)},
         {'geometry': Point(10, 0), 't': datetime(1970, 1, 1, 0, 0, 3)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.to_linestringm_wkt()
     expected_result = "LINESTRING M (0.0 0.0 1.0, 6.0 0.0 2.0, 10.0 0.0 3.0)"        
     self.assertEqual(expected_result, result)
コード例 #15
0
 def test_add_meters_per_sec(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 0, 1)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     traj.add_speed()
     result = traj.df[SPEED_COL_NAME].tolist()
     expected_result = [6.0, 6.0]
     self.assertEqual(expected_result, result)
コード例 #16
0
 def test_douglas_peucker(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(1, 0.1), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(2, 0.2), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(3, 0), 't': datetime(2018, 1, 1, 12, 30, 0)},
         {'geometry': Point(3, 3), 't': datetime(2018, 1, 1, 13, 0, 0)}
     ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.generalize(mode='douglas-peucker', tolerance=1)
     self.assertEqual('LINESTRING (0 0, 3 0, 3 3)', result.to_linestring().wkt)
コード例 #17
0
 def test_get_linestring_between(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(20, 0), 't': datetime(2018, 1, 1, 12, 20, 0)},
         {'geometry': Point(30, 0), 't': datetime(2018, 1, 1, 12, 30, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.get_linestring_between(datetime(2018, 1, 1, 12, 5, 0), datetime(2018, 1, 1, 12, 25, 0, 50)).wkt
     expected_result = "LINESTRING (10 0, 20 0)"
     self.assertEqual(result, expected_result)
コード例 #18
0
 def test_add_heading(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(6, -6), 't': datetime(2018, 1, 1, 12, 20, 0)},
         {'geometry': Point(-6, -6), 't': datetime(2018, 1, 1, 12, 30, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     traj.add_direction()
     result = traj.df[DIRECTION_COL_NAME].tolist()
     expected_result = [90.0, 90.0, 180.0, 270]
     self.assertEqual(expected_result, result)
コード例 #19
0
 def test_split_by_daybreak_same_day_of_year(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(-6, 10), 't': datetime(2018, 1, 1, 12, 1, 0)},
         {'geometry': Point(6, 6), 't': datetime(2019, 1, 1, 12, 0, 1)},
         {'geometry': Point(6, 16), 't': datetime(2019, 1, 1, 12, 5, 1)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     split = traj.split_by_date()
     result = len(split)
     expected_result = 2
     self.assertEqual(expected_result, result)
コード例 #20
0
ファイル: test_overlay.py プロジェクト: cuulee/movingpandas
 def test_clip_with_no_intersection(self):
     polygon = Polygon([(105, -5), (107, -5), (107, 12), (105, 12), (105, -5)])
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 15, 0)},
         {'geometry': Point(10, 10), 't': datetime(2018, 1, 1, 12, 30, 0)},
         {'geometry': Point(0, 10), 't': datetime(2018, 1, 1, 13, 0, 0)}]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.clip(polygon)
     expected_result = []
     self.assertEqual(expected_result, result)
コード例 #21
0
 def test_offset_minutes(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0), 'value': 1},
         {'geometry': Point(-6, 10), 't': datetime(2018, 1, 1, 12, 1, 0), 'value': 2},
         {'geometry': Point(6, 6), 't': datetime(2018, 1, 1, 12, 2, 0), 'value': 3},
         {'geometry': Point(6, 12), 't': datetime(2018, 1, 1, 12, 3, 0), 'value': 4},
         {'geometry': Point(6, 18), 't': datetime(2018, 1, 1, 12, 4, 0), 'value': 5}
     ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     traj.apply_offset_minutes('value', -2)
     self.assertEqual(5, traj.df.iloc[2].value)
     self.assertEqual(Point(6, 6), traj.df.iloc[2].geometry)
コード例 #22
0
 def test_get_position_with_invalid_method(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 20, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     try:
         result = traj.get_position_at(datetime(2018, 1, 1, 12, 10, 0), method='xxx')
         assert False
     except ValueError:
         assert True
コード例 #23
0
 def test_split_by_observation_gap_skip_single_points(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(-6, 10), 't': datetime(2018, 1, 1, 12, 1, 0)},
         {'geometry': Point(6, 6), 't': datetime(2018, 1, 1, 12, 5, 0)},
         {'geometry': Point(6, 16), 't': datetime(2018, 1, 1, 12, 6, 30)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     split = traj.split_by_observation_gap(timedelta(seconds=61))
     result = len(split)
     expected_result = 1
     self.assertEqual(expected_result, result)
コード例 #24
0
ファイル: test_overlay.py プロジェクト: cuulee/movingpandas
 def test_clip_with_numerical_time_issues(self):     
     xmin, xmax, ymin, ymax = 116.36850352835575, 116.37029459899574, 39.904675309969896, 39.90772814977718
     polygon = Polygon([(xmin, ymin), (xmin, ymax), (xmax, ymax), (xmax, ymin), (xmin, ymin)])
     df = pd.DataFrame([
         {'geometry': Point(116.36855, 39.904926), 't': datetime(2009, 3, 10, 11, 3, 35)},
         {'geometry': Point(116.368612, 39.904877), 't': datetime(2009, 3, 10, 11, 3, 37)},
         {'geometry': Point(116.368644, 39.90484), 't': datetime(2009, 3, 10, 11, 3, 39)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     intersection = traj.clip(polygon)[0]
     result = intersection.to_linestring().wkt
     expected_result = "LINESTRING (116.36855 39.904926, 116.368612 39.904877, 116.368644 39.90484)"
     self.assertEqual(expected_result, result)
コード例 #25
0
 def test_mcp_line(self):
     df = pd.DataFrame([
         {
             "geometry": Point(0, 0),
             "t": datetime(1970, 1, 1, 0, 0, 0)
         },
         {
             "geometry": Point(6, 0),
             "t": datetime(1970, 1, 1, 0, 6, 0)
         },
     ]).set_index("t")
     geo_df = GeoDataFrame(df, crs=CRS_METRIC)
     traj = Trajectory(geo_df, 1)
     mcp = traj.get_mcp()
     assert mcp.wkt == "LINESTRING (0 0, 6 0)"
コード例 #26
0
ファイル: test_overlay.py プロジェクト: cuulee/movingpandas
 def test_clip_pointbased_singlepoint(self):
     polygon = Polygon([(5.1, -5), (6.4, -5), (6.4, 12), (5.1, 12), (5.1, -5)])
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(6.5, 0), 't': datetime(2018, 1, 1, 12, 6, 30)},
         {'geometry': Point(7, 0), 't': datetime(2018, 1, 1, 12, 7, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 11, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     intersections = traj.clip(polygon, pointbased=True)
     result = intersections
     expected_result = []
     self.assertEqual(expected_result, result)
コード例 #27
0
 def test_get_segment_between_new_timestamps(self):
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(20, 0), 't': datetime(2018, 1, 1, 12, 20, 0)},
         {'geometry': Point(30, 0), 't': datetime(2018, 1, 1, 12, 30, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     result = traj.get_segment_between(datetime(2018, 1, 1, 12, 5, 0), datetime(2018, 1, 1, 12, 25, 0, 50)).df
     expected_result = pd.DataFrame([
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(20, 0), 't': datetime(2018, 1, 1, 12, 20, 0)}
         ]).set_index('t')
     pd.testing.assert_frame_equal(result, expected_result)
コード例 #28
0
 def test_sparse_trajectory(self):
     df = pd.DataFrame([{
         'id': 1,
         'geometry': Point(0, 0),
         't': datetime(2018, 1, 1, 12, 0, 0)
     }, {
         'id': 1,
         'geometry': Point(6, 0),
         't': datetime(2018, 1, 1, 12, 6, 0)
     }, {
         'id': 1,
         'geometry': Point(6, 6),
         't': datetime(2018, 1, 1, 14, 10, 0)
     }]).set_index('t')
     geo_df = GeoDataFrame(df, crs=CRS_METRIC)
     traj = Trajectory(geo_df, 'id')
     extractor = _PtsExtractor(traj,
                               5,
                               0,
                               min_stop_duration=timedelta(hours=12))
     actual = extractor.find_significant_points()
     expected = [Point(0, 0), Point(6, 0), Point(6, 6)]
     assert len(actual) == len(expected)
     for pt in expected:
         assert pt in actual
コード例 #29
0
 def test_sparse_trajectory(self):
     df = DataFrame([
         {
             "id": 1,
             "geometry": Point(0, 0),
             "t": datetime(2018, 1, 1, 12, 0, 0)
         },
         {
             "id": 1,
             "geometry": Point(6, 0),
             "t": datetime(2018, 1, 1, 12, 6, 0)
         },
         {
             "id": 1,
             "geometry": Point(6, 6),
             "t": datetime(2018, 1, 1, 14, 9, 0)
         },
     ]).set_index("t")
     geo_df = GeoDataFrame(df, crs=CRS_METRIC)
     traj = Trajectory(geo_df, "id")
     extractor = _PtsExtractor(traj,
                               5,
                               0,
                               min_stop_duration=timedelta(hours=12))
     actual = extractor.find_significant_points()
     expected = [Point(0, 0), Point(6, 0), Point(6, 6)]
     assert len(actual) == len(expected)
     for pt in expected:
         assert pt in actual
コード例 #30
0
ファイル: test_overlay.py プロジェクト: cuulee/movingpandas
 def test_intersection_with_one_intersection(self):
     feature = {
         'geometry': {'type': 'Polygon', 'coordinates': [[(5, -5), (7, -5), (8, 5), (5, 5), (5, -5)]]},
         'properties': {'id': 1, 'name': 'foo'}}
     df = pd.DataFrame([
         {'geometry': Point(0, 0), 't': datetime(2018, 1, 1, 12, 0, 0)},
         {'geometry': Point(6, 0), 't': datetime(2018, 1, 1, 12, 6, 0)},
         {'geometry': Point(10, 0), 't': datetime(2018, 1, 1, 12, 10, 0)},
         {'geometry': Point(10, 10), 't': datetime(2018, 1, 1, 12, 30, 0)},
         {'geometry': Point(0, 10), 't': datetime(2018, 1, 1, 13, 0, 0)}
         ]).set_index('t')
     geo_df = GeoDataFrame(df, crs=from_epsg(31256))
     traj = Trajectory(1, geo_df)
     intersections = traj.intersection(feature)
     result = list(intersections[0].df.columns)
     expected_result = ['geometry', 'intersecting_id', 'intersecting_name']
     self.assertCountEqual(expected_result, result)