1

Vincent を使用して topojson ファイルを表示したいと考えています。次のコマンドを使用して、シェープファイルを topojson に変換しました。

topojson -o /path/to/output/file.topo.json -- /path/to/input/file.shp

それを表示するために、次のコードを使用しています (Ipython Notebook 内):

import vincent
vincent.core.initialize_notebook()
world_topo = r'scot.topo.json'
geo_data = [{'name': 'countries',
              'url': world_topo,
             'feature': 'scot'}]

vis = vincent.Map(geo_data=geo_data, scale=1000)
vis.display()

ただし、これは結果です。

ここに画像の説明を入力

Vincent を使用して空白スペースが多すぎる理由を知っている人はいますか? これは、Ipython Notebook を使用しなくても発生します。

また、QGIS でシェープファイルを確認したところ、正しいように見えるため、元のファイルに余分な空白はありません。

更新

画像を中央に配置して空白の量を減らすことができましたが、なぜ機能するのかわかりません. これはコードです:

import vincent
vincent.core.initialize_notebook()
world_topo = r'scot.topo.json'
geo_data = [{'name': 'countries',
              'url': world_topo,
             'feature': 'scot'}]

vis = vincent.Map(geo_data=geo_data, scale=6000, center=[0,57])
vis.display()

ここに画像の説明を入力

適切なパラメータを取得するためのアイデアを知っている人はいますか? 最初に D3 で動作させようとしましたが、コードには類似点がありますが、vincent と d3 は同じパラメーターで同じ結果を生成しないようです。これはd3コードです:

var width = 350,
    height = 450;

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

d3.json("scot.topo.json", function(error, s) {
  if (error) return console.error(error);
    var subunits = topojson.feature(s, s.objects.scot);
    var projection = d3.geo.albers()
        .center([0, 57])
        .rotate([4.4, 0])
        .parallels([50,60])
        .scale(4000)
        .translate([width / 2, height / 2]);
    var path = d3.geo.path()
        .projection(projection);
    svg.append("path")
        .datum(subunits)
        .attr("d", path);

}); 
4

0 に答える 0