private GeometryCollection ensureMultiGeometryOfDimensionN()

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;
  }