api /api/satellite/tiles/latlon

This commit is contained in:
Anton Martynenko
2025-11-19 13:12:26 +01:00
parent b66d3a0277
commit 5974b0c589
4 changed files with 35 additions and 66 deletions
+23 -40
View File
@@ -90,8 +90,8 @@ if (app.Environment.IsDevelopment())
app.UseHttpsRedirection();
app.MapGet("/api/satellite/tiles/latlon", GetSatelliteTilesByLatLon)
.WithOpenApi(op => new(op) { Summary = "Get satellite tiles by latitude and longitude coordinates" });
app.MapGet("/api/satellite/tiles/latlon", GetTileByLatLon)
.WithOpenApi(op => new(op) { Summary = "Get satellite tile by latitude and longitude coordinates" });
app.MapGet("/api/satellite/tiles/mgrs", GetSatelliteTilesByMgrs)
.WithOpenApi(op => new(op) { Summary = "Get satellite tiles by MGRS coordinates" });
@@ -101,9 +101,6 @@ app.MapPost("/api/satellite/upload", UploadImage)
.WithOpenApi(op => new(op) { Summary = "Upload image with metadata and save to /maps folder" })
.DisableAntiforgery();
app.MapPost("/api/satellite/tiles/download", DownloadSingleTile)
.WithOpenApi(op => new(op) { Summary = "TEMPORARY: Download single tile at specified coordinates" });
app.MapPost("/api/satellite/request", RequestRegion)
.WithOpenApi(op => new(op) { Summary = "Request tiles for a region" });
@@ -118,32 +115,17 @@ app.MapGet("/api/satellite/route/{id:guid}", GetRoute)
app.Run();
IResult GetSatelliteTilesByLatLon(double lat, double lon, double squareSideMeters)
{
return Results.Ok(new GetSatelliteTilesResponse());
}
IResult GetSatelliteTilesByMgrs(string mgrs, double squareSideMeters)
{
return Results.Ok(new GetSatelliteTilesResponse());
}
IResult UploadImage([FromForm] UploadImageRequest request)
{
return Results.Ok(new SaveResult { Success = false });
}
async Task<IResult> DownloadSingleTile([FromBody] DownloadTileRequest request, GoogleMapsDownloaderV2 downloader, ITileRepository tileRepository, ILogger<Program> logger)
async Task<IResult> GetTileByLatLon([FromQuery] double Latitude, [FromQuery] double Longitude, [FromQuery] int ZoomLevel, GoogleMapsDownloaderV2 downloader, ITileRepository tileRepository, ILogger<Program> logger)
{
try
{
logger.LogInformation("Downloading single tile at ({Lat}, {Lon}) with zoom level {Zoom}",
request.Latitude, request.Longitude, request.ZoomLevel);
logger.LogInformation("Getting tile at ({Lat}, {Lon}) with zoom level {Zoom}",
Latitude, Longitude, ZoomLevel);
var downloadedTile = await downloader.DownloadSingleTileAsync(
request.Latitude,
request.Longitude,
request.ZoomLevel);
Latitude,
Longitude,
ZoomLevel);
var now = DateTime.UtcNow;
var currentVersion = now.Year;
@@ -186,11 +168,21 @@ async Task<IResult> DownloadSingleTile([FromBody] DownloadTileRequest request, G
}
catch (Exception ex)
{
logger.LogError(ex, "Failed to download tile");
logger.LogError(ex, "Failed to get tile");
return Results.Problem(detail: ex.Message, statusCode: 500);
}
}
IResult GetSatelliteTilesByMgrs(string mgrs, double squareSideMeters)
{
return Results.Ok(new GetSatelliteTilesResponse());
}
IResult UploadImage([FromForm] UploadImageRequest request)
{
return Results.Ok(new SaveResult { Success = false });
}
async Task<IResult> RequestRegion([FromBody] RequestRegionRequest request, IRegionService regionService, ILogger<Program> logger)
{
try
@@ -329,18 +321,6 @@ public record SaveResult
public string? Exception { get; set; }
}
public record DownloadTileRequest
{
[Required]
public double Latitude { get; set; }
[Required]
public double Longitude { get; set; }
[Required]
public int ZoomLevel { get; set; } = 20;
}
public record DownloadTileResponse
{
public Guid Id { get; set; }
@@ -388,7 +368,10 @@ public class ParameterDescriptionFilter : IOperationFilter
["lat"] = "Latitude coordinate where image was captured",
["lon"] = "Longitude coordinate where image was captured",
["mgrs"] = "MGRS coordinate string",
["squareSideMeters"] = "Square side size in meters"
["squareSideMeters"] = "Square side size in meters",
["Latitude"] = "Latitude coordinate of the tile center",
["Longitude"] = "Longitude coordinate of the tile center",
["ZoomLevel"] = "Zoom level for the tile (higher values = more detail)"
};
foreach (var parameter in operation.Parameters)