I’ve been working with the Shapely python package in python. This is a short guide for **how to merge polygons in python**.

This guide is based on “cascaded_union.py” in the shapely examples.

Find out how to install shapely in python here.

# How to Merge Polygons in Python

Download the script for this guide here.

In a most simple sense we can just do something like this to merge polygons:

from shapely.geometry import Polygon from shapely.ops import cascaded_union polygon1 = Polygon([(0, 0), (5, 3), (5, 0)]) polygon2 = Polygon([(0, 0), (3, 10), (3, 0)]) polygons = [polygon1, polygon2] u = cascaded_union(polygons)

This will produce a merged polygon “u”.

Let’s build on this to **plot** the original polygons, **merge** them, and then **plot the merged polygon**, too.

First, **plot the original polygons**:

# plot these two polygons separately fig = plt.figure(1, figsize=SIZE, dpi=90) ax = fig.add_subplot(111) poly1patch = PolygonPatch(polygon1, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2) poly2patch = PolygonPatch(polygon2, ec=BLUE, alpha=0.5, zorder=2) ax.add_patch(poly1patch) ax.add_patch(poly2patch) xrange = [-2, 12] yrange = [-2, 8] ax.set_xlim(*xrange) ax.set_xticks(range(*xrange) + [xrange[-1]]) ax.set_ylim(*yrange) ax.set_yticks(range(*yrange) + [yrange[-1]]) ax.set_aspect(1)

Which gives us this output:

Now merge the two polygons and plot them:

# Make the merged polygons u = cascaded_union(polygons) # Make new figure for the merged polygon fig2 = plt.figure(2, figsize=SIZE, dpi=90) ax2 = fig2.add_subplot(111) patch2b = PolygonPatch(u, fc=BLUE, ec=BLUE, alpha=1, zorder=2) ax2.add_patch(patch2b) xrange = [-2, 12] yrange = [-2, 8] ax2.set_xlim(*xrange) ax2.set_xticks(range(*xrange) + [xrange[-1]]) ax2.set_ylim(*yrange) ax2.set_yticks(range(*yrange) + [yrange[-1]]) ax2.set_aspect(1) fig2.show(2)

Which gives us the output:

Get the python file for this guide here.