Typographic and naming conventions

The elements defined in a computer language, such as classes and methods in Java or elements in an XML document, appear in monospaced font in this document. In order to facilitate an understanding of the relationships between Apache SIS and the standards, these elements are also represented using the following colour codes:

For example to represent a projected coordinate reference system (Mercator, Lambert, etc), SC_ProjectedCRS is an UML and XML element defined by the ISO 19111 standard. Then org.​opengis.​referencing.​crs.​ProjectedCRS is the implementation-neutral GeoAPI interface derived from that standard, and org.​apache.​sis.​referencing.​crs.​DefaultProjectedCRS is the implementation class provided by Apache SIS.

Apache SIS implements most GeoAPI interfaces by a classes of the same name than the interface but prefixed by Abstract, Default or General word. The General prefix is sometimes used instead of Default to indicate that alternative implementations are available for some specific cases. For example the Envelope interface is implemented by at least two Apache SIS classes: GeneralEnvelope and Envelope2D. The first implementation can represent envelopes with any number of dimensions while the second implementation is specialized for two-dimensional envelopes.

Apache SIS classes prefixed by Abstract should not (in principle) be instantiated. Users should instantiate a non-abstract subclass instead. However many SIS classes are only conceptually abstract, without abstract Java keyword in class definition. Such classes can be instantiated by a new AbstractXXX(…) statement despite being conceptually abstract. Such instantiations should be avoided, but are nevertheless permitted in last resort when it is not possible to determine the exact subtype.

Text in gray boxes, like below (click to expand), are for information purpose only and can be ignored.

Note about the definition of terms

Source of term definitions

Standards sometimes favour the application of certain generic terms to particular contexts, which may differ from the context in which other communities use these terms. For example, the terms domain and range may apply to arbitrary mathematical functions in order to designate a set of possible values of inputs and outputs respectively. The ISO 19123 standard applies these terms to CV_Coverage objects, seen as functions in which the domain is the set of spatio-temporal coordinates encompassed by the data, and the range is the set of values encompassed.

However the functions to which above terms are applied by ISO standards are not the same as the functions to which they are applied by other libraries. For example UCAR’s netCDF library applies these terms instead to the function for converting pixel indices (its domain) to spatial-temporal coordinates (its range). Thus the UCAR library’s range may be the domain of ISO 19123.

The Apache SIS library prefers as much as possible to use terms in the sense of OGC and ISO norms. Particular care must be taken, however, with the interfaces between SIS and certain other external libraries, in order to reduce the risk of confusion.