1. Fontes de Dados Satelitais
Vegetação, NDVI, índices espectrais
Solo, temperatura superficial
Clima global, cobertura vegetal ampla
Imagens diárias de alta resolução (3m)
Tipos de dados coletados
NDVI
Saúde da planta
Umidade
Solo estimada
LST
Temp. superfície
Índices
Espectrais
Δ Temporal
Mudanças no tempo
2. Arquitetura Completa
3. API de Ingestão Satelital
# satellite/ingestion.py
import requests
def get_ndvi(lat, lon):
# simulação (substituir por API real)
return {
"ndvi": 0.72,
"soil_moisture": 35,
"temperature": 29
}
def fetch_satellite_data(field):
data = get_ndvi(field["lat"], field["lon"])
return data4. Análise por IA
# ai/satellite_decision.py
def analyze_satellite(data):
ndvi = data["ndvi"]
if ndvi < 0.4:
return "CRITICAL" # planta com sérios problemas
elif ndvi < 0.6:
return "ATTENTION" # monitorar / intervir
else:
return "HEALTHY" # nenhuma ação necessária| NDVI Range | Status | Cor | Significado |
|---|---|---|---|
| < 0.4 | CRITICAL | 🔴 | Planta com sérios problemas |
| 0.4 – 0.6 | ATTENTION | 🟡 | Monitorar / intervir |
| > 0.6 | HEALTHY | 🟢 | Nenhuma ação necessária |
5. Decisão Automática + Loop
# ai/auto_action.py
import requests
def act_on_field(status):
if status == "CRITICAL":
print("IA: aplicar irrigação urgente")
requests.post("http://api:8000/irrigate?zone=1&volume=200")
elif status == "ATTENTION":
print("IA: aplicar fertilizante")
requests.post("http://api:8000/fertilize?zone=1&amount=50")
else:
print("IA: campo saudável — nenhuma ação")# satellite/main_loop.py
import time
from ingestion import fetch_satellite_data
from ai.satellite_decision import analyze_satellite
from ai.auto_action import act_on_field
FIELD = {"lat": -19.2, "lon": -40.1}
while True:
sat_data = fetch_satellite_data(FIELD)
status = analyze_satellite(sat_data)
print(f"NDVI: {sat_data['ndvi']} → Status: {status}")
act_on_field(status)
time.sleep(3600) # a cada 1 hora6. Satélite + AutoPilot RTK
O mais poderoso do ecossistema ZONY: o satélite detecta o problema, a IA decide a ação e o autopilot navega fisicamente até o ponto no campo para executar.
Satélite detecta NDVI baixo
Sentinel-2 · a cada 5 dias
IA decide irrigar ou fertilizar
satellite_decision.py
Envia comando para o sistema
auto_action.py → API /irrigate
Trator vai sozinho até o ponto
autopilot RTK · GPS cm
Executa irrigação/fertilização
CAN 0x100 → implemento
# Integração Satélite + AutoPilot
# satellite/autopilot_integration.py
from ingestion import fetch_satellite_data
from ai.satellite_decision import analyze_satellite
from autopilot.path_planner import generate_lines
from autopilot.navigation import calculate_heading, steering_control
def satellite_to_field_action(field):
# 1. Satélite detecta problema
sat_data = fetch_satellite_data(field)
status = analyze_satellite(sat_data)
if status in ["CRITICAL", "ATTENTION"]:
# 2. IA decide irrigar/fertilizar
lines = generate_lines(field["width"], spacing=0.5)
for line_x in lines:
target = (line_x, field["lat"])
current = get_gps_position()
# 3. Autopilot navega até o ponto
target_hdg = calculate_heading(current, target)
current_hdg = get_imu_heading()
steering = steering_control(current_hdg, target_hdg)
# 4. Executa ação no campo via CAN
send_can(0x200, [int((steering + 30) * 4)])7. APIs Reais (Produção)
services.sentinel-hub.com
earthengine.googleapis.com
api.planet.com
# Estrutura para APIs reais de satélite
import requests
# ESA Copernicus / Sentinel Hub
def get_sentinel_ndvi(lat, lon, token):
url = "https://services.sentinel-hub.com/api/v1/statistics"
headers = {"Authorization": f"Bearer {token}"}
payload = {
"input": {
"bounds": {"geometry": {
"type": "Point",
"coordinates": [lon, lat]
}},
"data": [{"type": "sentinel-2-l2a"}]
},
"aggregation": {"evalscript": "NDVI"}
}
return requests.post(url, json=payload, headers=headers).json()
# Planet Labs
def get_planet_image(lat, lon, api_key):
url = "https://api.planet.com/data/v1/quick-search"
headers = {"Authorization": f"api-key {api_key}"}
payload = {
"item_types": ["PSScene"],
"filter": {
"type": "GeometryFilter",
"field_name": "geometry",
"config": {"type": "Point", "coordinates": [lon, lat]}
}
}
return requests.post(url, json=payload, headers=headers).json()8. Limitações Importantes
Não é 100% real-time
Satélites têm delay de horas a dias. Planejar ciclos adequados.
Nuvens interferem
Cobertura de nuvens bloqueia imagens ópticas. Usar SAR como backup.
Complementar com drones
Drones + sensores IoT compensam o delay satelital com dados locais.
🧬 Digital Twin + Satélite
🛰️ Diferencial Absoluto
👁️
Vê do espaço
NDVI, umidade, temperatura via satélite
🧠
Decide com IA
CRITICAL / ATTENTION / HEALTHY automático
⚡
Age no campo
Autopilot RTK executa a ação sem operador
"Do espaço ao solo, decisões inteligentes em tempo real."
— ZONY Real-Time Satellite Integration™