@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(); } }
linearizedMembers.add( curveLinearizer.linearize( curve, crit ) ); linearized = (T) geomFac.createMultiCurve( geom.getId(), geom.getCoordinateSystem(), linearizedMembers ); } else if ( geom instanceof MultiPolygon ) { MultiPolygon mp = (MultiPolygon) geom; linearizedMembers.add( sfLinearizer.linearize( polygon, crit ) ); linearized = (T) geomFac.createMultiPolygon( geom.getId(), geom.getCoordinateSystem(), linearizedMembers ); } else if ( geom instanceof MultiSurface ) { MultiSurface<Surface> ms = (MultiSurface<Surface>) geom; linearizedMembers.add( sfLinearizer.linearize( polygon, crit ) ); linearized = (T) geomFac.createMultiSurface( geom.getId(), geom.getCoordinateSystem(), linearizedMembers ); } else { List<Geometry> linearizedMembers = new ArrayList<Geometry>( geom.size() ); for ( Object member : geom ) { linearizedMembers.add( linearize( (Geometry) member, crit ) ); linearized = (T) geomFac.createMultiGeometry( geom.getId(), geom.getCoordinateSystem(), linearizedMembers );
switch ( geometry.getMultiGeometryType() ) { case MULTI_LINE_STRING: case MULTI_POINT: { List<Geometry> simplifiedMembers = new ArrayList<Geometry>( mg.size() ); for ( Geometry member : mg ) { simplifiedMembers.add( simplify( member ) ); simplified = geomFac.createMultiGeometry( mg.getId(), mg.getCoordinateSystem(), simplifiedMembers ); break;
throws XMLStreamException, TransformationException, UnknownCRSException { switch ( multiGeometry.getMultiGeometryType() ) { case MULTI_POINT: { exportMultiPoint( (MultiPoint) multiGeometry );
MultiGeometry<?> result = null; final MultiGeometryType geometryType = geom.getMultiGeometryType(); switch ( geometryType ) { case MULTI_CURVE: mg.add( tG ); result = geomFactory.createMultiGeometry( geom.getId(), getTargetCRS(), mg ); break; case MULTI_LINE_STRING:
multiGeometry.setType( type ); multiGeometry.setProperties( props );
throws XMLStreamException, UnknownCRSException, TransformationException { switch ( geometry.getMultiGeometryType() ) { case MULTI_CURVE: { MultiCurve<Curve> multiCurve = (MultiCurve<Curve>) geometry;
List<?> deepMembers = new ArrayList<Object>( geometry.size() ); for ( Geometry member : geometry ) { collectMembersDeep( member, (List<GeometricPrimitive>) deepMembers ); homogenized = new GeometryFactory().createMultiPoint( geometry.getId(), geometry.getCoordinateSystem(), Collections.EMPTY_LIST ); break; homogenized = new GeometryFactory().createMultiPoint( geometry.getId(), geometry.getCoordinateSystem(), (List<Point>) deepMembers ); break; homogenized = new GeometryFactory().createMultiLineString( geometry.getId(), geometry.getCoordinateSystem(), (List<LineString>) deepMembers ); break; homogenized = new GeometryFactory().createMultiPolygon( geometry.getId(), geometry.getCoordinateSystem(), (List<Polygon>) deepMembers ); break;
throws IOException { switch ( geometry.getMultiGeometryType() ) { case MULTI_GEOMETRY: writeMultiGeometryGeometry( geometry, writer );