Maison > interface Web > js tutoriel > le corps du texte

Comment résoudre les erreurs de rectangle noir dans le rendu GeoJSON D3.js ?

Mary-Kate Olsen
Libérer: 2024-10-22 06:28:31
original
311 Les gens l'ont consulté

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

Comment réparer un rendu GeoJSON incorrect dans D3.js

Lorsque vous essayez de visualiser des données GeoJSON dans D3.js, il n'est pas rare de rencontrer écarts entre le rendu attendu et le rendu réel. Un problème particulier survient lorsque la sortie affiche un grand rectangle noir au lieu des caractéristiques géographiques souhaitées.

Analyse du problème

Lors de l'inspection du code fourni dans la question, il devient Il est évident que l'erreur réside dans l'ordre d'enroulement des coordonnées. D3.js utilise des mathématiques ellipsoïdales, qui nécessitent un ordre d'enroulement spécifique pour les coordonnées. Malheureusement, le fichier geoJSON contient un mélange d'ordres d'enroulement "dans le sens des aiguilles d'une montre" et "dans le sens inverse des aiguilles d'une montre", conduisant à un rendu incorrect.

Solution

Pour rectifier cela problème, il est nécessaire de s'assurer que toutes les coordonnées du fichier geoJSON ont le bon ordre d'enroulement. Ceci peut être réalisé manuellement en réorganisant les coordonnées ou en utilisant une bibliothèque comme turf.js, qui fournit une méthode pratique pour rembobiner les fonctionnalités.

Exemple de code

Utilisation du Méthode turf.rewind() pour corriger l'ordre d'enroulement :

<code class="javascript">var fixed = features.map(function(feature) {
  return turf.rewind(feature,{reverse:true});
});</code>
Copier après la connexion

Considérations supplémentaires

Bien que la correction de l'ordre d'enroulement résolve le problème du rectangle noir, il convient d'en noter un autre bizarrerie dans D3.js. Contrairement à la spécification geoJSON, D3.js utilise l'ordre d'enroulement opposé (dans le sens inverse des aiguilles d'une montre pour le sens des aiguilles d'une montre et vice versa). Par conséquent, il peut être nécessaire d'inverser l'ordre d'enroulement avant de rembobiner pour garantir un rendu correct.

Visualisation améliorée

En plus de fixer l'ordre d'enroulement, d'ajuster le les paramètres de projection peuvent améliorer la visualisation en ajustant les éléments dans l'espace désigné. Ceci peut être réalisé en utilisant la méthode fitSize pour mettre à l'échelle et traduire les fonctionnalités :

<code class="javascript">// Fit the features to the screen
var projection = d3.geoMercator().fitSize([width, height], features);</code>
Copier après la connexion

En suivant ces étapes, vous pouvez corriger le rendu incorrect des données geoJSON dans D3.js et obtenir une visualisation précise de l'objet souhaité. caractéristiques géographiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!