Dronedesk logo
JARUS SORA 2.5 Workflow
Technical Implementation and Methodology Description

Prepared byGrey Rock Innovations Ltd t/a Dronedesk
Document titleDronedesk JARUS SORA Workflow: Technical Implementation and Methodology Description
PurposeDronedesk SORA methodology: technical implementation of JARUS SORA v2.5 population density, iGRC, ARC and SAIL determination, including JARUS Annex A flight geography calculations and JARUS Annex F kernel density.
Version1.2
StatusPublic

Version History

VersionDateAuthorDescription
1.0May 2026Grey Rock Innovations LtdInitial release
1.1May 2026Grey Rock Innovations LtdVersion number update only
1.26 May 2026Grey Rock Innovations LtdAdded section 5.7 Computational Performance Optimisation

Contents

  1. 1. Executive Summary
  2. 2. Scope and Regulatory Context
  3. 3. System Architecture Overview
  4. 4. Operational Volume Definition
  5. 5. Population Density Assessment
  6. 6. iGRC Determination
  7. 7. Ground Risk Mitigation
  8. 8. Air Risk Assessment (ARC)
  9. 9. SAIL Determination
  10. 10. Report Generation
  11. 11. Known Limitations and Planned Development
  12. A. Appendix A: Calculation Methodology
  13. B. Appendix B: Glossary
  14. C. Appendix C: References
  15. D. Appendix D: Worked Examples
  16. E. Appendix E: Consolidated Formulae

1. Executive Summary

This document provides a comprehensive technical description of the JARUS SORA (Specific Operations Risk Assessment) workflow as implemented in Dronedesk, the drone operations management platform developed and operated by Grey Rock Innovations Ltd.

Dronedesk implements the JARUS SORA v2.5 framework (JAR-DEL-SRM-SORA-MB-2.5, May 2024) as its primary regulatory basis. The flight geography calculator and zone boundary engine follow the JARUS SORA v2.5 Annex A methodology. For the determination of maximum population density, Dronedesk applies the sliding-window kernel method described in JARUS SORA v2.5 Annex F, Section 3.9.1.

1.1 Purpose

This document serves the following purposes:

1.2 Scope

This document covers the full JARUS SORA workflow as implemented in Dronedesk:

1.3 Key Methodological Positions

Flight geography and zone calculations: Dronedesk implements the JARUS SORA v2.5 Annex A methodology (JAR doc_26) for all flight geography calculations. The lateral and vertical boundaries of the Contingency Volume, Ground Risk Buffer and Adjacent Volume are computed from operator-declared UAS parameters and selected termination method using the formulae specified in Annex A, Section A.5. This provides a consistent, auditable basis for zone geometry that is directly traceable to the JARUS source.

Population density assessment - maximum density: Dronedesk implements the JARUS Annex F Section 3.9.1 sliding-window kernel method. Rather than deriving maximum density from a single GHS-POP grid cell, the kernel method assesses density across the realistic lateral dispersion area of the UAS at the declared operating altitude. Every GHS-POP cell wholly within or whose polygon crosses the FG+CV+GRB zone boundary is evaluated as a cell centre. Neighbour cell populations are accumulated using proportional overlap weighting, and the denominator is the kernel circle area clipped to the zone polygon. The kernel radius is derived directly from Annex F equation (21) as r = z / tan(30°), with a minimum of 100 m.

Air risk - ARC strategic mitigations: ARC strategic mitigations are presented to the operator for awareness but are not applied computationally to the residual ARC. The application of ARC mitigations requires independent assessor judgement and cannot be validated automatically by the platform.

Ground risk mitigations: M1(A), M1(B), M1(C) and M2 are available for operator selection with mandatory written justification. GRC credits vary by robustness level (see Figure 18). Dronedesk does not validate the sufficiency of operator justifications; the operator accepts responsibility for the accuracy and applicability of declared mitigations.

Data sources: Population data is sourced from GHS-POP R2023A (JRC, European Commission). Airspace classification uses OpenAIP. Assemblies of people are identified via OpenStreetMap Overpass API. All data sources are described in Section 3.4.

1.4 Justification and Notes Fields

At various points in both the flight geography calculator and the SORA assessment workflow, you will be asked to provide notes, justification or explanation. This is not there to slow you down. Each prompt is a direct response to an entry that your NAA would otherwise ask about during the review of an application. Capturing the reasoning at the point of entry ensures the final report is self-contained and complete, significantly reducing the likelihood of an application being returned pending clarification and helping to deliver a smoother path to authorisation.

The specific points at which additional input is required are highlighted throughout this document with a panel like the one below:

This is an example of a justification panel. Wherever you see this, the assessment workflow will require you to provide a written explanation or justification before you can proceed. Your input is captured and passed through in full to the final SORA report output.


2. Scope and Regulatory Context

2.1 Applicable Regulatory Framework

The primary methodological framework implemented in Dronedesk is JARUS SORA v2.5, as defined in the JARUS guidelines on Specific Operations Risk Assessment (JAR-DEL-SRM-SORA-MB-2.5, Edition 2.5, 13 May 2024). The JARUS Main Body specifies the methodology for assessing ground risk (GRC), air risk (ARC), and the resulting SAIL level for UAS operations in the Specific category. JARUS SORA v2.5 is published by the Joint Authorities for Rulemaking on Unmanned Systems and is the basis on which several national regulators have built their own operational authorisation frameworks.

Dronedesk implements the JARUS Main Body and supporting Annexes directly:

Operators using Dronedesk in jurisdictions that adopt or adapt JARUS SORA v2.5 are responsible for verifying any national variations or additional requirements set by their competent authority before submitting an operational authorisation application.

2.2 What This Document Covers

This document provides a complete technical description of all components of the SORA workflow as implemented in Dronedesk, including: zone geometry computation, population density methodology and data sources, iGRC determination, ground risk mitigation framework, air risk assessment, SAIL determination, assemblies of people assessment, and report generation. All formulae and worked examples are included in the appendices.

2.3 What This Document Does Not Cover


3. System Architecture Overview

3.1 Platform Description

Dronedesk is a SaaS drone operations management platform developed and operated by Grey Rock Innovations Ltd. The platform provides professional drone operators with tools for flight logging, client and job management, risk assessment, compliance documentation, and regulatory reporting. The SORA module is a discrete component within the platform, available as a paid add-on to subscribers on the Pro and Enterprise tiers.

The SORA module is accessed via a web browser. All SORA calculations and report generation are performed using the methodology described in this document. The operator provides input parameters; the platform performs all geospatial and risk calculations and produces a PDF assessment report.

White-label deployments of Dronedesk exist for third-party partners. These deployments use identical underlying technology and methodology; the SORA calculation engine is the same across all deployments.

3.2 Data Flow

The SORA workflow follows this ten-step sequence:

  1. The operator selects the UA and declares drone parameters (characteristic dimension, maximum speed, MTOW) and termination method. The Dronedesk flight geography calculator, implementing the JARUS SORA v2.5 Annex A methodology, uses these inputs to compute the required lateral and vertical CV, GRB and AV boundaries.
  2. The operator defines the Flight Geography (FG) geometry by drawing on an interactive map.
  3. Zone geometries are computed client-side using Turf.js.
  4. Population density assessment is performed using GHS-POP raster data.
  5. iGRC is determined from the maximum density result and drone parameters.
  6. Operator selects applicable ground risk mitigations with justification.
  7. Airspace classification is retrieved from OpenAIP; operator confirms or amends ARC.
  8. SAIL is determined from residual GRC and ARC.
  9. Assemblies of people check is performed via OpenStreetMap Overpass API.
  10. Assessment report is generated as a PDF.

SORA Workflow

10-step process from parameter input to report generation

1Drone parameters & zonedistances2Flight Geographygeometry drawn3Zone geometriescomputed (Turf.js)4People count(FG+CV zone)5Max density kernel(FG+CV+GRB zone)6iGRC determination7Ground riskmitigations (M1/M2)8Air risk assessment(ARC)9SAIL determination10Assemblies check& report generation
Figure 1: Dronedesk SORA workflow - 10-step process from drone parameter input to report generation

3.3 Geospatial Computation Stack

ComponentLibraryPurpose
Map renderingLeaflet.js v1.9.4Interactive map display, zone polygon rendering, geometry capture
Geospatial mathsTurf.js v7Geodesic buffer computation, polygon intersection, area calculation (ellipsoidal geometry)
Raster data accessgeoraster + geoblazeGHS-POP Cloud-Optimised GeoTIFF (COG) fetch and pixel extraction
Threaded computeWeb WorkersPopulation density kernel computation offloaded from main thread
Coordinate systemWGS84 throughoutAll coordinates, distances and areas use WGS84; geodesic (not planar) calculations throughout

Geodesic area calculation: All polygon areas are computed using turf.area(), which implements the ellipsoidal (geodesic) formula based on the WGS84 reference ellipsoid. Planar geometry is not used at any point in the calculation chain.

3.4 Data Sources

Data sourcePurposeUpdate cadenceLimitations
GHS-POP R2023A (JRC, European Commission)Population density raster for all density calculationsDecadal dataset; current epoch 2025Census-derived; epoch averaging; no intra-day or seasonal variation
OpenAIP (openaip.net)Airspace classification for ARC determinationContinuous community updatesCommunity-maintained; not the authoritative EU airspace source; operator must verify
OpenStreetMap Overpass APIAssemblies of people within 1 km of operational volumeLive query at time of assessmentCommunity-maintained; temporary assemblies not captured; operator must verify

GHS-POP data preparation and optimisation

The GHS-POP R2023A dataset is not served to Dronedesk directly in its raw downloaded form. The source data from Copernicus is distributed as a set of regional GeoTIFF tiles at 3 arc-second resolution, which are not suitable for efficient in-browser querying across large or arbitrary operational areas. Before deployment, Dronedesk pre-processes the source tiles using GDAL to produce a single merged Cloud Optimised GeoTIFF (COG). The processing pipeline merges all regional tiles into a unified virtual raster, then converts this to a COG using lossless DEFLATE compression with horizontal differencing (PREDICTOR=2), averaged internal overview pyramids (RESAMPLING=AVERAGE), and 32-bit floating-point output (Float32) to preserve the full decimal precision of the fractional population values.

The rationale for this approach is both practical and methodological. The COG format is internally tiled and organised to support HTTP range requests, meaning the georaster library used in Dronedesk can stream only the specific raster region relevant to a given flight geography rather than loading the entire dataset. This makes in-browser raster queries responsive regardless of the size of the source dataset. The use of averaged pyramids ensures that the population values remain accurate at all zoom levels, which is important for the visual overlay as well as for the kernel density calculation. The Float32 output type preserves the sub-integer population counts present in the GHS-POP data, which are a product of the dasymetric disaggregation methodology used to produce the dataset and are essential for accurate weighted population calculations at cell level.

OpenStreetMap Overpass API: self-hosted instance

