Quickstart

Basic Usage

Simple Example

from sargeom.coordinates import Cartographic

# Create coordinate in Paris
paris = Cartographic(longitude=2.3522, latitude=48.8566, height=35.0)

# Convert to ECEF and back
paris_ecef = paris.to_ecef()
paris_geo = paris_ecef.to_cartographic()

Multiple Points

import numpy as np

# Multiple cities
cities = Cartographic(
    longitude=[2.3522, -0.1276, 139.6917],  # Paris, London, Tokyo
    latitude=[48.8566, 51.5074, 35.6895],
    height=[35.0, 11.0, 40.0]
)

# Convert all to ECEF
cities_ecef = cities.to_ecef()

Local Coordinate Systems

# Reference point (Paris)
ref = Cartographic(longitude=2.3522, latitude=48.8566, height=35.0)

# Target point (London)
london = Cartographic(longitude=-0.1276, latitude=51.5074, height=11.0)
london_ecef = london.to_ecef()

# Convert to local ENU relative to Paris
london_enu = london_ecef.to_enu(origin=ref)

Trajectories

from sargeom import Trajectory
import numpy as np

# Time vector
t = np.linspace(0, 60, 100)  # 60 seconds, 100 points

# Aircraft trajectory
trajectory_coords = Cartographic(
    longitude=2.0 + 0.01 * t,           # Moving east
    latitude=48.0 + 0.005 * t,          # Moving north
    height=1000 + 10 * np.sin(0.1 * t)  # Varying altitude
)

# Create trajectory
traj = Trajectory(
   timestamps=t,
   positions=trajectory_coords
)

Distance Calculations

from sargeom.coordinates import Cartesian3

# Two points
point1 = Cartographic(longitude=2.3522, latitude=48.8566, height=0)
point2 = Cartographic(longitude=-0.1276, latitude=51.5074, height=0)

# Convert to ECEF for distance calculation
p1_ecef = point1.to_ecef()
p2_ecef = point2.to_ecef()

# Euclidean distance
distance = Cartesian3.distance(p2_ecef, p1_ecef)
print(f"Distance: {distance/1000:.1f} km")

Advanced Usage

Large Dataset Processing

Efficient processing of large coordinate arrays:

# Generate large dataset
n_points = 100000

# Random coordinates
coords = Cartographic(
    longitude=np.random.uniform(-180, 180, n_points),
    latitude=np.random.uniform(-90, 90, n_points),
    height=np.random.uniform(0, 10000, n_points)
)

# Batch conversion (much faster than individual conversions)
ecef_coords = coords.to_ecef()

Working with Grids

# Create a grid of coordinates
lon_grid, lat_grid = np.meshgrid(
    np.linspace(2.0, 3.0, 10),   # Longitude range
    np.linspace(48.0, 49.0, 10)  # Latitude range
)

# Flatten for coordinate creation
grid_coords = Cartographic(
    longitude=lon_grid.flatten(),
    latitude=lat_grid.flatten(),
    height=np.zeros(100)  # on IAG GRS 80 ellipsoid
)

# Convert all points to ECEF at once
grid_ecef = grid_coords.to_ecef()

Utility Functions

from sargeom.coordinates.utils import negativePiToPi

# Wrap angles to [-π, π] range
angles = np.array([3*np.pi, -2*np.pi, np.pi/2])
wrapped = negativePiToPi(angles)

Next Steps

  • Explore the Examples for more detailed use cases

  • Check the API Reference for complete function documentation