"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 > ¿Cómo resolver errores de rectángulo negro en el renderizado GeoJSON de D3.js?

¿Cómo resolver errores de rectángulo negro en el renderizado GeoJSON de D3.js?

Publicado el 2024-11-08
Navegar:313

How to Resolve Black Rectangle Errors in D3.js GeoJSON Rendering?

Cómo corregir la representación GeoJSON incorrecta en D3.js

Al intentar visualizar datos geoJSON en D3.js, no es raro encontrar discrepancias entre la representación esperada y la real. Un problema particular surge cuando el resultado muestra un gran rectángulo negro en lugar de las características geográficas previstas.

Análisis del problema

Al inspeccionar el código proporcionado en la pregunta, se convierte en Es evidente que el error reside en el orden de enrollado de las coordenadas. D3.js utiliza matemáticas elipsoidales, que requieren un orden de bobinado específico para las coordenadas. Desafortunadamente, el archivo geoJSON contiene una mezcla de órdenes de bobinado "en el sentido de las agujas del reloj" y "en el sentido contrario a las agujas del reloj", lo que provoca una representación incorrecta.

Solución

Para rectificar esto problema, es necesario asegurarse de que todas las coordenadas en el archivo geoJSON tengan el orden de enrollado correcto. Esto se puede lograr manualmente reordenando las coordenadas o usando una biblioteca como turf.js, que proporciona un método conveniente para rebobinar funciones.

Ejemplo de código

Utilizando el Método turf.rewind() para corregir el orden de bobinado:

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

Consideraciones adicionales

Si bien corregir el orden de bobinado resuelve el problema del rectángulo negro, vale la pena señalar otra peculiaridad en D3.js. A diferencia de la especificación geoJSON, D3.js utiliza el orden de bobinado opuesto (en sentido contrario a las agujas del reloj y viceversa). Como resultado, podría ser necesario invertir el orden de bobinado antes de rebobinar para garantizar una representación adecuada.

Visualización mejorada

Además de corregir el orden de bobinado, ajustar el La configuración de proyección puede mejorar la visualización al ajustar las funciones dentro del espacio designado. Esto se puede lograr utilizando el método fitSize para escalar y traducir las funciones:

// Fit the features to the screen
var projection = d3.geoMercator().fitSize([width, height], features);

Al seguir estos pasos, puede corregir la representación incorrecta de los datos geoJSON en D3.js y lograr una visualización precisa de las características geográficas deseadas.

Declaración de liberación Este artículo se reimprime en: 1729549636 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