/* * 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.referencing.crs; import org.opengis.referencing.AuthorityFactory; import org.opengis.referencing.FactoryException; import org.opengis.referencing.NoSuchAuthorityCodeException; // For javadoc import org.opengis.annotation.UML; import static org.opengis.annotation.Specification.*; /** * Creates {@linkplain CoordinateReferenceSystem coordinate reference systems} using authority codes. External authorities * are used to manage definitions of objects used in this interface. The definitions of these objects are * referenced using code strings. A commonly used authority is <A HREF="http://www.epsg.org">EPSG</A>, * which is also used in the <A HREF="http://www.remotesensing.org/geotiff/geotiff.html">GeoTIFF</A> * standard. * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/referencing/crs/CRSAuthorityFactory.java $ * @version <A HREF="http://www.opengis.org/docs/01-009.pdf">Implementation specification 1.0</A> * @author Martin Desruisseaux (IRD) * @since GeoAPI 1.0 * * @see org.opengis.referencing.cs.CSAuthorityFactory * @see org.opengis.referencing.datum.DatumAuthorityFactory */ @UML(identifier="CS_CoordinateSystemAuthorityFactory", specification=OGC_01009) public interface CRSAuthorityFactory extends AuthorityFactory { /** * Returns an arbitrary {@linkplain CoordinateReferenceSystem coordinate reference system} from a code. If the * coordinate reference system type is know at compile time, it is recommended to invoke the most precise method * instead of this one (for example * <code> {@linkplain #createGeographicCRS createGeographicCRS}(code) </code> * instead of <code> createCoordinateReferenceSystem(code) </code> if the caller * know he is asking for a {@linkplain GeographicCRS geographic coordinate reference system}). * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. * * @see #createGeographicCRS * @see #createProjectedCRS * @see #createVerticalCRS * @see #createTemporalCRS * @see #createCompoundCRS */ @UML(identifier="createHorizontalCoordinateSystem", specification=OGC_01009) CoordinateReferenceSystem createCoordinateReferenceSystem(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Creates a 3D coordinate reference system from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. */ @UML(identifier="createCompoundCoordinateSystem", specification=OGC_01009) CompoundCRS createCompoundCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Creates a derived coordinate reference system from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. */ DerivedCRS createDerivedCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Create a {@linkplain EngineeringCRS engineering coordinate reference system} from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. */ EngineeringCRS createEngineeringCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Returns a {@linkplain GeographicCRS geographic coordinate reference system} from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. * * @see org.opengis.referencing.datum.DatumAuthorityFactory#createGeodeticDatum */ @UML(identifier="createGeographicCoordinateSystem", specification=OGC_01009) GeographicCRS createGeographicCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Returns a {@linkplain GeocentricCRS geocentric coordinate reference system} from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed. * * @see org.opengis.referencing.datum.DatumAuthorityFactory#createGeodeticDatum */ GeocentricCRS createGeocentricCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Create a {@linkplain ImageCRS image coordinate reference system} from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. */ ImageCRS createImageCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Returns a {@linkplain ProjectedCRS projected coordinate reference system} from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. * * @see org.opengis.referencing.datum.DatumAuthorityFactory#createGeodeticDatum */ @UML(identifier="createProjectedCoordinateSystem", specification=OGC_01009) ProjectedCRS createProjectedCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Create a {@linkplain TemporalCRS temporal coordinate reference system} from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. * * @see org.opengis.referencing.datum.DatumAuthorityFactory#createTemporalDatum */ TemporalCRS createTemporalCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; /** * Create a {@linkplain VerticalCRS vertical coordinate reference system} from a code. * * @param code Value allocated by authority. * @return The coordinate reference system for the given code. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the object creation failed for some other reason. * * @see org.opengis.referencing.datum.DatumAuthorityFactory#createVerticalDatum */ @UML(identifier="createVerticalCoordinateSystem", specification=OGC_01009) VerticalCRS createVerticalCRS(String code) throws NoSuchAuthorityCodeException, FactoryException; }