Ответ 1
Официальные картографические границы чаще встречаются как шейп файлы, а не GeoJSON или TopoJSON, хотя в этом случае вы можете найти как jsongeo/cd113 репозиторий на GitHub (cd113.topojson).
Чтобы получить данные непосредственно из Бюро переписи населения США, небольшой поиск в Google приведет вас к TIGER/Line shapefiles для 113-го Конгресса. (Среды Конгресса слегка меняются от конгресса до конгресса, поэтому будьте осторожны, чтобы использовать соответствующую версию!) Нажав на "FTP-сайт, отсортированный по слою", вы найдете критически названный CD113, а в самом низу tl_rd13_us_cd113.zip 38-мегапиксельный шейп файл, содержащий конгрессные округа для всех Соединенных Штатов. Этот файл для вас очень далек, но вы можете использовать Lets Make a Map для использования ogr2ogr и topojson, чтобы преобразовать шейп файл в более управляемое представление.
В частности, вы начинаете с преобразования Shapefile в GeoJSON (101MB!):
ogr2ogr -f GeoJSON districts.json tl_rd13_us_cd113.shp
Затем преобразуйте GeoJSON в TopoJSON и упростите (всего 472 КБ):
topojson -s 7e-9 --id-property=+GEOID -o us-congress-113.json -- districts.json
Теперь первые две цифры идентификатора геометрии (d.id / 1000 | 0
) являются кодом FIPS состояния (см. us-state-names.tsv), а последние две цифры - это номер округа в конгрессе (d.id % 1000
) в этом состоянии. Упрощение (-s
) является необязательным, но в целом это хорошая идея, если вы показываете статическую карту в браузере; Я настроил порог, чтобы сохранить около половины очков, но вы можете сделать файл еще меньше, используя больший порог.
И там у вас есть:
Вероятно, вы захотите объединить файл TopoJSON с объектами земли и состояний из us.json, так как в большинстве карт вы хотите скопировать участках конгресса на сухопутную границу и нарисовать дополнительную границу между государствами. Это можно сделать, объединяя файлы TopoJSON с использованием нескольких входных аргументов в бинарном файле topojson.