Communicating with space and analysing satellite data
Azure reached beyond the clouds and bring space-born satellite data to your subscription for analysis and discovering insights.
Satellite as a service, Azure Orbital and a whole new ecosystem signal the ambition to push the limits and explore new opportunities.
In this session we are talking about geospatial AI-based analysis and a comprehensive flow that will allow you touch a vector of increasing importance for extending the cloud and helping businesses make tactical decisions.
2. Speaker Bio
• Software Architect @
o Digital Company
• Microsoft Azure MVP
• External Expert Eurostars-Eureka, Horizon Europe
• External Expert InnoFund Denmark, RIF Cyprus
• Business Interests
o Web Development, SOA, Integration
o IoT, Machine Learning
o Security & Performance Optimization
• Contact
ivelin.andreev@icb.bg
www.linkedin.com/in/ivelin
www.slideshare.net/ivoandreev
5. Agenda
• Introduction and Terms
• Azure Space Ecosystem
• Setting up Spacecraft Resource
• Setting up Infrastructure
• Consuming Connection
• Orbital Analytics with Synapse
6. Takeaways
• Azure Space
o https://azure.microsoft.com/en-us/blog/new-satellite-connectivity-and-geospatial-capabilities-with-azure-space
• Summary Videos
o Contact space satellites to access data
o Use Azure Orbital to communicate with satellites
o Azure Orbital Analytics with Power Apps
o Orbital for Geospatial Analytics with Synapse
• Setup Orbital
o https://docs.microsoft.com/en-us/azure/orbital/downlink-aqua
• Geospatial Analytics with Synapse (Samples)
o Ship Detection: https://github.com/microsoft/ShipDetection/
o Building Footprint: https://orca-docs.blackshark.ai/
• AZ Orbital Analytics GitHub
o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/docs/Glossary.md
o https://github.com/Azure/azure-orbital-integration
8. Satellite/Spacecraft Basics
• Spacecraft
o Vehicle/machine designed to fly in outer space
• Orbit
o Regular, repeating path that one object in space takes around another one
o An object in an orbit is called a satellite
• Uplink/Downlink
o Extremely sensitive antennas on satellite
o Receive from Earth (Uplink), transfer to Earth (Downlink) respectively
• The Challenge
o Setting up a ground station is complex, lengthy and expensive task
o Satellite communication is not straightforward (digitalized RF signal)
• AZ Orbital Ground Station
o Bring satellite data into your cloud environment, where data is securely delivered to your virtual network
10. Azure Space Ecosystem
• Azure Space
o Services, partnerships and strategy (i.e. Airbus) to integrate cloud and satellite technology
o AZ Space Products: Azure Orbital, Azure Modular Data Center (MDC),
Space Orbital Emulator, SpaceEye, Project Turing
• History
o Azure Orbital (Preview) announced Sep 2020
o Azure Orbital (GA) from 29 Aug 2022
• Benefits
o Collaboration with leading space community companies
o Extend Azure capabilities with space infrastructure
o Accelerate time to insight from Earth observations
o Develop space applications faster
o Develop applications cheaper (shared high gain antennas)
11. Azure Orbital
• Establishes connection between satellite
networks and the cloud
• One set of APIs across multiple sat. networks
• AZ Orbital GSaaS main parts
o Own Microsoft ground stations
o Partner ground stations
o Processing station to ingress data from satellite
• Orbital Capabilities
o Register a satellite
o Create contact profile
o Schedule contact
14. Azure Orbital Workflow
1. Register a spacecraft
o Required attributes: NORAD ID, TLE, licensing
2. Create a contact profile
o Set center frequency and bandwidth
o Minimum elevation, auto tracking
3. Schedule contact
o Select spacecraft
o Select contact profile
o Select date/time window
Note: Satellite transfer is 280TB/day!!!
16. Azure Orbital during the Preview
Fill-in AZ Orbital Onboarding form:
https://forms.office.com/r/fk32xNmDyx
Onboard to Azure Orbital Preview URL:
https://aka.ms/orbital/portal
Await a 'Preview Access Granted' email
from Azure Orbital (typically 12 h), use onboarding link even after access granted
17. Step 1: Microsoft.Orbital Resource Provider
• Register Microsoft.Orbital resource provider
o Subscription > Resource Providers > Microsoft.Orbital (select latest version)
• Provider still not documented
o https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/azure-services-resource-providers
18. Step 2: The Spacecraft
Spacecraft object definition
• Links (Immutable)
o RF details of center frequency
o Bandwidth MHz
o Polarization (RHCP, LHCP, Linear Vertical)
• Ephemeris (Updatable)
o The latest TLE (two-line element)
o Determines path of antenna to follow during contact
o TLE is prone to expiration and needs to be updated
• Licensing
o Because of regulatory requirements
o Scheduling and contact denied w/o authorization
19. Spacecraft Configuration
• AZ Portal > Spacecrafts
• NASA’s AQUA public satellite
https://docs.microsoft.com/en-us/azure/orbital/downlink-aqua
Field Value
Subscription Select your subscription
Resource Group Select your resource group
Name Ivo Space 1
Region West US 2
NORAD ID 27424
TLE title line AQUA
TLE line 1 Enter TLE line 1 from Celestrak
TLE line 2 Enter TLE line 2 from Celestrak
https://celestrak.org/NORAD/elements/active.txt
20. NORAD Two-Line Element Set Format
• TLE data for each satellite consists of three lines in the following format:
21. Get TLE from Celestrak
• Orbit satellite catalogue and
visualization
• 3D visualization down since
01.09.2022 due to lack of funding
• TLEs available
https://celestrak.org/NORAD/elements/active.txt
• TLE explained
https://celestrak.org/columns/v04n03/
22. Satellite Links & Deployment
• Define spacecraft's capabilities by adding link configurations
If you have not been onboarded to AZ Orbital, Deployment Failure
{
"status": "Failed",
"error": {
"code": "InvalidResourceType",
"message": "The resource type could not be found in the namespace 'Microsoft.Orbital' for api version '2022-03-01'."
}
}
23. Spacecraft Authorization/Licensing
• Fill in spacecraft authorization form
https://forms.office.com/r/QbUef0Cmjr
o No “Spacecraft resource authorized” email (Authorization takes ~12h)
o There is/was a bug
• Authorization status is not updated
• But resource JSON shows
24. Step 3: Other Resources
• VNet
• Subnets
o Set subnet with at least 24 mask
o Set subnet virtual delegation
• Orbital VMs
o OS: Linux (Ubuntu 18.04 or higher)
o Size: at least 32 GiB of RAM (!!! Pricing !!!)
o Ensure that the VM has at least one standard public IP
o Create a tmpfs on the virtual machine.
o Install SOCAT utility
• Prepare VNET for AZ Orbital integration
Azure Bastion subnet
Azure Orbital subnet (delegation)
VM in subnet (NOT OK)
Azure Orbital subnet (delegation)
VM NOT in subnet (OK)
25. Step 4: Orbital Contact Profile (That was tough!!!)
• Save and reuse contact configurations
o Required before scheduling a contact to ingest data from a satellite into Azure.
o i.e. Min elevation 10 deg, X-band autotrack, PT5M minimum contact
• Create EventHub for telemetry
o Same Sub, RG and Region
o https://docs.microsoft.com/en-us/azure/orbital/contact-profile
o https://docs.microsoft.com/en-us/azure/orbital/downlink-aqua
26. Event Hubs Ground Station Telemetry
• Grant Azure Orbital the rights to send telemetry
o EventHub > IAM Access Control
o Add Role Assignment to “Azure Event Hubs Data Sender”
o Assign “User, group, or service principal”
o Select “'Azure Orbital Resource Provider”
• Capture to file (.avro) on EventHub
o File stored to AZ Storage
• View capture
o https://dataformat.net/avro/viewer-and-converter
o Body is Base64 encoded
27. Step 5: Links and Channels
• Link – the whole band with unique polarity and direction
• Channel – specifies frequency, bandwidth, endpoints
• Contact profile sample JSON (check URL for sample values)
o https://docs.microsoft.com/en-us/azure/orbital/concepts-contact-profile
Unique IP
in 49152 – 65535 range
Gain (db) how well the antenna
converts RF signal to el. power
Noise T (deg. K) – eq temperature
to produce noise in a system
Demodulation – broadcast=15Mbps;
playback=150Mbps
28. Step 6: Schedule Contact
• The Satellite Dish
o Parabolic antenna (6-8m) with a focus in the sky
o Multiple antennas available per site to solve redundancy
• Scheduling
o Triggers antenna movement to follow satellite ($$$)
o Uses TLE to discover satellite position
o TLE expires
o Optimization provided by partners
• Contact
o At connection time ~150Mbit/s of RF signal is digitized
o Data captured raw and unformatted
• Ground services integrated to Azure
29. Create a Contact
• Scheduling a contact triggers a deployment
• Access will be granted to Microsoft stations only
30. • Prepare to “listen” shortly before the time of contact
• Start listening on Step 5 port (i.e. 56001) and capture to file
socat -u tcp-listen:56001,fork create:/media/aqua/out.bin
o Verify access to output folder (i.e. use WinSCP tool for remote connection)
o 10 min communication (1GB-10GB) – depends on demodulation configuration
o Once your contact has executed, move the output file from the tmpfs to preserve it
• Note: Operation will fail if using a subnet that is already in use (this includes
the VM). Documentation update shall follow up soon
Step 7: During a Contact
31. Step 8: Processing Payload
• Instructions
o https://docs.microsoft.com/en-us/azure/orbital/satellite-imagery-with-orbital-ground-station
• Direct Broadcast Data
o Output from all instruments onboard (AQUA has six)
• Realtime Software Telemetry Processing System (RT-STPS) by NASA
o Process Direct Broadcast Data to Level-0 Production Data Set (.pds)
o Only Linux, Installed as a server, near realtime processing
• International Planetary Observation Processing Package (IPOPP) by NASA
o Shall be on separate machines for production workloads than RT-STPS
o Process Level-0 dataset, create Level-1 and Level-2 products
33. Azure Orbital Analytics
• Custom Vision over satellite imagery
• Process earth imagery data
• Extract time series from the observations for
understanding and prediction
34. Azure Orbital Analytics Reference Architecture
• Capabilities to use AI to discover insights from spaceborn data
o Orbital Analytics for AZ Synapse applies AI over satellite imagery
• Sample Solution Diagram
• Objective 1
o Basic drag-drop tools to build workflow
• Objective 2
o Be open as possible
o Uses Azure Batch (containers not supported)
• Documentation
https://docs.microsoft.com/en-
us/azure/architecture/industries/aeros
pace/geospatial-processing-analytics
36. Infrastructure Setup
• Instructions (Infrastructure Setup):
o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/deploy/README.md
• Bicep Template Deployment (~1h)
o Use git bash
o Clone GitHub repo gh repo clone Azure/Azure-Orbital-Analytics-Samples
o Azure login, set subscription az login; az account set -s <subscription_id>
o Run setup.sh ./deploy/setup.sh <envCode> <loc> <pipelineName> <envTag>
o Cleanup - use Cleanup.sh instead of AZ Resource deletion
• Notes
o (fixed) environmentCode shall be unique to avoid conflict as storage account name is generated from its hash
• Now the subscription ID is used which is sufficiently unique (i.e. Orbital did not work)
o Region – you may not be allowed to deploy some services in some regions, (i.e. WEurope instead of WestUS2)
o (fixed) Synapse.sparktool.bicep Spark autoscale minnode count cannot be 1
o (fixed) Synapse deployment may have been created at a previous attempt and may force change environment code
37. Infrastructure Configuration and Preparation
• Synapse Pipeline for Custom Vision model for object detection from GeoTIFF
• Copy GeoTIFF sample data to storage account (480MB)
o ../deploy/scripts/copy_geotiff.sh [environmentName]
o Location is [environmentName]-data-rg > storage account
• Custom Vision Model
• Option 1: Publicly hosted (Preferred)
• Option 2: Download and host in own container registry
• Option 3: Own model in own container registry
o Synapse Configuration Files (samples)
• https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/deploy/README.md#running-the-pipeline-
custom-vision-model
38. Azure Synapse (Prerequisites)
1. Instructions (Synapse Prerequisites)
https://docs.microsoft.com/en-us/azure/architecture/industries/aerospace/geospatial-processing-analytics
2. Install Synapse packages
o Select Spark pools > Packages
o Upload …deployenvironment.yml
o Publish changes
3. Check packages by running in a Python notebook
o import pkg_resources for d in pkg_resources.working_set: print(d)
39. Azure Synapse Pipeline Deployment
• Why Synapse Analytics
o Workflow engine; Integrations out of the box; drag-drop UI
• Pipeline
o Logical group of synapse activities that perform a task
o Takes GeoTIFF images as input
o Runs geospatial analysis with Azure Synapse Analytics
o Produce GeoJSON with coordinate polygons
• Add Pipeline from Gallery
• Gallery Instructions (Pipeline configuration, updated 2022.10.07 21:00 EET, Issue #82)
o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/deploy/gallery/instructions.md
• Configure Pipeline
o Linked Services – connection strings to data stores for Synapse
Specification JSON (RawData AZ BLOB
Files (RawData Data Lake Storage v2
Dataset (Azure File storage)
40. Pipeline 1: Transformation
• Instructions
o https://github.com/Azure/Azure-Orbital-Analytics-Samples/blob/main/docs/Pipeline-Activities.md
• Transforms Pipeline
o Foreach file, stitch multiple geotiffs
o Spark job to run Python to crop files
o Convert to PNG
o Python script to transform raw raster geotiff to 512 by 512 tiles of PNGs
o Uses config folder JSON configuration
o [envcode]-data-rg > [storage account] > [envcode]-test-container
41. • Custom Vision Object Detection
o Copy files, starts custom vision model (pool geolocation), copies the result to AZ storage, object detection in pool
o Pipeline configuration
Pipeline 2 : Object Detection