transformPolygon method
Implementation
Geometry transformPolygon(Polygon geom, Geometry parent) {
bool isAllValidLinearRings = true;
Geometry shell = transformLinearRing(geom.getExteriorRing(), geom);
// handle empty inputs, or inputs which are made empty
bool shellIsNullOrEmpty = shell.isEmpty();
if (geom.isEmpty() && shellIsNullOrEmpty) {
return factory.createPolygonEmpty();
}
if (shellIsNullOrEmpty || !(shell is LinearRing))
isAllValidLinearRings = false;
List<Geometry> holes = [];
for (int i = 0; i < geom.getNumInteriorRing(); i++) {
Geometry hole = transformLinearRing(geom.getInteriorRingN(i), geom);
if (hole.isEmpty()) {
continue;
}
if (!(hole is LinearRing)) isAllValidLinearRings = false;
holes.add(hole);
}
if (isAllValidLinearRings)
return factory.createPolygon(shell as LinearRing, holes.cast<LinearRing>());
else {
List<Geometry> components = [];
components.add(shell);
components.addAll(holes);
return factory.buildGeometry(components);
}
}