# Intersection function returns multiple coordinates

I am trying to find intersection vertices of two polygons defined below

``````PG = Polygon([(0.0,0.0), (0.0,4.0), (2.0, 0.0)])
QG = shapely.affinity.rotate(PG, 10.0, origin="centroid")
print(PG.intersection(QG))
``````

It returns a polygon which represents the intersection vertices but I get multiple vertices belonging to polygon PG and QG and not the exact intersection vertices something like this

``````POLYGON ((0 1.275007557649384, 0 3.233068398870882, 1.176669689726421 1.646660620547158, 1.901423900453083 0.1971521990938349, 0.7833182180345657 0, 0.2248182330207899 0, 0 1.275007557649384))
``````

The graph looks something like this

How to get the exact coordinates of intersection vertices A, B and C as shown above?

• Intersection of two overlapping polygons is a polygon. Are you perhaps more interested in finding the intersection of the boundaries of the polygons (linear rings) that would give a multipoint in this case? Commented Apr 10, 2019 at 7:29
• I am interested in getting just the intersection coordinates of polygons PG and QG. Commented Apr 10, 2019 at 7:38
• the vertices of the polygon are the points you want, aren't they? other wise can you mark on your image which points you do want Commented Apr 10, 2019 at 7:42
• There are 3 intersection coordinates if you see the above graph where both the polygons intersect. I want to find the coordinates of those 3 points. Commented Apr 10, 2019 at 7:48
• I can see 6 points where the boundaries of the two polygons intersect. Could you mark your favorites? Polygons intersect topologically also in all interior points which are common for both and obviously you are not interested in that. Commented Apr 10, 2019 at 8:11

As user30184 says, the intersection of two overlapping polygons is a polygon and with your result (light blue polygon)

The intersection of the boundaries of the polygons (linearRings) gives a multipoint in you case

``````one = LineString(list(PG.exterior.coords))
two = LineString(list(QG.exterior.coords))
print(one.intersection(two).wkt)
MULTIPOINT (0 1.275007557649384, 0 3.233068398870882, 0.2248182330207899 0, 0.7833182180345657 0, 1.176669689726421 1.646660620547158, 1.901423900453083 0.1971521990938349)
``````

These points are also the vertices of the resulting polygon

``````points = [Point(pt) for pt in list(PG.intersection(QG).exterior.coords)[:-1]]
for i in points:
print(i.wkt)
POINT (0 1.275007557649384)
POINT (0 3.233068398870882)
POINT (1.176669689726421 1.646660620547158)
POINT (1.901423900453083 0.1971521990938349)
POINT (0.7833182180345657 0)
POINT (0.2248182330207899 0)
``````

But shapely alone does not allow to select the A,B,C points from the others.