Dronedesk does not query the public Overpass API (overpass-api.de) for assemblies of people data. The public service is a shared, rate-limited resource serving thousands of applications simultaneously, which makes it unsuitable for a production platform where query reliability and response consistency are requirements. Instead, Dronedesk operates its own private Overpass API instance hosting a complete copy of the global OSM planet database. The instance runs on dedicated bare-metal infrastructure using the wiktorn/overpass-api Docker image, initialised via clone mode from the official Overpass development server. This copies a pre-indexed planet database directly, avoiding the multi-day re-indexing process that would otherwise be required to ingest the raw planet file from scratch.

The self-hosted instance is kept current through automatic minutely diff updates sourced from the OpenStreetMap Foundation planet replication feed, meaning the dataset is typically no more than one to five minutes behind the live OSM planet at any given time. All queries are routed through an Nginx reverse proxy with API key authentication, gzip compression, and extended timeouts to accommodate complex spatial queries. Because Dronedesk is the sole user of the instance, there are no rate limits, no shared contention, and no dependency on third-party infrastructure decisions. The result is consistent, predictable query latency regardless of global OSM traffic levels, and complete global coverage across all supported Dronedesk regions.


4. Operational Volume Definition

The Dronedesk SORA module implements the four-zone operational volume model defined in JARUS SORA v2.5: Flight Geography (FG), Contingency Volume (CV), Ground Risk Buffer (GRB), and Adjacent Volume (AV). JARUS Main Body Section 2.2 refers to the outermost zone as the Adjacent Area; Dronedesk uses the term Adjacent Volume (AV) consistently in its UI and reports, but the two terms are equivalent. All zones are computed using geodesic buffer operations applied to the operator-defined FG geometry.

The CV, GRB and AV dimensions are derived from the Dronedesk flight geography calculator, which implements the JARUS SORA v2.5 Annex A methodology. Operators may adjust individual values, but where any entered value falls outside the Annex A suggested range, the platform requires a mandatory written justification.

Any flight geography calculator parameter entered outside the Annex A suggested range requires a written justification explaining the operational basis for the deviation. This is included in the report.

4.1 Flight Geography (FG)

The FG is the operator-defined volume within which the UAS is intended to operate under normal conditions. In Dronedesk, the FG is defined by one of three geometry types:

Flight Geography Geometry Types

All three types support the same CV, GRB and AV buffer calculations

PolygonAny closed shapeFGRadiusCentre point + radiusrCorridorRoute + half-widthFG - Flight GeographyCV - Contingency VolumeGRB - Ground Risk BufferZone buffers shown for illustration only - not to scale relative to FG size
Figure 2: The three Flight Geography geometry types - polygon, radius, and linear corridor

The operator declares the FG ceiling height in metres AGL. This value is used as z in the kernel radius formula (see Section 5.3.3).

4.2 Contingency Volume (CV)

The CV is the volume immediately surrounding the FG, entered when the operator triggers a contingency procedure. The CV outer boundary is computed as a geodesic buffer of the declared CV distance applied to the FG boundary.

Operational Volume (OV): the FG + CV make up the Operational Volume.

4.3 Ground Risk Buffer (GRB)

The GRB is the area beyond the Operational Volume (FG+CV) within which the aircraft is expected to land in the event of a loss-of-control event. The GRB inner boundary is the CV outer boundary. The GRB outer boundary is computed as a geodesic buffer of the cumulative distance (CV + GRB distance) applied to the FG boundary. The population density within the FG+CV+GRB zone is used to determine the maximum density figure for iGRC.

4.4 Adjacent Volume (AV)

The AV is the area used for the average population density assessment. The AV is a donut zone (annular region) whose inner boundary is the CV outer boundary and whose outer boundary is the AV outer boundary. The GRB sits geometrically within the AV - both share the same inner boundary (CV outer). The AV distance is declared in metres, measured from the CV outer boundary.

Zone boundary clipping: When computing the maximum density kernel (Section 5.3), only cells wholly within or intersecting the FG+CV+GRB zone polygon outer boundary are evaluated. Cells in the AV area outside the GRB outer boundary are excluded.

4.5 Zone Stacking and Cumulative Distances

ZoneInner boundaryOuter boundaryPurpose
FGFG edgeFG edgeNormal operating volume
OV (FG+CV)FG edgeFG edge + CV distancePeople count
FG+CV+GRBFG edgeFG edge + CV + GRB distanceMaximum population density (iGRC)
AVCV outer boundary (= GRB inner boundary)CV outer + AV distanceAverage population density

Note: the GRB and AV zones share the same inner boundary - the CV outer boundary. The GRB outer boundary lies within the AV zone. SAV is measured from the CV outer boundary, not from the GRB outer boundary.

Operational Volume - Plan View

Zone geometry plan view (top-down). GRB and AV share the same inner boundary.

FG CV GRB AV SCV SGRB SAV Zone purpose FG - Normal operations CV - Contingency ops GRB - Max density zone AV - Avg density zone GRB and AV share the same inner boundary (CV outer). SAV measured from CV outer, not from GRB outer boundary.
Figure 3: Operational volume - plan view (top-down). GRB and AV share the same inner boundary (CV outer boundary).

Operational Volume - Vertical Cross-Section

Relative zone heights and lateral extents (not to scale)

GROUND FG CV CV GRB GRB AV AV HFG HCV HAV SFG SFG + SCV SFG + SCV + SGRB (SFG + SCV) + SAV
Figure 4: Operational volume - vertical cross-section (not to scale)

4.6 Annex A Flight Geography Calculator - Detailed Methodology

This section describes the detailed input parameters and formulae implemented in the Dronedesk flight geography calculator, which follows the JARUS SORA v2.5 Annex A Section A.5.2 methodology. All parameters have system-suggested default values derived from the Annex A specification.

4.6.1 Input Parameters

ParameterSymbolNotes and validation rules
UAV type-Rotorcraft | Fixed-wing | VTOL/Hybrid
Max UAV dimension (m)CDLargest physical dimension of the UA
Maximum UA speed (m/s)v0Minimum 3 m/s
✎ Justification required
Values below manufacturer's published max speed require written justification.
Equipped with parachute-Yes | No
Parachute deployment time (s)tpRequired if parachute equipped
Ground visibility (m)GVMaximum value applied: 5,000 m
Attitude line of sight (m)ALOSmaxRotorcraft: 327 × CD + 20. Fixed-wing/VTOL: 490 × CD + 30
Detection line of sight (m)DLOSDLOS = 0.3 × GV
Max visual line of sight (m)VLOSmaxVLOSmax = min(ALOSmax, DLOS)
Max wind speed for parachute (m/s)vwindMinimum 3 m/s
Descent rate with parachute (m/s)vzRequired if parachute equipped
Height of flight geography (m)HFGMinimum: CD × 3
Lateral flight geography (m)SFGMinimum: CD × 3
Gravity (m/s²)gFixed at 9.81 m/s², not user-editable
Type of altimetry-Barometric or GPS-based
Altimetry error (m)HδValues <1 m (barometric) or <3 m (GPS-based).
✎ Justification required
Values below these thresholds require written justification.
GPS inaccuracy (m)SGPSValues <3 m.
✎ Justification required
Values below 3 m require written justification.
Positioning error (m)SPOSValues <3 m.
✎ Justification required
Values below 3 m require written justification.
Map error (m)SkValues <1 m.
✎ Justification required
Values below 1 m require written justification.
Pilot reaction time (s)tRZValues <1 s.
✎ Justification required
Values below 1 s require written justification.
Maximum pitch angle - rotorcraft (deg)ΘMaximum 45°
Roll angle - fixed-wing/VTOL (deg)ΦMaximum 30°
Glide ratio denominator - fixed-wing/VTOLεDefault value: 20.
✎ Justification required
Any value other than 20 requires written justification.
Flight continuation time (s)tfDefault value: 180 s.
✎ Justification required
Values below 180s require written justification.
Controlled ground area-Yes | No

4.6.2 Manoeuvre and Termination Options

CV lateral manoeuvre options

Manoeuvre optionRotorcraftFixed-wing / VTOL
StoppingYesNo
Deploy parachuteNoYes
180° turnYesYes

CV vertical manoeuvre options

Manoeuvre optionRotorcraftFixed-wing / VTOL
Convert forward energy to potential energyYesNo
Deploy parachuteYesYes
Pitch 45° and circle to level flightNoYes

GRB termination options

Termination methodRotorcraftFixed-wing / VTOL
Simplified (1:1 rule)YesYes
BallisticYesNo
Deploy parachuteYesYes
Power-off glideNoYes

CV Lateral Manoeuvre Geometry

SCV = distance from FG edge to outermost point reached during the contingency manoeuvre

StoppingRotorcraftSCM = 0.5 × v02 / (g × tan(Θ))FG edgeUASCMCV outerSCV180° TurnFixed-wing / VTOLSCM = v02 / (g × tan(Φ))FG edgeUACV outerSCMSCVDeploy ParachuteBoth UA typesSCM = v0 × tpFG edgeUASCMCV outerSCV
Figure 5: CV lateral manoeuvre geometry - distance from FG edge to outermost point reached during the contingency manoeuvre

4.6.3 Contingency Volume Calculation

Reaction distance

SRZ = v0 × tRZ

Contingency manoeuvre lateral distance

Rotorcraft - stopping:

SCM = 0.5 × (v0² / (g × tan(radians(Θ))))

Fixed-wing / VTOL - 180° turn:

SCM = v0² / (g × tan(radians(Φ)))

With parachute:

SCM = v0 × tp

Contingency manoeuvre height loss

Rotorcraft - 100% forward energy to potential energy:

HCM = 0.5 × (v0² / g)

Fixed-wing / VTOL - pitch 45° and circle to level:

HCM = (v0² / g) × 0.3

With parachute:

HCM = 0.7 × v0 × tp

Minimum lateral CV

SCV = SGPS + SPOS + SK + SRZ + SCM

Minimum vertical CV

HCV = HFG + Hδ + HRZ + HCM

GRB Termination Methods - Lateral Footprint

Each method translates HCV into a lateral ground footprint SGRB

Simplified1:1 rule (both types)SGRB = HCV + (0.5 × CD)HCVCV outerGRB outerUA~45°SGRBBallisticRotorcraft onlySGRB = (v0 × √(2 × HCV / g)) + (0.5 × CD)HCVCV outerGRB outerUAballisticSGRBParachuteBoth typesSGRB = (v0 × t) + ((vwind × HCV) / vz)HCVCV outerGRB outerUAwind driftSGRBPower-off GlideFixed-wing / VTOLSGRB = HCV / εHCVCV outerGRB outerUAglide ratio 1/eSGRB
Figure 6: GRB termination methods - how HCV translates to a lateral ground footprint SGRB under each termination method

4.6.4 Ground Risk Buffer Calculation

Simplified - 1:1 rule

SGRB = HCV + (0.5 × CD)

Ballistic - rotorcraft only

