@Override public ICRS getCoordinateSystem() { return getReferencedObject().getCoordinateSystem(); }
@Override public Envelope getEnvelope() { return getReferencedObject().getEnvelope(); }
private void startGeometry( String localName, Geometry geometry ) throws XMLStreamException { writeStartElementWithNS( GML21NS, localName ); if ( geometry.getId() != null ) { referenceExportStrategy.addExportedId( geometry.getId() ); writer.writeAttribute( "gid", geometry.getId() ); } if ( outputCRS != null ) { writer.writeAttribute( "srsName", outputCRS.getAlias() ); } else if ( geometry.getCoordinateSystem() != null ) { ICRS coordinateSystem = geometry.getCoordinateSystem(); writer.writeAttribute( "srsName", coordinateSystem.getAlias() ); } }
@Override public boolean visitGeometry( Geometry geom ) { if ( geom.getCoordinateSystem() != null && geom.getCoordinateDimension() != 1 ) { try { geom.getCoordinateSystem(); } catch ( Exception e ) { throw new IllegalArgumentException( e.getMessage() ); } } return true; }
/** * Sets the {@link CRS} for all geometries contained in the given {@link Filter} that do not have crs information. * * @param filter * filter to process, must not be <code>null</code> * @param crs * crs to set, must not be <code>null</code> */ public static void setDefaultCRS( Filter filter, ICRS crs ) { for ( Geometry geom : getGeometries( filter ) ) { if ( geom.getCoordinateSystem() == null ) { // TODO propagate to deeper levels / change behavior of setCoordinateSystem() geom.setCoordinateSystem( crs ); } } }
private Geometry transformGeometry( Geometry value, GeometryTransformer transformer ) throws IllegalArgumentException, TransformationException { Geometry transformed = value; if ( transformed.getCoordinateSystem() == null ) { transformed.setCoordinateSystem( transformer.getTargetCRS() ); } else { transformed = linearizer.linearize( value, crit ); if ( !( transformed instanceof Point && transformed.getCoordinateDimension() == 1 ) ) { transformed = transformer.transform( transformed, transformed.getCoordinateSystem() ); } } return transformed; }
List<SurfacePatch> patches = new ArrayList<SurfacePatch>(); patches.add( geomFac.createPolygonPatch( p.getExteriorRing(), p.getInteriorRings() ) ); geom = geomFac.createSurface( geom.getId(), patches, geom.getCoordinateSystem() ); } else if ( hierarchy.getCurveSubstitutions().contains( particle.getName() ) && geom instanceof LineString ) { CurveSegment[] segments = new CurveSegment[1]; segments[0] = geomFac.createLineStringSegment( p.getControlPoints() ); geom = geomFac.createCurve( geom.getId(), geom.getCoordinateSystem(), segments ); geom.setType( fs.getSchema().getGeometryType( particle.getName() ) ); geom.setProperties( props );
Geometry clipGeometry( final Geometry geom, Geometry clippingArea ) { if ( clippingArea != null && !clippingArea.contains( geom ) ) { try { Geometry clippedGeometry = clippingArea.getIntersection( geom ); if ( clippedGeometry == null ) { return null; } com.vividsolutions.jts.geom.Geometry jtsOrig = ( (AbstractDefaultGeometry) geom ).getJTSGeometry(); com.vividsolutions.jts.geom.Geometry jtsClipped = ( (AbstractDefaultGeometry) clippedGeometry ).getJTSGeometry(); if ( jtsOrig == jtsClipped ) { return geom; } if ( isInvertedOrientation( jtsOrig ) ) { return clippedGeometry; } return fixOrientation( clippedGeometry, clippedGeometry.getCoordinateSystem() ); } catch ( UnsupportedOperationException e ) { // use original geometry if intersection not supported by JTS return geom; } } return geom; }
if ( !insideValidDomain( domainOfValidity, geo ) ) { throw new OutsideCRSDomainException( "Geometry (gml:id=" + ( isSet( geo.getId() ) ? geo.getId() : "not set" ) + ")is outside the area of validity of the source CRS." ); GeometryType geometryType = geo.getGeometryType(); try { switch ( geometryType ) { geo.getCoordinateSystem().getAlias(), getTargetCRS().getCodes(), ge.getMessage() ), ge );
private void startGeometry( String localName, Geometry geometry ) throws XMLStreamException, UnknownCRSException, TransformationException { GMLObjectType gmlType = geometry.getType(); if ( gmlType == null ) { writeStartElementWithNS( gmlNs, localName ); } else { QName elName = gmlType.getName(); writeStartElementWithNS( elName.getNamespaceURI(), elName.getLocalPart() ); } if ( geometry.getId() != null ) { referenceExportStrategy.addExportedId( geometry.getId() ); writeAttributeWithNS( gmlNs, "id", geometry.getId() ); } else if ( version == GML_32 && geometry.getId() == null ) { // in GML 3.2, a gml:id is required for every geometry writeAttributeWithNS( gmlNs, "id", "GEOMETRY_" + generateNewId() ); } if ( outputCRS != null ) { writer.writeAttribute( "srsName", outputCRS.getAlias() ); } else if ( geometry.getCoordinateSystem() != null ) { writer.writeAttribute( "srsName", geometry.getCoordinateSystem().getAlias() ); } exportStandardProps( geometry ); }
@Override public boolean visitGeometry( Geometry geom ) { idToObject.put( geom.getId(), geom ); return true; }
private Geometry simplify( Geometry geometry ) { if ( simplifier == null ) { return geometry; } GeometryType type = geometry.getGeometryType(); if ( type == ENVELOPE || type == COMPOSITE_GEOMETRY ) { return geometry; } return simplifier.simplify( geometry ); }
@Override public Geometry process( Geometry inputGeometry, Map<String, Object> params ) { return inputGeometry.getCentroid(); }
@Override public boolean contains( Geometry geometry ) { return getReferencedObject().contains( geometry ); }
@Override public int getCoordinateDimension() { return members.get( 0 ).getCoordinateDimension(); }
@Override public void setCoordinateSystem( ICRS crs ) { getReferencedObject().setCoordinateSystem( crs ); }
@Override public boolean equals( Geometry geometry ) { return getReferencedObject().equals( geometry ); }
@Override public boolean crosses( Geometry geometry ) { return getReferencedObject().crosses( geometry ); }
private <T extends Geometry> T transformLinearized( T g ) { if ( g instanceof Surface ) { @SuppressWarnings("unchecked") T g2 = (T) transform( linearizer.linearize( (Surface) g, new NumPointsCriterion( 100 ) ) ); g2.setCoordinateSystem( g.getCoordinateSystem() ); return g2; } if ( g instanceof Curve ) { @SuppressWarnings("unchecked") T g2 = (T) transform( linearizer.linearize( (Curve) g, new NumPointsCriterion( 100 ) ) ); g2.setCoordinateSystem( g.getCoordinateSystem() ); return g2; } return null; }