# 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 can not 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

Defined in the `sis-referencing` module

- Class Summary
  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.
  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.
  IdentifiedObjectSet<T extends IdentifiedObject> | A lazy set of `IdentifiedObject` instances created from their authority codes only when first needed.
  MultiAuthoritiesFactory | A factory that delegates the object creation to another factory determined from the authority part in “authority:code” arguments.

- Enum Summary
  Enum | Description
  --- | ---
  IdentifiedObjectFinder.Domain | The domain of the search (for example whether to include deprecated objects in the search).

- Exception Summary
  Exception | Description
  --- | ---
  FactoryDataException | Thrown when a factory contains invalid data.
  InvalidGeodeticParameterException | Thrown when a factory `createFoo(…)` method is given invalid parameters.
  MissingFactoryResourceException | Thrown when a particular object can not be created because a resource is missing.
  NoSuchAuthorityFactoryException | Thrown when no factory has been found for a given authority name.
  UnavailableFactoryException | Thrown when a whole factory can not be created because a resource is missing.