Geographic separation between two locations.
Spreads captures across places, over an Earth of mean radius.
LocationDistanceFunction
Bases: DistanceFunction[Location]
Great-circle distance between locations, normalized by sigma_m.
Source code in capturegraph-lib/capturegraph/scheduling/distance/location.py
| class LocationDistanceFunction(DistanceFunction[cg.Location]):
"""Great-circle distance between locations, normalized by ``sigma_m``."""
def __init__(self, sigma_m: float = 50.0) -> None:
"""Normalize the great-circle distance by ``sigma_m`` meters."""
self.sigma_km = sigma_m / 1000.0
def extract(self, values: cg.Array) -> np.ndarray:
"""Each location's latitude and longitude, in radians."""
return np.radians(numeric(values, "latitude", "longitude"))
def pairwise(self, features_a: np.ndarray, features_b: np.ndarray) -> np.ndarray:
"""The great-circle distances between two sets of locations."""
arcs = haversine_radians(
features_a[:, 0],
features_a[:, 1],
features_b[:, 0],
features_b[:, 1],
)
return EARTH_RADIUS_KM * arcs / self.sigma_km
|
__init__(sigma_m=50.0)
Normalize the great-circle distance by sigma_m meters.
Source code in capturegraph-lib/capturegraph/scheduling/distance/location.py
| def __init__(self, sigma_m: float = 50.0) -> None:
"""Normalize the great-circle distance by ``sigma_m`` meters."""
self.sigma_km = sigma_m / 1000.0
|
Each location's latitude and longitude, in radians.
Source code in capturegraph-lib/capturegraph/scheduling/distance/location.py
| def extract(self, values: cg.Array) -> np.ndarray:
"""Each location's latitude and longitude, in radians."""
return np.radians(numeric(values, "latitude", "longitude"))
|
pairwise(features_a, features_b)
The great-circle distances between two sets of locations.
Source code in capturegraph-lib/capturegraph/scheduling/distance/location.py
| def pairwise(self, features_a: np.ndarray, features_b: np.ndarray) -> np.ndarray:
"""The great-circle distances between two sets of locations."""
arcs = haversine_radians(
features_a[:, 0],
features_a[:, 1],
features_b[:, 0],
features_b[:, 1],
)
return EARTH_RADIUS_KM * arcs / self.sigma_km
|
location(sigma_m=50.0)
Create a distance function based on geographic separation.
Parameters:
| Name |
Type |
Description |
Default |
sigma_m
|
float
|
Normalization factor in meters. The returned distance is
distance_m / sigma_m, so sessions within sigma_m have
distance < 1.0. Default is 50m.
|
50.0
|
Returns:
Source code in capturegraph-lib/capturegraph/scheduling/distance/location.py
| def location(sigma_m: float = 50.0) -> LocationDistanceFunction:
"""Create a distance function based on geographic separation.
Args:
sigma_m: Normalization factor in meters. The returned distance is
`distance_m / sigma_m`, so sessions within sigma_m have
distance < 1.0. Default is 50m.
Returns:
A distance function `(location_a, location_b) -> float`.
"""
return LocationDistanceFunction(sigma_m)
|