I'm trying to follow this tutoriel to do a concave hull script : Drawing Boundaries In Python

Of course, I drop all steps for plot results. But at the and of my script I have an error. This is last lines :

edges = set()
edge_points = []

# loop over triangles:
# ia, ib, ic = indices of corner points of the triangle

for ia, ib, ic in tri.vertices:
    pa = coords[ia]
    pb = coords[ib]
    pc = coords[ic]
    # Lengths of sides of triangle
    a = math.sqrt((pa[0]-pb[0])**2 + (pa[1]-pb[1])**2)
    b = math.sqrt((pb[0]-pc[0])**2 + (pb[1]-pc[1])**2)
    c = math.sqrt((pc[0]-pa[0])**2 + (pc[1]-pa[1])**2)
    # Semiperimeter of triangle
    s = (a + b + c)/2.0
    # Area of triangle by Heron's formula
    area = math.sqrt(s*(s-a)*(s-b)*(s-c))
    circum_r = a*b*c/(4.0*area)
    # Here's the radius filter.
    #print circum_r
    if circum_r < 1.0/alpha:
        add_edge(edges, edge_points, coords, ia, ib)
        add_edge(edges, edge_points, coords, ib, ic)
        add_edge(edges, edge_points, coords, ic, ia)

m = geometry.MultiLineString(edge_points)
triangles = list(polygonize(m))
return cascaded_union(triangles), edge_points

And it returns :

Assertion failed: (!static_cast<bool>("should never be reached")),
function itemsTree, file AbstractSTRtree.cpp, line 373.
Abort trap: 6

What is wrong here?

  • Which line exactly triggers that? Do you use a spatial index? Commented Jan 23, 2018 at 10:12
  • The last line is generating this error and more precisely, cascaded_union() fonction... For spatial index, I don't think so.
    – Tim C.
    Commented Jan 23, 2018 at 10:20
  • Seems like a bug! Please see github.com/Toblerity/Shapely/… and try if updating accordingly fixes it. If not, please try to make a bug report with the data that leads to this. :) If this fixes it, please post that as your own answer to this question. Commented Jan 23, 2018 at 10:44

1 Answer 1


Like it's said here in Workaround 2, you have to import shapely first and fiona after.

For me it solves issue.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.