D3.js 錯誤地繪製GeoJSON:纏繞順序問題
當嘗試使用geoJSON 資料視覺化俄羅斯地區時,程式設計師遇到了一個程式設計師遇到了一個問題其中D3.js 繪製單一黑色矩形而不是所需的地圖輪廓。這種差異是由於 geoJSON 檔案中座標的纏繞順序問題所引起的。
了解纏繞順序
GeoJSON 座標可以按順時針或逆時針順序排列,表示形狀的內部或外部。大多數工具和驗證器都會忽略此順序,但 D3.js 使用橢圓體數學,這需要正確纏繞以避免創建覆蓋整個地球的倒置多邊形。
識別問題
檢查SVG 路徑後,很明顯,有些路徑是準確繪製的,而另一些路徑則覆蓋了除預期空間之外的整個星球。這是因為資料包含順時針和逆時針纏繞的組合,導致 D3.js 將倒多邊形視為地球上非目標區域的所有物體。
解決問題
要解決此問題,必須重新排序座標。一個方便的解決方案是利用 turf.js 函式庫:
<code class="js">var fixed = features.map(function(feature) { return turf.rewind(feature,{reverse:true}); });</code>
這會倒帶每個多邊形以遵循 geoJSON 規範指定的正確纏繞順序。然而,D3.js 使用相反的纏繞順序,因此反向參數設定為 true。
調整地圖視圖
固定纏繞順序後,進一步調整可以用來增強地圖的外觀。透過在投影中加入 fitSize 方法,可以對地圖進行縮放和平移,以獲得更合適的視圖。
以上是修正 D3.js GeoJSON 繪圖問題:如何修正纏繞順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!