feat: improve D-InSAR pairing and distribution
This commit is contained in:
@@ -42,6 +42,9 @@ def get_pairing_request_from_form(
|
||||
time_baseline_max: int = Form(90),
|
||||
overlap_threshold: float = Form(0.5),
|
||||
spatial_baseline_max_meters: int = Form(3000),
|
||||
max_temporal_baseline_days: Optional[int] = Form(None),
|
||||
pair_footprint_overlap_min_ratio: Optional[float] = Form(None),
|
||||
footprint_center_distance_max_meters: Optional[int] = Form(None),
|
||||
coverage_diversity_penalty: float = Form(0.3),
|
||||
require_same_imaging_mode: bool = Form(True),
|
||||
require_same_polarization: bool = Form(True),
|
||||
@@ -72,6 +75,9 @@ def get_pairing_request_from_form(
|
||||
time_baseline_max=time_baseline_max,
|
||||
overlap_threshold=overlap_threshold,
|
||||
spatial_baseline_max_meters=spatial_baseline_max_meters,
|
||||
max_temporal_baseline_days=max_temporal_baseline_days,
|
||||
pair_footprint_overlap_min_ratio=pair_footprint_overlap_min_ratio,
|
||||
footprint_center_distance_max_meters=footprint_center_distance_max_meters,
|
||||
coverage_diversity_penalty=coverage_diversity_penalty,
|
||||
require_same_imaging_mode=require_same_imaging_mode,
|
||||
require_same_polarization=require_same_polarization,
|
||||
|
||||
@@ -266,6 +266,11 @@ async def create_dinsar_batch_endpoint(
|
||||
slave_polarization=slave.polarization,
|
||||
time_baseline_days=pair.time_baseline_days,
|
||||
spatial_baseline_meters=pair.spatial_baseline_meters,
|
||||
scene_center_distance_meters=(
|
||||
pair.scene_center_distance_meters
|
||||
if pair.scene_center_distance_meters is not None
|
||||
else pair.spatial_baseline_meters
|
||||
),
|
||||
status="PENDING",
|
||||
)
|
||||
db.add(item)
|
||||
|
||||
@@ -33,6 +33,8 @@ class CopyBatchRequest(BaseModel):
|
||||
batch_id: str = Field(max_length=COPY_BATCH_TEXT_MAX_LENGTH)
|
||||
dest_dir: str = Field(max_length=COPY_BATCH_TEXT_MAX_LENGTH)
|
||||
copy_statuses: Optional[List[str]] = None
|
||||
include_orbit_files: bool = False
|
||||
export_zip: bool = False
|
||||
|
||||
@field_validator("batch_id", "dest_dir", mode="before")
|
||||
@classmethod
|
||||
@@ -138,6 +140,8 @@ async def copy_dinsar_pairs_endpoint(
|
||||
"file_type": "DINSAR_PAIRS",
|
||||
"batch_id": request.batch_id,
|
||||
"copy_statuses": copy_statuses,
|
||||
"include_orbit_files": bool(request.include_orbit_files),
|
||||
"export_zip": bool(request.export_zip),
|
||||
}
|
||||
task_id = await task_service.create_task("COPY_DATA", f"D-InSAR 数据分发: {request.dest_dir}", params=params)
|
||||
|
||||
@@ -146,6 +150,8 @@ async def copy_dinsar_pairs_endpoint(
|
||||
"dest_dir": request.dest_dir,
|
||||
"batch_id": request.batch_id,
|
||||
"copy_statuses": copy_statuses,
|
||||
"include_orbit_files": bool(request.include_orbit_files),
|
||||
"export_zip": bool(request.export_zip),
|
||||
}
|
||||
await job_queue_service.create_job("COPY_DATA", payload=payload, task_id=task_id)
|
||||
await _add_operation_audit_log(
|
||||
@@ -158,6 +164,8 @@ async def copy_dinsar_pairs_endpoint(
|
||||
"batch_id": request.batch_id,
|
||||
"dest_dir": request.dest_dir,
|
||||
"copy_statuses": copy_statuses,
|
||||
"include_orbit_files": bool(request.include_orbit_files),
|
||||
"export_zip": bool(request.export_zip),
|
||||
},
|
||||
)
|
||||
await db.commit()
|
||||
|
||||
Reference in New Issue
Block a user