Force polygons into validity during GIS import.

Not sure why, but some polygons become invalid (which usually means a
self-intersecting "polygon", such as two triangles that meet at a point)
during this transformation. Shapely includes a tool to reshape polygons
into validity, so use that.
This commit is contained in:
Dan Albert 2023-05-30 23:14:56 -07:00 committed by Raffson
parent 5600257442
commit df922e9ca7
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99

View File

@ -8,6 +8,7 @@ from pathlib import Path
from pyproj import CRS, Transformer
from shapefile import Reader, Shape
from shapely import validation
from shapely.geometry import LineString, MultiPolygon, Polygon, shape
from shapely.ops import unary_union
@ -46,11 +47,13 @@ class CoordinateConverter:
for poly in polys:
for boundary, holes in self._boundary_and_holes_of(poly):
new_polys.append(
Polygon(
self._convert_line_to_dcs_coords(boundary),
holes=[
self._convert_line_to_dcs_coords(hole) for hole in holes
],
validation.make_valid(
Polygon(
self._convert_line_to_dcs_coords(boundary),
holes=[
self._convert_line_to_dcs_coords(hole) for hole in holes
],
)
)
)
return new_polys