2015-10-19 9 views
2

Я пытаюсь показать итальянские картографические шейпфайлы, for example this one, используя D3.jsСлучайные строки при загрузке файла TopoJSON в D3

я могу загрузить файл Zip на MapShaper, посмотреть на карте, упростить и экспорт в TopoJSON. Я могу загрузить TopoJSON в MapShaper, и он все еще выглядит нормально.

Но когда я пытаюсь отобразить его с помощью D3.js, я получаю кучу спагетти:

enter image description here

красоты, не так ли?

Код берется прямо из примеров. Предполагается, что проекционный центр, вращение и параллели являются каноническими для Италии, но это не имеет особого значения: карта остается спагетти-подобной с любым выбором проекции.

width = 600 
height = 1200 

projection = d3.geo.albers() 
    .center [0, 41] 
    .rotate [347, 0] 
    .parallels [35, 45] 
    .scale 2000 
    .translate [width/2, height/2] 

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

svg = d3.select "body" 
    .append "svg" 
    .attr "width", width 
    .attr "height", height 

d3.json "Reg2011_ED50.json", (json) -> 
    svg.append "path" 
     .datum topojson.feature json, json.objects.Reg2011_ED50 
     .attr "d", path 

Что я делаю неправильно?

+0

Получение связки спагетти при рендеринге карты Италии не так уж далеки, да? Сделал мой день ;-) Во всяком случае, вы могли бы предоставить живое демо, включая экспортированный TopoJSON, чтобы поиграть? – altocumulus

+0

@altocumulus Спасибо, но я нашел решение, хотя я этого не понимаю. – Tobia

+0

Это потому, что вы не указали проекцию. Это довольно нормально. – kwoxer

ответ

3

Я нашел старое почтовое сообщение с подробным описанием того, как импортировать точные файлы.

В принципе мне нужно, чтобы преобразовать проекцию в стандартном с этой командой:

ogr2ogr -t_srs EPSG:4326 converted.shp original.shp 

Я не понимаю, почему это необходимо: я думал, что файл .prj позаботился проекционными различия. Очевидно нет.