1

Mike Bostock のLet's Make a Mapチュートリアルを実行したところ、結果に満足したので、Natural Earth データ セットから鉄道データを追加することにしました。

そのほとんどは正常にレンダリングされますが、関係のないメッシュが何らかの形で接続されているように見えるクレイジーなアーティファクトがいくつかあります。

https://docs.google.com/file/d/0B6e2rOpUwmtea3d4enNjY3dSbkk/edit?usp=sharing

レール データを 3 つのファイルに分けて、問題の解決に役立つかどうかを確認しました。

for country in CAN MEX USA
do
    ogr2ogr -f GeoJSON \
    -where "sov_a3='${country}'" \
    railroads_${country}.json ne_10m_railroads_north_america.shp
done

次のように topojson.mesh を使用してレンダリングしています。

svg.append("path")
  .datum(topojson.mesh(na, na.objects.railroads_USA))
  .attr("d", path)
  .attr("class", "railroad_USA");
svg.append("path")
  .datum(topojson.mesh(na, na.objects.railroads_CAN))
  .attr("d", path)
  .attr("class", "railroad");
svg.append("path")
  .datum(topojson.mesh(na, na.objects.railroads_MEX))
  .attr("d", path)
  .attr("class", "railroad");

ここに画像の説明を入力

それ以外の場合、私のコードはデモで提供されているものと実質的に同じです。

これらの直線を取り除くにはどうすればよいですか?

4

1 に答える 1

1

解決策は、鉄道ごとに個別のパスを作成することです。1 つのファイルで十分です。

ogr2ogr -f GeoJSON \
    -where "sov_a3 in ('CAN', 'MEX', 'USA')" \
    railroads.json ne_10m_railroads_north_america.shp

単一のメッシュを作成する代わりに、次のように複数のパスを作成できます。

svg.selectAll(".railroad")
  .data(topojson.feature(na, na.objects.railroads).features)
.enter().append("path")
  .attr("class", function(d) { return "railroad " + d.id; })
  .attr("d", path);
于 2013-07-24T16:49:23.053 に答える