Аргентина не отображается на карте мира с d3.js

У меня проблема с рисованием полной карты мира с использованием d3.js и файла geojson. Я использую файл https://gist.github.com/phil-pedruco/10447085, и здесь вы можете видеть, что все страны отображаются правильно, но когда я пытаюсь это отобразить, я получаю все страны, кроме аргентины. Я также пытался использовать эти файлы: https://github.com/rusanu/geodata-rails/tree/master/vendor/assets/javascripts. Здесь файл 110 м дает мне тот же результат (без аргентины), но файл 50 м показывает всю карту, за исключением того, что он слишком подробный, и я бы предпочел использовать другой файл. Я упростил код, чтобы просто рисовать пути для карты, чтобы увидеть, есть ли что-то в моем коде, что может быть неправильным, но результат тот же... Вот упрощенный код для рисования карты:

    var projection = d3.geo.mercator()
            .center([0, 40])
            .scale(200)
            .rotate([0, 0]);
    var path = d3.geo.path()
            .projection(projection);
    var width = 2000;
    var height = 2000;

    queue()
        .defer( d3.json,"world-110m.json")
        .await(ready);

    function ready(error,world) {
            // console.log(world)
             makeMap(world);
    }
    function makeMap(world){
        var svg = d3.select("#map").append("svg")
            .attr("width", width)
            .attr("height", height);
         var g = svg.append("g");
          svg.selectAll("path")
                .data(world.features)
                .enter()
                .append("path")
                .attr("d", path)
                .attr("stroke","black")
                .attr("fill","white");

    }

Кто-нибудь знает, в чем может быть проблема, и решения, как это исправить? Помощь будет принята с благодарностью :)

edit: Попробовав целую кучу разных вещей, я заметил, что если я укажу «fill: none», аргентина внезапно обрисуется в общих чертах, но как только я укажу цвет заливки, он исчезнет ... До сих пор не знаю, почему Это случилось -.-


person Julie Røsok    schedule 06.01.2015    source источник


Ответы (1)


Всякий раз, когда вы видите это поведение (страна отображается только через обводку, а не через заливку), это обычно указывает на повреждение геоданных, где многоугольник был вывернут наизнанку (он заполняет все вокруг границы многоугольника). ). Вам нужно будет перенести набор данных в ГИС и попытаться восстановить его. В данном случае коррумпирована не Аргентина, а Бермудские острова. Вы можете удалить Bermuda, что работает нормально, или попытаться восстановить геоданные в приложении ГИС.

Причина, по которой кажется, что Аргентина отсутствует, заключается в том, что испорченные Бермудские острова рисуются поверх Аргентины (среди прочего).

person Elijah    schedule 06.01.2015
comment
Спасибо! Удаление Bermuda работает, а мне Bermuda не особо нужны ^^ - person Julie Røsok; 07.01.2015