# Package org.apache.sis.referencing.factory

package org.apache.sis.referencing.factory
Creates Coordinate Reference System (CRS) objects from given properties or authority codes. This package provides two kinds of factories:

- `GeodeticAuthorityFactory` creates geodetic objects from codes defined by an authority. An authority is an organization that maintains definitions of authority codes. An authority code is a compact string defined by an authority to reference a particular spatial reference object. A frequently used set of authority codes is the EPSG geodetic dataset, a database of coordinate systems and other spatial referencing objects where each object has a code number ID.
- `GeodeticObjectFactory` creates complex objects that cannot be created by the authority factories. Allows also inversion of control when used with the EPSG authority factory or with the WKT parser.

Authority factories available in Apache SIS are listed below. Factories defined in this package do not require any configuration or external resources. Factories defined in the `sql` sub-package require a connection to a database.

Authority factory implementations
Authorities | Implementation class | Conditions
--- | --- | ---
`CRS`, `AUTO` and `AUTO2` | `CommonAuthorityFactory` | None.
`EPSG` | `EPSGFactory` | Requires installation of EPSG dataset.

Since:
  0.6

- Related Packages
  Module
  Package
  Description
  org.apache.sis.referencing
  org.apache.sis.referencing
  Base classes for reference systems used for general positioning.
  org.apache.sis.referencing
  org.apache.sis.referencing.factory.sql
  Factories for geodetic objects defined in a SQL database, typically the EPSG dataset.
  org.apache.sis.referencing
  org.apache.sis.referencing.crs
  Coordinate Reference System (CRS) definitions as coordinate systems related to the earth through datum.
  org.apache.sis.referencing
  org.apache.sis.referencing.cs
  Coordinate System (CS) definitions as the set of coordinate system axes that spans the coordinate space.
  org.apache.sis.referencing
  org.apache.sis.referencing.datum
  Relationship of a `CoordinateSystem` (an abstract mathematical entity) to the earth or other system.
  org.apache.sis.referencing.gazetteer
  org.apache.sis.referencing.gazetteer
  Mapping between geographic identifiers (addresses, grid indexes…) and locations (descriptions, coordinates…).
  org.apache.sis.referencing
  org.apache.sis.referencing.operation
  Relationship between any two Coordinate Reference Systems (CRS).
- Class
  Description
  CommonAuthorityFactory
  Creates coordinate reference systems in the "`OGC`", "`CRS`" or `"AUTO(2)"` namespaces.
  ConcurrentAuthorityFactory<DAO extends GeodeticAuthorityFactory>
  A concurrent authority factory that caches all objects created by another factory.
  FactoryDataException
  Thrown when a factory contains invalid data.
  GeodeticAuthorityFactory
  Creates geodetic objects from codes defined by an authority.
  GeodeticObjectFactory
  Creates Coordinate Reference System (CRS) implementations, with their Coordinate System (CS) and Datum components.
  IdentifiedObjectFinder
  Searches in an authority factory for objects approximately equal to a given object.
  IdentifiedObjectFinder.Domain
  The domain of the search (for example, whether to include deprecated objects in the search).
  IdentifiedObjectFinder.Wrapper
  An object finder which delegates some or all work to another object finder.
  IdentifiedObjectSet<T extends IdentifiedObject>
  A lazy set of `IdentifiedObject` instances created from their authority codes only when first needed.
  InvalidGeodeticParameterException
  Thrown when a factory `createFoo(…)` method is given invalid parameters.
  MissingFactoryResourceException
  Thrown when a particular object cannot be created because a resource is missing.
  MultiAuthoritiesFactory
  A factory that delegates the object creation to another factory determined from the authority part in “authority:code” arguments.
  NoSuchAuthorityFactoryException
  Thrown when no factory has been found for a given authority name.
  UnavailableFactoryException
  Thrown when a whole factory cannot be created because a resource is missing.