Module 4/5 · Weeks 10–12 · 27 h

SORA and the Specific category

UAT 401 UAS Regulations, Safety and Risk Management

About 90 minDraft, awaiting reviewLast updated 28 September 2026

Lesson

By the end of this module you will be able to

  1. Define flight geography, contingency volume, operational volume and ground risk buffer under SORA 2.5
  2. Compute the area used for ground risk assessment from speed, reaction time and height
  3. Find the maximum population density in the footprint and choose the iGRC table row
  4. Compare the effect of mitigations with redesigning the area on SAIL

Prerequisites: UAT 401 Modules 1–3 · UAT 312 Module 5 (the SORA 2.5 steps)

Why this matters

UAT 312 walked through the ten steps of SORA 2.5 and read the tables for iGRC and SAIL in a training case. The drone knowledge base’s unit on the SORA method explains ConOps, GRC, ARC, SAIL and OSOs, and its unit on BVLOS and risk assessment urges linking risks, mitigations and evidence. In real work, the values fed into the tables, such as population density, depend on areas we draw ourselves. This module practises computing those areas and shows that redesigning an area can sometimes achieve as much as adding equipment.

Volumes and buffers in SORA 2.5

SORA 2.5 (JARUS, 2024) defines them as follows. Flight geography is where the drone operates under normal conditions, including margins for system and operational errors. The contingency volume surrounds the flight geography; entering it is an abnormal situation that triggers contingency procedures. The operational volume is the flight geography plus the contingency volume and is the basis for the air risk assessment. The ground risk buffer is the ground area surrounding the contingency volume’s footprint. The main body says the initial buffer could be defined with a 1-to-1 principle (as wide as the flight height) or another value justified under Annex E, and the final buffer is set in Step 8, where it may change with the containment level or mitigations such as a parachute.

Example 1 A suburban survey area next to a village

The flight geography is 400 × 300 m, with a maximum height of 60 m, a speed of 15 m/s, a 3 s pilot reaction time and an assumed stopping distance of 15 m. Population data is on a 100 m grid: rice fields to the west at 20 people/km², general area at 300 people/km², and a village to the east at 1,200 people/km² (hypothetical data).

import numpy as np

fg_w, fg_h = 400.0, 300.0     # flight geography (m)
height = 60.0                 # maximum height AGL (m)
speed, react = 15.0, 3.0      # speed m/s and pilot reaction time s
contingency = speed * react + 15.0   # distance during reaction + stopping distance (assumed)
buffer = height               # initial ground risk buffer by the 1-to-1 principle

def area(margin):
    return (fg_w + 2 * margin) * (fg_h + 2 * margin) / 1e6   # km²

print(f"contingency volume width {contingency:.0f} m, ground risk buffer {buffer:.0f} m")
print(f"flight geography {area(0):.3f} km², operational volume {area(contingency):.3f} km², "
      f"with buffer {area(contingency + buffer):.3f} km²")

# population density (people/km²) on a 100 m grid around the area (hypothetical)
x = np.arange(-200, 700, 100) + 50
y = np.arange(-200, 600, 100) + 50
X, Y = np.meshgrid(x, y)
dens = np.where(X >= 450, 1200, 300)         # village to the east
dens = np.where(X < 0, 20, dens)             # rice fields to the west
m = contingency + buffer
cover = (X > -m) & (X < fg_w + m) & (Y > -m) & (Y < fg_h + m)
fg = (X > 0) & (X < fg_w) & (Y > 0) & (Y < fg_h)
print(f"max density in flight geography {dens[fg].max()} /km², "
      f"in footprint with buffer {dens[cover].max()} /km²")
contingency volume width 60 m, ground risk buffer 60 m
flight geography 0.120 km², operational volume 0.218 km², with buffer 0.346 km²
max density in flight geography 300 /km², in footprint with buffer 1200 /km²

The area used for ground risk assessment is almost three times the flight geography, and although the route never enters the village, the buffer reaches the village cells. The maximum density to use is therefore 1,200, not 300 people/km². The contingency-width formula in this example is simplified for teaching; real work must include navigation error, wind and the aircraft’s actual stopping performance.

A population grid map: light green cells on the left are rice fields at 20 people per square kilometre, grey cells in the middle 300, and light orange cells on the right the village at 1,200; a solid blue rectangle is the 400 by 300 metre flight geography, surrounded by the gold dashed contingency volume and the pink dashed ground risk buffer, which extends into the village cells
Figure 1 Flight geography, contingency volume and ground risk buffer on a population map

From iGRC to SAIL

Table 2 of SORA 2.5 gives the iGRC from the aircraft’s maximum size and speed and the population density. For the column up to 1 m and 25 m/s, the density rows below 5, 50, 500, 5,000 and 50,000 people/km² give iGRC 2, 3, 4, 5 and 6, and a controlled ground area gives 1. Table 5 gives ground risk mitigations; for example, M2 (reducing impact energy, such as with a parachute) reduces by 1 at medium robustness and 2 at high. Table 7 converts the final GRC and residual ARC into a SAIL.

Example 2 Add a parachute, or shrink the flight area?

The drone is up to 1 m in size and flies no faster than 25 m/s, with residual ARC-b assumed in all cases. Compare three options: no mitigation; M2 at medium robustness with full evidence; and moving the eastern edge of the flight area 100 m west so the footprint no longer reaches the village (training case).