SGRB = (v0 × √(2 × HCV / g)) + (0.5 × CD)

Termination with parachute

SGRB = (v0 × t) + ((vwind × HCV) / vz)

Power-off glide - fixed-wing / VTOL only

SGRB = HCV / ε

4.6.5 Adjacent Volume Calculation

AV lateral distance

SAV = tf × v0

Minimum 5,000 m, maximum 35,000 m. v0 here is the manufacturer maximum speed regardless of operational adjustments.

AV vertical height

HAV = HCV + 150

5. Population Density Assessment

Population density is assessed across three zones, each serving a distinct purpose in the JARUS SORA framework: the Operational Volume (FG+CV) for people count, the FG+CV+GRB zone for maximum density used in iGRC determination, and the Adjacent Volume (AV) for average density.

5.1 Population Data Source

All population density calculations use the GHS-POP R2023A dataset (Global Human Settlement Population Grid), published by the European Commission Joint Research Centre (JRC).

ParameterValue
Full nameGHS-POP R2023A - GHS Population Grid, multitemporal (1975-2030)
ProducerEuropean Commission, Joint Research Centre (JRC)
Epoch used2025
Spatial resolution3 arc-seconds (~90 m N/S × 55-65 m E/W at EU latitudes)
Coordinate systemWGS84 geographic (EPSG:4326)
Format accessedCloud-Optimised GeoTIFF (COG), fetched on demand via georaster
CitationSchiavina, M., Freire, S., Carioli, A., MacManus, K. (2023): GHS-POP R2023A. JRC. doi:10.2905/2FF68A52-5B5B-4A22-8F40-C41DA8332CFE

Each GHS-POP grid cell holds a raw headcount: the estimated residential population for that specific patch of ground, derived from census data, building footprint analysis, and remote sensing. At EU latitudes, each cell covers approximately 4,500-5,800 m².

Known limitations: The dataset is census-derived and uses epoch averaging; it does not reflect rapid population change, intra-day variation, or transient gatherings. Operators are responsible for applying appropriate judgement where these factors may be material.

5.2 People Count - FG+CV Zone

5.2.1 Purpose

The people count provides an estimate of the number of people present within the Flight Geography and Contingency Volume combined. This figure is reported in the assessment but does not directly determine the iGRC.

5.2.2 Methodology

  1. All GHS-POP cells whose extent fall wholly within or intersects the FG+CV polygon boundary are identified.
  2. For each cell, the intersection polygon is computed using Turf.js (turf.intersect).
  3. Coverage fraction: f = Aintersection / Acell.
  4. Weighted population contribution: Pweighted = Praw × f.
  5. Total people count = sum of all weighted contributions.
Npeople = Σ( Praw(i) × fcoverage(i) ) for all cells i intersecting FG+CV

5.2.3 Average Density (FG+CV)

Davg(FG+CV) = Npeople / ( Azone / 1,000,000 ) [ppl/km²]

The denominator is the total FG+CV zone area including cells with zero population, producing a true area-weighted mean density.

People Count - FG+CV Zone

GHS-POP cells intersected with FG+CV zone, weighted by coverage fraction

1 0.09 2 1.22 3 2.69 4 0.04 5 0.03 6 0.39 7 2.61 8 3.56 9 0.28 10 0.02 11 0.30 12 0.51 13 0.37 14 0.05 15 0.47 16 0.60 17 0.03 18 0.31 19 0.86 20 0.23 21 0.12 22 0.06 23 0.16 24 0.08 25 0.04 FG CV GRB People Count FG+CV (Operational Volume) 0 – 0.5 0.5 – 1.5 1.5 – 2.5 2.5+ Partial coverage FG boundary CV boundary GRB boundary Result summary Cells intersected 25 Total zone area 93,588 m² People count (FG+CV) 15.1 Avg density 162 ppl/km² Dsum 15.1 ppl 100 m
Figure 7: Example people count: 25 GHS-POP cells intersecting the FG+CV zone, weighted by coverage fraction. Cell colour indicates weighted population contribution. N = 15.1 people.

Table 5.2a: People count: all 25 cells intersecting the FG+CV zone. Raw Population = GHS-POP fractional resident count for the cell. Coverage % = proportion of cell area inside the FG+CV zone boundary. Weighted Pop = Raw Population × Coverage fraction, contributing to the total people count.

Cell #Raw PopCoverage %Weighted Pop
10.5916.0%0.09
21.5479.6%1.22
33.0787.8%2.69
40.0587.3%0.04
50.0486.8%0.03
210.12100%0.12
220.3617.0%0.06
230.6724.3%0.16
240.3124.6%0.08
250.1524.8%0.04
TOTAL19.4-15.1

5.3 Maximum Population Density - FG+CV+GRB Zone

5.3.1 Purpose

The maximum population density within the FG+CV+GRB zone is the primary input to iGRC determination. It represents the highest density of people that the UAS could realistically overfly or impact in the event of a loss-of-control event.

5.3.2 The Problem with Single-Cell Extrapolation

The conventional approach divides a cell's raw population by the cell area and scales to ppl/km²:

Dcell = ( Praw / Acell ) × 1,000,000 [ppl/km²]

At EU latitudes, a cell covering ~4,500 m² containing 2 people yields:

Dcell = ( 2 / 4,500 ) × 1,000,000 = 444 ppl/km²

The Single-Cell Extrapolation Problem

One populated cell implies that same density across the entire surrounding km²

1 km 1 km 2 ~58x92 m cell (2 people) Single-cell result 2 / 4,500 x 10⁶ 444 ppl/km² Implies this density over the entire 1 km² area
Figure 8: The single-cell extrapolation problem - one populated cell implies that same density across the entire surrounding km²

This assumes that density is uniform across the entire surrounding square kilometre. In a rural or semi-rural setting, neighbouring cells will typically contain zero people, making this a gross overestimate. The consequence is that iGRC is systematically overstated for semi-rural and corridor operations.

5.3.3 JARUS Annex F Section 3.9.1 - The Sliding-Window Kernel Methodology

JARUS SORA v2.5 Annex F (JAR doc_29, June 2024), Section 3.9.1, "Map resolution as a function of intended operating altitude," directly addresses the appropriate spatial scale for population density assessment. It introduces the concept of the dispersion area: the realistic ground footprint within which a UAS could impact following a loss-of-control event at a given operating altitude.

The Annex F reasoning: when a UAS fails, it does not fall vertically. It disperses laterally from its current position, with the extent of dispersion proportional to the operating altitude and the angle of impact. The dispersion area is modelled as a circle on the ground. If the population density figure is derived from a spatial scale matched to this dispersion area, the result reflects the realistic density across the area actually at risk.

The angle of impact adopted in Annex F is 30°, justified as a midpoint between the 10° glide angle used in critical area models and the 45° angle used for low-robustness GRB calculations.

Dispersion Area Concept

Lateral dispersion from a loss-of-control event at altitude z, with 30° impact angle

Ground level z θ = 30° r UAS Kernel radius formula r = z / tan(30°) min. 100 m (Annex F eq. 21)
Figure 9: Dispersion area concept - lateral scatter from a loss-of-control event at altitude z, with 30° impact angle

5.3.4 Kernel Radius Derivation

Annex F Section 3.9.1 derives acceptable grid cell sizes as a function of operating altitude z and angle of inclination θ in equation (21):

√2·z / tan(θ) ≤ lgrid ≤ 2z / tan(θ)

Substituting the upper bound and applying the sampling constraint lgrid ≤ rdisp:

rdisp = lgrid,max / 2 → rdisp = z / tan(θ)

Verified by Table 11 in Annex F: at z = 152.4 m, lgrid,max = 527.9 m, rdisp = 264 m = 152.4 / tan(30°). The formula is confirmed. The kernel radius used in Dronedesk is therefore:

rkernel = max( 100, z / tan(30°) ) [metres]

Minimum radius of 100 m: below approximately one GHS-POP cell width (55-65 m at mid-latitudes), the kernel converges towards single-cell behaviour. A minimum of 100 m ensures meaningful spatial averaging across at least the immediate 3x3 cell neighbourhood.

Altitude parameter - FG ceiling height: Annex F defines z as "the altitude of the operation under normal operating conditions." The FG is where normal operations take place; the CV is entered only after a contingency has been triggered (an abnormal state). Accordingly, z is taken as the FG ceiling height in metres AGL, not the CV ceiling height.

5.3.5 Kernel Algorithm

Sliding-Window Kernel Density — Actual Dataset

Cell colour = kernel raw pop sum. Labels on peak row = kernel density (ppl/km²). Actual KML boundaries overlaid.

0.1 0.8 1.6 2.0 1.8 1.0 0.5 0.2 0.1 0.1 0.1 0.4 0.8 1.7 2.9 3.4 3.2 1.7 0.7 0.2 0.1 0.1 1.4 1.7 2.5 2.7 2.9 2.6 1.7 0.5 0.1 10 1.5 1.5 1.7 1.8 1.4 1.2 0.3 0.1 1.9 3.1 2.9 1.9 0.7 2.5 3.9 4.2 4.0 7 2.7 1.0 0.1 2.1 4.8 8.1 11.0 8.8 4.8 0.7 0.1 1.8 5.8 11.2 4 14.4 1 13.1 3 10.0 4.0 0.3 0.0 0.9 3.5 9.5 5 13.5 2 12.7 9.1 3.5 0.1 0.0 0.2 1.2 3.2 6.1 5.6 6 4.1 0.6 0.1 0.0 0.1 0.1 0.1 0.0 8 9 0.4 0.9 0.9 0.5 0.1 0.0 0.1 0.1 0.1 0.1 GRB CV FG Dmax = 273 ppl/km² 100 m Max Population Density FG+CV+GRB 0.7 3.6 10.8 14.4 FG CV outer GRB outer Kernel (r=130 m) Peak kernel (Dmax) Result summary Kernel radius r 130 m Pop cells 158 Raw pop at peak (num) 14.42 Kernel area (denom) 0.0529 km² Dmax 273 ppl/km²
Figure 10: The kernel circle (radius r) is centred on each cell centre in turn. The population within the circle is summed and divided by the kernel area to give a density at that position. The maximum value across all cell centres is Dmax.
#Raw pop sumNumeratorDenominator (km²)CoverageDensity (ppl/km²)
114.4214.41800.0529291.0000273.0Dmax
213.5313.49870.0529291.0000256.0
313.1013.06480.0529291.0000248.0
411.1810.89890.0515210.9749217.0
59.538.77100.0486360.9201196.0
65.615.43260.0414090.7836136.0
73.983.98000.0529291.000076.0
80.030.02580.0259130.48971.0
90.000.00000.0161520.30520.0
100.000.00000.0192120.36340.0

Representative rows from the maximum density export, keyed to cell labels in Figure 10. 158 cell centres were evaluated in full for this assessment (z = 75 m AGL, r = 130 m).

