001: //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/trunk/src/org/deegree/model/spatialschema/Position.java $
002: /*---------------- FILE HEADER ------------------------------------------
003:
004: This file is part of deegree.
005: Copyright (C) 2001-2008 by:
006: EXSE, Department of Geography, University of Bonn
007: http://www.giub.uni-bonn.de/deegree/
008: lat/lon GmbH
009: http://www.lat-lon.de
010:
011: This library is free software; you can redistribute it and/or
012: modify it under the terms of the GNU Lesser General Public
013: License as published by the Free Software Foundation; either
014: version 2.1 of the License, or (at your option) any later version.
015:
016: This library is distributed in the hope that it will be useful,
017: but WITHOUT ANY WARRANTY; without even the implied warranty of
018: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019: Lesser General Public License for more details.
020:
021: You should have received a copy of the GNU Lesser General Public
022: License along with this library; if not, write to the Free Software
023: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024:
025: Contact:
026:
027: Andreas Poth
028: lat/lon GmbH
029: Aennchenstr. 19
030: 53115 Bonn
031: Germany
032: E-Mail: poth@lat-lon.de
033:
034: Prof. Dr. Klaus Greve
035: Department of Geography
036: University of Bonn
037: Meckenheimer Allee 166
038: 53115 Bonn
039: Germany
040: E-Mail: greve@giub.uni-bonn.de
041:
042:
043: ---------------------------------------------------------------------------*/
044: package org.deegree.model.spatialschema;
045:
046: import javax.vecmath.Point3d;
047:
048: /**
049: * A sequence of decimals numbers which when written on a width are a sequence of coordinate
050: * positions. The width is derived from the CRS or coordinate dimension of the container.
051: *
052: * <p>
053: * -----------------------------------------------------------------------
054: * </p>
055: *
056: * @version 5.6.2001
057: * @author Andreas Poth
058: * <p>
059: */
060: public interface Position {
061: /**
062: * @return the x-value of the point
063: */
064: public double getX();
065:
066: /**
067: * @return the y-value of the point
068: */
069: public double getY();
070:
071: /**
072: * @return the z-value of the point
073: */
074: public double getZ();
075:
076: /**
077: * @return the coordinate dimension of the position
078: */
079: public int getCoordinateDimension();
080:
081: /**
082: * NOTE: The returned array always has a length of 3, regardless of the dimension. This is due
083: * to a limitation in the coordinate transformation package (proj4), which expects coordinates
084: * to have 3 dimensions.
085: *
086: * @return the x- and y-value of the point as a two dimensional array the first field contains
087: * the x- the second field the y-value.
088: *
089: */
090: public double[] getAsArray();
091:
092: /**
093: * translates the coordinates of the position.
094: *
095: * @param d
096: * the first coordinate of the position will be translated by the first field of
097: * <tt>d</tt> the second coordinate by the second field of <tt>d</tt> and so
098: * on...
099: */
100: public void translate(double[] d);
101:
102: /**
103: * returns the accuracy the position is defined. The accuracy is measured in values of the CRS
104: * the positions coordinates are stored
105: *
106: * @return the accuracy the position is defined
107: */
108: public double getAccuracy();
109:
110: /**
111: * @see #getAccuracy()
112: * @param accuracy
113: */
114: public void setAccuracy(double accuracy);
115:
116: /**
117: * @return the position as a point3d
118: */
119: public Point3d getAsPoint3d();
120:
121: }
|