Используйте topojson для проецирования шейп-файлов с разными экстентами

У меня есть шейп-файлы переписи населения США за каждое десятилетие с 1790 по 1860 год. Поскольку США росли, размеры этих шейп-файлов различаются. Здесь используется ogrinfo -so -al экстент для 1790 года, Extent: (-94.732708, 30.355644) - (-66.949831, 48.999992), и для 1860 года, Extent: (-124.762578, 24.521051) - (-66.949831, 49.384358).

Я хочу использовать флаг --projection topojson для проецирования их на экранные координаты. Выполнение этой команды работает для каждого из файлов:

topojson -o us_1790.json --simplify-proportion 0.10 \
  --projection 'd3.geo.albers()' \
  --width 960 \
  --height 500 \
  --margin 10 \
  -- shp/epsg4326/county_1790.shp

И я могу затем отображать карты в d3. Сложность в том, что каждая из карт США центрирована, а это значит, что карта США 1790 года не совпадает с картой 1860 года и так далее. Вот что я имею в виду:

США 1790

США 1860

Я пытался использовать флаг --bbox и установить ограничивающую рамку в размере 1860, но это не сработало. Я также пытался найти способ установить экстент с помощью ogr2ogr.

Если нужно, я могу сделать проекцию в браузере, но я бы предпочел предварительно проецировать их, чтобы карта была максимально быстрой. Что я должен делать?


person Lincoln Mullen    schedule 04.05.2014    source источник
comment
Ключевым моментом здесь является то, что меньшие карты должны быть спроецированы на меньшую ширину и высоту, чем полные карты. Если вы предполагаете, что полный экстент текущего США соответствует вашей полной ширине и высоте экрана, вы сможете определить, какому размеру экрана соответствуют меньшие части.   -  person Lars Kotthoff    schedule 04.05.2014


Ответы (1)


Не используйте --width и --height; вместо этого укажите масштаб проекции и переведите, и вы получите фиксированную проекцию, которая будет одинаковой для всех входных данных. На самом деле, поскольку масштабирование и перевод d3.geo.albers по умолчанию рассчитаны на размер окна просмотра 960×500, вы можете просто сказать:

topojson \
  -o us_1790.json \
  --simplify-proportion 0.10 \
  --projection 'd3.geo.albers()' \
  -- shp/epsg4326/county_1790.shp
person mbostock    schedule 04.05.2014
comment
Это сработало отлично, а также позволило указать порог упрощения в пикселях, как вы пишете в topojson документах. Спасибо. - person Lincoln Mullen; 05.05.2014