Ejemplo n.º 1
0
def test_pairs(mock_server, test_client_config):
    mock_server.reset()
    client = Dispatcher(test_client_config)

    res, inv = client.distance_pairs(origins=np.array([[37.1, -88.1],
                                                       [37.2, -88.2],
                                                       [42.5, -97.5],
                                                       [37.1, -88.1],
                                                       [37.1, -88.1]]),
                                     destinations=np.array([[37.1, -88.1],
                                                            [45.5, -97.5],
                                                            [37.1, -86.1],
                                                            [41.9, -97.2],
                                                            [37.1, -88.1]]),
                                     provider='google',
                                     return_inverse=True)

    assert res.isnull().sum().sum() == 0

    # np.unique will end up sorting index
    pd.testing.assert_index_equal(
        res.index,
        pd.MultiIndex.from_tuples([
            (37.1, -88.1, 37.1, -88.1),
            (37.1, -88.1, 41.9, -97.2),
            (37.2, -88.2, 45.5, -97.5),
            (42.5, -97.5, 37.1, -86.1),
        ],
                                  names=['olat', 'olon', 'dlat', 'dlon']))

    expected_meters = [0., 1143293.274236, 1385191.366365, 1401763.032474]

    np.testing.assert_array_almost_equal(res.meters.values, expected_meters)

    # restore index with inverse key
    # should be origin-major traversal
    pd.testing.assert_index_equal(
        res.take(inv.flat).index,
        pd.MultiIndex.from_tuples([
            (37.1, -88.1, 37.1, -88.1),
            (37.2, -88.2, 45.5, -97.5),
            (42.5, -97.5, 37.1, -86.1),
            (37.1, -88.1, 41.9, -97.2),
            (37.1, -88.1, 37.1, -88.1),
        ],
                                  names=['olat', 'olon', 'dlat', 'dlon']))
Ejemplo n.º 2
0
def main():
    client = Dispatcher()

    s = time.time()

    res = client.distance_pairs(origins=np.array([(34.1165, -92.2353),
                                                  (34.1368, -94.5823),
                                                  (32.2665, -92.0353),
                                                  (40.3283, -88.3080)]),
                                destinations=np.array([(34.1368, -94.5823),
                                                       (36.3408, -96.0384),
                                                       (32.2834, -92.0286),
                                                       (40.3468, -88.2936)]),
                                max_meters=200 * METERS_PER_MILE,
                                provider='google')

    t = time.time() - s
    prettyprinter.pprint(res)
    print('Duration: %dms' % (t * 1000))