in common/src/main/java/org/apache/sedona/common/utils/GeometrySplitter.java [290:332]
private GeometryCollection ensureMultiGeometryOfDimensionN(Geometry geometry, int dimension) {
GeometryCollection result = null;
if (geometry != null) {
if (dimension == 0 && geometry instanceof MultiPoint) {
result = (MultiPoint) geometry;
} else if (dimension == 1 && geometry instanceof MultiLineString) {
result = (MultiLineString) geometry;
} else if (dimension == 2 && geometry instanceof MultiPolygon) {
result = (MultiPolygon) geometry;
} else {
ArrayList<Geometry> validGeometries = new ArrayList<>();
for (int n = 0; n < geometry.getNumGeometries(); n++) {
Geometry candidateGeometry = geometry.getGeometryN(n);
if (candidateGeometry.getDimension() == dimension) {
validGeometries.add(candidateGeometry);
}
}
switch (dimension) {
case 0:
result =
(GeometryCollection)
geometryFactory.createMultiPoint(validGeometries.toArray(new Point[0]));
break;
case 1:
result =
(GeometryCollection)
geometryFactory.createMultiLineString(
validGeometries.toArray(new LineString[0]));
break;
case 2:
result =
(GeometryCollection)
geometryFactory.createMultiPolygon(validGeometries.toArray(new Polygon[0]));
break;
}
}
}
return result;
}