Source code for faninsar.datasets.gacos
"""A module for managing the data of GACOS product."""
from __future__ import annotations
from pathlib import Path
from typing import TYPE_CHECKING
import pandas as pd
from faninsar.datasets.base import ApsDataset, ApsPairs
if TYPE_CHECKING:
from faninsar._core.sar.pairs import Pairs
from faninsar.query.query import BoundingBox, Points
[docs]
class GACOS(ApsDataset):
"""A dataset manages the data of GACOS product.
`GACOS <http://www.gacos.net/>`_ (Generic Atmospheric Correction Online
Service for InSAR) is a online service for processing zenith total delay
maps to correct Atmospheric delays. This class is used to manage the data
of GACOS product.
Examples
--------
>>> from faninsar.datasets import GACOS
>>> from faninsar.datasets import HyP3
>>> from faninsar.query import BoundingBox, Points
>>> hyp3_dir = Path("/Volumes/Data/Hyp3/descending_roi")
>>> home_dir = Path("/Volumes/Data/Hyp3/descending_gacos")
>>> out_dir = Path("/Volumes/Data/Hyp3/descending_gacos_pairs")
prepare reference points and roi (region of interest)
>>> ref_points_file = Path("/Volumes/Data/ARPs.geojson")
>>> ref_points = Points.from_shapefile(ref_points_file)
>>> roi = BoundingBox(98.57726618, 38.52546262, 99.41100273, 39.13802703, crs=4326)
initialize HyP3
>>> ds_hyp3 = HyP3(hyp3_dir)
using HyP3 crs and res as the output crs and res of GACOS dataset
>>> gacos = GACOS(home_dir, crs=ds_hyp3.crs, res=ds_hyp3.res, nodata=np.nan)
using reference points, roi and HyP3 pairs to generate gacos pair files
>>> gacos.to_pair_files(out_dir, ds_hyp3.pairs, ref_points, roi)
"""
#: This expression is used to find the GACOS files.
pattern = "*.ztd.tif"
[docs]
@classmethod
def parse_dates(cls, paths: list[Path]) -> pd.DatetimeIndex:
"""Parse dates from the paths of GACOS files."""
dates_str = [Path(i).stem.split(".")[0] for i in paths]
return pd.to_datetime(dates_str, format="%Y%m%d")
[docs]
def to_pair_files(
self,
out_dir: str | Path,
pairs: Pairs,
ref_points: Points,
roi: BoundingBox | None = None,
overwrite: bool = False,
prefix: str = "GACOS",
) -> None:
"""Generate aps-pair files for given pairs and reference points.
Parameters
----------
out_dir : str or Path
path to the directory to save the aps-pair files
pairs : Pairs
pairs to generate aps pair files
ref_points : Points
reference points which values are subtracted for all aps pair files
roi : BoundingBox, optional
region of interest to save. If None, the roi of the dataset will be used.
overwrite : bool, optional
if True, overwrite existing files, default: False
prefix : str, optional
prefix of the aps-pair files, default: "GACOS"
"""
super().to_pair_files(out_dir, pairs, ref_points, roi, overwrite, prefix)
[docs]
class GACOSPairs(ApsPairs):
"""A dataset manages the data of GACOS pairs."""
#: This expression is used to find the GACOSPairs files.
pattern = "*.tif"