mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
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:
parent
5600257442
commit
df922e9ca7
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user