def test_create_all_polygons_to_all_point_on_grid(): expected = DataFrame( data=[ [ 1, 0, 0, Polygon(( (116.319236, 39.984094), (116.319236, 39.984229346480184), (116.3193713464802, 39.984229346480184), (116.3193713464802, 39.984094), (116.319236, 39.984094) )) ], [ 1, 0, 1, Polygon(( (116.319236, 39.984094), (116.319236, 39.984229346480184), (116.3193713464802, 39.984229346480184), (116.3193713464802, 39.984094), (116.319236, 39.984094) )) ], [ 1, 4, 4, Polygon(( (116.3193713464802, 39.984094), (116.3193713464802, 39.984229346480184), (116.31950669296039, 39.984229346480184), (116.31950669296039, 39.984094), (116.3193713464802, 39.984094) )) ], [ 1, 3, 3, Polygon(( (116.3193713464802, 39.984094), (116.3193713464802, 39.984229346480184), (116.31950669296039, 39.984229346480184), (116.31950669296039, 39.984094), (116.3193713464802, 39.984094) )) ], ], columns=['id', 'index_grid_lat', 'index_grid_lon', 'polygon'], index=[0, 2, 5, 7], ) move_df = _default_move_df() grid = Grid(move_df, 15) all_polygon = grid.create_all_polygons_to_all_point_on_grid( move_df, unique_index=False ) assert_frame_equal(all_polygon, expected)
def discretize_based_grid(self, region_size: int = 1000): """ Discrete space in cells of the same size, assigning a unique id to each cell. Parameters ---------- region_size: int, optional Size of grid cell, by default 1000 """ operation = begin_operation('discretize based on grid') logger.debug('\nDiscretizing dataframe...') grid = Grid(self, cell_size=region_size) grid.create_update_index_grid_feature(self) self.reset_index(drop=True, inplace=True) self.last_operation = end_operation(operation)
def test_create_all_polygons_to_all_point_on_grid(): expected = DataFrame( data=[ [ 1, 0, 0, Polygon( ((116.319236, 39.984094), (116.319236, 39.984229346480184), (116.3193713464802, 39.984229346480184), (116.3193713464802, 39.984094), (116.319236, 39.984094))) ], [ 1, 0, 1, Polygon(((116.3193713464802, 39.984094), (116.3193713464802, 39.984229346480184), (116.31950669296039, 39.984229346480184), (116.31950669296039, 39.984094), (116.3193713464802, 39.984094))) ], [ 1, 4, 4, Polygon(((116.31977738592074, 39.98463538592074), (116.31977738592074, 39.984770732400925), (116.31991273240094, 39.984770732400925), (116.31991273240094, 39.98463538592074), (116.31977738592074, 39.98463538592074))) ], [ 1, 3, 3, Polygon(((116.31964203944057, 39.984500039440555), (116.31964203944057, 39.98463538592074), (116.31977738592076, 39.98463538592074), (116.31977738592076, 39.984500039440555), (116.31964203944057, 39.984500039440555))) ], ], columns=['id', 'index_grid_lat', 'index_grid_lon', 'polygon'], index=[0, 2, 5, 7], ) move_df = _default_move_df() grid = Grid(move_df, 15) all_polygon = grid.create_all_polygons_to_all_point_on_grid(move_df) assert_frame_equal(all_polygon, expected)
def test_create_all_polygons_to_all_point_on_grid(): expected = DataFrame( data=[[ 1, 0, 0, Polygon(((116.319236, 39.984094), (116.319236, 39.98422933905151), (116.3193713390515, 39.98422933905151), (116.3193713390515, 39.984094), (116.319236, 39.984094))) ]], columns=['id', 'index_grid_lat', 'index_grid_lon', 'polygon'], index=[0], ) move_df = _default_move_df() move_df = move_df[move_df.index == 0] grid = Grid(move_df, 15) all_polygon = grid.create_all_polygons_to_all_point_on_grid(move_df) a = all_polygon.iloc[0]['polygon'].exterior.xy b = expected.iloc[0]['polygon'].exterior.xy assert_array_almost_equal(a, b)
def test_convert_two_index_grid_to_one(): grid = Grid(dict_grid={ 'lon_min_x': 116.319236, 'lat_min_y': 39.984094, 'grid_size_lat_y': 2, 'grid_size_lon_x': 2, 'cell_size_by_degree': 9.023098679070821e-05 }) df = DataFrame({ 'lat': {0: 39.984094, 1: 39.984198, 2: 39.984224, 3: 39.984224}, 'lon': {0: 116.319236, 1: 116.319322, 2: 116.319402, 3: 116.319402}, 'datetime': { 0: Timestamp('2008-10-23 05:53:05'), 1: Timestamp('2008-10-23 05:53:06'), 2: Timestamp('2008-10-23 05:53:11'), 3: Timestamp('2008-10-23 05:53:11') }, 'id': {0: 1, 1: 1, 2: 1, 3: 1}, 'index_grid_lat': {0: 0, 1: 1, 2: 1, 3: 1}, 'index_grid_lon': {0: 0, 1: 0, 2: 1, 3: 1}} ) expected = DataFrame({ 'lat': {0: 39.984094, 1: 39.984198, 2: 39.984224, 3: 39.984224}, 'lon': {0: 116.319236, 1: 116.319322, 2: 116.319402, 3: 116.319402}, 'datetime': { 0: Timestamp('2008-10-23 05:53:05'), 1: Timestamp('2008-10-23 05:53:06'), 2: Timestamp('2008-10-23 05:53:11'), 3: Timestamp('2008-10-23 05:53:11') }, 'id': {0: 1, 1: 1, 2: 1, 3: 1}, 'index_grid_lat': {0: 0, 1: 1, 2: 1, 3: 1}, 'index_grid_lon': {0: 0, 1: 0, 2: 1, 3: 1}, 'index_grid': {0: 0, 1: 1, 2: 3, 3: 3} }) grid.convert_two_index_grid_to_one(df) assert_frame_equal(df, expected)
def test_create_update_index_grid_feature(): move_df = _default_move_df() grid = Grid(move_df, 15) grid.create_update_index_grid_feature(data=move_df, unique_index=False) # Testing function with sorted data expected = DataFrame( data=[ [39.984094, 116.319236, Timestamp('2008-10-23 05:53:05'), 1, 0, 0], [39.984198, 116.319322, Timestamp('2008-10-23 05:53:06'), 1, 0, 0], [39.984224, 116.319402, Timestamp('2008-10-23 05:53:11'), 1, 0, 1], [39.984211, 116.319389, Timestamp('2008-10-23 05:53:16'), 1, 0, 1], [39.984217, 116.319422, Timestamp('2008-10-23 05:53:21'), 1, 0, 1], [39.984710, 116.319865, Timestamp('2008-10-23 05:53:23'), 1, 4, 4], [39.984674, 116.319810, Timestamp('2008-10-23 05:53:28'), 1, 4, 4], [39.984623, 116.319773, Timestamp('2008-10-23 05:53:33'), 1, 3, 3], [39.984606, 116.319732, Timestamp('2008-10-23 05:53:38'), 1, 3, 3], [39.984555, 116.319728, Timestamp('2008-10-23 05:53:43'), 1, 3, 3] ], columns=['lat', 'lon', 'datetime', 'id', 'index_grid_lat', 'index_grid_lon'], index=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], ) assert_frame_equal(move_df, expected) # Testing function with unsorted data unsorted_move_df = _default_move_df(unsorted_list_data) grid = Grid(move_df, 15) grid.create_update_index_grid_feature(data=unsorted_move_df, unique_index=False) expected = DataFrame( data=[ [39.984094, 116.319236, Timestamp('2008-10-23 05:53:05'), 1, 0, 0], [39.984198, 116.319322, Timestamp('2008-10-23 05:53:06'), 1, 0, 0], [39.984224, 116.319402, Timestamp('2008-10-23 05:53:11'), 1, 0, 1], [39.984211, 116.319389, Timestamp('2008-10-23 05:53:16'), 1, 0, 1], [39.984217, 116.319422, Timestamp('2008-10-23 05:53:21'), 1, 0, 1], [39.984710, 116.319865, Timestamp('2008-10-23 05:53:23'), 1, 4, 4], [39.984674, 116.319810, Timestamp('2008-10-23 05:53:28'), 1, 4, 4], [39.984623, 116.319773, Timestamp('2008-10-23 05:53:33'), 1, 3, 3], [39.984606, 116.319732, Timestamp('2008-10-23 05:53:38'), 1, 3, 3], [39.984555, 116.319728, Timestamp('2008-10-23 05:53:43'), 1, 3, 3] ], columns=['lat', 'lon', 'datetime', 'id', 'index_grid_lat', 'index_grid_lon'], index=[1, 0, 2, 9, 8, 3, 4, 5, 6, 7], ) assert_frame_equal(unsorted_move_df, expected)
def _default_grid(): return Grid(data=_default_move_df(), cell_size=15)