Melhores Práticas do PostGIS
Como Usar Esta Lista
- Aplique em cada nova tabela geoespacial e pipeline ETL.
- Reaudite após importações em massa de shapefile ou GeoJSON.
- Combine com o artigo de índice espacial antes do lançamento do mapa em produção.
A - Modelo de Dados
- Armazene o SRID com cada geometria. Use typmod
geometry(Type, 4326)ou forceST_SRID(geom) = 4326. - Valide as entradas na ingestão. Restrição
ST_IsValid(geom)ou tabela de quarentena ETL para rejeitados. - Use geografia para raios em metros de GPS. Converta ou use o tipo de coluna
geographyparaST_DWithinem metros. - Use geometria projetada para trabalho planar local. UTM para parcelas de cidade, não distância de geometria 4326.
- Documente a ordem lon/lat.
ST_MakePoint(longitude, latitude)no guia de estilo da equipe.
B - Índices e Consultas
- Crie índice GiST em colunas usadas em WHERE espacial.
geomegeographyconforme consultado. - Pré-filtre com envelope
&&antes de ST_Intersects. Padrão de dois estágios amigável ao índice. - Use ST_DWithin em vez de ST_Distance para ordenar em tabela completa. Limite de raio e depois ordene um pequeno conjunto.
- Construa índices CONCURRENTLY em tabelas grandes. Planeje
ANALYZEapós a importação. - Aplique filtro
tenant_idantes da operação espacial. Reduz o intervalo de varredura do índice em SaaS.
C - Desempenho e APIs
- Armazene geometrias simplificadas para camadas de zoom baixo.
ST_SimplifyPreserveTopologyoffline. - LIMITE recursos por solicitação de tile de mapa. Rejeite bounding boxes de escala mundial dos clientes.
- Sirva tiles via tile server quando possível. PostGIS é a fonte da verdade, não a fazenda de renderização.
- Emita GeoJSON na fronteira da API. Não armazene texto GeoJSON em vez do tipo geometria.
- Monitore ST_NPoints na ingestão. Polígonos complexos alertam antes do inchaço do GiST.
D - Operações
- Fixe a versão do PostGIS na lista de permissões ADR.
ALTER EXTENSION postgis UPDATEcom testes de fumaça. - Execute
postgis_extensions_upgradequando a documentação exigir. Após saltos maiores do PG ou menores do PostGIS. - REINDEX GiST após cargas massivas de shapefile. Agende CONCURRENTLY onde suportado.
- Mantenha o PostGIS no schema de extensões. Evite poluir o
search_pathpúblico. - Teste pares de distância conhecidos. Consulta de sanidade geodésica NYC para LA em staging de CI.
FAQs
Armazenamento 4326 vs 3857?
Armazene 4326 ou UTM local; 3857 apenas para tiles de exibição.MakeValid em produção?
Corrija no ETL; registre WKT inválido para quarentena.Tabelas Raster?
Caminho de aprovação separado; modelo de backup e dimensionamento diferente.RLS Multi-tenant?
Combine a política de tenant com filtros espaciais na mesma consulta.Replicação?
As versões das extensões devem corresponder entre as réplicas.pg_dump?
Objetos PostGIS restauram com a extensão presente no destino.Extensão Topology?
Habilite apenas se os recursos de topologia forem explicitamente necessários.Jitter de GPS móvel?
Raio do buffer ST_DWithin; ST_SnapToGrid opcional na ingestão.Licenciamento de código aberto?
Documente as implicações do GPL no ADR para SaaS.Verificações de CI?
A migração lint impõe typmod SRID e criação de índice GiST.Relacionados
- Noções Básicas de PostGIS - Postgres vs servidores de tile
- Geometria vs Geografia - seleção de tipo
- Índices Espaciais - padrões GiST
- Desempenho do PostGIS - simplificar e pré-filtrar
- Melhores Práticas de Extensões - pins de versão
Versões da Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PostGIS 3.5+, pgbouncer 1.x e Patroni 3.x.