Maison  >  Article  >  interface Web  >  Correction du problème de dessin GeoJSON D3.js : comment corriger l'ordre d'enroulement ?

Correction du problème de dessin GeoJSON D3.js : comment corriger l'ordre d'enroulement ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-22 06:32:03207parcourir

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

D3.js ne dessine pas correctement GeoJSON : le problème de l'ordre d'enroulement

Lorsqu'ils tentent de visualiser les régions russes à l'aide de données geoJSON, les programmeurs ont rencontré un problème où D3.js dessine un seul rectangle noir au lieu des contours de carte souhaités. Cet écart résulte d'un problème avec l'ordre d'enroulement des coordonnées dans le fichier geoJSON.

Comprendre l'ordre d'enroulement

Les coordonnées GeoJSON peuvent être disposées dans le sens des aiguilles d'une montre ou dans le sens inverse des aiguilles d'une montre. , représentant l'intérieur ou l'extérieur d'une forme. La plupart des outils et des validateurs ignorent cet ordre, mais D3.js utilise des mathématiques ellipsoïdales, qui nécessitent un enroulement correct pour éviter de créer des polygones inversés couvrant la totalité du globe.

Identifier le problème

En inspectant les chemins SVG, il devient évident que certains chemins sont tracés avec précision tandis que d'autres couvrent la planète entière, à l'exception de l'espace prévu. En effet, les données contiennent une combinaison d'enroulements dans le sens des aiguilles d'une montre et dans le sens inverse, ce qui conduit D3.js à traiter le polygone inversé comme tout ce qui se trouve sur la planète qui n'est pas la région cible.

Résoudre le problème

Pour résoudre ce problème, les coordonnées doivent être réorganisées. Une solution pratique consiste à utiliser la bibliothèque turf.js :

<code class="js">var fixed = features.map(function(feature) {
    return turf.rewind(feature,{reverse:true});
});</code>

Cela rembobine chaque polygone pour suivre l'ordre d'enroulement correct, tel que spécifié par la spécification geoJSON. Cependant, D3.js utilise l'ordre d'enroulement opposé, donc le paramètre reverse est défini sur true.

Ajustement de la vue cartographique

Après avoir corrigé l'ordre d'enroulement, d'autres ajustements peuvent être réalisés pour améliorer l'apparence de la carte. En ajoutant une méthode fitSize à la projection, la carte peut être mise à l'échelle et traduite pour obtenir une vue plus appropriée.

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!

Déclaration:
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