Skip to content

capturegraph.data.load.types.location #

Location - Geographic coordinate container for CaptureGraph data.#

A simple dataclass for geographic coordinates (longitude, latitude, altitude) that loads from PLocation JSON files.

Example
import capturegraph.data as cg

# Direct loading from JSON
location = cg.Location.from_json({"longitude": -76.480, "latitude": 42.445, "altitude": 261.5})
print(location.longitude)  # -76.480
print(location.latitude)   # 42.445
print(location.altitude)   # 261.5

# Vectorized access with List
sessions.location.latitude  # → List of all latitudes
Notes
  • PLocation JSON format: {"longitude": float, "latitude": float, "altitude": float}
  • altitude is the elevation in meters above sea level
  • longitude/latitude use WGS84 coordinate system (standard GPS coordinates)

Location dataclass #

A geographic location with longitude, latitude, and altitude.

Stores GPS coordinates captured by the CaptureGraph mobile app.

Attributes:

Name Type Description
longitude float

Longitude in degrees (-180 to 180), WGS84 coordinate system.

latitude float

Latitude in degrees (-90 to 90), WGS84 coordinate system.

altitude float

Altitude in meters above sea level.

Example
loc = Location(longitude=-76.480, latitude=42.445, altitude=261.5)
loc.longitude  # -76.480
loc.latitude   # 42.445
Source code in capturegraph-lib/capturegraph/data/load/types/location.py
@dataclass
class Location:
    """A geographic location with longitude, latitude, and altitude.

    Stores GPS coordinates captured by the CaptureGraph mobile app.

    Attributes:
        longitude: Longitude in degrees (-180 to 180), WGS84 coordinate system.
        latitude: Latitude in degrees (-90 to 90), WGS84 coordinate system.
        altitude: Altitude in meters above sea level.

    Example:
        ```python
        loc = Location(longitude=-76.480, latitude=42.445, altitude=261.5)
        loc.longitude  # -76.480
        loc.latitude   # 42.445
        ```
    """

    longitude: float
    latitude: float
    altitude: float = 0.0
    heading: float = 0.0

    @classmethod
    def from_json(cls, data: dict) -> "Location":
        """Create a Location from a PLocation JSON dict.

        Args:
            data: Dict with 'longitude', 'latitude', and 'altitude' keys.

        Returns:
            Location instance with the coordinates.

        Example:
            ```python
            data = {"longitude": -76.480, "latitude": 42.445, "altitude": 261.5}
            Location.from_json(data)  # Location(longitude=-76.480, latitude=42.445, altitude=261.5)
            ```
        """
        return cls(
            longitude=data["longitude"],
            latitude=data["latitude"],
            altitude=data.get("altitude", 0.0),
            heading=data.get("heading", 0.0),
        )

    def to_json(self) -> dict:
        """Convert to PLocation JSON dict.

        Returns:
            Dict with 'longitude', 'latitude', and 'altitude' keys.

        Example:
            ```python
            loc = Location(longitude=-76.480, latitude=42.445, altitude=261.5)
            loc.to_json()  # {'longitude': -76.480, 'latitude': 42.445, 'altitude': 261.5}
            ```
        """
        return {
            "longitude": self.longitude,
            "latitude": self.latitude,
            "altitude": self.altitude,
            "heading": self.heading,
        }

    def __repr__(self) -> str:
        return f"Location(lat={self.latitude:.6f}, lon={self.longitude:.6f}, alt={self.altitude:.1f}m, heading={self.heading:.1f}°)"

from_json(data) classmethod #

Create a Location from a PLocation JSON dict.

Parameters:

Name Type Description Default
data dict

Dict with 'longitude', 'latitude', and 'altitude' keys.

required

Returns:

Type Description
Location

Location instance with the coordinates.

Example
data = {"longitude": -76.480, "latitude": 42.445, "altitude": 261.5}
Location.from_json(data)  # Location(longitude=-76.480, latitude=42.445, altitude=261.5)
Source code in capturegraph-lib/capturegraph/data/load/types/location.py
@classmethod
def from_json(cls, data: dict) -> "Location":
    """Create a Location from a PLocation JSON dict.

    Args:
        data: Dict with 'longitude', 'latitude', and 'altitude' keys.

    Returns:
        Location instance with the coordinates.

    Example:
        ```python
        data = {"longitude": -76.480, "latitude": 42.445, "altitude": 261.5}
        Location.from_json(data)  # Location(longitude=-76.480, latitude=42.445, altitude=261.5)
        ```
    """
    return cls(
        longitude=data["longitude"],
        latitude=data["latitude"],
        altitude=data.get("altitude", 0.0),
        heading=data.get("heading", 0.0),
    )

to_json() #

Convert to PLocation JSON dict.

Returns:

Type Description
dict

Dict with 'longitude', 'latitude', and 'altitude' keys.

Example
loc = Location(longitude=-76.480, latitude=42.445, altitude=261.5)
loc.to_json()  # {'longitude': -76.480, 'latitude': 42.445, 'altitude': 261.5}
Source code in capturegraph-lib/capturegraph/data/load/types/location.py
def to_json(self) -> dict:
    """Convert to PLocation JSON dict.

    Returns:
        Dict with 'longitude', 'latitude', and 'altitude' keys.

    Example:
        ```python
        loc = Location(longitude=-76.480, latitude=42.445, altitude=261.5)
        loc.to_json()  # {'longitude': -76.480, 'latitude': 42.445, 'altitude': 261.5}
        ```
    """
    return {
        "longitude": self.longitude,
        "latitude": self.latitude,
        "altitude": self.altitude,
        "heading": self.heading,
    }