2015-06-25 78 views
2

我已經從Highcharts下載了this map of Great Britain and Ireland並從GeoJSON轉換爲TopoJSON格式(),但它只是呈現爲黑匣子。我正在關注的famous 'Let's make a map' tutorialTopoJSON地圖不能正確渲染使用D3

var container = d3.select("#container"); 

var margin = 20, 
    width = parseInt(container.style("width")), 
    height = parseInt(container.style("height")); 

var projection = d3.geo.mercator() 
    .scale(50); 

var path = d3.geo.path() 
    .projection(projection); 

var svg = container.append("svg") 
    .attr("width", width) 
    .attr("height", height); 

d3.json("http://www.lenart.pl/assets/codepen/gb_all_ireland_topo.json", function(error, gb) { 
    svg.append("path") 
     .datum(topojson.feature(gb, gb.objects.gb_all_ireland_geo)) 
     .attr("d", path); 

}); 

http://codepen.io/znak/pen/rVYbNB

我預覽我的TopoJSON文件,http://jsoneditoronline.org,發現含有幾何形狀(我認爲)所涉及的對象,但它不工作。

我的最終目標是想象GB &的交互式(管理)圖。謝謝。

回答

2

我相信第一個麻煩的地方是從Highcharts下載 - 它似乎是在投影,而不是wgs84。所以給出的座標不是緯度和經度。如果您查看highcharts.com/mapdata/custom/gb-all-ireland.geo.json的開頭,您會看到一些「crs」鍵,並提及「EPSG:7405」。

您可以轉換到WGS84幾個方面,包括:

ogr2ogr -f geojson eire_4326.geojson gb-all-ireland.geo.json -t_srs epsg:4326 -s_srs epsg:7405 

然後,您可以轉換爲topojson,拿起您離開的地方。

認識到d3預測的規模和中心值的微小變化可能會產生重大影響也很重要。

如果你不綁定到Highcharts,最好是獲取wgs84中已有的數據,如http://www.naturalearthdata.com/,甚至使用更全面的庫和數據,如mapsense https://developer.mapsense.co/tileViewer/。 (披露:我在mapsense工作。)

+0

我不需要使用Highcharts,我只是很難找到用於D3的GB管理映射(因此只比Mike Bostock的教程更深一層)。我已經從Natural Earth下載了1:10m Admin-1載體,但無法弄清楚如何將它們轉換爲JSON,只包含GBR和IRL。至於Mapsense,我將如何顯示只是GB?謝謝。 – ALx

+0

因此,我已將Highcharts地圖重新投影到WGS84,並能夠查看http://converter.mygeodata.eu/上的地圖和數據。但它仍然是D3中的一個黑盒子。 – ALx

+0

下面是一個工作演示:http://jsbin.com/mosigepozi/1/edit?html,js,輸出 – jmk