D3.js での GeoJSON レンダリングの問題
D3.js を使用してロシア地域を視覚化しようとすると、ユーザーは、予想される領域の境界線を示すと、単一の大きな黒い四角形が地図上に表示されます。
問題の理解
この問題は、GeoJSON データ内の座標のワインディング順序に起因します。 。 GeoJSON はデカルト座標を使用しますが、D3.js は楕円体計算を使用しているため、デカルト座標の解釈が異なります。これにより、間違った巻き順により、ターゲット領域を除く惑星全体を含むフィーチャが生成されるというシナリオが発生します。
SVG パスを調べて、間違った巻き順を確認してください。一部のパスは正しく描画されているように見えますが、他のパスは地球全体をカバーし、意図した領域のみが露出している場合があります。
解決策の検索
これを修正するには、座標を並べ替えてください。 Turf.js のようなライブラリを使用します。 GeoJSON には、正しい巻き順と間違った巻き上げ順序の両方の特徴が含まれているため、これが必要です。
var fixed = features.map(function(feature) { return turf.rewind(feature,{reverse:true}); });
巻き上げ順序が逆であることに注意してください。これは、GeoJSON 標準で指定されている逆の巻き順を使用する D3.js の特殊性によるものです。
視覚化の改善
巻き順の問題を解決した後、場合によっては小さい可能性がありますが、マップには地域が表示されます。視覚化を強化するには、マップを拡大縮小および移動するための fitSize メソッドを追加します。
これにより、提供された画像に示すように、より視覚的に魅力的で使いやすいマップが作成されます。
以上がD3.js でロシア地域をレンダリングする際に GeoJSON のワインディング順序の問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。