/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2003-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.data.crs; import java.io.IOException; import java.util.NoSuchElementException; import org.geotools.data.DataSourceException; import org.geotools.data.DelegatingFeatureReader; import org.geotools.data.FeatureReader; import org.geotools.feature.FeatureTypes; import org.geotools.feature.IllegalAttributeException; import org.geotools.feature.SchemaException; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.geotools.geometry.jts.GeometryCoordinateSequenceTransformer; import org.geotools.referencing.CRS; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.referencing.FactoryException; import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.opengis.referencing.operation.MathTransform; import org.opengis.referencing.operation.MathTransform2D; import org.opengis.referencing.operation.OperationNotFoundException; import org.opengis.referencing.operation.TransformException; import com.vividsolutions.jts.geom.Geometry; /** * ReprojectFeatureReader provides a reprojection for FeatureTypes. * *
* ReprojectFeatureReader is a wrapper used to reproject GeometryAttributes * to a user supplied CoordinateReferenceSystem from the original * CoordinateReferenceSystem supplied by the original FeatureReader. *
* ** Example Use: *
* ReprojectFeatureReader reader =
* new ReprojectFeatureReader( originalReader, reprojectCS );
*
* CoordinateReferenceSystem originalCS =
* originalReader.getFeatureType().getDefaultGeometry().getCoordinateSystem();
*
* CoordinateReferenceSystem newCS =
* reader.getFeatureType().getDefaultGeometry().getCoordinateSystem();
*
* assertEquals( reprojectCS, newCS );
*
*
* TODO: handle the case where there is more than one geometry and the other
* geometries have a different CS than the default geometry
*
* @author jgarnett, Refractions Research, Inc.
* @author aaime
* @author $Author: jive $ (last modification)
*
*
* @source $URL$
* @version $Id$
*/
public class ReprojectFeatureReader implements DelegatingFeatureReader
* Please note schema is that of the expected results, You may need to use FeatureTypes.transform( FeatureType, crs ) to create the schema provider.
*
* @param reader original reader with results in the original coordinate reference system
* @param schema This is the target schema describing the results in the expected coordinate reference system
* @param transform the math transform used to go from reader coordinate reference system to the provided schema coordinate reference system
*/
public ReprojectFeatureReader(FeatureReader
* Description ...
*
* Description ...
*
* Description ...
*
* Description ...
*