Então, o título é um pouco estranho. Vou dar uma base e depois fazer minha pergunta.
Antecedentes : trabalho como desenvolvedor de aplicativos GIS na Web , mas, nas horas vagas, brinco com a renderização de mapas e a melhoria dos formatos de intercâmbio de dados. Eu trabalho apenas no espaço 2D.
Uma questão interessante que encontrei é que, quando você renderiza um polígono em pequena escala (muito zoom), muitos dos vértices são redundantes. Um caso extremo seria o fato de você ter um polígono com 500.000 vértices que ocupa apenas um único pixel. Se você estiver enviando esses dados para o navegador, faria sentido omitir ~ 499.999 desses vértices. Uma maneira de conseguir isso é renderizando uma imagem em um servidor e enviando-a como PNG: voila, é um ponto. Às vezes, porém, queremos que os dados sejam enviados ao navegador para que possam ser renderizados com SVG (ou canvas ou webgl) para que possam ser interativos.
O problema : acontece que, usando conjuntos de dados geográficos modernos, é muito fácil sobrecarregar as habilidades de renderização do SVG. Em um esforço para lidar com essas limitações, estou tentando descobrir como reduzir visualmente sem perda um conjunto de dados para uma determinada escala e extensão do mapa (e, se necessário, para uma largura e altura conhecidas do pixel do mapa).
Consegui uma grande redução no tamanho dos dados usando o algoritmo Douglas-Peucker e acredito que consegui manter os polígonos fiéis a um pixel. Infelizmente, Douglas-Peucker não preserva a topologia, por isso mudou a forma como as bordas entre polígonos são renderizadas. Não consegui encontrar facilmente outros algoritmos para tentar me adaptar ao objetivo, mas não tenho muitos conhecimentos de CS / algoritmo e talvez não os reconheça se os vi.