Como corrigir renderização GeoJSON incorreta em D3.js
Ao tentar visualizar dados geoJSON em D3.js, não é incomum encontrar discrepâncias entre a renderização esperada e a real. Um problema específico surge quando a saída exibe um grande retângulo preto em vez das características geográficas pretendidas.
Análise de problema
Ao inspecionar o código fornecido na pergunta, ele se torna É evidente que o erro está na ordem de enrolamento das coordenadas. D3.js utiliza matemática elipsoidal, que requer uma ordem de enrolamento específica para coordenadas. Infelizmente, o arquivo geoJSON contém uma mistura de ordens de enrolamento "sentido horário" e "anti-horário", levando à renderização incorreta.
Solução
Para corrigir isso questão, é necessário garantir que todas as coordenadas no arquivo geoJSON tenham a ordem de enrolamento correta. Isso pode ser feito manualmente reordenando as coordenadas ou usando uma biblioteca como turf.js, que fornece um método conveniente para retroceder recursos.
Exemplo de código
Utilizando o Método turf.rewind() para corrigir a ordem de enrolamento:
var fixed = features.map(function(feature) {
return turf.rewind(feature,{reverse:true});
});
Considerações adicionais
Embora a correção da ordem de enrolamento resolva o problema do retângulo preto, vale a pena observar outra peculiaridade no D3.js. Ao contrário da especificação geoJSON, D3.js usa a ordem de enrolamento oposta (sentido anti-horário para horário e vice-versa). Como resultado, pode ser necessário reverter a ordem de enrolamento antes de retroceder para garantir a renderização adequada.
Visualização aprimorada
Além de corrigir a ordem de enrolamento, ajustar o as configurações de projeção podem aprimorar a visualização ajustando os recursos ao espaço designado. Isso pode ser conseguido usando o método fitSize para dimensionar e traduzir os recursos:
// Fit the features to the screen
var projection = d3.geoMercator().fitSize([width, height], features);
Seguindo estas etapas, você pode corrigir a renderização incorreta de dados geoJSON em D3.js e obter uma visualização precisa de as características geográficas desejadas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3