[polygons] using try/except in polygons
This commit is contained in:
@@ -168,10 +168,18 @@ class PolygonIndex(object):
|
||||
holes = [(lon + 360.0 if lon < 0 else lon, lat) for lon, lat in holes]
|
||||
|
||||
poly = Polygon(coords, holes)
|
||||
if cls.fix_invalid_polygons and not poly.is_valid and not poly.contains(poly.centroid):
|
||||
poly_fix = cls.fix_polygon(poly)
|
||||
if poly_fix is not None and poly_fix.bounds and len(poly_fix.bounds) == 4 and poly_fix.is_valid and (poly_fix.contains(poly.centroid) or poly_fix.contains(poly_fix.representative_point())):
|
||||
poly = poly_fix
|
||||
try:
|
||||
invalid = cls.fix_invalid_polygons and not poly.is_valid and not poly.contains(poly.centroid)
|
||||
except Exception:
|
||||
invalid = True
|
||||
|
||||
if invalid:
|
||||
try:
|
||||
poly_fix = cls.fix_polygon(poly)
|
||||
if poly_fix is not None and poly_fix.bounds and len(poly_fix.bounds) == 4 and poly_fix.is_valid and (poly_fix.contains(poly.centroid) or poly_fix.contains(poly_fix.representative_point())):
|
||||
poly = poly_fix
|
||||
except Exception:
|
||||
poly = None
|
||||
|
||||
return poly
|
||||
|
||||
|
||||
Reference in New Issue
Block a user