{"id":50864213,"url":"https://github.com/aliaksei135/uasgroundrisk","last_synced_at":"2026-06-14T23:34:19.998Z","repository":{"id":82916292,"uuid":"377501944","full_name":"aliaksei135/uasgroundrisk","owner":"aliaksei135","description":"Risk quantification of UAS (drones) in the real world using OSM data.","archived":false,"fork":false,"pushed_at":"2025-07-11T18:34:25.000Z","size":53053,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-14T23:34:19.324Z","etag":null,"topics":["aviation-safety","drones","probabilistic-models","risk-assessment","uas"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aliaksei135.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-06-16T13:15:33.000Z","updated_at":"2025-07-11T18:34:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"9025eabe-f6e0-4480-bf13-06642dd5419f","html_url":"https://github.com/aliaksei135/uasgroundrisk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aliaksei135/uasgroundrisk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliaksei135%2Fuasgroundrisk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliaksei135%2Fuasgroundrisk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliaksei135%2Fuasgroundrisk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliaksei135%2Fuasgroundrisk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aliaksei135","download_url":"https://codeload.github.com/aliaksei135/uasgroundrisk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliaksei135%2Fuasgroundrisk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34342089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aviation-safety","drones","probabilistic-models","risk-assessment","uas"],"created_at":"2026-06-14T23:34:17.126Z","updated_at":"2026-06-14T23:34:19.972Z","avatar_url":"https://github.com/aliaksei135.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# uasgroundrisk\n\nGround Risk calculation for Unmanned Aerial Systems.\n\n## Project Overview\n\nuasgroundrisk is a C++ library for calculating ground risk for Unmanned Aerial Systems (UAS). It provides tools for generating risk maps based on population density, road networks, building footprints, and other geospatial data. The library also includes models for aircraft descent and weather conditions to provide a comprehensive risk assessment.\n\n## Modules\n\nThe `uasgroundrisk` library is composed of several interconnected modules:\n\n*   **GridMap (`gridmap`):** This is a foundational module providing a generic 2D grid data structure. It's used by other modules to store and query spatially referenced data. Each cell in the grid can hold multiple layers of information.\n\n*   **Map Generation (`map_gen`):** This module is responsible for creating various types of maps used in risk assessment.\n    *   **PopulationMap:** Generates static population density maps, typically derived from census data. It uses the `GridMap` to store population counts or densities per grid cell.\n    *   **TemporalPopulationMap:** Extends `PopulationMap` to account for changes in population density over time (e.g., day vs. night, weekday vs. weekend). This also utilizes the `GridMap` structure.\n    *   **OSMMap:** Integrates with OpenStreetMap (OSM) data to extract features like roads, buildings, and points of interest. It processes OSM data and can populate `GridMap` layers with relevant information (e.g., building footprints, road locations).\n    *   **GeospatialGridMap:** A specialized `GridMap` that understands geographic coordinate systems and projections, crucial for accurately representing real-world data.\n\n*   **Risk Analysis (`risk_analysis`):** This core module performs the actual ground risk calculations.\n    *   **Aircraft Models (`aircraft`):** Contains models for aircraft behavior, particularly descent characteristics (e.g., ballistic descent, glide, parachute). These models help predict the potential impact area in case of an incident.\n    *   **ObstacleMap:** Represents obstacles on the ground, primarily buildings, which can affect aircraft descent paths and shelter populations. This often sources data from `OSMMap`.\n    *   **WeatherMap:** Incorporates weather data, such as wind speed and direction, which can influence an aircraft's trajectory during an emergency descent.\n    *   **RiskMap:** Combines data from `PopulationMap` (or `TemporalPopulationMap`), `AircraftModel`, `ObstacleMap`, and `WeatherMap` to calculate a comprehensive ground risk score for each cell in a `GridMap`. It assesses the probability of an aircraft impacting a given area and the potential consequences based on population and obstacles.\n    *   **IncrementalRiskMap:** An extension of `RiskMap` that allows for efficient updates to the risk assessment as new data (e.g., updated weather, new obstacle information) becomes available, without needing to recalculate everything from scratch.\n\n*   **Pathfinding (`pathfinding`):** This module includes algorithms like A* search. While not directly part of risk calculation, it can utilize `RiskMap` outputs to find the safest routes for UAS operations, avoiding high-risk areas.\n\n*   **Utilities (`utils`):** Contains helper functions and classes used across the library, such as geometry operations, data fitting algorithms, and projection utilities for handling geospatial coordinate transformations.\n\nThese modules work together: `map_gen` creates the foundational data layers (population, OSM features) stored in `GridMap` structures. The `risk_analysis` module then consumes these maps, along with aircraft and weather models, to produce detailed risk assessments, also often stored as `GridMap` layers. The `pathfinding` module can then use these risk maps for operational planning.\n\n### Module Relationships Diagram\n\n```mermaid\ngraph TD\n    subgraph CoreDataStructure[\"Core Data Structure\"]\n        GridMap[\"GridMap (`gridmap`)\u003cbr\u003eGeneric 2D grid\"]\n    end\n\n    subgraph DataPreparation[\"Data Preparation (map_gen)\"]\n        direction LR\n        CensusData[(\"Census Data\")] --\u003e PopulationMap\n        OSMData[(\"OpenStreetMap Data\")] --\u003e OSMMap\n        PopulationMap[\"PopulationMap\u003cbr\u003eStatic population density\"] --\u003e GridMap\n        TemporalPopulationMap[\"TemporalPopulationMap\u003cbr\u003eTime-varying population\"] --\u003e PopulationMap\n        OSMMap[\"OSMMap\u003cbr\u003eRoads, Buildings, POIs\"] --\u003e GridMap\n        GeospatialGridMap[\"GeospatialGridMap\u003cbr\u003eGeo-aware GridMap\"] --\u003e GridMap\n    end\n\n    subgraph RiskCalculation[\"Risk Calculation (risk_analysis)\"]\n        direction LR\n        AircraftModels[\"AircraftModels (`aircraft`)\u003cbr\u003eDescent characteristics\"]\n        ObstacleMap[\"ObstacleMap\u003cbr\u003eBuilding footprints, etc.\"]\n        WeatherMap[\"WeatherMap\u003cbr\u003eWind speed/direction\"]\n\n        OSMMap --\u003e ObstacleMap\n        PopulationMap --\u003e RiskMapComponent[\"RiskMap Components\"]\n        TemporalPopulationMap --\u003e RiskMapComponent\n        AircraftModels --\u003e RiskMapComponent\n        ObstacleMap --\u003e RiskMapComponent\n        WeatherMap --\u003e RiskMapComponent\n\n        RiskMapComponent --\u003e RiskMap[\"RiskMap\u003cbr\u003eComprehensive risk score\"]\n        RiskMap --\u003e GridMap\n        IncrementalRiskMap[\"IncrementalRiskMap\u003cbr\u003eEfficient updates\"] --\u003e RiskMap\n    end\n\n    subgraph Applications[\"Applications (pathfinding)\"]\n        direction LR\n        RiskMap --\u003e Pathfinding[\"Pathfinding\u003cbr\u003eA* search for safe routes\"]\n    end\n\n    subgraph SharedServices[\"Shared Services (utils)\"]\n        Utils[\"Utilities\u003cbr\u003eGeometry ops, Projections, Data fitting\"]\n    end\n\n    Utils --\u003e GridMap\n    Utils --\u003e PopulationMap\n    Utils --\u003e TemporalPopulationMap\n    Utils --\u003e OSMMap\n    Utils --\u003e GeospatialGridMap\n    Utils --\u003e AircraftModels\n    Utils --\u003e ObstacleMap\n    Utils --\u003e WeatherMap\n    Utils --\u003e RiskMap\n    Utils --\u003e IncrementalRiskMap\n    Utils --\u003e Pathfinding\n\n    classDef default fill:#f9f,stroke:#333,stroke-width:1px,font-family:arial,font-size:12px;\n    classDef subgraphStyle fill:#eee,stroke:#999,stroke-width:1px,rx:5,ry:5,color:#333;\n    classDef dataInput fill:#lightgrey,stroke:#333,stroke-width:1px;\n\n    class CoreDataStructure,DataPreparation,RiskCalculation,Applications,SharedServices subgraphStyle;\n    class CensusData,OSMData dataInput;\n```\n\n## Dependencies\n\nThis project uses [Conan](https://conan.io/) to manage dependencies. To install the dependencies, you will need to have Conan installed.\n\n```bash\n# Install dependencies using Conan\nconan install . --output-folder=build --build=missing\n```\n\n## Building the Project\n\nThis project uses CMake for building.\n\n```bash\n# Create a build directory\nmkdir build \u0026\u0026 cd build\n\n# Configure CMake\n# Replace \u003cpath_to_conan_toolchain_file\u003e with the actual path to the conan_toolchain.cmake file generated by conan install\n# e.g., build/conan_toolchain.cmake if you ran conan install from the project root and specified --output-folder=build\ncmake .. -DCMAKE_TOOLCHAIN_FILE=\u003cpath_to_conan_toolchain_file\u003e\n\n# Build the project\ncmake --build .\n```\n\n### Build Options\n\n*   `UGR_BUILD_TESTS`: Set to `ON` to build tests (default: `OFF`).\n    ```bash\n    cmake .. -DCMAKE_TOOLCHAIN_FILE=\u003cpath_to_conan_toolchain_file\u003e -DUGR_BUILD_TESTS=ON\n    ```\n*   `UGR_BUILD_DOCS`: Set to `ON` to build documentation (default: `OFF`).\n    ```bash\n    cmake .. -DCMAKE_TOOLCHAIN_FILE=\u003cpath_to_conan_toolchain_file\u003e -DUGR_BUILD_DOCS=ON\n    ```\n\n## Running Tests\n\nIf you built the project with `UGR_BUILD_TESTS=ON`, you can run the tests using CTest:\n\n```bash\n# From the build directory\nctest\n```\n\n## License\n\nThis project is licensed under the GNU Lesser General Public License v2.1 - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliaksei135%2Fuasgroundrisk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliaksei135%2Fuasgroundrisk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliaksei135%2Fuasgroundrisk/lists"}