Блок уже использует geojson - d3 geoPath не рисует объекты topojson, он рисует объекты geojson:
path (object [, arguments…]) <>
Визуализирует данный объект, который может быть любым объектом GeoJSON или геометрическим объектом
... ( ссылка )
Давайте рассмотрим ваш пример:
.data(topojson.feature(us, us.objects.states).features)
topojson.feature(us, us.objects.states)
возвращает коллекцию объектов, коллекцию объектов Geojson.
.features
доступ к функциям коллекции объектов (в данном случае к массиву полигонов).
То, что подается на .data()
, уже уже geojson.Таким образом, мы можем просто использовать .data(geojson.features)
, как вы предлагаете (если у нас есть коллекция объектов, в противном случае мы можем просто массив объектов геоджонов).
Мы можем продемонстрировать это на вашем примере двумя способами - предварительно преобразовать ваши данные в geojson с помощью topojson в браузере здесь , или мы можем загрузить файл geojson и полностью прекратить преобразование из topojson, как видно здесь .