#format #topojson #vega-lite
#форматирование #topojson #vega-lite
Вопрос:
У меня есть карта со старым форматом topojson, который когда-то работал с Vega-Lite. Теперь мы видим только фиолетовый квадрат в сути этого редактора.
Я перестроил карту с тем же кодом, но обновил topojson в редакторе vega и сохранил здесь как суть.
В новой версии vega кажется, что мне нужно, чтобы мои файлы topojson были отформатированы по-другому, сначала с дугами, например mapshaper.org экспортируйте вывод. Почему это? Это сломало несколько существующих веб-карт, и мне потребовалось несколько часов, чтобы разобраться. Похоже, я могу исправить это с помощью изменения рабочего процесса, но мне любопытно.
Ответ №1:
Данные Topojson соответствуют правилу левой руки для проецируемых данных (ориентация по часовой стрелке для внешних колец и против часовой стрелки для внутренних колец), где данные в вашем файле topojson структурированы в соответствии с правилом правой руки (против часовой стрелки для внешних колец и по часовой стрелке для внутренних колец). Порядок ваших полигонов кажется незначительным, но он определяет, какая часть находится ‘внутри’ и ‘снаружи’ полигонов.
Вы можете сделать две вещи:
- Используйте не географическую проекцию, а декартову
identity
проекцию. - Приведите исходные данные в правильный порядок.
Пример для 1:
"projection": {"type": "identity", "reflectY": true},
Пример для 2:
Используйте MapShaper или Python, чтобы привести ваши данные в правильный порядок. Вот пример с использованием Python
import topojson as tp
import geopandas as gpd
gdf = gpd.read_file('https://raw.githubusercontent.com/nycehs/NeighborhoodReports/master/visualizations/json/UHF42.topo_old.json')
tp.Topology(gdf).to_json('UHF42.topo_new.json')
Я немного писал об этом ранее для Altair и Python Topojson
- https://mattijn.github.io/topojson/example/settings-tuning.html#winding_order
- https://altair-viz.github.io/user_guide/data.html#winding-order
И Майк Босток для D3
Комментарии:
1. Это отличный и всеобъемлющий ответ, который служит отличным справочником для меня и моей команды, а также действительно улучшает мое понимание topojson. Теперь я буду использовать фрагмент python для перезапуска всего моего топоджсона Нью-Йорка … и спасибо, что познакомили меня с проекцией идентификаторов, которая будет очень полезна для работы с плоскостью состояний. Единственное, что мне все еще неясно, это то, что вызвало изменение (старое правило правой руки topojson работало раньше …), но, возможно, просто изменение для обеспечения согласованности?
2. Добро пожаловать, но понятия не имею об изменениях. Насколько я знаю, это всегда было так для входных данных, структурированных topojson.. В любом случае, счастливого отображения!