ROWS = [5, 50, 500, 5000, 50000]            # upper bounds of density rows (people/km²), SORA 2.5 Table 2
IGRC_1M = [2, 3, 4, 5, 6]                    # column 1 m / 25 m/s
MIN_1M = 1                                   # controlled ground area row
SAIL = {2: "I II IV VI", 3: "II II IV VI", 4: "III III IV VI",
        5: "IV IV IV VI", 6: "V V V VI", 7: "VI VI VI VI"}   # Table 7, ARC a b c d

def igrc(density):
    for top, g in zip(ROWS, IGRC_1M):
        if density < top:
            return g
    return 7

def sail(grc, arc):
    return SAIL[max(grc, 2)].split()["abcd".index(arc)]

cases = {
    "village east, no mitigation": (1200, 0, "b"),
    "village east, M2 medium (-1)": (1200, -1, "b"),
    "flight area cut by 100 m": (300, 0, "b"),
}
for name, (d, mit, arc) in cases.items():
    g0 = igrc(d)
    g = max(g0 + mit, MIN_1M)
    print(f"{name:30s} density {d:>5}  iGRC {g0}  final GRC {g}  ARC-{arc}  SAIL {sail(g, arc)}")
village east, no mitigation    density  1200  iGRC 5  final GRC 5  ARC-b  SAIL IV
village east, M2 medium (-1)   density  1200  iGRC 5  final GRC 4  ARC-b  SAIL III
flight area cut by 100 m       density   300  iGRC 4  final GRC 4  ARC-b  SAIL III

Both a parachute proven at medium robustness and shrinking the flight area reduce SAIL from IV to III, but at different costs: the parachute needs test evidence under Annex B, while shrinking the area may need an extra flight to cover the remainder. This example is for practice only; real work needs real population data, a real ARC assessment and acceptance by the authority.

A SAIL table with six rows from GRC 2 or less to GRC 7 and four columns ARC-a to ARC-d; the GRC 5, ARC-b cell with value IV is shaded pink for the no-mitigation case, and the GRC 4, ARC-b cell with value III is shaded gold for the M2 or reduced-area case
Figure 2 SORA 2.5 SAIL table with the example cases

Class activity

Activity: designing the area to reduce risk

  1. Choose a real survey area around the university and draw the flight geography on a map
  2. Estimate the training drone’s speed, reaction time and stopping distance, and compute the contingency volume and buffer with Example 1
  3. Find population density from open sources, stating source and year, and find the maximum in the footprint
  4. Read the tables for SAIL and propose two options that reduce it, with the evidence each needs
  5. Discuss which values are assumptions and how you would verify them before a real application

Common mistakes

Watch out

  • Using density only inside the flight geography, forgetting the buffer
  • Setting a contingency volume narrower than the drone’s real stopping distance
  • Claiming M2 without evidence at the claimed robustness
  • Reducing GRC below the column minimum
  • Using training-case values in a real application

Summary

  • Operational volume = flight geography + contingency volume, and the buffer surrounds the contingency volume’s footprint
  • The initial buffer may use the 1-to-1 principle and is adjusted in Step 8
  • Population density must use the maximum over the whole footprint
  • Redesigning the area can reduce SAIL as much as adding mitigations

Check your understanding

  1. How does the contingency volume differ from the flight geography?
  2. Flying at 80 m with the 1-to-1 principle, how wide is the initial buffer?
  3. At 12 m/s, 2 s reaction time and 10 m stopping distance, what is the simplified contingency width?
  4. A 1 m column drone with maximum density 1,200 people/km² has what iGRC?
  5. Final GRC 4 with residual ARC-c gives what SAIL?
Answers
  1. Flight geography is the normal operating area; the contingency volume surrounds it, and entering it is an abnormal situation
  2. 80 m
  3. m
  4. 5 (the below-5,000 row)
  5. SAIL IV

Key formulas

Contingency volume width (simplified)
Ground risk buffer by the 1-to-1 principle
Final GRC

Key references

  1. Joint Authorities for Rulemaking on Unmanned Systems. (2024). JARUS guidelines on Specific Operations Risk Assessment (SORA), main body, edition 2.5 (JAR-DEL-SRM-SORA-MB-2.5). link
  2. สำนักงานการบินพลเรือนแห่งประเทศไทย. (2569). ประกาศ กพท. เรื่อง หลักเกณฑ์และวิธีการในการอนุญาตให้ผู้บังคับหรือปล่อยอากาศยานซึ่งไม่มีนักบิน ประเภทอากาศยานที่ควบคุมการบินจากภายนอก ที่มีน้ำหนักไม่เกิน 25 กิโลกรัม ปฏิบัติแตกต่างไปจากเงื่อนไขที่กำหนด พ.ศ. 2569 (มีผล 17 พฤษภาคม 2569). link
  3. International Civil Aviation Organization. (2015). Manual on remotely piloted aircraft systems (RPAS) (Doc 10019). ICAO. link
  4. European Commission. (2019). Commission Implementing Regulation (EU) 2019/947 on the rules and procedures for the operation of unmanned aircraft. link

Further reading

Study the assigned knowledge units in advance, review media and take the module quiz

In class / field

Lecture, case discussion and in-class problem solving

Learning evidence: Quiz results and submitted exercises

Module quiz

This is a formative self-check, not a graded exam

Knowledge domain: Law, safety and risk