Camadas de observação da Terra sobre um território, cada uma com a fonte, a hora de leitura e o limite escritos ao lado.
Construímos o mapa operacional de um território a partir de fontes públicas de observação da Terra — Copernicus, OpenStreetMap, catálogos orbitais, ortofoto governamental — e ligamos a cada camada a proveniência, o momento da última leitura bem-sucedida e o que não pode mostrar. As medições são publicadas juntamente com o método que as produziu.
Já construídoTrês implementações próprias, que podem ser abertas hoje a partir do exterior. FlowMind corre num VM próprio e tem 109 rotas API, das quais nove falam diretamente com Copernicus Data Space Ecosystem (`src/app/api/copernicus/`, verificado por contagem em disco). Relieva responde 200 e pede a imagem Sentinel em direto a cada carregamento da página (680.122 bytes, verificado com curl em 06.09.2026). Orbital Nexus está público em `https://www.megapromoting.com/satelit/` e propaga localmente um catálogo de cerca de 11.900 objetos. A reserva que deve ser dita na primeira frase: não possuímos qualquer satélite nem qualquer sensor. Copernicus é um programa público da União Europeia, e o catálogo orbital vem da CelesTrak, que redistribui dados mantidos pela US Space Force. O que construímos nós é a camada por cima.
Um território — uma cidade, um distrito, uma zona de infraestrutura — pode ser lido a partir de dados que já existem publicamente: imagens de satélite, geometria viária, modelos de terreno, ortofoto cadastral, catálogos orbitais. Este serviço reúne-os num único mapa operacional e, mais importante, mantém o registo do que significa cada camada: que sensor a produziu, com que resolução, com que frequência se renova e quando foi lida com sucesso pela última vez.
É preciso dizê-lo claramente, porque é fácil entender mal e porque é uma afirmação que alguns fazem sem direito: **Copernicus não é nosso.** É o programa de observação da Terra da União Europeia, com os seus satélites, sensores e arquivo. Nós autenticamo-nos no Copernicus Data Space Ecosystem com credenciais próprias do tipo `client_credentials` e pedimos produtos processados através da API. A resolução, a frequência de revisitação, a cobertura de nuvens e a qualidade radiométrica pertencem à missão, não a nós. O mesmo para o catálogo orbital: vem da CelesTrak, com a atribuição exibida, porque a política deles o exige. O que mantemos nós é a autenticação, o pedido correto, o cálculo, a renderização, o guardião de proveniência e a interpretação.
A regra de conteúdo é a mesma em todo o lado: um número é publicado juntamente com o método que o produziu. A inclinação de uma rua significa outra coisa se foi calculada com o núcleo Horn 3×3 num raster de 25 m do que se foi lida a partir de dois pontos a 30 m de distância. A altura de um edifício significa outra coisa se for declarada no OpenStreetMap do que se for estimada a partir do número de pisos. Misturar as duas categorias sob a mesma cor é a forma mais frequente de entregar um mapa que parece bom e mente.
Quando uma fonte não responde, a camada é marcada OFFLINE, com o motivo, e não é preenchida com um valor plausível. No FlowMind, a regra tem um guardião automático, `noFakeLive`, que recusa etiquetar uma camada como LIVE sem a prova de uma leitura bem-sucedida. Um pixel vazio significa “não observámos aqui”, não “aqui não há nada”.
Qué incluye
El trabajo, por componentes
A pergunta escolhe o sensor, não o contrário
A primeira etapa não é técnica. “Onde a vegetação se degrada”, “onde pode subir um veículo com rodas”, “onde a superfície mudou entre duas datas” e “o que acontece à noite ou sob nuvens” exigem instrumentos diferentes. Óptico multiespectral a 10 m para vegetação e água, radar C para condições em que a óptica não vê, banda térmica na ordem dos quilómetros para contraste de superfície, modelo de terreno para a inclinação. Um sensor escolhido mal produz um resultado que parece correto e não é.
Pedimos o produto processado, na área e no intervalo temporal pedidos
Não descarregamos cenas inteiras para as cortar localmente. O pedido ao Copernicus contém a área geográfica, o intervalo temporal e um script de avaliação que diz exatamente que banda entra e que sai como pixel. No FlowMind, os pedidos Sentinel-2 usam a coleção `sentinel-2-l2a` no endpoint `https://sh.dataspace.copernicus.eu/api/v1/process`; Sentinel-1 usa `sentinel-1-grd`, Sentinel-5P usa `sentinel-5p-l2`. O NDVI é calculado a partir de B08 e B04, o NDWI a partir de B03 e B08 — no evalscript, na origem, e não a partir de uma imagem já comprimida.
Publicamos o número com o método colado a ele
Cada bloco de resultado traz uma marca de proveniência. Na Relieva existem três: medido, de fontes e proposto. Sob o mapa de inclinação está escrito literalmente “COP-DEM GLO-30 · UTM 35N 25 m · Horn 3×3”, e sob a cena de relevo está a exageração vertical ×3,5, precisamente porque o relevo exagerado é bonito e enganador. Um comprador que queira verificar um número deve poder refazer o caminho até ele.
Máscara de nuvens, não eliminação de nuvens
Os pedidos Sentinel-2 rejeitam logo de início as cenas com mais de 40% de cobertura de nuvens (`MAX_CLOUD_COVERAGE = 40`). No evalscript, os píxeis que a banda de classificação da cena SCL marca como nuvem, sombra de nuvem, cirrus ou neve — as classes 3, 8, 9, 10 e 11 — são devolvidos completamente transparentes. A alternativa cómoda, preencher o vazio com uma cena mais antiga, produz uma imagem contínua que mistura dois momentos. Preferimos o vazio, porque ele pode ser lido corretamente.
Radar quando a óptica não pode
Sentinel-1 C-SAR atravessa nuvens e funciona de noite, a 10 m, com uma revisita da ordem de 6–12 dias. Nos nossos produtos usa-se o rácio entre as polarizações VV e VH, como screening numa única cena: mostra diferenças de superfície e de humidade. Não é interferometria. Deslocamentos milimétricos do terreno exigem pares ascendente/descendente, ficheiros de órbita, um modelo de terreno e uma etapa de desfazimento de fase — um trabalho separado, marcado como tal no nosso catálogo de produtos, não algo que entregamos a partir de um pedido de tile.
O modelo de superfície não é o modelo de terreno — a armadilha que não dá qualquer erro
O Copernicus DEM GLO-30 é um modelo digital de superfície: num quarteirão denso devolve a cota do telhado, não da faixa de rodagem. Nada assinala o problema; só os números saem errados. Por isso a geometria que tem de assentar no solo é colocada sobre uma superfície filtrada, e a inclinação é medida numa base longa — abaixo de cerca de 60 m entre pontos mede-se o ruído do raster, não o terreno. A regra complementar é igualmente importante: se as estatísticas publicadas foram calculadas no modelo bruto, elas permanecem no modelo bruto e a página diz isso. Misturar as duas bases num único conjunto de números torna-as incoerentes.
A geometria da cidade no OpenStreetMap, com a proveniência das alturas mantida separada
As pegadas dos edifícios e a rede viária vêm do OpenStreetMap, com a data do instantâneo assinalada. Na cena 3D do centro de Chisinau, de 9.506 pegadas, apenas 1.128 têm a altura declarada no OSM; as restantes 8.378 são estimadas a partir do número de pisos multiplicado por 3,2 m. As duas categorias estão coloridas de forma diferente na cena. Cada edifício assenta na cota do terreno por baixo dele, não numa placa plana — por isso os blocos sobem em direção ao parque da catedral em vez de parecerem alinhados.
Posições orbitais calculadas localmente, com a idade dos dados à vista
Os pontos no globo não são posições transmitidas por satélites. São posições calculadas: parte-se de elementos orbitais válidos num momento do passado e propaga-se com o modelo SGP4 até ao relógio atual. O erro aumenta com cada dia decorrido desde a última atualização, e a aplicação mostra-o em quilómetros para o objeto selecionado. Em FlowMind, a idade dos elementos é explicitamente rotulada fresh / stale / expired. O cálculo corre num thread separado, para que a interface não bloqueie.
Fundo cartográfico sem chaves pagas
A cena 3D drapeja a ortofoto governamental de `geodata.gov.md` (WMS, Agência de Relações Fundiárias e Cadastro) sobre um modelo de terreno de mosaicos públicos da AWS Open Data, renderizado com MapLibre GL. Sem chaves API e sem custo por visualização. O fundo é orientação visual; os produtos Copernicus continuam a ser camadas separadas, cada uma com o seu satélite, sensor, resolução e limitações.
Qué aspecto tiene
El recorrido, paso a paso.
01
Delimitamos o território e escrevemos a pergunta a que o mapa tem de responder
Uma caixa geográfica, uma lista curta de perguntas operacionais e, para cada uma, o veredito sobre se existe uma fonte pública que possa responder. Entregamos o inventário das fontes com a resolução, a cadência e o limite de cada uma — incluindo as linhas onde se lê «não existe fonte pública para isto». Essas linhas são a parte mais útil do inventário.
02
Ligamos as fontes e colocamos o guardião antes da primeira camada bonita
A autenticação, as rotas do servidor, a cache e — obrigatoriamente nesta ordem — a regra que proíbe marcar uma camada como LIVE sem prova de uma leitura bem-sucedida. O guardião escreve-se antes das camadas, porque depois disso ninguém o adiciona. Entregamos as rotas funcionais e um relatório de saúde das fontes que pode ser consultado.
03
Medimos uma vez, por completo, com o método escrito ao lado do resultado
Reprojeção, cálculo, limiares escolhidos com critérios explícitos — não estéticos. No mapa de declive de Chisinau, os limiares são 8,33%, ou seja, a rampa de acessibilidade 1:12, e 12%, acima do qual os robots de passeio cotados a 10–15% já não sobem. Entregamos os números, os scripts que os regeneram a partir da fonte e uma página que marca cada bloco como medido, de fontes ou proposto.
04
Entregamos com as limitações à frente, não no rodapé
O que o mapa não pode mostrar, em que intervalo cada camada se torna obsoleta, o que acontece se uma fonte pública alterar as condições ou desaparecer, e o que exigiria a passagem de screening para medição fina. Entregamos o procedimento de atualização e a lista de dependências externas com o respetivo ponto de rutura.
As camadas sobre o mesmo território, uma por cima da outra: o modelo de terreno na base, a geometria das ruas e as impressões dos edifícios por cima, a imagem ótica e o radar como camadas separadas — cada uma com a sua etiqueta de resolução, cadência e momento da última leitura bem-sucedida.
Os dados
Qué tocamos, dónde están y cuánto se quedan
Las preguntas que hace cualquiera que tenga un delegado de protección de datos — hechas aquí antes de que las haga él.
Que tipo de dados o trabalho toca
Normalmente, dados sobre território, não sobre pessoas: refletância multiespectral, retrodispersão radar, cotas do terreno, geometria viária, pegadas de edifícios, elementos orbitais. Todos provêm de arquivos públicos — Copernicus Data Space Ecosystem, OpenStreetMap, AWS Open Data, CelesTrak, o portal de geodados do estado.
Onde ficam as credenciais e por que não chegam ao navegador
O acesso ao Copernicus faz-se com um identificador e um segredo de cliente, através do fluxo OAuth2 `client_credentials` em `identity.dataspace.copernicus.eu`. O pedido de token sai apenas do servidor, com timeout de 10 segundos e com o token renovado 60 segundos antes da expiração real. O navegador nunca vê o segredo; ele pede uma rota nossa, e a rota pede ao Copernicus. Sem credenciais configuradas, a rota devolve 503 e o resto da página funciona.
O que é guardado connosco
As placas de imagem são mantidas numa cache de processo, com cabeçalhos que indicam que produto e que resolução foram devolvidos. Os catálogos grandes são carregados depois de o mapa já estar no ecrã e são retidos localmente, com prazo: a ficha de objeto do catálogo orbital, de quase 7 MB, fica na memória local do navegador durante um dia. As medições derivadas — declive, isolinhas, perfil altimétrico — são regeneradas a partir da fonte por scripts, não são editadas manualmente.
A atribuição não é opcional
As fontes públicas vêm com condições. A política da CelesTrak exige atribuição e proíbe a redistribuição em massa do catálogo; por isso, o painel de fontes na interface é uma exigência, não uma decoração. Copernicus e OpenStreetMap têm as suas próprias condições de utilização e de atribuição. Numa entrega, a verificação destas condições faz-se no início, não no lançamento.
Quando, ainda assim, surgem dados pessoais
Ocorre num um único tipo de camada: os fluxos de vídeo públicos e as imagens tiradas da rua. Aí, o trabalho já não é apenas geoespacial — entra o desfocamento de rostos e de matrículas no momento da recolha, a preservação apenas da geometria derivada e uma avaliação de impacto antes da primeira câmara. A imagem de satélite a 10 m não tem esse problema: um pixel cobre dez metros de terreno.
Un caso
Uma avenida plana que tinha um declive de 13,5%
A situação
Num trabalho próprio de medição do relevo do município de Chișinău, o declive das ruas foi calculado diretamente a partir do modelo digital público a 30 m, tomando pontos consecutivos da geometria viária. O resultado parecia convincente e estava pronto para ser publicado.
Qué construimos
Na verificação, uma das avenidas centrais — praticamente plana para quem a percorre — surgia com 13,5% de declive. A causa foi silenciosa: o modelo público é um modelo de superfície, portanto, num quarteirão denso, devolve a cota do telhado. Dois pontos a 30 m de distância, um caído sobre uma cornija, produzem uma diferença de cota que não existe na faixa de rodagem. O mesmo defeito aparecia noutro lugar: edifícios vizinhos acabavam em “solo” diferente por cerca de 20 m, e as estradas surgiam, em mediana, 13 m abaixo dos edifícios e desapareciam entre os blocos na cena tridimensional, porque as estradas seguem os vales e os edifícios estão no planalto.
Qué salió
A geometria foi transferida para uma superfície de terreno aproximada, obtida por filtragem com uma janela mais larga do que um quarteirão, e desde então o declive é medido numa base longa, não entre pontos consecutivos que podem estar a poucos metros um do outro — abaixo da resolução do raster. As estatísticas já publicadas permaneceram declaradamente no modelo bruto, e a página diz isso, porque transferir alguns dos números para outra base torná-los-ia incoerentes entre si.
Qué no dice el caso
Nada tinha dado erro. A interface de programação tinha respondido 200, os ficheiros eram lidos, o mapa era desenhado. Este é o padrão que mais nos interessa nos dados geoespaciais: a fonte funciona, e o resultado está subtilmente errado. A única defesa que se mantém é a verificação de um valor conhecido — uma avenida que você sabe que é plana.
Perguntas
Lo que nos pregunta la gente antes de llamar
Têm satélites próprios?
Não, nenhum, e também não temos sensores. Copernicus é o programa de observação da Terra da União Europeia — os satélites, os sensores e o arquivo pertencem-lhe. O catálogo orbital vem da CelesTrak, que redistribui dados mantidos pela US Space Force. Nós autenticamo-nos com credenciais próprias, pedimos produtos processados através da API e construímos o que vem a seguir: o cálculo, o mapa, o guardião de proveniência, a interpretação. Se alguém lhe disser que tem satélites próprios na Moldávia, peça o número NORAD.
Com que frequência a imagem é atualizada?
Depende da missão e das nuvens, não de nós. Ótico multiespectral a 10 m: da ordem de 2–5 dias quando existe uma cena sem cobertura de nuvens. Radar a 10 m: cerca de 6–12 dias, mas funciona de noite e através das nuvens. Banda térmica na ordem do quilómetro e os produtos atmosféricos: diariamente ou em intervalos de vários dias. Num novembro com o céu fechado durante uma semana, a camada ótica simplesmente não tem o que mostrar — e então escreve isso, não empresta uma imagem mais antiga.
Que resolução significa, na prática, 10 m?
Um pixel cobre dez metros no terreno. Vê-se um quarteirão, uma parcela agrícola, uma escombreira, um estaleiro, uma mudança de superfície. Não se vê um carro, uma pessoa ou uma matrícula — e por isso a imagem de satélite desta categoria não levanta a questão dos dados pessoais. Para os produtos atmosféricos, o pixel é da ordem do quilómetro: lê-se uma tendência sobre uma cidade, não uma rua.
Podem dar-me a altura exata dos meus edifícios?
Não a partir destas fontes. O modelo público a 30 m é um modelo de superfície — devolve a cota do topo do que está ali, incluindo telhados e copas de árvores — e é demasiado grosseiro para um edifício individual. O que podemos fazer: dizer em que cota de terreno assenta cada footprint e, onde o OpenStreetMap declara a altura, usar o valor declarado, marcado separadamente da estimativa. Para alturas de precisão é necessária outra aquisição: LiDAR ou fotogrametria com drone. Isso é um trabalho de campo, não um de arquivo.
Você consegue detetar deslizamentos de terra?
Podemos construir uma camada de priorização, não um veredito. Um ecrã de risco combina declive do modelo de terreno, perda de coerência radar, alteração de superfície em ótico e acumulação de precipitação — e produz uma lista de zonas a verificar. A confirmação de uma deslocação real exige interferometria: pares de cenas ascendentes e descendentes, ficheiros de órbita, desdobramento de fase. Isso é um trabalho separado. Nos nossos produtos, a distinção é escrita explicitamente ao lado da camada, para que ninguém leia uma priorização como se fosse uma deteção.
Por que aparecem falhas no mapa?
Porque ali não foi observado nada utilizável — normalmente nuvem, sombra de nuvem, cirrus ou neve, filtrados da banda de classificação da cena. A falha é uma informação, não um defeito. A alternativa, preencher com outra data, produz uma imagem contínua que mistura dois momentos e que não pode ser usada para comparação. A mesma lógica aplica-se a fontes em falha: a camada escreve OFFLINE e o motivo.
A posição do satélite no mapa é a real, em tempo real?
É uma posição calculada, não transmitida. Parte-se de elementos orbitais publicados num momento passado e propaga-se até agora com um modelo padrão. O erro aumenta com a idade dos elementos, e nós mostramos isso em quilómetros para o objeto selecionado e marcamos a idade dos dados. Um objeto com elementos com vários dias pode estar a dezenas de quilómetros de onde o ponto o mostra — motivo pelo qual isso é escrito, não escondido.
O que acontece se a fonte pública mudar ou desaparecer?
Esse é o risco real deste tipo de trabalho e trata-se no contrato, não no incidente. As fontes públicas mudam os seus formatos, quotas de utilização e condições. Por isso entregamos a lista de dependências externas com o seu ponto de rutura, mantemos a camada de acesso isolada num único local do código e marcamos a fonte em falha na interface em vez de deixar o mapa parecer funcional. Uma plataforma que esconde uma fonte morta é mais perigosa do que uma que para visivelmente.
Os dados ficam convosco ou com o cliente?
Os resultados derivados — mapas, números, camadas calculadas — pertencem ao cliente e são entregues juntamente com os scripts que os regeneram a partir da fonte. Os dados-fonte permanecem onde estão, nos arquivos públicos, sob as suas licenças e condições de atribuição; nós não os redistribuímos em massa, porque algumas licenças proíbem exatamente isso. As credenciais de acesso ao Copernicus podem ser do cliente, na conta dele, se ele quiser independência total em relação a nós.
19 delas são código e ficheiros dos nossos repositórios. Não publicamos o nome nem a linha: juntos, numa única página, descreveriam com demasiada precisão como estão construídos sistemas que não são só nossos. Percorremo-los consigo, no repositório, a pedido — a verificação continua possível, só que se faz numa conversa.