/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2011, Open Source Geospatial Foundation (OSGeo) * (C) 2005, Open Geospatial Consortium Inc. * * All Rights Reserved. http://www.opengis.org/legal/ */ package org.opengis.temporal; import java.util.Collection; import java.util.Date; import javax.measure.unit.Unit; import org.opengis.metadata.extent.Extent; import org.opengis.referencing.ReferenceIdentifier; import org.opengis.util.InternationalString; /** * * @author Open Geospatial Consortium * @author Guilhem Legal (Geomatys) * @author Johann Sorel (Geomatys) * @since GeoAPI 2.3 * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/temporal/TemporalFactory.java $ */ public interface TemporalFactory { /** * * @param name : This is a name that uniquely identifies the temporal reference system. * @param domainOfValidit * @return Calendar */ Calendar createCalendar(ReferenceIdentifier name, Extent domainOfValidit); /** * * @param frame : This is the TM_ReferenceSystem associated with this TM_TemporalPosition, * if not specified, it is assumed to be an association to the Gregorian calendar and UTC. * @param indeterminatePosition : This attribute provides the only value for * TM_TemporalPosition unless a subtype of TM_TemporalPosition is used as the data type. * @param calendarEraName : This is the name of the calendar era to which the date is referenced. * @param calendarDate : This is a sequence of positive integers in which the first * integeridentifies a specific instance of the unit used at the highest level * of the calendar hierarchy, the second integer identifies a specific instance * of the unit used at the next lower level in the hierarchy, and so on. * The format defined in ISO 8601 for dates in the Gregorian calendar may be * used for any date that is composed of values for year, month and day. * @return CalendarDate */ CalendarDate createCalendarDate(TemporalReferenceSystem frame, IndeterminateValue indeterminatePosition, InternationalString calendarEraName, int[] calendarDate); /** * * @param name : identify the calendar era within this calendar. * @param referenceEvent : provide the name or description of a mythical or * historic event which fixes the position of the base scale of the calendar era. * @param referenceDate : provide the date of the reference referenceEvent * expressed as a date in the given calendar. In most calendars, this date is * the origin (i.e the first day) of the scale, but this is not always true. * @param julianReference : provide the Julian date that corresponds to the reference date. * @param epochOfUse : identify the TM_Period for which the calendar era was * used as a basis for dating, the datatype for TM_Period.begin and Tm_Period.end shall be JulianDate. * @return CalendarEra */ CalendarEra createCalendarEra(InternationalString name, InternationalString referenceEvent, CalendarDate referenceDate, JulianDate julianReference, Period epochOfUse); /** * * @param name : This is a name that uniquely identifies the temporal reference system. * @param domainOfValidity * @param referenceEvent : Provide the name or description of an event, * such as solar noon or sunrise. * @param referenceTime : Provide the time of day associated with the reference * event expressed as a time of day in the given clock, the reference time * is usually the origin of the clock scale. * @param utcReference : This is the 24-hour local or UTC time that corresponds to the reference time. * @return Clock */ Clock createClock(ReferenceIdentifier name, Extent domainOfValidity, InternationalString referenceEvent, ClockTime referenceTime, ClockTime utcReference); /** * * @param frame : This is the TM_ReferenceSystem associated with this TM_TemporalPosition, * if not specified, it is assumed to be an association to the Gregorian calendar and UTC. * @param indeterminatePosition : This attribute provides the only value for * TM_TemporalPosition unless a subtype of TM_TemporalPosition is used as the data type. * @param clockTime : This is a sequence of positive numbers with a structure * similar to a CalendarDate. * @return ClockTime */ ClockTime createClockTime(TemporalReferenceSystem frame, IndeterminateValue indeterminatePosition, Number[] clockTime); /** * * @param frame : This is the TM_ReferenceSystem associated with this TM_TemporalPosition, * if not specified, it is assumed to be an association to the Gregorian calendar and UTC. * @param indeterminatePosition : This attribute provides the only value for * TM_TemporalPosition unless a subtype of TM_TemporalPosition is used as the data type. * @param calendarEraName : This is the name of the calendar era to which the date is referenced. * @param calendarDate : This is a sequence of positive integers in which the first * integeridentifies a specific instance of the unit used at the highest level of the calendar hierarchy, * the second integer identifies a specific instance of the unit used at the next * lower level in the hierarchy, and so on. The format defined in ISO 8601 for * dates in the Gregorian calendar may be used for any date that is composed * of values for year, month and day. * @param clockTime : This is a sequence of positive numbers with a structure similar to a CalendarDate. * @return DateAndTime */ DateAndTime createDateAndTime(TemporalReferenceSystem frame, IndeterminateValue indeterminatePosition, InternationalString calendarEraName, int[] calendarDate, Number[] clockTime); /** * * @param instant : This is the position of this TM_Instant, * it shall be associated with a single temporal reference system. * @return Instant */ Instant createInstant(Position instant); /** * * @param unit : This is the name of the unit of measure used to express the length of the interval. * @param radix : This is the base of the multiplier of the unit. * @param factor : This is the exponent of the base. * @param value : This is the length of the time interval as an integer multiple * of one radix(exp -factor) of the specified unit. * @return IntervalLength */ IntervalLength createIntervalLenght(Unit unit, int radix, int factor, int value); /** * * @param frame : This is the TM_ReferenceSystem associated with this TM_TemporalPosition, * if not specified, it is assumed to be an association to the Gregorian calendar and UTC. * @param indeterminatePosition : This attribute provides the only value for * TM_TemporalPosition unless a subtype of TM_TemporalPosition is used as the data type. * @param coordinateValue : This is the distance from the scale origin expressed * as a multiple of the standard interval associated with the temporal coordinate system. * @return JulianDate */ JulianDate createJulianDate(TemporalReferenceSystem frame, IndeterminateValue indeterminatePosition, Number coordinateValue); /** * * @param name : This is a string that identifies the ordinal era within the TM_OrdinalReferenceSystem. * @param beginning : This is the temporal position at which the ordinal era began, if it is known. * @param end : This is the temporal position at which the ordinal era ended. * @param composition * @return OrdinalEra */ OrdinalEra createOrdinalEra(InternationalString name, Date beginning, Date end, Collection<OrdinalEra> composition); /** * * @param frame : This is the TM_ReferenceSystem associated with this TM_TemporalPosition, * if not specified, it is assumed to be an association to the Gregorian calendar and UTC. * @param indeterminatePosition : This attribute provides the only value for * TM_TemporalPosition unless a subtype of TM_TemporalPosition is used as the data type. * @param ordinalPosition : This is a reference to the ordinal era in which the instant occurs. * @return OrdinalPosition */ OrdinalPosition createOrdinalPosition(TemporalReferenceSystem frame, IndeterminateValue indeterminatePosition, OrdinalEra ordinalPosition); /** * * @param name : This is a name that uniquely identifies the temporal reference system. * @param domainOfValidity * @param ordinalEraSequence : An ordinal temporal reference system consists of a set of ordinal eras. * @return OrdinalReferenceSystem */ OrdinalReferenceSystem createOrdinalReferenceSystem(ReferenceIdentifier name, Extent domainOfValidity, Collection<OrdinalEra> ordinalEraSequence); /** * * @param begin : This is the TM_Instant at which this Period starts. * @param end : This is the TM_Instant at which this Period ends. * @return Period */ Period createPeriod(Instant begin, Instant end); /** * * @param years * @param months * @param week * @param days * @param hours * @param minutes * @param seconds * @return PeriodDuration */ PeriodDuration createPeriodDuration(InternationalString years, InternationalString months, InternationalString week, InternationalString days, InternationalString hours, InternationalString minutes, InternationalString seconds); /** * * @param position : this object represents one of the data types listed as : * Date, Time, DateTime, and TemporalPosition with its subtypes * @return Position */ Position createPosition(Date position); /** * * @param frame : This is the TM_ReferenceSystem associated with this TM_TemporalPosition, * if not specified, it is assumed to be an association to the Gregorian calendar and UTC. * @param indeterminatePosition : This attribute provides the only value for * TM_TemporalPosition unless a subtype of TM_TemporalPosition is used as the data type. * @param coordinateValue : This is the distance from the scale origin expressed * as a multiple of the standard interval associated with the temporal coordinate system. * @return TemporalCoordinate */ TemporalCoordinate createTemporalCoordinate(TemporalReferenceSystem frame, IndeterminateValue indeterminatePosition, Number coordinateValue); /** * * @param name : This is a name that uniquely identifies the temporal reference system. * @param domainOfValidity * @param origin : The origin of the scale, it must be specified in the Gregorian * calendar with time of day in UTC. * @param interval : The name of a single unit of measure used as the base interval for the scale. * it shall be one of those units of measure for time specified by ISO 31-1, * or a multiple of one of those units, as specified by ISO 1000. * @return TemporalCoordinateSystem */ TemporalCoordinateSystem createTemporalCoordinateSystem(ReferenceIdentifier name, Extent domainOfValidity, Date origin, InternationalString interval); /** * * @param frame : This is the TM_ReferenceSystem associated with this TM_TemporalPosition, * if not specified, it is assumed to be an association to the Gregorian calendar and UTC. * @param indeterminatePosition : This attribute provides the only value for * TM_TemporalPosition unless a subtype of TM_TemporalPosition is used as the data type. * @return TemporalPosition */ TemporalPosition createTemporalPosition(TemporalReferenceSystem frame, IndeterminateValue indeterminatePosition); /** * * @param name : This is a name that uniquely identifies the temporal reference system. * @param domainOfValidity * @return TemporalReferenceSystem */ TemporalReferenceSystem createTemporalReferenceSystem(ReferenceIdentifier name, Extent domainOfValidity); }