The sliding-window kernel is computed as follows:

  1. Compute kernel radius: r = max(100, z / tan(30°)) where z is the FG ceiling height in metres AGL.
  2. Expand pixel fetch: the bounding box of the FG+CV+GRB polygon is expanded by ceil(r / 90) + 2 cells on each edge.
  3. Identify cell centres: every GHS-POP cell that falls wholly within, or whose polygon crosses, the FG+CV+GRB zone boundary is evaluated. This includes cells with zero population. For each cell centre:
    1. Clip the kernel circle (64-vertex polygon) to the zone polygon. The area of the clipped polygon is used as the denominator for that cell centre.
    2. For each neighbouring cell within radius r: compute the overlap of the cell polygon with the zone polygon. Coverage fraction = overlap area / cell area. Cells wholly inside the zone contribute 100%; cells that cross the boundary contribute proportionally; cells wholly outside contribute 0%.

The kernel algorithm evaluates every raster cell in the fetch window as a potential cell centre, including cells with zero population. Zero-population cells are invisible on the population map overlay but are valid kernel centres: a kernel centred on an unpopulated location may still capture populated cells within its radius and may represent the worst-case density exposure point. Many rows in the maximum density export will therefore show zero or near-zero kernel raw population sums.

  1. Compute kernel density: Dkernel = kernel_population_sum / clipped_kernel_area_km².
  2. Record: store cell centre coordinates, neighbour count, kernel population sum, and kernel density.
  3. Maximum density: Dmax = MAX(Dkernel) across all cell centres wholly within or crossing the FG+CV+GRB zone boundary.

Proportional Cell Centre Overlap at Zone Boundary

Coverage fraction = overlap area / cell area, applied to raw population

Zone boundary(GRB outer)Inside zoneOutside zone100%100%60%0%0%Wholly inside (100%)Straddling (proportional)Wholly outside (0%)
Figure 11: Proportional cell centre overlap at the zone boundary - coverage fraction = overlap area / cell area

Clipped Kernel Denominator

Only the zone-intersecting portion of the kernel circle is used as the denominator

GRB outer boundary Sample point Full kernel circle (not used as denominator) Clipped area (denominator) Inside zone Outside zone
Figure 12: Clipped kernel denominator - only the zone-intersecting portion of the kernel circle is used as the denominator

5.3.6 Effect of the Kernel Method

MethodEffective areaDensityAssumption
Single-cell extrapolation~4,500 m²444 ppl/km²Population density assumed uniform across the entire surrounding km²
Kernel method (r = 208 m at z = 120 m AGL)~0.136 km² (clipped to zone)14.7 ppl/km²Density assessed across the realistic lateral dispersion area

The figures in the table below are based on a synthetic illustrative scenario and are not derived from the actual dataset shown above. They are intended to demonstrate the proportional difference between the two methods, not to correspond to the worked example.

Single-cell extrapolation calculation:

rkernel = 0 (no spatial spreading - one cell only)
Acell = S_cell_EW × S_cell_NS = 57 m × 79 m ≈ 4,500 m²
Dmax = Npeople / ( Acell / 1,000,000 ) = 2 / 0.0045 = 444 ppl/km²

Kernel method calculation (z = 120 m AGL):

rkernel = z / tan(30°) = 120 / 0.5774 = 208 m
Akernel = π × r² = π × 208² = 135,900 m² ≈ 0.136 km²
Dmax = Npeople / ( Akernel / 1,000,000 ) = 2 / 0.136 = 14.7 ppl/km²

In practice Akernel is clipped to the assessment zone boundary, so the effective denominator may be smaller. The kernel radius has a minimum floor of 100 m regardless of altitude.

Density Method Comparison - Consistent Scale

Scenario: z = 120 m AGL, 2 people in the populated cell. Purple box = 1 km² reference area.

21 km²Single-cell extrapolation444 ppl/km²21 km²r = 208 mKernel method (r = 208 m)14.7 ppl/km²vs
Figure 13: Density method comparison at consistent 1 km scale - single-cell extrapolation vs kernel method. Scenario: z = 120 m AGL, 2 people in the populated cell.

The kernel result converges towards the single-cell result where population is spatially homogeneous - in a densely populated urban area both methods produce similar figures. The material difference appears in semi-rural, suburban fringe, and corridor operations where isolated populated cells are surrounded by empty cells.

5.3.7 Relationship to JARUS Annex F

The sliding-window kernel method is a direct application of JARUS Annex F Section 3.9.1 guidance. It implements the approach Annex F prescribes for assessing maximum population density across the realistic dispersion footprint of the UAS, rather than reading a single GHS-POP cell value. Section 5.3.4 above derives the kernel radius from Annex F equation (21).

5.3.8 Audit Trail

For every maximum density calculation, the following data is produced and retained:

5.4 Average Population Density - Adjacent Volume (AV)

Adjacent Volume - Donut Zone

Average density assessed across the shaded AV area (CV outer to AV outer)

FG CV GRB AV (donut) SAV from CV outer Key points AV is a donut zone Inner boundary = CV outer boundary GRB sits inside AV GRB area included in avg density calc SAV measured from CV outer, not GRB outer
Figure 14: Adjacent Volume donut zone - average density assessed across the shaded area from CV outer to AV outer

5.4.1 Zone Definition

Average population density is assessed across the full Adjacent Volume (AV). The AV is a donut zone with its inner boundary at the CV outer boundary and its outer boundary at the AV outer boundary. The GRB sits geometrically within this donut but is not excluded from the average density calculation.

5.4.2 Methodology

  1. Intersect each GHS-POP cell with the AV outer boundary polygon.
  2. Subtract any intersection with the CV outer boundary polygon (the inner exclude boundary).
  3. Compute net coverage fraction: f = A_net_intersection / Acell.
  4. Compute weighted population: Pweighted = Praw × f.
  5. Sum weighted populations across all cells.
  6. Divide by the total AV zone area (including zero-population cells) to produce average density in ppl/km².
Davg(AV) = Σ( Praw(i) × fcoverage(i) ) / ( Azone / 1,000,000 ) [ppl/km²]

Denominator: The full AV zone area - area of AV outer polygon minus area of CV outer polygon - including cells with zero population. Using the full zone area produces a true area-weighted mean density.

Average Population Density — Adjacent Volume

AV cells near GRB/CV/FG boundaries. Partial cells straddle CV outer (AV inner boundary). Davg = 428 ppl/km²

3182 0.00 3183 0.01 3184 0.02 3185 0.31 3186 0.43 3187 0.02 3188 0.02 3189 0.04 3190 0.07 3191 cov 62% 0.65 3256 0.68 3257 0.81 3258 0.07 3259 0.03 3260 0.21 3261 0.24 3262 cov 62% 0.48 3335 0.07 3336 0.08 3337 0.02 3338 0.01 3339 0.29 3340 0.46 3341 cov 61% 0.72 3414 0.04 3415 0.02 3416 cov 60% 0.04 3491 0.47 3492 0.55 3577 0.16 3578 0.24 AV GRB CV FG 100 m Avg Population Density AV ≈ 0 0.24 0.73 0.81+ AV outer GRB outer CV outer (AV inner) FG outer Result summary Non-zero cells 7,408 Zero-pop cells ~9,887 Total area 88.9 km² Σ weighted pop 38,070 Davg 428 ppl/km²
Figure 15: Example AV average density: 31 of 17,295 GHS-POP cells shown (17,264 not shown). Detail near the CV inner boundary. Partial cells (hatched) straddle the CV outer boundary. Davg = 428 ppl/km².

How to read this figure: Each coloured cell is a GHS-POP raster cell with measured population. Cell number (top-left) and weighted population Praw × fcoverage (centre) are shown. Cells shown in amber tint lie inside the CV boundary and are excluded from the AV calculation. Hatched cells straddle the AV outer or inner boundary and contribute proportionally. The full AV extends ~10 km in each direction; this detail window shows ~2 km × 1.5 km near the inner boundary to illustrate the exclusion zone.

Table 5.4a: Example extract from the full 17,295 AV cells. Raw Population = GHS-POP fractional resident count for the full cell. Coverage % = proportion of cell area inside the AV zone boundary; partial cells straddle the CV outer boundary. Weighted Pop = Raw Pop × Coverage fraction.

Cell #Raw PopCoverage %Weighted Pop
31820.004690%0.00
31830.0116100%0.01
31840.0211100%0.02
31850.3085100%0.31
31860.4313100%0.43
34920.5543100%0.55
35770.1573100%0.16
35780.2360100%0.24
35790.0150100%0.02
35800.0089100%0.01

Table 5.4b: Full AV zone result summary (all 17,295 cells):

MetricValue
Non-zero cells in AV7,408
Zero-population cells~9,887
Total zone area (AV outer − CV outer)88.9 km²
Σ weighted population38,069.9
Average density Davg(AV)428 ppl/km²

5.5 Assemblies of People Assessment

JARUS SORA v2.5 Main Body Section 4.8.3 (Containment) requires that the presence of outdoor assemblies of people within 1 km of the operational volume outer limit is assessed. Dronedesk queries OpenStreetMap via the Overpass API to identify known assemblies within 1,000 m of the CV outer boundary.

Assemblies of People - Search Radius

1 km search from CV outer boundary via OpenStreetMap Overpass API

1 km FG CV Stadium ~480m NE of CV outer Rec. ground ~720m SE of CV outer Legend FG CV outer 1 km search Assembly found Source: OpenStreetMap Overpass API query
Figure 16: Assemblies of people - 1 km search radius around the CV outer boundary, queried via OpenStreetMap Overpass API

Data Source

The Overpass query targets the following OpenStreetMap tags:

Output States

StateDescription
ClearNo assemblies found within the search boundary. Confirmed in the assessment report.
FoundOne or more assemblies found. Listed with name, OSM category, estimated distance, and bearing. Operator must review and confirm awareness.
Check failedThe Overpass query was unsuccessful. The report flags that manual verification is required.

Assessment Requirement on Finding

Whenever a possible assembly of people is found, the assessment process requires the operator to enter notes explaining the assembly in the context of operational containment and the robustness of ground risk mitigations. The explanation should address the average population density in the area and the likely scale of any assemblies, with reference to the JARUS containment thresholds in Tables 8 to 13: more than 400,000 people, between 40,000 and 400,000 people, or fewer than 40,000 people. These notes are captured in the platform and passed through in full to the final report output, where they form part of the ground risk justification.

Where one or more assemblies of people are found within the search boundary, the operator must enter notes explaining the assembly(ies) in the context of operational containment and ground risk mitigation robustness. These notes are included in the final report.

Limitations

5.6 Data Currency and Recalculation

Full per-cell and per-sample audit data is not persisted between browser sessions. Summary density metrics (maximum density, average density, people count, iGRC) are persisted alongside a stale flag for each Flight Geography.

