"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Solucionando el problema de dibujo GeoJSON de D3.js: ¿Cómo corregir el orden de bobinado?

Solucionando el problema de dibujo GeoJSON de D3.js: ¿Cómo corregir el orden de bobinado?

Publicado el 2024-11-09
Navegar:851

Fixing D3.js GeoJSON Drawing Issue: How to Correct the Winding Order?

D3.js dibujando incorrectamente GeoJSON: el problema del orden de bobinado

Al intentar visualizar regiones rusas usando datos geoJSON, los programadores encontraron un problema donde D3.js dibuja un único rectángulo negro en lugar de los contornos del mapa deseado. Esta discrepancia surge de un problema con el orden de enrollado de las coordenadas en el archivo geoJSON.

Comprensión del orden de enrollado

Las coordenadas GeoJSON se pueden organizar en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj , que representa el interior o el exterior de una forma. La mayoría de las herramientas y validadores ignoran este orden, pero D3.js usa matemáticas elipsoidales, que requieren un bobinado correcto para evitar la creación de polígonos invertidos que cubren todo el mundo.

Identificar el problema

Al inspeccionar los caminos SVG, se hace evidente que algunos caminos están dibujados con precisión mientras que otros cubren todo el planeta excepto el espacio previsto. Esto se debe a que los datos contienen una combinación de giros en sentido horario y antihorario, lo que lleva a D3.js a tratar el polígono invertido como todo lo que hay en el planeta que no es la región objetivo.

Resolviendo el problema

Para resolver este problema, se deben reordenar las coordenadas. Una solución conveniente es utilizar la biblioteca turf.js:

var fixed = features.map(function(feature) {
    return turf.rewind(feature,{reverse:true});
});

Esto rebobina cada polígono para seguir el orden de bobinado correcto, según lo especificado en la especificación geoJSON. Sin embargo, D3.js usa el orden de bobinado opuesto, por lo que el parámetro inverso se establece en verdadero.

Ajustando la vista del mapa

Después de arreglar el orden de bobinado, se pueden realizar más ajustes Se pueden hacer cambios para mejorar la apariencia del mapa. Al agregar un método fitSize a la proyección, el mapa se puede escalar y traducir para lograr una vista más adecuada.

Declaración de liberación Este artículo se reproduce en: 1729549888 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3