0

GeoJSONを使用してd3.jsでマップをプロットしようとしていますが、生成されるパスは次のようになります。

<path d="MNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,‌​NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,N‌​aNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,Na‌​NLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaN‌​LNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNL‌​NaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLN‌​aN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNLNaN,NaNZ">

コードとデータはこの要点にあります: https ://gist.github.com/4157853

QGISにデータをうまくロードできます。

何がこれを引き起こしているのか誰かが知っていますか?

4

2 に答える 2

3

メルカトル図法でオフセットを指定した方法は正しくないようです。Projection.translateメソッドは、2つの要素の配列を想定しています。

https://github.com/mbostock/d3/wiki/Geo-Projections#wiki-mercator_translate

したがって、代わりに:

proj.translate(-43.8,-23.2).scale(10);

あなたは言う必要があるでしょう:

proj.translate([-43.8,-23.2]).scale(10);

- 編集 -

Projection.translateのソースを参照してください:https ://github.com/mbostock/d3/blob/3.0/src/geo/projection.js#L139

  projection.translate = function(_) {
    if (!arguments.length) return [x, y];
    x = +_[0];
    y = +_[1];
    return reset();
  };

引数_が配列でない場合は、+_[0]を返します。NaNしたがって、xyはsになりNaNます。(これは、数値(213 [0]など)から1つの要素を取得しようとすると、戻り値が返され、数値(+ undefined)undefinedにキャストすると結果が得られるためです。)undefinedNaN

于 2012-11-29T18:12:04.977 に答える
-1

要旨に投稿したコードが実行しようとしているすべてのものである場合、表示するデータdata.jsonはどこにもロードされていません。とにかく、あなたの関数は、どこにも設定されていない変数を参照する変数(16行目)drawによって定義されたデータに作用しています。そして、たとえそうだったとしても、34行目はjsonとして渡されたオブジェクトのプロパティを参照しています。mapsimulationfeaturesmap

要約すると、要点に投稿したJSONを描画関数に渡す必要があります。その後、それはうまくいくかもしれません。有効なデータをd3SVGヘルパーに渡さないと、たくさんのデータが得られますNaN

于 2012-11-29T09:14:19.460 に答える