Azimlib0.3.0 · documentation

Arquitetura

O fluxo não delega cartografia a outro projeto:

pyplot / Figure / MapAxes
           ↓
   Layer + estilos + temas
           ↓
FeatureCollection → Geometry → recorte e densificação
           ↓
   Projection + Viewport
           ↓
  Scene (paths/text/circles/rects em pixels)
           ↓
     SVG / PDF vetorial próprio / RGBA próprio → PNG ou Tk / HTML interativo

Fronteiras dos módulos

Extensão

Novas projeções implementam Projection.forward, Projection.inverse e recebem um nome via register_projection. Novos leitores produzem FeatureCollection; não precisam conhecer renderizadores. Novos backends consomem Scene; não precisam implementar projeções. Novas camadas entram antes da cena, preservando seleção de features, estilos e legendas. Isso permite adicionar raster, classificação avançada ou layouts sem acoplar tudo ao GeoJSON.

Decisões deliberadas desta fundação: stdlib no núcleo, zero rede ao usar o pacote, camadas ordenadas de forma estável, validação explícita, tipos geográficos imutáveis, arquivos de origem com checksums e escrita de exportação por substituição atômica.

Não se simplifica a geometria nas exportações estáticas. O cache limitado de vértices projetados cobre linhas/polígonos nas seis projeções internas exatas; scatter/campos/labels e subclasses seguem o caminho atual. Dados muito detalhados podem ser lentos, especialmente na saída raster. O PNG agora compõe tiles locais por primitiva, recortados ao viewport, e reutiliza fontes durante o render. Isso evita buffers do tamanho da figura por marcador. O kernel próprio de strokes pode compilar lotes numéricos limitados pelo extra opcional accelerate; não há aceleração GPU. tools/benchmark_raster.py mede composição e rasterização separadamente. tools/benchmark_maps.py amplia a medição para mapas completos, SVG, zoom e alocações Python. O renderer tem caches limitados de amostras angulares e tabelas de alpha, mantendo coordenadas/cobertura exatas. A comparação alternada em tools/compare_raster_versions.py é somente de desenvolvimento; snapshots em tools/baselines não participam do runtime nem do wheel. Veja desempenho. Geometry/FeatureCollection imutáveis reutilizam bounds; exportações e desktop podem descartar linhas/polígonos cilíndricos certamente invisíveis, mantendo callbacks e índices de features. HTML conserva todos os dados da cena para pan. spatial.py implementa uma hierarquia STR imutável, caixas float64 compactas e o cache de envelopes projetados por coleção (quatro projeções), consultado em camadas cilíndricas elegíveis. Mantém ordem, overrides, envelopes ambíguos e varredura de callbacks; a query não é interseção topológica. Veja índice e limites desta otimização. Veja também reutilização dos paths, que preserva cortes e precisão, recalcula estilos/coordenadas de tela e não mantém a fonte viva.

Composição no desenvolvimento 0.3

Veja limites e contratos; câmera 3D e conversores gerais de unidades continuam em passos posteriores. A ponte viva é um backend explícito separado do snapshot HTML, descrito em interação.

Acabamento e exportação vetorial

font_outline.py interpreta contornos TrueType de fontes incorporadas; mathtext.py expande expressões simples em primitives antes dos backends. curved_text.py e polygon_labels.py planejam posições sem mudar geometrias. icons.py lê um subset SVG local seguro; patterns.py conserva proveniência e expande tiles lineares recortados. renderers/pdf.py escreve objetos/xref e transparência PDF diretamente. Veja contratos e limites.