The stale flag is set when a Flight Geography geometry is modified. It is persisted across sessions. On page load, any Flight Geography with a stale flag triggers an automatic recalculation, shown to the user via a progress modal titled "Recalculating stale metrics". If an operator clicks a stale FG before recalculation completes, the info panel displays the previous metrics with a prominent warning and a manual recalculate button.

The assessment report cannot be generated while any stale flag is outstanding.

5.7 Computational Performance Optimisation

The GHS-POP population density calculations described in Sections 5.2, 5.3 and 5.4 involve iterating over every raster cell in the bounding box of the zone polygon and, for each qualifying cell, performing geometric intersection tests against the zone polygon. For typical flight geographies (a few hundred metres to a few kilometres in extent) this is fast. For very large or geometrically complex flight geographies (such as corridor operations spanning tens of kilometres, or polygons with many hundreds of vertices), the naive approach becomes computationally prohibitive, with calculation times measured in tens of minutes or more.

Dronedesk applies a set of optimisations that substantially reduce calculation time for large or complex zones while preserving full accuracy for the cell coverage fractions used in the final density and population count figures. This section documents the approach, the conditions under which each optimisation is applied, and the accuracy implications of each change.

5.7.1 Optimisation Gate: When Optimisations Apply

A zone is classified as large and complex if both of the following conditions are met simultaneously:

ConditionThresholdRationale
Polygon vertex count> 100 vertices AND > 25 km²Both conditions must be met. A large simple polygon does not need simplification as each intersection test is already cheap. A small complex polygon covers few cells so the calculation is fast regardless. Only when the zone is both large and complex does simplification materially reduce computation time while remaining low-risk.
Bounding box areaSee above — combined condition onlySee above

The gate is evaluated once at the start of each zone calculation. Optimisations that affect the zone polygon geometry (Section 5.7.2) only activate when the gate fires. Optimisations that are purely computational shortcuts with zero geometric effect (Sections 5.7.3-5.7.6) apply unconditionally to all calculations.

5.7.2 Zone Polygon Simplification (Gated)

When the gate fires, the zone polygon is simplified using the Ramer-Douglas-Peucker algorithm (via turf.simplify) with a tolerance of 0.0001 degrees before any raster iteration begins. At the GHS-POP cell resolution of approximately 90 m north-south and 55-65 m east-west at EU latitudes, this tolerance introduces a maximum boundary displacement of approximately 7-11 metres per simplified segment. At EU latitudes GHS-POP cells are approximately 92 m N-S and 56 m E-W, so this displacement represents less than one fifth of a cell width east-west and less than one ninth north-south.

Effect of Polygon Simplification on Cell Boundary Assessment Original boundary (many vertices) Simplified boundary (tolerance 0.0001°) max ~10m Cell ~90m N-S × 60m E-W Same boundary cells identified; same coverage fractions computed
Figure 5.7a: Polygon simplification reduces vertex count from hundreds to tens while preserving all cell boundary classifications. Maximum boundary displacement (~10 m) is less than one cell width and has no meaningful impact on coverage fraction calculations at GHS-POP resolution.

Polygon simplification is applied only to the working polygon used for the raster iteration. The original zone polygon is retained and displayed on the map and is used for all other calculations (zone area, report display) throughout the assessment.

Accuracy qualification: simplification may affect the coverage fraction and kernel denominator for cells that straddle the simplified boundary. Dmax is only affected if the peak kernel centre is itself a boundary cell and the boundary displacement at that location is sufficient to change the clipped kernel area materially. This risk is low for large zones where the peak density typically occurs in a built-up area well inside the zone, but cannot be excluded for all geometries. Operators with safety-critical assessments near zone boundaries should be aware that simplification is applied when the zone exceeds both 100 vertices and 25 km².

5.7.3 Bounding Box Pre-filter (Unconditional)

Before any geometric test is performed on a cell, the cell centre coordinates are compared against the zone polygon bounding box. If the cell centre falls outside the bbox, the cell is skipped without any turf call. This has zero accuracy cost: a cell whose centre is outside the polygon bounding box cannot intersect the polygon, and eliminates a significant fraction of cells for elongated or irregular zone shapes where the bbox is substantially larger than the zone itself.

5.7.4 Point-in-Polygon Sample Qualification (Unconditional)

The most expensive step in the original implementation was calling turf.intersect(cellPolygon, zonePolygon) to determine whether each cell qualifies as a sample point. This computes the full intersection geometry even when the result is null (no intersection). For large zones the vast majority of cells in the bbox fall outside the zone polygon, meaning most turf.intersect calls returned null and were wasted.

The optimised qualification uses a two-stage approach:

  1. Point-in-polygon test first: turf.booleanPointInPolygon(centrePoint, zonePolygon) is called for every non-bbox-skipped cell. This is an O(n vertices) ray-casting test that returns a boolean without computing any intersection geometry. If the cell centre is inside the zone, the cell qualifies immediately.
  2. Boundary cells: If the cell centre is outside, turf.booleanIntersects(cellPolygon, zonePolygon) is called. This returns a boolean indicating whether the cell polygon touches the zone boundary, again without computing intersection geometry. Only if this returns true does the cell qualify as a boundary cell requiring accurate coverage fraction computation.
Cell Qualification Decision Flow Zone polygon A Centre inside qualifies B Centre outside, polygon touches boundary cell C Centre outside, no intersection skipped A: Centre inside zone. booleanPointInPolygon qualifies cell (no geometry computed). B: Centre outside, cell polygon touches boundary. booleanIntersects identifies boundary cell; coverage fraction computed via turf.intersect. C: Centre outside, no intersection. Skipped entirely. No turf.intersect call made. turf.intersect (full geometry) is only called for boundary cells. All other cells resolved with cheaper boolean operations.
Figure 5.7b: The two-stage qualification test. Cell A (centre inside zone) qualifies via a fast point-in-polygon test. Cell B (boundary cell) is caught by turf.booleanIntersects. Cell C is skipped without any geometric computation. turf.intersect is only called when a coverage fraction is actually needed.

Boundary cells are preserved in the qualification set specifically to avoid under-counting population near zone edges, for example, where the GRB outer boundary skirts a populated area. Skipping boundary cells would risk missing the worst-case density kernel centre in exactly the scenario SORA is designed to identify.

5.7.5 Wholly-Inside Fast Path (Unconditional)

For cells that qualify via the point-in-polygon test (centre inside the zone), a further check determines whether the entire cell polygon is contained within the zone polygon using turf.booleanContains. If true, the coverage fraction is 1.0 and no intersection geometry needs to be computed. turf.intersect is only called for the small minority of qualifying cells that straddle the zone boundary.

5.7.6 AV Exclude Zone Optimisations (Unconditional)

The Adjacent Volume density calculation (Section 5.4) uses a donut-shaped zone: the area between the CV outer boundary (inner edge) and the AV outer boundary (outer edge). Computationally this is represented as a polygon with an exclude polygon (the CV outer boundary) subtracted. Two additional optimisations apply:

5.7.7 Additional Computational Shortcuts (Unconditional)

5.7.8 Accuracy Impact Summary

OptimisationGated?Accuracy impactRationale
Polygon simplificationYes (>100 vertices AND >25 km²)Small but non-zero at zone boundaryTolerance of 0.0001° introduces max ~10 m boundary displacement, less than one fifth of a GHS-POP cell width at EU latitudes. Dmax is unaffected if the peak kernel centre is interior to the zone. If the peak coincides with a boundary cell, a small denominator difference is possible. Original polygon retained for all non-raster uses.
Bounding box pre-filterNoNoneLogically equivalent to the full test. A cell outside the bbox cannot intersect the polygon.
Point-in-polygon qualificationNoNoneBoolean result is identical to checking for a non-null intersection. Boundary cells are still included via booleanIntersects.
Wholly-inside fast pathNoNoneCoverage fraction of 1.0 is the mathematically correct result when the cell polygon is fully contained by the zone polygon.
AV early exclude checkNoNoneCells inside CV are correctly excluded from the AV calculation regardless of method.
AV exclude boundary gateNoNoneCells not touching the CV boundary receive no carve-out, which is correct; their full area is within the AV band.
Euclidean distance (kernel)No<0.05% error at max kernel radiusAt radii of 100-400 m the planar approximation diverges from geodesic distance by less than 0.05%. Impact on final density figure is immeasurable.
Precomputed cell areaNoNoneCell area is constant for all cells in a zone. Single computation is mathematically identical to per-cell computation.

No optimisation alters the coverage fraction calculation itself. For every cell that qualifies, the coverage fraction is computed using the same turf.intersect geometry as the unoptimised implementation. The optimisations only determine which cells reach that step and by what route.


6. iGRC Determination

The intrinsic Ground Risk Class (iGRC) is determined by cross-referencing the maximum population density from Section 5.3 with the UAS characteristic dimension and maximum speed, using the JARUS SORA v2.5 iGRC determination table (Main Body, Section 4.2, Table 2).

6.1 Inputs

InputSource
Maximum population density (ppl/km²)Calculated per Section 5.3; or operator-declared override (see Section 6.3)
UAS characteristic dimension (m)Operator-declared; the largest physical dimension of the UA
UAS maximum speed (m/s)Operator-declared; the maximum horizontal speed in the operating configuration
Controlled ground area flagOperator-declared; if set, density is treated as the controlled/zero row

6.2 iGRC Lookup

The iGRC is determined by cross-referencing the population density band with the UAS size/speed category using the table below (JARUS Main Body Table 2). The following are entered into the Flight Geography calculator:

UA Characteristic Dimension

To establish the characteristic dimension of the UA:

Maximum Speed

The applicant must enter the potential maximum speed of the UA, not the maximum speed of the proposed operation. Any value entered below the manufacturer's listed maximum speed must be accompanied by prompt written justification. That justification is captured in the platform and passed through to the final report output.

Maximum speed entered below the manufacturer's listed maximum requires written justification. This is captured and included in the report.

iGRC Determination

JARUS SORA v2.5 Main Body, Table 2 - grey cells (n/a) are outside the scope of SORA

Pop. densityControlled area<=5 ppl/km²<=50<=500<=5,000<=50,000>50,000Maximum UA characteristic dimension or maximum speed1m25m/s3m35m/s8m75m/s20m120m/s40m200m/s112332345634567456785678967891078n/an/an/aiGRC value
Figure 17: iGRC determination - JARUS SORA v2.5 Main Body, Table 2. Grey cells (n/a) are outside the scope of SORA.

Cells marked n/a represent combinations outside the scope of JARUS SORA. Controlled area overrides all density calculations. A UA weighing less than or equal to 250g and having a maximum speed less than or equal to 25 m/s is considered to have an iGRC of 1 regardless of population density.

6.3 Population Density Overrides

An operator may declare a lower maximum density where operational circumstances justify a figure lower than the calculated result. An override requires mandatory written justification. The platform records both the calculated density and the declared density; both values and the justification text are included in the assessment report.

A declared population density override requires mandatory written justification. Both the calculated and declared values, together with the justification, are included in the assessment report.

