package uk.ac.leeds.ccg.geotools;
/**
* In order to relate geographic features to each other and to associated data
* each can be given a specific ID No. This concept is used in a number of places
* throught GeoTools, most notably in the way features in Layers are reladed to data
* in GeoData objects. All items/features that would like to be related in this way
* should implement this interface.
*
Items providing this interface can also be compared and sorted through the use
* of the IDComparator object which should improve the cataloging of both data and objects.
*
* TODO JM There are issues related to using such a simple referencing system, most notably * is that features loaded from different sources may co-incidentaly share the same ID value whilst * not actualy being related to each other at all. Eventualy a more extensive referencing system may be * required. However, as assosiation has to be explicitly stated, through the use of shared highlight or selection * managers, the problem of unrelated shared ids may not be all that large.
*
* @author James Macgill JM
* @since 0.7.7.1 12/May/2000
**/
public interface IDReferenced
{
/**
* Returns an ID for this object that is unique within this objects feature set.
*
In many cases any two objects within one geographic feature will be treated as if
* they were a single item. For example, highlighting one feature will highlight all other features
* in the same layer which share its ID.
*
This should be avoided if possible as a number of operations can get confused, most notably
* the dissolve operation. The prefered solution is to form multi-part objects, though it is appreciated
* that multi-part support is not yet as stable as it should be.
*
* @see IDComparator
* @author James Macgill JM
* @since 0.7.7.1
* @return int The unique id for this item.
*/
public int getID();
}