@SuppressWarnings("unchecked")
private static Geometry fixOrientation( MultiGeometry<?> geom, ICRS defaultCrs ) {
ICRS crs = geom.getCoordinateSystem();
if ( crs == null ) {
crs = defaultCrs;
}
List fixedMembers = new ArrayList<Object>( geom.size() );
for ( Geometry member : geom ) {
Geometry fixedMember = fixOrientation( member, crs );
fixedMembers.add( fixedMember );
}
switch ( geom.getMultiGeometryType() ) {
case MULTI_GEOMETRY:
return new DefaultMultiGeometry<Geometry>( null, crs, null, (List<Geometry>) fixedMembers );
case MULTI_POLYGON:
return new DefaultMultiPolygon( null, crs, null, (List<Polygon>) fixedMembers );
case MULTI_SURFACE:
return new DefaultMultiSurface( null, crs, null, (List<Surface>) fixedMembers );
default:
throw new UnsupportedOperationException();
}
}