Note: Dronedesk does not validate the sufficiency of operator justifications. The operator accepts full responsibility for the accuracy and applicability of any declared override.


7. Ground Risk Mitigation

7.1 Framework

JARUS SORA v2.5 defines four ground risk mitigations (Main Body, Section 4.3, Table 5): M1(A), M1(B), M1(C), and M2. The GRC credit available for each mitigation depends on the robustness level of evidence provided by the operator. N/A entries indicate that robustness level is not applicable for that mitigation.

GRC_residual = max( 1, iGRC + Σ(selected mitigation credits) )

The floor value of 1 ensures the residual GRC is never less than GRC 1.

Strategic Ground Risk Mitigations

JARUS SORA v2.5 Main Body, Table 5 - GRC reduction depends on robustness of evidence provided

GRC reduction by robustness levelMit.DescriptionLowMediumHighM1(A)Strategic mitigation - Sheltering-1GRC-2GRCN/AM1(B)Strategic mitigations - Operational restrictionsN/A-1GRC-2GRCM1(C)Tactical mitigations - Ground observation-1GRCN/AN/AM2Effects of UA impact dynamicsare reducedN/A-1GRC-2GRCGRC_residual = max( 1, iGRC + sum of selected credits )Floor of 1 - residual GRC cannot be less than 1. Operator must justify all mitigations.
Figure 18: Ground risk mitigations - JARUS SORA v2.5 Main Body, Table 5. Each mitigation requires mandatory written justification.

Within the Dronedesk assessment process, the operator selects which mitigations apply to their operation at the relevant step in the assessment flow. For each mitigation selected, the platform mandates a written justification or description of how that mitigation is achieved in practice. This justification is stored against the assessment and passed through in full to the final SORA report output, providing the auditable evidence required to support the claimed GRC reduction.

Each ground risk mitigation selected (M1(A), M1(B), M1(C), M2) requires a written explanation of how it is achieved in practice. This is mandatory and is included in full in the final report.

Note: Dronedesk does not validate the sufficiency or accuracy of operator justifications. The operator accepts full responsibility for the appropriateness of each declared mitigation.

See JARUS Annex B for additional details about the application of ground risk mitigations.

7.2 M1(A) - Strategic Mitigation: Sheltering

M1(A) (Sheltering) applies where people in the area are sheltered - for example, in buildings - such that the effective population density at risk is lower than the GHS-POP figure. GRC credit: Low robustness = -1; Medium robustness = -2; High robustness = N/A (sheltering effect is inherently limited).

A UA expected to not penetrate a standard dwelling will get a -1 GRC reduction in sheltering mitigation when not overflying large open-air assemblies of people.

7.3 M1(B) - Strategic Mitigations: Operational Restrictions

M1(B) (Operational restrictions) applies where strategic operational restrictions reduce population exposure - for example, restricting the operation to specific geographic areas, routes, or times of day that demonstrably reduce the population density. GRC credit: Low robustness = N/A; Medium robustness = -1; High robustness = -2.

7.4 M1(C) - Tactical Mitigations: Ground Observation

M1(C) (Ground observation) applies where a ground observer monitors the operational area and can halt or redirect the operation if people enter the FG. This is a tactical mitigation applied during flight. GRC credit: Low robustness = -1; Medium robustness = N/A; High robustness = N/A.

7.5 M2 - Effects of UA Impact Dynamics are Reduced

M2 applies where design or operational measures reduce the effects of UA impact dynamics - for example, a parachute, frangible structure, or kinetic energy limiter that reduces the severity of impact in the event of a loss-of-control event. GRC credit: Low robustness = N/A; Medium robustness = -1; High robustness = -2.

7.6 Residual GRC and Report Output

The assessment report includes a full mitigation table showing: each available mitigation, whether it was selected, the credit value applied, the operator's justification text (verbatim), and the resulting residual GRC.


8. Air Risk Assessment (ARC)

ARC Determination Flowchart

JARUS SORA v2.5 Main Body, Figure 6. ARC reduction by strategic mitigations is subject to independent assessment.

StartAtypical airspace?YesARC-aNo>FL600?YesARC-bNoAirport / heliportenvironment?YesClass B, C or Dairspace?YesARC-dNoARC-cNo>500ft AGL but<FL600?YesNoAbove 500ft AGLAt or below 500ft AGLMode-C Veilor TMZ?YesARC-dNoControlledairspace?YesARC-dNoUncontrolled airspaceover urban area?YesARC-cNoARC-cMode-C Veilor TMZ?YesARC-cNoControlledairspace?YesARC-cNoUncontrolled airspaceover urban area?YesARC-cNoARC-b
Figure 19: ARC determination flowchart - JARUS SORA v2.5 Main Body, Figure 6. Final ARC may be reduced by strategic mitigations subject to independent assessment.

8.1 Assessment Approach

The Air Risk Class (ARC) is determined by working through the JARUS SORA v2.5 ARC assignment process (Main Body, Section 4.4, Figure 6), corresponding to Figure 19 above. The following inputs and decisions are presented to the operator in the Dronedesk assessment flow, in the order they appear in the flowchart:

Atypical air environment (AAE): The operator declares via a Yes/No radio button whether the operation takes place in an atypical air environment, for example a segregated volume with no other airspace users. This defaults to No and is not auto-detected from infrastructure proximity. A declaration of Yes results in an initial ARC of ARC-a and bypasses the airspace classification branch entirely. Mandatory written justification is required.

A declaration of atypical air environment requires mandatory written justification explaining how the environment qualifies as atypical and what segregation or other measures are in place. This is captured and included in the assessment report.

Above FL600: The CV ceiling altitude is checked automatically against FL600. Per JARUS Figure 6, operations above FL600 are assigned ARC-b. The operator may proceed with the remainder of the assessment.

Airport / heliport environment: Where the operational volume is in an airport or heliport environment, the airspace class is checked. If the operation is in Class B, C or D airspace, ARC-d is assigned; otherwise ARC-c.

Airspace classification: The airspace class is determined automatically using OpenAIP data for the CV ceiling altitude. The system lists all airspace volumes intersecting the operational area with their associated floor (lower flight level, LFL), enabling the operator to review and amend the classification if required. Where the operational volume intersects multiple airspace classifications, the highest (most restrictive) ARC applies.

Written justification is required only where the operator selects a more permissive airspace class than the one auto-detected by the system. Selecting a more restrictive class requires no justification. The justification, together with both the auto-detected and operator-declared classifications, is included in the assessment report.

OpenAIP is a community-maintained data source and is not the authoritative airspace dataset for any jurisdiction. Operators are responsible for verifying the airspace classification against the official airspace data sources of the competent authority prior to operation.

Altitude band, Mode-C Veil/TMZ, controlled airspace, urban or rural: For operations outside an airport / heliport environment and below FL600, the ARC is assigned by stepping through the altitude-banded sub-flowchart shown in Figure 19. The operator declares the operating altitude band (above or at/below 500ft AGL), then answers the Mode-C Veil/TMZ, controlled airspace, and uncontrolled-over-urban-area questions. The resulting ARC follows the path through the flowchart.

VLOS tactical mitigation: A VLOS checkbox option is provided. If selected, the operator must choose one of three methods via radio button: Direct observation, Airspace observation, or UA observation. Selecting this tactical mitigation reduces the ARC by one step. Per JARUS Main Body Section 4.5.4, the VLOS mitigation cannot be used to reduce the ARC to ARC-a, and is not presented where the initial ARC is already ARC-a (AAE). Written justification is required.

Selecting the VLOS tactical mitigation requires written justification. This is captured and included in the final report.

8.1.1 Determination Logic

The following pseudocode documents the precise logic implemented in Dronedesk for ARC determination. It is included here for audit traceability and to support independent review of the implementation against JARUS SORA v2.5 Main Body Figure 6.

Inputs: CV ceiling altitude (derived from FG calculator), atypical air environment flag (operator-declared), airport/heliport environment flag (operator-declared, OpenAIP-supported), airspace class (OpenAIP, operator-amendable), Mode-C Veil/TMZ flag, urban/rural classification, VLOS mitigation selection (operator-declared).

Outputs: final_arc (ARC_a through ARC_d).

FUNCTION determine_arc(operation):

  // Step 1: Atypical Air Environment (AAE)
  // Operator-declared, defaults to No.
  // Not auto-detected from infrastructure proximity.
  // AAE == Yes results in ARC_a — the floor — so VLOS cannot
  // reduce it further. Mandatory justification required.
  IF operation.atypical_air_environment == YES:
    REQUIRE operation.aae_justification NOT EMPTY
    initial_arc = ARC_a
    GOTO step_vlos  // skip remaining airspace branches

  // Step 2: FL600 check — automated from CV ceiling altitude
  // Per JARUS Figure 6, operations above FL600 are ARC-b.
  IF operation.cv_ceiling_altitude > FL600:
    initial_arc = ARC_b
    GOTO step_vlos

  // Step 3: Airport / heliport environment branch
  // Operator-declared, supported by OpenAIP airport data.
  IF operation.in_airport_heliport_environment:
    IF operation.airspace_class IN [B, C, D]:
      initial_arc = ARC_d
    ELSE:
      initial_arc = ARC_c
    GOTO step_vlos

  // Step 4: Airspace class override consistency check.
  // Pre-populated from OpenAIP. Operator may amend.
  // If operator selects a less restrictive class than auto-detected,
  // mandatory written justification is required.
  IF operator.airspace_class != auto_detected_class
     AND baseline_arc[operator.airspace_class] < baseline_arc[auto_detected_class]:
    REQUIRE operation.airspace_override_justification NOT EMPTY

  // Step 5: Altitude-banded sub-flowchart per JARUS Figure 6.
  // Operations <= FL600 and outside airport/heliport environments are
  // routed by altitude band, then by Mode-C Veil/TMZ, then by
  // controlled vs uncontrolled, then by urban vs rural.
  IF operation.altitude_above_500ft_agl:
    // High band: above 500ft AGL but at or below FL600
    IF operation.in_mode_c_veil_or_tmz:
      initial_arc = ARC_d
    ELSE IF operation.in_controlled_airspace:
      initial_arc = ARC_d
    ELSE IF operation.over_urban_area:
      initial_arc = ARC_c
    ELSE:                              // uncontrolled airspace over rural
      initial_arc = ARC_c
  ELSE:
    // Low band: at or below 500ft AGL
    IF operation.in_mode_c_veil_or_tmz:
      initial_arc = ARC_c
    ELSE IF operation.in_controlled_airspace:
      initial_arc = ARC_c
    ELSE IF operation.over_urban_area:
      initial_arc = ARC_c
    ELSE:                              // uncontrolled airspace over rural
      initial_arc = ARC_b

  // Step 6: VLOS tactical mitigation (Main Body §4.5.4)
  // Optional operator selection. Reduces ARC by one step but cannot
  // reduce to ARC-a. Not offered when initial_arc is already ARC-a.
  LABEL step_vlos:

  IF operator.claims_vlos_mitigation AND initial_arc != ARC_a:
    REQUIRE operation.vlos_method IN
      [direct_observation, airspace_observer, ua_observer]
    REQUIRE operation.vlos_justification NOT EMPTY
    final_arc = MAX(reduce_by_one(initial_arc), ARC_b)  // floor ARC-b
  ELSE:
    final_arc = initial_arc

  RETURN final_arc


