Skip to the content.

Visibility and Ceiling Restrictions

Overview

Visibility and cloud ceiling minimums are critical safety factors for flight training operations. These restrictions ensure adequate visual reference and room for maneuvering during training flights.


Visibility Restrictions

Visibility Threshold: 3 Statute Miles

Threshold: Visibility < 3 statute miles (SM)
Effect: Triggers “All Flights Restricted” status
Display: “👁️ Visibility X.X SM”

Rationale

Minimum VFR Requirements: While basic VFR requires 3 SM visibility in Class E airspace below 10,000 ft, training operations require clear visual conditions for:

Safety Margin: When visibility drops below 3 SM, conditions are marginal for safe training operations regardless of pilot experience level.

Implementation

if (data.visibility !== null && data.visibility < 3) {
    restrictingFactors.push(`👁️ Visibility ${data.visibility.toFixed(1)} SM`);
    status = 'all-restricted';
}

Data Source

Visibility is reported in statute miles (SM) in METAR reports:


Cloud Ceiling Restrictions

Ceiling Threshold: 1,500 feet AGL

Threshold: Cloud ceiling < 1,500 feet Above Ground Level (AGL)
Effect: Triggers “All Flights Restricted” status
Display: “☁️ Ceiling XXXX ft”

Rationale

Pattern Operations: A 1,500 ft ceiling provides:

Training Requirements: Low ceilings limit:

VFR Cloud Clearances: Basic VFR requires 500 ft below clouds in Class E airspace below 10,000 ft. A 1,500 ft ceiling provides necessary safety margin for pattern operations.


Ceiling Calculation

Definition

Cloud ceiling is the height of the lowest broken (BKN) or overcast (OVC) cloud layer above ground level.

Calculation Method

  1. Parse METAR cloud layers: Look for BKN or OVC layers
  2. Extract height: Height reported in hundreds of feet MSL
  3. Convert to AGL: Subtract airport elevation
const ceilingCloud = clouds.find(c => c.startsWith('BKN') || c.startsWith('OVC'));
if (ceilingCloud) {
    const heightMSL = parseInt(ceilingCloud.substring(3)) * 100; // feet MSL
    const ceilingAGL = heightMSL - elevation; // feet AGL
}

Airport Elevations

Airport Elevation (MSL) Code
St. Louis Downtown (KCPS) 413 feet KCPS
Lambert International (KSTL) 605 feet KSTL

Example Calculations

Example 1: KCPS with BKN012

Example 2: KSTL with OVC025

Example 3: Clear Skies


Cloud Layer Types

Not Considered Ceilings

Considered Ceilings

Rationale: Only BKN and OVC layers significantly restrict vertical flight operations and visual reference.


Implementation Details

Code Locations

Ceiling calculations are performed in:

Parsing Logic

const ceilingCloud = (() => {
    const clouds = data.clouds ?? [];
    
    // Look for BKN or OVC layers
    const str = clouds.find(c => 
        typeof c === 'string' && 
        (c.startsWith('BKN') || c.startsWith('OVC'))
    );
    
    if (str) return str;
    
    // Handle numeric ceiling values
    let num = clouds.find(c => typeof c === 'number');
    if (num == null) return undefined;
    
    // Treat sentinel values like 99999 as no ceiling
    if (num >= 99999) return undefined;
    
    const hundreds = Math.max(1, Math.round(num / 100));
    return 'BKN' + String(hundreds).padStart(3, '0');
})();

const ceiling = ceilingCloud 
    ? parseInt(ceilingCloud.substring(3)) * 100 - elevation 
    : Infinity;

Special Conditions

Indefinite Ceiling (Vertical Visibility)

When visibility is restricted by precipitation or obscuration:

Multiple Cloud Layers

When multiple BKN or OVC layers exist:

Automated vs Manual Reports


Testing Scenarios

The following scenarios are demonstrated in the demo page:

  1. Low Ceiling (Scenario 5): 1,200 ft ceiling → All Restricted
  2. Poor Visibility (Scenario 6): 2.0 SM visibility → All Restricted
  3. Multiple Factors (Scenario 7): 1,800 ft ceiling (not restricting) with winds → Commercial Only

Display Examples

Ceiling Restriction:

All Flights Restricted
Restricting factors: ☁️ Ceiling 1200 ft

Visibility Restriction:

All Flights Restricted
Restricting factors: 👁️ Visibility 2.0 SM

Both Factors:

All Flights Restricted
Restricting factors: ☁️ Ceiling 1100 ft, 👁️ Visibility 1.5 SM

Related Documentation: