2013-04-18 12 views
18

Ich habe ein svg Element, das aus vielen verschiedenen path Objekten besteht, von denen jedes einen U.S.-Zustand darstellt. enter image description hereD3: Interne Svg-Pfade zusammenführen?

http://jsfiddle.net/jGjZ2/

Ich möchte die Ost-Gebiet (Gold) in einem einzigen Pfad Objekt ohne sichtbare Unterteilungen verschmelzen.

Das Endergebnis sollte wie folgt aussehen (ignoriert die Ungenauigkeiten): enter image description here

I D3 verwenden. Es gibt keine GeoJSON oder TopoJSON Daten - die Karte ist Svg direkt in HTML eingebettet (siehe jsfiddle).

Vielen Dank!

+0

Wenn Sie dies nicht online tun müssen, wird [diese Frage] (http://stackoverflow.com/questions/8420653/merging-svg-paths-of-several-neighboring-us-states) helfen. –

+0

Wir hatten das gleiche Problem: http://stackoverflow.com/questions/15473765/merge-two-svg-path-elements-programatically – jantimon

Antwort

19

Angenommen, Sie können die angegebene Einschränkung der Manipulation eines vorhandenen SVG-Bilds ignorieren (was angesichts der leichten Verfügbarkeit von kartografischen Grenzen in leicht zu manipulierenden Formaten als willkürliche Einschränkung erscheint), können Sie topojson.mesh verwenden, um mehrere zusammenzuführen Polygone. Obwohl, beachten Sie diesen Ansatz einige Einschränkungen wie in diesem Beispiel beschrieben:

merged polygons

Eine weitere einfache Methode ist nur die markierten Polygone zweimal ziehen: einmal mit einem dicken schwarzen Strich und ohne Füllung und ein 2. Mal oben mit Orangenfüllung und ohne Strich. Dadurch wird erreicht, die gleiche Wirkung, ohne dass eine topologische Manipulation:

merging polygons

Ich nehme an, wenn Sie wirklich hatte, Sie in das SVG-Element erreichen konnte und das gleiche tun, indem Sie die Vektordaten zu extrahieren, aber es wird einfacher sein, wenn Sie von sauberen Daten ausgehen.

+0

Ich war nur auf der Suche nach wie dies mit Topojson zu tun - danke! – nrabinowitz

+0

Ich habe versucht, etwas wie Ihre zweite Methode herauszufinden, aber nichts kam mir in den Sinn. Perfekt! P.S. Hervorragende Arbeit mit dieser Bibliothek. –