FUNCTION reduce_by_one(arc):
  // Floor is enforced by the caller, not here
  MAP = { ARC_d: ARC_c,  ARC_c: ARC_b,  ARC_b: ARC_a,  ARC_a: ARC_a }
  RETURN MAP[arc]

The pseudocode reflects the implemented logic as of version 1.0. Inputs that depend on jurisdictional data (Mode-C Veil/TMZ flag, urban/rural classification, airport/heliport boundaries) are sourced from OpenAIP and operator inputs at assessment time. Operators should verify these against authoritative national datasets before operation.

8.2 Design Rationale - Non-Application of ARC Strategic Mitigations

Strategic ARC mitigations under JARUS SORA (Main Body Section 4.5; Annex C) require independent judgement to apply. Mitigations such as BVLOS communication requirements, detect-and-avoid capability, or coordination with an ANSP cannot be automatically verified by the platform. Automatically reducing ARC based on operator-declared mitigations without independent verification would misrepresent the risk assessment.

Dronedesk presents the ten available strategic mitigations for operator selection. Each mitigation can be selected individually. Any mitigation selected requires the operator to provide a written justification and explanation of how it is achieved in practice. These are passed through in full to the final report output. The operative residual ARC is not automatically reduced by these selections; that determination requires independent assessor judgement.

Each ARC strategic mitigation selected (SM1-SM10) requires a written justification and explanation of how it is achieved. This is mandatory and passed through in full to the final report.

CodeDescription
SM1Operational restriction by boundary
SM2Operational restriction by chronology
SM3Operational restriction by time of exposure
SM4Special Use Airspace (SUA)
SM5Other airspace requirements
SM6Pre-agreement of ANSP services
SM7Pre-agreement of UTM services
SM8NOTAM of intended operation
SM9Military low flying notification
SM10Outreach to local flying clubs and pilots

8.3 ARC Output

The assessment report includes: the initial ARC from the automated OpenAIP classification, the operator-confirmed or amended ARC with justification where amended, the VLOS tactical mitigation selection and justification where applied, and a list of available strategic mitigations for operator reference.


9. SAIL Determination

The Specific Assurance and Integrity Level (SAIL) is determined by cross-referencing the final (residual) GRC with the final ARC, using the JARUS SORA v2.5 SAIL determination table (Main Body, Section 4.7, Table 7).

9.1 Inputs

9.2 SAIL Lookup

The SAIL is read directly from the JARUS SAIL determination table. The output ranges from SAIL I (lowest assurance requirement) through SAIL VI, or the Certified category.

SAIL Determination Matrix

Per JARUS SORA v2.5 Main Body, Table 7. C = Certified category.

Final ARCARC-aARC-bARC-cARC-dGRC <=2IIIIVVIGRC 3IIIIIVVIGRC 4IIIIIIIVVIGRC 5IVIVIVVIGRC 6VVVVIGRC 7VIVIVIVIGRC >7Cert.Cert.Cert.Cert.Residual GRC
Figure 20: SAIL determination matrix - cross-reference of residual GRC and final ARC, per JARUS SORA v2.5 Main Body, Table 7. C = Certified category.

9.3 Report Output

The assessment report includes the full SAIL determination: the final GRC, final ARC, and the resulting SAIL level. Associated Operational Safety Objectives (OSOs) are noted for operator reference.


10. Report Generation

10.1 Report Structure

10.2 Audit Trail

10.3 Report Delivery

The assessment report is generated as a PDF document via headless Chromium (api2pdf / Puppeteer). Map tiles in the report are rendered using MapTiler vector tiles. The report is a point-in-time document; recalculation is required if any parameter or geometry is subsequently changed.

10.4 Report Generation Contexts


11. Known Limitations and Planned Development

12.1 ARC Strategic Mitigations

As described in Section 8.2, ARC strategic mitigations are presented for reference only. This is a deliberate design decision. There are no current plans to implement automatic ARC mitigation credit computation, as this would require verified operator capability declarations that cannot be automated.

12.2 Population Data Currency

GHS-POP uses epoch averaging and does not reflect rapid population change, intra-day variation, or transient gatherings. Operators are responsible for applying appropriate judgement on the applicability of automated figures to their specific operation and timing.

12.3 Assemblies of People Data

OpenStreetMap coverage is not guaranteed to be complete for all venue types or geographic areas. Temporary assemblies are not captured. Operators must conduct manual assessments where OSM coverage may be incomplete and for all temporary gatherings.

12.4 Annex F Section 3.9.1 Methodology

The sliding-window kernel methodology for maximum population density is a direct application of JARUS Annex F Section 3.9.1 guidance. Operators in jurisdictions that adopt JARUS SORA v2.5 with national variations should confirm with their competent authority that the kernel approach is acceptable as the basis for the maximum density assessment.

12.5 Kernel Radius - Minimum Value and Configurable Angle

A minimum kernel radius of 100 m is applied to ensure meaningful spatial averaging across at least the immediate 3x3 GHS-POP cell neighbourhood. This minimum applies only to operations below approximately 58 m AGL.

The use of a configurable angle θ - allowing operators to use a site-specific angle of inclination in place of the 30° Annex F default - was considered and deferred. The current version uses θ = 30° as a fixed value, ensuring a consistent, auditable methodology.


Appendix A: Calculation Methodology

This appendix provides a textual description of each calculation performed in the SORA workflow. All formulae are consolidated in Appendix E.

A.1 Zone Definitions and Geometry

All zone boundaries are computed as geodesic buffers of the operator-defined FG polygon, using Turf.js (turf.buffer) with WGS84 ellipsoidal geometry. The CV outer boundary is at FG edge + CV distance. The GRB outer boundary is at FG edge + CV distance + GRB distance. The AV outer boundary is at FG edge + CV distance + AV distance. All buffer distances are in metres.

A.2 Cell Area Calculation

Each GHS-POP grid cell is treated as a polygon defined by its four corner coordinates in WGS84. The area of each cell polygon is computed using turf.area(), which implements the geodesic (ellipsoidal) area formula. Cell areas vary with latitude; at EU latitudes a 3 arc-second cell is approximately 4,500-5,800 m².

A.3 Cell-Polygon Intersection

The intersection of a cell polygon with a zone polygon is computed using turf.intersect(). The area of the intersection polygon is computed using turf.area(). All intersection calculations use WGS84 geodesic geometry.

A.4 People Count and Weighted Population

For each GHS-POP cell intersecting the FG+CV zone, the coverage fraction is the intersection area divided by the full cell area. The weighted population contribution is the raw cell headcount multiplied by the coverage fraction. The total people count is the sum of all weighted contributions. Average density for the FG+CV zone is the total weighted population divided by the total zone area, scaled to ppl/km².

A.5 Maximum Population Density - Kernel Method

The kernel radius is r = max(100, z / tan(30°)), where z is the FG ceiling height in metres AGL. Every GHS-POP cell wholly within or whose polygon crosses the FG+CV+GRB zone boundary is evaluated as a cell centre.

For each cell centre, the kernel circle is clipped to the zone polygon; the resulting area is the denominator. For each neighbouring cell within radius r, the overlap of the cell polygon with the zone polygon is computed and the coverage fraction applied to that cell's raw population. The kernel density is the sum of all weighted neighbour contributions divided by the clipped kernel area. The maximum kernel density across all cell centres is the reported maximum population density.

A.6 Average Density

The average density for the AV donut zone: each cell's intersection with the outer boundary polygon is computed, then the inner boundary polygon subtracted to give the net intersection area. Coverage fraction = net intersection area / full cell area. Average density = sum of weighted populations / total donut zone area (outer polygon area minus inner polygon area, computed geodesically), scaled to ppl/km².


Appendix B: Glossary

TermDefinition
ARCAir Risk Class. Describes the level of air traffic risk associated with a UAS operation, ranging from ARC-a (lowest) to ARC-d.
AVAdjacent Volume. The zone beyond the GRB used for average population density assessment. JARUS SORA v2.5 Main Body Section 2.2.5 refers to this region as the Adjacent Area; Dronedesk uses the term Adjacent Volume consistently in its UI and reports, but the two terms are equivalent.
COGCloud-Optimised GeoTIFF. A GeoTIFF format optimised for efficient partial reads over HTTP, enabling on-demand tile fetching.
Coverage fractionThe ratio of the intersection area of a cell polygon with a zone polygon to the full area of the cell.
CVContingency Volume. The zone immediately surrounding the FG, entered when a contingency procedure is triggered.
Dispersion areaThe circular ground footprint within which a UAS could impact following a loss-of-control event at a given altitude, modelled per JARUS Annex F Section 3.9.1.
FGFlight Geography. The operator-defined volume within which the UAS is intended to operate under normal conditions.
GHS-POPGlobal Human Settlement Population Grid. A population raster dataset produced by the European Commission Joint Research Centre.
GRCGround Risk Class. A measure of the risk of harm to people on the ground from a UAS operation.
GRBGround Risk Buffer. The zone beyond the CV within which the aircraft is expected to land following a loss-of-control event.
iGRCIntrinsic Ground Risk Class. The GRC determined from the maximum population density and UAS parameters, before mitigations are applied.
Kernel densityThe population density computed for a given cell centre using the sliding-window kernel method: kernel weighted population divided by the clipped kernel area.
M1(A), M1(B), M1(C), M2JARUS SORA v2.5 ground risk mitigations (Main Body, Table 5). GRC credit depends on robustness level: M1(A) (Sheltering) -1/-2/N/A; M1(B) (Operational restrictions) N/A/-1/-2; M1(C) (Ground observation) -1/N/A/N/A; M2 (Impact dynamics) N/A/-1/-2.
OSOOperational Safety Objective. A requirement associated with a given SAIL level.
OVOperational Volume. The union of the FG and CV (FG+CV).
SAILSpecific Assurance and Integrity Level. Determined by cross-referencing the final GRC with the final ARC.
SORASpecific Operations Risk Assessment. The risk assessment framework for UAS operations in the Specific category.
Weighted populationThe population contribution of a cell to a zone calculation: raw cell headcount multiplied by the coverage fraction.

Appendix C: References

C.1 Regulatory and Technical References

