Путаница с форматом TopoJSON

Я пытаюсь следовать учебному пособию mbostock «Давайте создадим карту» здесь: http://bost.ocks.org/mike/map/. В какой-то момент обучения он пишет:

d3.json("uk.json", function(error, uk) {
    svg.append("path")
       .datum(topojson.feature(uk, uk.objects.subunits))
       .attr("d", d3.geo.path().projection(d3.geo.mercator()));
});

Не видя формата его файла topoJSON, трудно определить, что эквивалентно строке «uk.objects.subunits» для моего кода (мой файл topoJSON можно посмотреть здесь: https://gist.github.com/jcahan/e1772766f01b68b00dc9).

Кто-нибудь, пожалуйста, помогите прояснить, как я (и будущие читатели) могу определить внутреннее свойство (например, uk.objects.subunits) моего файла topojson?

Спасибо за ваше время!


person NumenorForLife    schedule 11.07.2013    source источник


Ответы (2)


Используйте веб-консоль в своем браузере (я использую расширение Firebug в Firefox), чтобы просмотреть пример страницы Майка, и вы можете увидеть, как браузер вытаскивает файл uk.json и просматривает его формат. Вот соответствующий фрагмент:

{"type":"Topology","transform":{"scale":
[0.001546403012701271,0.0010939367048704803],"translate":
[-13.69131425699993,49.90961334800009]},"objects":{"subunits":
{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","id":"ENG","arcs":[[[0]],
[[1]],[[2]],[[3]],[[4]],[[5]],[[6,7,8,9]]],"properties":{"name":"England"}},

Вы можете увидеть иерархию uk.objects.subunits

subunits содержит GeometryCollection. Посмотрите на свой файл json и сделайте то же самое.

Дважды проверьте, что эта инструкция от Майка работает:

d3.json("uk.json", function(error, uk) {
    console.log(uk);
});

Теперь, если вы заглянете в свою консоль JavaScript, вы должны увидеть объект топологии, представляющий административные границы и населенные пункты Соединенного Королевства.

Если вы заставите его работать, дайте мне знать, так как я не могу загрузить свой личный файл TopoJSON, хотя я могу заставить это сделать все файлы Майка. Я пришел к выводу, что мой файл TopoJSON должен быть каким-то неправильным.

person rleckinger    schedule 14.07.2013

Конечно.

Этот файл JSON оказался близким другом (фактически соседним) примера. Так что вы можете увидеть это на http://bost.ocks.org/mike/map/uk.json

С уважением.

person cifuentes    schedule 15.07.2013