コード例 #1
0
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)
コード例 #2
0
    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)
コード例 #3
0
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)
コード例 #4
0
ファイル: test_core_grid.py プロジェクト: InsightLab/PyMove
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)
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
ファイル: test_core_grid.py プロジェクト: InsightLab/PyMove
def _default_grid():
    return Grid(data=_default_move_df(), cell_size=15)