ReferenceDetails
JARUS SORA v2.5 Main BodyJARUS guidelines on Specific Operations Risk Assessment (SORA). JAR-DEL-SRM-SORA-MB-2.5, Edition 2.5, 13 May 2024. Joint Authorities for Rulemaking on Unmanned Systems. jarus-rpas.org
JARUS SORA v2.5 Annex AGuidelines on collecting and presenting system and operation information for a specific UAS operation. JAR doc_26. jarus-rpas.org
JARUS SORA v2.5 Annex BIntegrity and assurance levels for the mitigations used to reduce the intrinsic Ground Risk Class. JAR doc_27. jarus-rpas.org
JARUS SORA v2.5 Annex CStrategic Mitigation Collision Risk Assessment. jarus-rpas.org
JARUS SORA v2.5 Annex FTheoretical basis for ground risk classification and mitigation. Section 3.9.1: Sliding-window kernel for maximum population density. JAR doc_29. jarus-rpas.org
GHS-POP R2023ASchiavina, M., Freire, S., Carioli, A., MacManus, K. (2023): GHS-POP R2023A - GHS population grid multitemporal (1975-2030). European Commission, Joint Research Centre (JRC). doi:10.2905/2FF68A52-5B5B-4A22-8F40-C41DA8332CFE
OpenAIPCommunity aviation data platform. Airspace classification data. openaip.net
OpenStreetMap / Overpass APIOpenStreetMap community geographic data. Overpass API query interface. overpass-api.de
Turf.jsAdvanced geospatial analysis for browsers and Node.js. Used for all polygon geometry and area calculations. turfjs.org
georasterParse and query GeoTIFFs in-browser. Used to access GHS-POP raster data. github.com/geotiff/georaster

C.2 Data Sources

Data LayerSourceDetails
Population DensityCopernicus GHS-POP R2023AGlobal Human Settlement Population Grid (R2023). JRC, European Commission. Epoch: 2025. Resolution: 3 arc-seconds (~56 x 92 m at lat 52.8°). Coord. system: WGS84.
Assemblies of PeopleOpenStreetMap / Overpass APIOverpass query targeting: leisure=stadium; building=stadium; amenity~events_venue|conference_centre|exhibition_centre; leisure~horse_racing|dog_racing; landuse~recreation_ground|fairground; amenity~showground|fairground; leisure=track + sport~motor|karting; highway=raceway.

C.3 Methodology Lookups

MethodSourceDetails
Max Density Kernel MethodJARUS SORA v2.5 Annex F, Section 3.9.1Sliding-window kernel for maximum population density. Dispersion radius per equation (21): r = z / tan(30°), minimum 100 m. JAR doc_29.
Flight Geography CalculationsJARUS SORA v2.5 Annex A, Section A.5Guidelines on system and operation information for a specific UAS operation.
iGRC DeterminationJARUS SORA v2.5 Main Body, Section 4.2, Table 2Intrinsic Ground Risk Class determination table.
Ground Risk MitigationsJARUS SORA v2.5 Main Body, Section 4.3, Table 5; Annex BMitigations for Final GRC determination.
ARC DeterminationJARUS SORA v2.5 Main Body, Section 4.4, Figure 6ARC assignment process.
ARC Strategic MitigationsJARUS SORA v2.5 Main Body, Section 4.5; Annex CStrategic Mitigation Collision Risk Assessment.
SAIL DeterminationJARUS SORA v2.5 Main Body, Section 4.7, Table 7SAIL determination matrix.

Appendix D: Worked Examples

All examples use synthetic data and coordinates, designed to illustrate the calculation methodology clearly. No real operational data is used.

D.1 Point Geography Operation - End-to-End Walkthrough

D.1.1 Inputs

ParameterValue
FG geometryPolygon, approximately 500 m × 400 m (synthetic coordinates)
FG ceiling height (z)120 m AGL
CV distance100 m
GRB distance100 m (cumulative from FG: 200 m)
AV distance500 m (cumulative from CV outer: 600 m from FG)
UAS characteristic dimension3 m
UAS maximum speed35 m/s
GHS-POP (synthetic)Maximum populated cell in FG+CV+GRB: 3 people; zone population: 47 people

D.1.2 Maximum Density - Kernel Calculation

Kernel radius: r = max(100, 120 / tan(30°)) = max(100, 207.8) = 208 m.

For the maximum cell centre (synthetic): 3 people in contributing cells after proportional boundary weighting; clipped kernel area = 0.118 km² (circle extends beyond GRB boundary).

Dmax = 3 / 0.118 = 25.4 ppl/km²

D.1.3 iGRC Determination

Maximum density 25.4 ppl/km² falls in the "less than 50 ppl/km²" band. UAS: 3 m / 35 m/s. From JARUS SORA v2.5 Main Body Table 2: iGRC = 4.

D.1.4 Ground Risk Mitigation

Operator selects M1(B), credit = −1. Justification: "Operation planned for 06:00-08:00 on weekdays, outside school and commuter hours."

GRC_residual = max(1, 4 + (−1)) = 3

D.1.5 ARC and SAIL Determination

Automated OpenAIP classification: uncontrolled airspace over rural area, below 500ft AGL, ARC-b. Operator confirms. Final GRC = 3, Final ARC = ARC-b. From JARUS SORA v2.5 Main Body Table 7: SAIL II.

D.2 Linear Corridor Operation

The methodology for a linear corridor operation is identical to D.1. The FG geometry is a buffered polyline rather than a closed polygon. Zone buffers are applied radially to the corridor boundary. The kernel algorithm evaluates all cells whose polygon intersects the FG+CV+GRB zone, producing an elongated zone along the route.

D.3 Kernel Density - Sample-Level Walkthrough

D.3.1 Synthetic Grid

A 5 × 5 synthetic GHS-POP grid (each cell 90 m N-S × 60 m E-W). Columns are labelled A-E and rows 1-5. The FG+CV+GRB zone polygon covers cells B1-D3 (GRB outer boundary, red dashed). The kernel circle (r = 139 m) is centred on the peak cell C2.

A B C D E 1 2 3 4 A1 B1 C1 2 D1 E1 A2 B2 1 C2 5 D2 1 E2 A3 B3 C3 3 D3 E3 A4 B4 C4 1 D4 E4 GRB outer r = 139 m Population 0 1 2 3 5 (peak) GRB outer Kernel (r=139m) Synthetic 5×5 GHS-POP Grid Cell: 90 m N-S × 60 m E-W. GRB outer covers B1-D3. Kernel centred on C2.
Figure D.1: Synthetic 5×5 GHS-POP grid with GRB outer boundary (dashed red) and kernel circle (purple) centred on the peak cell (population = 5).

D.3.2 Kernel Parameters

z = 80 m AGL. r = max(100, 80 / tan(30°)) = max(100, 138.6) = 139 m.

D.3.3 Sample Point Evaluation (centre cell)

Cell centre C2 (population = 5) is the peak cell. The kernel circle (r = 139 m) is centred here.

  1. Clip kernel circle (r = 139 m) to zone polygon: clipped area = 0.058 km² (circle extends outside zone on two sides).
  2. Neighbour cells within r = 139 m: B1, C1, D1, B2, C2, D2, B3, C3, D3 (the GRB zone).
  3. Coverage fractions:
Kernel weighted population = 1.70 + 1.00 + 5.00 + 1.00 + 3.00 = 11.70
Kernel density = 11.70 / 0.058 = 201.7 ppl/km²

This process repeats for all cell centres. The maximum across all cell centres is reported.


Appendix E: Consolidated Formulae

All formulae referenced in this document. All areas in m² unless stated otherwise; densities in ppl/km².

E.1 Flight Geography Calculator

E.1.1 Contingency Volume (4.6.3)

SRZ = v0 × tRZ
SCM (rotorcraft) = 0.5 × (v0² / (g × tan(radians(Θ))))
SCM (fixed-wing/VTOL) = v0² / (g × tan(radians(Φ)))
SCM (parachute) = v0 × tp
HCM (rotorcraft) = 0.5 × (v0² / g)
HCM (fixed-wing/VTOL) = (v0² / g) × 0.3
HCM (parachute) = 0.7 × v0 × tp
SCV = SGPS + SPOS + Sk + SRZ + SCM
HCV = HFG + Hδ + HRZ + HCM

E.1.2 Ground Risk Buffer (4.6.4)

SGRB = HCV + 0.5 × CD (simplified 1:1 rule)
SGRB = (v0 × √(2 × HCV / g)) + (0.5 × CD) (ballistic, rotorcraft)
SGRB = (v0 × tf) + ((vwind × HCV) / vz) (parachute termination)
SGRB = HCV / ε (power-off glide, fixed-wing/VTOL)

E.1.3 Adjacent Volume (4.6.5)

SAV = tf × v0
HAV = HCV + 150

E.4 Zone Geometry

CV outer boundary = FG edge + CV_distance (geodesic buffer, metres)
GRB outer boundary = FG edge + CV_distance + GRB_distance (geodesic buffer, metres)
AV outer boundary = FG edge + CV_distance + AV_distance (geodesic buffer, metres)
AV inner boundary = CV outer boundary
Zone areas: A = turf.area(polygon) [m², geodesic/ellipsoidal]

E.4 Cell Area

Acell = turf.area(cell_polygon) [m², geodesic]

E.5 Coverage Fraction

Aintersection = turf.area( turf.intersect(cell_polygon, zone_polygon) )
fcoverage = Aintersection / Acell

E.6 Weighted Population

Pweighted = Praw × fcoverage

E.7 People Count (FG+CV)

Npeople = Σ( Praw(i) × fcoverage(i) )

for all cells i whose polygon intersects the FG+CV zone

E.8 Average Density (FG+CV and AV)

Davg = Σ( Pweighted(i) ) / ( Azone / 1,000,000 ) [ppl/km²]

where Azone = full zone area including zero-population cells (m²)

Azone(AV) = area(AV outer polygon) - area(CV outer polygon)

E.9 Dispersion Radius (Annex F Equation 21)

rdisp = z / tan(30°) [metres]
rkernel = max( 100, rdisp ) [metres]

where z = FG ceiling height (m AGL), θ = 30° (fixed per Annex F)

E.10 Clipped Kernel Area

kernel_circle = turf.circle(sample_centre, rkernel, steps=64)
clipped_kernel = turf.intersect(kernel_circle, zone_polygon)
A_kernel_clipped = turf.area(clipped_kernel) / 1,000,000 [km²]

E.11 Kernel Weighted Population

Pkernel = Σ( Praw(n) × fcoverage(n) )

for all neighbour cells n where:

fcoverage(n) = area( intersect(cell_n, zone_polygon) ) / area(cell_n)

E.12 Kernel Density

Dkernel(s) = Pkernel(s) / A_kernel_clipped(s) [ppl/km²]

for each cell centre s

E.13 Maximum Density

Dmax = MAX( Dkernel(s) )

for all cell centres s wholly within or crossing the FG+CV+GRB zone boundary

E.14 Residual GRC

GRC_residual = max( 1, iGRC + Σ(mitigation_credits) )

E.15 SAIL

SAIL = lookup( GRC_residual, ARC_final ) per JARUS SORA v2.5 Main Body Table 7

— END OF DOCUMENT —