Vibeship-spawner-skills space-data-processing

id: space-data-processing

install
source · Clone the upstream repo
git clone https://github.com/vibeforge1111/vibeship-spawner-skills
manifest: space/space-data-processing/skill.yaml
source content

id: space-data-processing name: Space Data Processing category: space version: 1.0.0 description: > Use when processing satellite imagery, hyperspectral data, SAR imagery, or applying machine learning to remote sensing data for Earth observation.

triggers:

  • "satellite imagery"
  • "remote sensing"
  • "Earth observation"
  • "optical imagery"
  • "hyperspectral"
  • "SAR"
  • "InSAR"
  • "NDVI"
  • "atmospheric correction"
  • "radiometric calibration"
  • "land cover classification"
  • "change detection"
  • "pan-sharpening"
  • "spectral unmixing"

provides:

  • name: optical_processing description: Radiometric calibration and atmospheric correction
  • name: hyperspectral_analysis description: Spectral unmixing and material identification
  • name: sar_processing description: SAR calibration, speckle filtering, and InSAR
  • name: ml_classification description: Machine learning for land cover and change detection

knowledge_base: processing_pipeline: levels: level_0: "Raw DN values from sensor" level_1: "Radiometrically calibrated (radiance/reflectance)" level_2: "Geometrically and atmospherically corrected" level_3: "Derived products (NDVI, classification, etc.)" flow: | Raw Data → Radiometric Cal → Atmospheric Correction → Geometric Correction → Analysis → Products

optical_processing: radiometric_calibration: dn_to_radiance: "L = gain * DN + offset" radiance_to_reflectance: "rho = (pi * L * d^2) / (E_sun * cos(theta))" factors: - "Sensor gain and offset" - "Sun elevation angle" - "Earth-Sun distance" atmospheric_correction: methods: dark_object_subtraction: "Simple, assumes darkest pixel = 0" dos_improved: "DOS with Rayleigh scattering estimate" "6S": "Full radiative transfer model" flaash: "Based on MODTRAN" purpose: "Remove scattering and absorption effects" geometric_correction: orthorectification: "Remove terrain distortion" georeferencing: "Assign map coordinates" inputs_needed: - "DEM" - "Ground control points (GCPs)" - "Sensor model (RPCs)"

spectral_indices: vegetation: ndvi: formula: "(NIR - Red) / (NIR + Red)" range: "-1 to 1 (>0.3 vegetation)" use: "Vegetation health and density" evi: formula: "2.5 * (NIR - Red) / (NIR + 6Red - 7.5Blue + 1)" use: "High biomass areas" water: ndwi: formula: "(Green - NIR) / (Green + NIR)" use: "Water body detection" mndwi: formula: "(Green - SWIR) / (Green + SWIR)" use: "Urban water extraction" built_up: ndbi: formula: "(SWIR - NIR) / (SWIR + NIR)" use: "Urban area mapping" fire: nbr: formula: "(NIR - SWIR2) / (NIR + SWIR2)" use: "Burn severity mapping"

hyperspectral: preprocessing: bad_band_removal: water_vapor: "1350-1450 nm, 1800-1950 nm" co2: "2000-2100 nm" noise_reduction: mnf: "Minimum Noise Fraction transform" pca: "Principal Component Analysis" continuum_removal: "Normalize to compare spectral shape" analysis: spectral_unmixing: endmember_extraction: "N-FINDR, PPI, VCA" unmixing_methods: - "FCLS (Fully Constrained Least Squares)" - "NCLS (Non-negative Constrained)" - "Sparse unmixing" material_identification: sam: "Spectral Angle Mapper (angle-based)" sff: "Spectral Feature Fitting" correlation: "Cross-correlation with library"

sar_processing: calibration: sigma0: "Backscatter coefficient (linear)" sigma0_db: "10 * log10(sigma0)" gamma0: "sigma0 / cos(incidence_angle)" speckle_filtering: cause: "Coherent imaging creates multiplicative noise" filters: lee: "Adaptive based on local statistics" frost: "Exponential damping" gamma_map: "Maximum a posteriori" multilooking: "Average multiple looks, reduces resolution" geometric: range_doppler: "Standard geocoding approach" terrain_correction: "Remove foreshortening, layover, shadow" insar: interferogram: "slc1 * conj(slc2)" coherence: "Correlation magnitude (0-1)" phase_unwrapping: "Convert wrapped to absolute phase" applications: - "DEM generation" - "Ground subsidence" - "Glacier flow"

machine_learning: classification: traditional: - "Random Forest" - "SVM" - "Gradient Boosting" deep_learning: - "U-Net (segmentation)" - "ResNet (classification)" - "DeepLab" features: spectral: "Band values" indices: "NDVI, NDWI, etc." texture: "GLCM statistics" change_detection: methods: image_differencing: "Threshold on difference image" cva: "Change Vector Analysis (magnitude + direction)" deep_cd: "Siamese networks" considerations: - "Radiometric normalization" - "Seasonal differences vs real change" - "Cloud masking"

patterns:

  • name: optical_pipeline steps:

    • "Quality assessment (cloud cover, gaps)"
    • "Radiometric calibration to TOA reflectance"
    • "Atmospheric correction to surface reflectance"
    • "Geometric correction / orthorectification"
    • "Cloud and shadow masking"
    • "Calculate spectral indices"
    • "Analysis / classification"
  • name: sar_pipeline steps:

    • "Apply orbit file"
    • "Radiometric calibration"
    • "Speckle filtering"
    • "Terrain correction"
    • "Convert to dB"
    • "Analysis"
  • name: change_detection_pipeline steps:

    • "Select bi-temporal images"
    • "Co-register to common geometry"
    • "Radiometric normalization"
    • "Apply change detection method"
    • "Threshold to binary change"
    • "Post-processing (morphology, filtering)"
    • "Accuracy assessment"

anti_patterns:

  • name: ignoring_atmosphere problem: "Surface reflectance analysis inaccurate" solution: "Apply atmospheric correction before surface analysis"
  • name: training_single_scene problem: "Classifier overfits to one acquisition" solution: "Use diverse training data across scenes/dates"
  • name: no_cloud_mask problem: "False detections in clouds/shadows" solution: "Always mask clouds and shadows"
  • name: sar_without_speckle problem: "Noise overwhelms signal" solution: "Apply appropriate speckle filter"
  • name: mixed_sensors_no_harmonization problem: "Inconsistent results between sensors" solution: "Harmonize radiometry between different sensors"

checklist: preprocessing: - "Data quality assessment performed" - "Cloud/shadow masking applied" - "Radiometric calibration complete" - "Atmospheric correction applied (if analyzing surface)" - "Geometric correction / orthorectification done" analysis: - "Appropriate indices calculated" - "Training data quality verified" - "Validation / accuracy assessment performed" - "Results filtered for noise" products: - "Metadata preserved" - "Projection defined" - "Units documented" - "Uncertainty characterized"