From: Martin D. <des...@us...> - 2002-06-27 13:39:15
|
Update of /cvsroot/geotools/geotools2/geotools-src/gcs-coverage/src/org/geotools/gc In directory usw-pr-cvs1:/tmp/cvs-serv7462/geotools-src/gcs-coverage/src/org/geotools/gc Modified Files: GridCoverage.java Log Message: Tuned the condition when 'y' axis is inversed Index: GridCoverage.java =================================================================== RCS file: /cvsroot/geotools/geotools2/geotools-src/gcs-coverage/src/org/geotools/gc/GridCoverage.java,v retrieving revision 1.1 retrieving revision 1.2 diff -w -C2 -d -r1.1 -r1.2 *** GridCoverage.java 2 Jun 2002 21:02:37 -0000 1.1 --- GridCoverage.java 27 Jun 2002 13:39:12 -0000 1.2 *************** *** 91,94 **** --- 91,95 ---- import org.geotools.pt.MismatchedDimensionException; import org.geotools.cs.CoordinateSystem; + import org.geotools.cs.AxisOrientation; import org.geotools.ct.MathTransform; import org.geotools.ct.MathTransform2D; *************** *** 126,129 **** --- 127,144 ---- public class GridCoverage extends Coverage { /** + * Axis orientation of image's coordinate systems. In most images, <var>x</var> values are + * increasing toward the right (<code>EAST</code>) and <var>y</var> values are increasing + * toward the bottom (<code>SOUTH</code>). This is different to many geographic coordinate + * systems, which have <var>y</var> values increasing <code>NORTH</code>. The grid coverage + * constructor will compare the geographic axis orientations to this + * <code>IMAGE_ORIENTATION</code> and inverse the <var>y</var> axis if necessary. The axis + * inversions are handle by {@link GridGeometry#getGridToCoordinateSystem()}. + */ + private static final AxisOrientation[] IMAGE_ORIENTATION = { + AxisOrientation.EAST, + AxisOrientation.SOUTH + }; + + /** * Tells if we should try an optimisation using pyramidal images. * Default value do not use this optimisation, since it doesn't *************** *** 490,494 **** envelope = CTSUtilities.transform(transform, envelope); } catch (TransformException exception) { ! final IllegalArgumentException e=new IllegalArgumentException(); // TODO e.initCause(exception); throw e; --- 505,510 ---- envelope = CTSUtilities.transform(transform, envelope); } catch (TransformException exception) { ! // TODO: provide a localized message ! final IllegalArgumentException e=new IllegalArgumentException(); e.initCause(exception); throw e; *************** *** 540,544 **** if (inverse==null) { inverse = new boolean[dimension]; ! inverse[1] = true; // Inverse 'y' axis only. } gridGeometry = new GridGeometry(gridRange, envelope, inverse); --- 556,563 ---- if (inverse==null) { inverse = new boolean[dimension]; ! for (int i=Math.min(IMAGE_ORIENTATION.length, dimension); --i>=0;) { ! final AxisOrientation toInverse = IMAGE_ORIENTATION[i].inverse(); ! inverse[i] = toInverse.equals(cs.getAxis(1).orientation); ! } } gridGeometry = new GridGeometry(gridRange, envelope, inverse); |