D3.js zeichnet GeoJSON falsch: Das Problem der Windungsreihenfolge
Beim Versuch, russische Regionen mithilfe von GeoJSON-Daten zu visualisieren, sind Programmierer auf ein Problem gestoßen Dabei zeichnet D3.js ein einzelnes schwarzes Rechteck anstelle der gewünschten Kartenumrisse. Diese Diskrepanz entsteht durch ein Problem mit der Wickelreihenfolge der Koordinaten in der GeoJSON-Datei.
Wicklungsreihenfolge verstehen
GeoJSON-Koordinaten können entweder im Uhrzeigersinn oder gegen den Uhrzeigersinn angeordnet werden , das die Innenseite oder Außenseite einer Form darstellt. Die meisten Tools und Validatoren ignorieren diese Reihenfolge, aber D3.js verwendet Ellipsoid-Mathematik, die eine korrekte Wicklung erfordert, um die Erstellung invertierter Polygone zu vermeiden, die den gesamten Globus abdecken.
Identifizierung des Problems
Bei der Betrachtung der SVG-Pfade wird deutlich, dass einige Pfade genau gezeichnet sind, während andere den gesamten Planeten bis auf den vorgesehenen Bereich abdecken. Dies liegt daran, dass die Daten eine Kombination aus Wicklungen sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn enthalten, was dazu führt, dass D3.js das invertierte Polygon als alles auf dem Planeten behandelt, was nicht die Zielregion ist.
Lösung des Problems
Um dieses Problem zu beheben, müssen die Koordinaten neu angeordnet werden. Eine praktische Lösung ist die Verwendung der turf.js-Bibliothek:
<code class="js">var fixed = features.map(function(feature) { return turf.rewind(feature,{reverse:true}); });</code>
Dadurch wird jedes Polygon zurückgespult, um der richtigen Wickelreihenfolge zu folgen, wie in der geoJSON-Spezifikation angegeben. Allerdings verwendet D3.js die umgekehrte Wickelreihenfolge, sodass der Reverse-Parameter auf true gesetzt ist.
Anpassen der Kartenansicht
Nach dem Fixieren der Wickelreihenfolge folgen weitere Anpassungen können vorgenommen werden, um das Erscheinungsbild der Karte zu verbessern. Durch Hinzufügen einer fitSize-Methode zur Projektion kann die Karte skaliert und übersetzt werden, um eine passendere Ansicht zu erhalten.
Das obige ist der detaillierte Inhalt vonBehebung des D3.js-GeoJSON-Zeichnungsproblems: Wie kann die Wicklungsreihenfolge korrigiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!