2013-04-18 2 views
18

У меня есть элемент svg, состоящий из множества различных объектов path, каждый из которых представляет одно состояние штата. enter image description hereD3: Объединить внутренние пути SVG?

http://jsfiddle.net/jGjZ2/

Я хотел бы объединить восточную территорию (золото) в единый объект пути без видимых делений.

Конечный результат должен выглядеть следующим образом (игнорировать неточности): enter image description here

Я использую D3. Нет данных GeoJSON или TopoJSON - карта svg напрямую встроена в html (см. Jsfiddle).

Большое спасибо!

+0

Если вам не нужно делать это онлайн, [этот вопрос] (http://stackoverflow.com/questions/8420653/merging-svg-paths-of-several-neighboring-us-states) поможет. –

+0

У нас была та же проблема: http://stackoverflow.com/questions/15473765/merge-two-svg-path-elements-programatically – jantimon

ответ

19

Предполагая, что вы можете игнорировать заявленное ограничение манипулирования существующего SVG изображения (что кажется произвольным ограничением данного наперевес наличие картографических границ в более простой в манипулируют форматы ...), вы можете использовать topojson.mesh объединить несколько полигоны. Хотя, отметим, этот подход имеет несколько ограничений, как описано в данном примере:

merged polygons

Другой простой подход заключается просто рисовать выделенные полигоны дважды: один раз с толстым черным ходом и без заливки и второй раз сверху с оранжевым заполнением и без инсульта. Это дает тот же эффект без необходимости топологической манипуляции:

merging polygons

Я полагаю, что если вы действительно были, вы могли бы достичь в элемент SVG и сделать то же самое, извлекая векторные данные, но это будет быть проще, если вы начнете с чистых данных.

+0

Я просто искал, как это сделать с помощью topojson - спасибо! – nrabinowitz

+0

Я пытался понять что-то вроде вашего второго метода, но ничего не приходило в голову. Отлично! Постскриптум Отличная работа с этой библиотекой. –

Смежные вопросы