Карта D3 с картой geoJson US Map работает, но не в мире

Привет, я следил за примером того, как создать географическую карту с использованием D3 и файла Geo Json.

До сих пор с помощью этой книги я без проблем создал следующее: h**p://chimera.labs.oreilly.com/books/1230000000345/ch12.html#_projections

    </head>
    <body>
        <script type="text/javascript">

                    //Width and height
                    var w = 500;
                    var h = 300;

                    //Define map projection
                    var projection = d3.geo.albersUsa()
                                       .translate([w/2, h/2])
                                       .scale([500]);

                    //Define path generator
                    var path = d3.geo.path()
                                 .projection(projection);

                    //Create SVG element
                    var svg = d3.select("body")
                                            .append("svg")
                                            .attr("width", w)
                                            .attr("height", h);

                    //Load in GeoJSON data
                    d3.json("us-states.json", function(json) {

                            //Bind data and create one path per GeoJSON feature
                            svg.selectAll("path")
                               .data(json.features)
                               .enter()
                               .append("path")
                               .attr("d", path);

                    });

            </script>
    </body>

using this json file: https://dl.dropboxusercontent.com/u/49159198/us-states.json

Когда я пытаюсь создать карту мира, используя следующий файл json (в том же формате, что и США, только страны, а не штаты), это не получается.

https://dl.dropboxusercontent.com/u/49159198/countries.geo.json

Карта США выглядит как черный прямоугольник. После применения некоторого штриха к пути в CSS я вижу, что карта есть, но это не сработает, так как мне нужно позже отредактировать путь с помощью данных из CSV.

Код для карты мира:

    </head>
    <body>
        <script type="text/javascript">

                    //Width and height
                    var w = 960;
                    var h = 480;



                    var projection = d3.geo.equirectangular()
                                      .translate([w/2, h/2])
                                     .scale([150]);

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

                    //Create SVG element
                    var svg = d3.select("body")
                                            .append("svg")
                                            .attr("width", w)
                                            .attr("height", h);

                    //Load in GeoJSON data
                    d3.json("countries.geo.json", function(json) {

                            //Bind data and create one path per GeoJSON feature
                            svg.selectAll("path")
                               .data(json.features)
                               .enter()
                               .append("path")
                               .attr("d", path);

                    });

            </script>
    </body>

Any help would be great as it will be aiding my college project.

Обновлено в связи с ответами ниже


person Malorrr    schedule 20.11.2013    source источник


Ответы (1)


Не используйте проекцию albersUsa ни для чего, кроме США — она обрезает все, что находится за пределами этой области. Вместо этого используйте, например. albers.

person Lars Kotthoff    schedule 20.11.2013
comment
Спасибо, я только что погуглил AlbersUsa и понял, что он используется для обрезки штатов США. Я попробовал 'ablers', но теперь моя карта полностью черная › db.tt/5o6cH1iw - person Malorrr; 20.11.2013
comment
Просто нужно настроить CSS так, чтобы path не заполнялись, а только обводились -- vida.io/documents/GGeSHJQMpoTExsvPT - person Lars Kotthoff; 20.11.2013
comment
Метод CSS работает, но это будет преобладать над моим будущим кодом, поскольку я планирую использовать каждый путь (страну) для заполнения цветом в зависимости от значения файла CSV. Сток же показал мне, что моя карта их правильная. Мой код не был изменен для использования equirectangular вместо alber. Вот только проблема в том, что вся карта черная и не имеет границ в отличие от карты США. - person Malorrr; 20.11.2013
comment
Нет, все, что вы делаете в коде, переопределит директивы CSS. Я изменил пример, чтобы использовать равнопромежуточную проекцию, и он отлично работает. - person Lars Kotthoff; 20.11.2013
comment
Я протестировал этот метод css с добавлением данных заполнения, и некоторые страны отсутствуют и не заполнены, поэтому этот метод не будет работать. Я действительно не могу понять, почему карта США выходит нормально, а карта мира - чисто пустая. - person Malorrr; 20.11.2013
comment
Было бы полезно, если бы вы могли показать код, демонстрирующий проблему. Я снова обновил пример, чтобы заполнить страны. - person Lars Kotthoff; 20.11.2013
comment
Я отредактировал ваш код в масштабе 150. Если вы посмотрите, вы увидите, что Аргентина отсутствует. vida.io/documents/eTReDfWQAZwT8TKao - person Malorrr; 20.11.2013
comment
Я пытаюсь сделать следующее: создать цветовую карту стран. Данные берутся из файла CSV, чем выше число, тем сильнее цвет страны. пример данных CSV: `государство,значение Бразилия,1.3791 Испания,1.3705 Япония,1.6847 Россия,1.4334 Аргентина,1.4302 Мали,2.3020` пример кода цвета на карте: vida.io/documents/Wnczr8wdraEYzq287 Как видите, некоторые страны отсутствуют. еще раз спасибо за вашу помощь. - person Malorrr; 20.11.2013
comment
Хорошо, это проблема с GeoJSON — см. здесь. Я исправил проблему в примере, удалив Bermuda. - person Lars Kotthoff; 20.11.2013
comment
Итак, если я удалю Бермуды из файла json, мне не нужно будет использовать CSS, чтобы увидеть карту? - person Malorrr; 21.11.2013
comment
Просто удалил бермуды и все хорошо без CSS. Большое спасибо. - person Malorrr; 21.11.2013
comment
Я отлаживал это часами. Я попробовал свою страну, и она даже не присваивает атрибут пути. - person Cihad Turhan; 24.11.2013