blob: f6d51852c49a3cda32b377d0318d2eb7d33ff773 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (21) on Thu Oct 05 19:54:57 CEST 2023 -->
<title>org.apache.sis.feature (Apache SIS 1.4 API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-10-05">
<meta name="description" content="declaration: module: org.apache.sis.feature, package: org.apache.sis.feature">
<meta name="generator" content="javadoc/PackageWriterImpl">
<meta name="keywords" content="org.apache.sis.feature package">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../sis.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../../../../module-summary.html">Module</a></li>
<li class="nav-bar-cell1-rev">Package</li>
<li>Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#package">Help</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>Package:</p>
<ul>
<li><a href="#package-description">Description</a></li>
<li><a href="#related-package-summary">Related Packages</a></li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>Package:&nbsp;</li>
<li><a href="#package-description">Description</a>&nbsp;|&nbsp;</li>
<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
<li><a href="#class-summary">Classes and Interfaces</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="Search">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<div class="sub-title"><span class="module-label-in-package">Module</span>&nbsp;<a href="../../../../module-summary.html">org.apache.sis.feature</a></div>
<h1 title="Package org.apache.sis.feature" class="title">Package org.apache.sis.feature</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">org.apache.sis.feature</span></div>
<section class="package-description" id="package-description">
<div class="block">Defines the structure and content of views of real-world phenomenon.
The phenomenon to represent (or a fundamental unit of information) is called <cite>a feature</cite>.
The term “feature” may be used in different contexts:
<ul class="verbose">
<li><b><a href="DefaultFeatureType.html" title="class in org.apache.sis.feature">Feature types</a></b><br>
Define the <em>structure</em> of real-world representations. A feature type lists the
<a href="DefaultAttributeType.html" title="class in org.apache.sis.feature">attributes</a>,
<a href="AbstractOperation.html" title="class in org.apache.sis.feature">operations</a> or
<a href="DefaultAssociationRole.html" title="class in org.apache.sis.feature">associations to other features</a>
(collectively called “<a href="DefaultFeatureType.html#getProperties(boolean)">properties</a>
or “characteristics”) that a feature can have.
<div class="note"><b>Analogy:</b> a <code>Feature­Type</code> in a Spatial Information System is equivalent to a
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Class.html" title="class or interface in java.lang" class="external-link"><code>Class</code></a> in the Java language. By extension, <code>Attribute­Type</code> and <code>Operation</code> are
equivalent to <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/reflect/Field.html" title="class or interface in java.lang.reflect" class="external-link"><code>Field</code></a> and <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/reflect/Method.html" title="class or interface in java.lang.reflect" class="external-link"><code>Method</code></a> respectively.</div></li>
<li><b><a href="AbstractFeature.html" title="class in org.apache.sis.feature">Feature instances</a></b> (often called only Features)<br>
Hold the <em>content</em> (or values) that describe one specific real-world object.
<div class="note"><b>Example:</b> the “Eiffel tower” is a <em>feature instance</em> belonging
to the “Tower” <em>feature type</em>.</div></li>
<li><b><a href="DefaultFeatureType.html#isSimple()">Simple features</a></b><br>
Are instances of a feature type with no association to other features, and where all attributes
have [1 … 1] multiplicity. Such simple features are very common.</li>
</ul>
In addition, a feature type can inherit the properties of one or more other feature types.
Properties defined in the sub-type can override properties of the same name defined in the
<a href="DefaultFeatureType.html#getSuperTypes()">super-types</a>, provided
that values of the sub-type property are assignable to the super-type property.
<h2 id="naming-heading">Naming</h2>
Each feature type has a <a href="AbstractIdentifiedType.html#getName()">name</a>,
which should be unique. Those names are the main criterion used for checking if a feature type
<a href="DefaultFeatureType.html#isAssignableFrom(org.apache.sis.feature.DefaultFeatureType)">is assignable from</a> another type.
Names can be <a href="../../../../../org.apache.sis.metadata/org/apache/sis/util/iso/DefaultScopedName.html" title="class in org.apache.sis.util.iso">scoped</a> for avoiding name collision.
<h2 id="class-hierarchy-heading">Class hierarchy</h2>
The class hierarchy for feature <cite>types</cite> is derived from ISO 19109 specification.
The class hierarchy for feature <cite>instances</cite> is closely related:
<table class="sis">
<caption>Feature class hierarchy</caption>
<tr>
<th>Types</th>
<th class="sep">Instances</th>
</tr><tr><td style="width: 50%; white-space: nowrap">
<a href="AbstractIdentifiedType.html" title="class in org.apache.sis.feature">Identified type</a><br>
<code> ├─</code> <a href="DefaultFeatureType.html" title="class in org.apache.sis.feature">Feature type</a><br>
<code> └─</code> Property type<br>
<code>     ├─</code> <a href="DefaultAttributeType.html" title="class in org.apache.sis.feature">Attribute type</a><br>
<code>     ├─</code> <a href="DefaultAssociationRole.html" title="class in org.apache.sis.feature">Feature association role</a><br>
<code>     └─</code> <a href="AbstractOperation.html" title="class in org.apache.sis.feature">Operation</a><br>
</td><td class="sep" style="width: 50%; white-space: nowrap">
Object<br>
<code> ├─</code> <a href="AbstractFeature.html" title="class in org.apache.sis.feature">Feature</a> (<cite>sparse</cite> or <cite>dense</cite>)<br>
<code> └─</code> Property<br>
<code>     ├─</code> <a href="AbstractAttribute.html" title="class in org.apache.sis.feature">Attribute</a> (<cite>singleton</cite> or <cite>multi-valued</cite>)<br>
<code>     └─</code> <a href="AbstractAssociation.html" title="class in org.apache.sis.feature">Feature association</a> (<cite>singleton</cite> or <cite>multi-valued</cite>)<br>
</td></tr></table>
<h2 id="instantiation-heading">Instantiation</h2>
Classes defined in this package are rarely instantiated directly (by a <code>new</code> statement).
Instead, those classes are instantiated indirectly by invoking a method on a parent container,
or by using a builder. The starting point is <code>Feature­Type</code>, which may be created by a
<a href="builder/FeatureTypeBuilder.html" title="class in org.apache.sis.feature.builder"><code>Feature­Type­Builder</code></a> or may be provided by a
<a href="../../../../../org.apache.sis.storage/org/apache/sis/storage/DataStore.html" title="class in org.apache.sis.storage"><code>Data­Store</code></a> reading a data file.
Once a <code>Feature­Type</code> has been obtained, <code>Feature</code>s can be instantiated by calls to the
<a href="DefaultFeatureType.html#newInstance()"><code>Feature­Type​.new­Instance()</code></a> method.
Once a <code>Feature</code> instance has been obtained, <code>Attribute</code>s can be instantiated indirectly
by calls to the <a href="AbstractFeature.html#setPropertyValue(java.lang.String,java.lang.Object)"><code>Feature​.set­Property­Value(…)</code></a> method.</div>
<dl class="notes">
<dt>Since:</dt>
<dd>0.5</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<li>
<div id="related-package-summary">
<div class="caption"><span>Related Packages</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Package</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><a href="builder/package-summary.html">org.apache.sis.feature.builder</a></div>
<div class="col-last even-row-color">
<div class="block">Helper classes for creating <code>Feature­Type</code> instances.</div>
</div>
</div>
</div>
</li>
<li>
<div id="class-summary">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
<div id="class-summary.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
<div class="table-header col-first">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractAssociation.html" title="class in org.apache.sis.feature">AbstractAssociation</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">An instance of an <a href="DefaultAssociationRole.html" title="class in org.apache.sis.feature">feature association role</a> containing the associated feature.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="AbstractAttribute.html" title="class in org.apache.sis.feature">AbstractAttribute</a>&lt;V&gt;</div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">An instance of an <a href="DefaultAttributeType.html" title="class in org.apache.sis.feature">attribute type</a> containing the value of an attribute in a feature.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractFeature.html" title="class in org.apache.sis.feature">AbstractFeature</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">An instance of a <a href="DefaultFeatureType.html" title="class in org.apache.sis.feature">feature type</a> containing values for a real-world phenomena.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="AbstractIdentifiedType.html" title="class in org.apache.sis.feature">AbstractIdentifiedType</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Identification and description information inherited by property types and feature types.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractOperation.html" title="class in org.apache.sis.feature">AbstractOperation</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Describes the behaviour of a feature type as a function or a method.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DefaultAssociationRole.html" title="class in org.apache.sis.feature">DefaultAssociationRole</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Indicates the role played by the association between two features.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="DefaultAttributeType.html" title="class in org.apache.sis.feature">DefaultAttributeType</a>&lt;V&gt;</div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Definition of an attribute in a feature type.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DefaultFeatureType.html" title="class in org.apache.sis.feature">DefaultFeatureType</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Abstraction of a real-world phenomena.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FeatureFormat.html" title="class in org.apache.sis.feature">FeatureFormat</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">Formats <a href="AbstractFeature.html" title="class in org.apache.sis.feature">features</a> or <a href="DefaultFeatureType.html" title="class in org.apache.sis.feature">feature types</a> in a tabular format.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="FeatureFormat.Column.html" title="enum class in org.apache.sis.feature">FeatureFormat.Column</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab3">
<div class="block">Identifies the columns to include in the table formatted by <code>Feature­Format</code>.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="FeatureOperations.html" title="class in org.apache.sis.feature">FeatureOperations</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">A set of predefined operations expecting a <code>Feature</code> as input and producing an <code>Attribute</code> as output.</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="Features.html" title="class in org.apache.sis.feature">Features</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">Static methods working on features or attributes.</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab3"><a href="FoliationRepresentation.html" title="enum class in org.apache.sis.feature">FoliationRepresentation</a></div>
<div class="col-last even-row-color class-summary class-summary-tab3">
<div class="block">Specifies whether trajectories are represented in a single <cite>moving feature</cite> instance
or fragmented in distinct static feature instances.</div>
</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>