initial structure implemented

docs -> _docs
This commit is contained in:
Oleksandr Bezdieniezhnykh
2025-12-01 14:20:56 +02:00
parent 9134c5db06
commit abc26d5c20
360 changed files with 3881 additions and 101 deletions
@@ -0,0 +1,5 @@
from .base import CoordinateTransformerBase
from .coordinate_transformer import CoordinateTransformer
__all__ = ["CoordinateTransformerBase", "CoordinateTransformer"]
+56
View File
@@ -0,0 +1,56 @@
from abc import ABC, abstractmethod
import numpy as np
from models.core import GPSPoint
from models.satellite import TileBounds
class CoordinateTransformerBase(ABC):
@abstractmethod
def gps_to_local(
self, gps: GPSPoint, origin: GPSPoint
) -> tuple[float, float]:
pass
@abstractmethod
def local_to_gps(
self, local: tuple[float, float], origin: GPSPoint
) -> GPSPoint:
pass
@abstractmethod
def pixel_to_gps(
self,
pixel: tuple[float, float],
homography: np.ndarray,
tile_bounds: TileBounds,
) -> GPSPoint:
pass
@abstractmethod
def gps_to_pixel(
self,
gps: GPSPoint,
homography: np.ndarray,
tile_bounds: TileBounds,
) -> tuple[float, float]:
pass
@abstractmethod
def compute_distance_meters(
self, gps1: GPSPoint, gps2: GPSPoint
) -> float:
pass
@abstractmethod
def compute_bearing(
self, from_gps: GPSPoint, to_gps: GPSPoint
) -> float:
pass
@abstractmethod
def offset_gps(
self, gps: GPSPoint, distance_m: float, bearing_deg: float
) -> GPSPoint:
pass
@@ -0,0 +1,49 @@
import numpy as np
from .base import CoordinateTransformerBase
from models.core import GPSPoint
from models.satellite import TileBounds
class CoordinateTransformer(CoordinateTransformerBase):
def gps_to_local(
self, gps: GPSPoint, origin: GPSPoint
) -> tuple[float, float]:
raise NotImplementedError
def local_to_gps(
self, local: tuple[float, float], origin: GPSPoint
) -> GPSPoint:
raise NotImplementedError
def pixel_to_gps(
self,
pixel: tuple[float, float],
homography: np.ndarray,
tile_bounds: TileBounds,
) -> GPSPoint:
raise NotImplementedError
def gps_to_pixel(
self,
gps: GPSPoint,
homography: np.ndarray,
tile_bounds: TileBounds,
) -> tuple[float, float]:
raise NotImplementedError
def compute_distance_meters(
self, gps1: GPSPoint, gps2: GPSPoint
) -> float:
raise NotImplementedError
def compute_bearing(
self, from_gps: GPSPoint, to_gps: GPSPoint
) -> float:
raise NotImplementedError
def offset_gps(
self, gps: GPSPoint, distance_m: float, bearing_deg: float
) -> GPSPoint:
raise NotImplementedError