Stahovani elevace

This commit is contained in:
Michal Kváček
2024-07-29 06:23:06 +02:00
parent 10bc0847b6
commit 9e6b0b574c
5 changed files with 58 additions and 98 deletions
+15 -20
View File
@@ -1,30 +1,25 @@
from aiohttp import ClientResponseError
from sqlalchemy import select
from database import models
from database.transaction import get_session
from decorators.retryable import retryable
from external.elevation import elevation_api
from external.gpx_parser import GPXParser
from paths import FLIGHT_GPX_TRACK_PATH
from external.elevation import elevation_api, update_track_points_elevation
@retryable
async def add_terrain_elevation_to_flight(flight_id: int, gpx_filename: str):
gpx_parser = GPXParser(f"{FLIGHT_GPX_TRACK_PATH}/{gpx_filename}")
coordinates = await gpx_parser.get_coordinates_all()
try:
elevation = await elevation_api.get_elevation_for_points(coordinates)
tree_with_elevation = gpx_parser.add_terrain_elevation(elevation)
output_name = f"terrain_{gpx_filename}"
gpx_parser.write(tree_with_elevation, f"{FLIGHT_GPX_TRACK_PATH}/{output_name}")
async with get_session() as db:
await models.Flight.update(
db, {"gpx_track_filename": output_name, "has_terrain_elevation": True},
id=flight_id
)
except ClientResponseError as e:
print(e)
async def add_terrain_elevation_to_flight(flight_id: int):
async with get_session() as db:
track_points = (
await db.scalars(
select(models.TrackPoint)
.join(models.TrackPoint.track)
.join(models.Track.flight)
.filter(models.Flight.id == flight_id))
).all()
try:
await update_track_points_elevation(db, track_points)
except ClientResponseError as e:
print(e)
@retryable