Arquitetura de Medalhão
Estrutura em camadas (Raw, Bronze, Silver, Gold) para ingestão, tratamento e publicação de dados geográficos no Urbis.
A Arquitetura de Medalhão (Medallion Architecture) organiza os pipelines de engenharia de dados do Urbis em quatro camadas progressivas de qualidade e maturidade: Raw, Bronze, Silver e Gold.
Cada camada resolve um desafio específico de integridade, transformando dados brutos e heterogêneos de múltiplos provedores em dados limpos, tipados e prontos para consumo por aplicações territoriais.
1. 📥 Camada Raw (Dados Brutos)
A camada Raw é responsável pela ingestão direta e fiel dos dados vindos de fontes externas (como GeoSampa via WFS, GeoCATI via ArcGIS REST APIs, raspadores de dados históricos do CEDI, etc.).
- Armazenamento: MinIO / Azure Blob no bucket correspondente (ex:
geojson, prefixo/raw/), mantendo o formato original da fonte (GeoJSON, JSON, XML). - Processamento: Sem modificação nos atributos ou geometrias. O objetivo é garantir a imutabilidade do dado bruto e resiliência na coleta.
- Validações Iniciais (
AssetCheckSpec):features_not_empty: Garante que a coleta retornou um conjunto de dados válido e não vazio.
- Metadados Extraídos: Quantidade total de feições, nomes de propriedades, tipos primitivos e tipos de geometria detectados.
2. 🥉 Camada Bronze (Consolidação Estrutural)
A camada Bronze carrega os arquivos da camada Raw e executa validações estruturais e cartográficas preliminares.
- Armazenamento: MinIO / Azure Blob sob o prefixo
/bronze/. - Processamento:
- Validação do sistema de referência de coordenadas (SRID). O padrão municipal GeoSampa utiliza
EPSG:31983(SIRGAS 2000 / UTM zone 23S) ouEPSG:4326(WGS 84). - Verificação de parsing JSON/GeoJSON sem corrupção.
- Validação do sistema de referência de coordenadas (SRID). O padrão municipal GeoSampa utiliza
- Objetivo: Garantir integridade de formato antes de aplicar regras de negócio pesadas.
3. 🥈 Camada Silver (Limpeza, Padronização e Tipagem)
A camada Silver é a camada de higienização, enriquecimento e conformação com o modelo de dados Urbis. É onde os dados brutos se tornam estruturados, consistentes e analíticos.
- Processamento:
- Eliminação de Colunas Desnecessárias: Remoção de campos técnicos irrelevantes para o negócio municipal.
- Conversão de Tipos: Normalização de strings numéricas para inteiros/floats, padronização de datas para ISO-8601 e correção de codificação (UTF-8).
- Chaves Primárias de Negócio (
unique_id): Geração ou preservação de identificadores únicos (comosql,setor, ou hash MD5cd_identificadorpara registros históricos). - Remapeamento de Nomes de Colunas (DE-PARA): Tradução de termos crípticos de sistemas legados para identificadores claros em português.
- Homogeneização Geométrica: Garantia de geometrias válidas (
ST_IsValid/shapely.make_valid), forçando conversão paraMultiPolygonouMultiLineStringquando necessário.
- Armazenamento: Salvo no MinIO / Azure Blob em formato colunar otimizado Apache Parquet.
4. 🥇 Camada Gold (Consumo e Entrega)
A camada Gold é a camada final destinada ao consumo direto por aplicações de mapas, formulários inteligentes e analistas urbanos. Ela é dividida em duas entregas complementares:
A. Gold PostGIS
- Processamento: Lê os arquivos Parquet estruturados da camada Silver e executa operações de upsert transacional no banco PostgreSQL / PostGIS da aplicação.
- Idempotência: Utiliza rotinas de upsert (
upsert_geodataframeouupsert_dataframe) com chave primária definida, permitindo reprocessamentos sem duplicar registros. - Índices Espaciais: Criação automática de índices espaciais
GIST(geometry)e índices B-Tree nas chaves de busca mais frequentes (ex:sql,logradouro).
B. Gold GeoServer
- Processamento: Publica a tabela criada no PostGIS diretamente no catálogo do GeoServer via REST API, vinculando-a ao workspace correspondente.
- Protocolos Suportados:
- WMS (Web Map Service): Renderização de tiles cartográficos otimizados para mapas web.
- WFS (Web Feature Service): Consulta e download de geometrias e feições em GeoJSON/GML.