„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Behebung des D3.js-GeoJSON-Zeichnungsproblems: Wie kann die Wicklungsreihenfolge korrigiert werden?

Behebung des D3.js-GeoJSON-Zeichnungsproblems: Wie kann die Wicklungsreihenfolge korrigiert werden?

Veröffentlicht am 09.11.2024
Durchsuche:629

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

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 ergibt sich aus einem 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 ellipsoide 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 Raum abdecken. Dies liegt daran, dass die Daten eine Kombination aus Drehungen im Uhrzeigersinn und 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:

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

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, daher ist der Reverse-Parameter auf true gesetzt.

Anpassen der Kartenansicht

Nach dem Festlegen 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.

Freigabeerklärung Dieser Artikel wird unter der Adresse 1729549888 reproduziert. Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3