/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2011, Open Source Geospatial Foundation (OSGeo) * (C) 2003-2005, Open Geospatial Consortium Inc. * * All Rights Reserved. http://www.opengis.org/legal/ */ package org.opengis.geometry.coordinate; import org.opengis.annotation.UML; import static org.opengis.annotation.Obligation.*; import static org.opengis.annotation.Specification.*; /** * Takes a standard geometric construction and places it in geographic space. * This interface defines a transformation from a constructive parameter space * to the coordinate space of the coordinate reference system being used. Parameter * spaces in formulae are given as (<var>u</var>, <var>v</var>) in 2D and * (<var>u</var>, <var>v</var>, <var>w</var>) in 3D. Coordinate reference systems * positions are given in formulae by either (<var>x</var>, <var>y</var>) in 2D, * or (<var>x</var>, <var>y</var>, <var>z</var>) in 3D. * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/geometry/coordinate/Placement.java $ * @version <A HREF="http://www.opengeospatial.org/standards/as">ISO 19107</A> * @author Martin Desruisseaux (IRD) * @since GeoAPI 2.0 */ @UML(identifier="GM_Placement", specification=ISO_19107) public interface Placement { /** * Return the dimension of the input parameter space. */ @UML(identifier="inDimension", obligation=MANDATORY, specification=ISO_19107) int getInDimension(); /** * Return the dimension of the output coordinate reference system. * Normally, {@code outDimension} (the dimension of the coordinate reference system) * is larger than {@code inDimension}. If this is not the case, the transformation is * probably singular, and may be replaceable by a simpler one from a smaller dimension * parameter space. */ @UML(identifier="outDimension", obligation=MANDATORY, specification=ISO_19107) int getOutDimension(); /** * Maps the parameter coordinate points to the coordinate points in the output Cartesian space. * * @param in Input coordinate points. The length of this vector must be equals to {@link #getInDimension inDimension}. * @return The output coordinate points. The length of this vector is equals to {@link #getOutDimension outDimension}. */ @UML(identifier="transform", obligation=MANDATORY, specification=ISO_19107) double[] transform (double[] in); }