SKIP TO CONTENT
Fjärrstridsgrupp Alfa
SV UK EDITION 2026-Q2 ACTIVE
UNCLASSIFIED
FSG-A // INTERACTIVE TOOLS

Ground Coverage Calculator

Interactive calculator for ground sampling distance, detection capability at NATO NIIRS levels, coverage rate per platform, and survey time estimation for drone ISR missions.

▶ INTERACTIVE TOOL LISA 26
Author: Tiny

Interactive: Ground Coverage Calculator

Lisa 26 — Ground Coverage & GSD Calculator

Calculate ground sampling distance, detection capability, and coverage rate for different camera and platform combinations.

Camera
Platform
Altitude AGL
80m
⬇ Download Lisa 26 Coverage Calculator (React)
.jsx — React component — 13KB

Understanding Ground Sampling Distance for Military ISR

Ground sampling distance is the physical size of one pixel projected onto the ground surface. It determines what the camera can detect, classify, and identify. A GSD of 3 centimeters per pixel means each pixel covers a 3×3 centimeter area on the ground — sufficient to read vehicle markings and classify specific vehicle models. A GSD of 50 centimeters per pixel covers a 50×50 centimeter area — enough to detect vehicles and personnel but not to distinguish a T-72 from a T-80. The formula is straightforward: GSD = (altitude × sensor width) / (focal length × pixel count). Every component matters: higher altitude increases GSD (worse resolution), longer focal length decreases GSD (better resolution), and larger sensors with more pixels decrease GSD.

NATO NIIRS Detection Capability Levels

The National Imagery Interpretability Rating Scale defines nine levels of image quality for intelligence purposes. NIIRS 3 allows vehicle detection (confirming something vehicle-sized exists). NIIRS 5 allows vehicle classification (distinguishing tank from truck from APC). NIIRS 6 allows vehicle identification (distinguishing T-72B from T-72B3 from T-80BVM based on reactive armor configuration). NIIRS 7 allows personnel activity recognition (determining whether soldiers are digging, loading, or patrolling). NIIRS 8 allows reading equipment markings and license plates. Each NIIRS level requires approximately half the GSD of the previous level — going from NIIRS 3 to NIIRS 6 requires roughly 8× better resolution, which means either flying 8× lower or using 8× longer focal length.

Camera Selection for Fischer 26 and FPV Platforms

The calculator includes four camera configurations used across FSG-A platforms. The Arducam IMX477 with 6mm lens provides 55.3° horizontal field of view with 12.3 megapixels — the default choice for most ISR missions, offering a balance between coverage width and resolution. The 3.6mm wide-angle variant expands the field of view to 82.1° for maximum area coverage at the cost of resolution — useful for Fischer 26 persistent surveillance where detecting any movement matters more than identifying specific vehicle types. The 16mm telephoto narrows to 22.2° but provides identification-grade resolution from higher altitudes — the choice for high-altitude ISR where the drone must stay above air defense engagement envelopes. The Infiray T2S+ thermal camera operates in long-wave infrared with only 256×192 pixels but detects engine heat signatures regardless of camouflage, darkness, or weather conditions.

Coverage Rate and Survey Planning

Coverage rate depends on platform speed, sensor swath width, and required image overlap. The Fischer 26 at 85 km/h with the IMX477 6mm lens covers approximately 515 hectares per hour in a single pass — equivalent to mapping a 2×2 kilometer area in 48 minutes using parallel strips. The FPV 5-inch at 40 km/h covers roughly 228 hectares per hour but has only 8 minutes of endurance, limiting a single mission to approximately 31 hectares. For pre-strike terrain mapping, the Fischer 26 is the only platform with sufficient endurance and coverage rate to build a useful digital elevation model of the operating area before committing FPV strike drones.

Implementation

# Ground Sampling Distance Calculator
# pip install --break-system-packages tabulate
import math

def calculate_gsd(altitude_m, focal_mm, sensor_w_mm, pixels_x):
    """GSD in cm/px at given altitude."""
    gsd_m = (altitude_m * sensor_w_mm) / (focal_mm * pixels_x)
    return round(gsd_m * 100, 2)  # cm/px

# IMX477 sensor: 6.287mm × 4.712mm, 4056×3040 pixels
cameras = [
    ("IMX477 6mm",   6.287, 4056, 6.0),
    ("IMX477 3.6mm", 6.287, 4056, 3.6),
    ("IMX477 16mm",  6.287, 4056, 16.0),
    ("T2S+ thermal", 4.608, 256,  6.8),
]
for name, sw, px, fl in cameras:
    gsd = calculate_gsd(120, fl, sw, px)
    niirs = "ID" if gsd <= 12 else "CLASS" if gsd <= 30 else "DETECT"
    print(f"{name:18s} @ 120m: {gsd:6.1f} cm/px → {niirs}")

Sources

Related Chapters