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 pyproj import CRS, Transformer
|
||||||
from shapefile import Reader, Shape
|
from shapefile import Reader, Shape
|
||||||
|
from shapely import validation
|
||||||
from shapely.geometry import LineString, MultiPolygon, Polygon, shape
|
from shapely.geometry import LineString, MultiPolygon, Polygon, shape
|
||||||
from shapely.ops import unary_union
|
from shapely.ops import unary_union
|
||||||
|
|
||||||
@ -46,11 +47,13 @@ class CoordinateConverter:
|
|||||||
for poly in polys:
|
for poly in polys:
|
||||||
for boundary, holes in self._boundary_and_holes_of(poly):
|
for boundary, holes in self._boundary_and_holes_of(poly):
|
||||||
new_polys.append(
|
new_polys.append(
|
||||||
Polygon(
|
validation.make_valid(
|
||||||
self._convert_line_to_dcs_coords(boundary),
|
Polygon(
|
||||||
holes=[
|
self._convert_line_to_dcs_coords(boundary),
|
||||||
self._convert_line_to_dcs_coords(hole) for hole in holes
|
holes=[
|
||||||
],
|
self._convert_line_to_dcs_coords(hole) for hole in holes
|
||||||
|
],
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
return new_polys
|
return new_polys
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user