git clone https://github.com/vibeforge1111/vibeship-spawner-skills
space/space-data-processing/skill.yamlid: 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"