<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.4) on Fri Sep 20 12:10:30 CEST 2019 -->
<title>org.apache.sis.parameter (Apache SIS 1.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2019-09-20">
<meta name="keywords" content="org.apache.sis.parameter 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="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="org.apache.sis.parameter (Apache SIS 1.0 API)";
        }
    }
    catch(err) {
    }
//-->
var pathtoroot = "../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.apache.sis.parameter</h1>
</div>
<div class="contentContainer">
<section role="region"><a id="package.description">
<!--   -->
</a>
<div class="block">Descriptions and values of parameters used by a coordinate operation or a process.
 An explanation for this package is provided in the <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/package-summary.html?is-external=true" class="externalLink">OpenGIS® javadoc</a>.
 The remaining discussion on this page is specific to the SIS implementation.

 <p>There is three categories of classes in this package:</p>
 <ul>
   <li><b>Parameter descriptors</b> are immutable types that describes the parameters needed by an operation or a
     process. Descriptors contain information like parameter name, optionality, repeatability and value type, but
     do not contain the actual parameter value.</li>
   <li><b>Parameter values</b> are (<var>descriptor</var>, <var>value</var>) tuples, together with convenience methods
     for performing unit conversions and getting the values as instances of some commonly used types.</li>
   <li><b>Builders</b>, <b>formatters</b> and search methods aim to simplify the creation of
     <code>Parameter­Descriptor</code>s, the search for parameter values and visualizing them in a tabular format.</li>
 </ul>

 <p>Parameters are organized in <cite>groups</cite>.
 A group may be for example the set of all parameters needed for the definition of a <cite>Mercator projection</cite>.
 Parameter groups have some similarities with <code>java​.util​.Map</code> where:</p>

 <ul>
   <li>Keys are (indirectly) parameter
       <a href="../referencing/AbstractIdentifiedObject.html#getName()">names</a>.</li>
   <li>Values are (indirectly) typically of type <code>int</code>, <code>int[]</code>, <code>double</code>, <code>double[]</code>,
       <code>boolean</code>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>String</code></a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net" class="externalLink"><code>URI</code></a> or
       <a href="../metadata/iso/citation/DefaultCitation.html" title="class in org.apache.sis.metadata.iso.citation"><code>Citation</code></a>.</li>
   <li>Each parameter (equivalent to map entry) constraints the values to a base
       <a href="DefaultParameterDescriptor.html#getValueClass()">value class</a>,
       and optionally to a <a href="DefaultParameterDescriptor.html#getValueDomain()">value domain</a> (i.e. minimum and maximum valid values) or an enumeration of
       <a href="DefaultParameterDescriptor.html#getValidValues()">valid values</a>.</li>
   <li>Each parameter can have a
       <a href="DefaultParameterDescriptor.html#getDefaultValue()">default value</a> and a
       <a href="DefaultParameterValue.html#getUnit()">unit of measurement</a>.</li>
   <li>Some parameters are mandatory (<a href="AbstractParameterDescriptor.html#getMinimumOccurs()">minimum occurrence</a> = 1), meaning that they can not be removed from the group.
       They can be left to their default value however.</li>
   <li>Group may contain other groups.</li>
 </ul>

 <div class="section">Usage</div>
 When using this <code>org​.apache​.sis​.parameter</code> package, the starting point is usually to obtain a
 <a href="DefaultParameterDescriptorGroup.html" title="class in org.apache.sis.parameter">parameter group descriptor</a> for
 the operation of interest. Those groups are provided by the operation implementers, so users do not
 need to create their own.

 <p>Given a group descriptor, users can obtain a new instance of parameter values by a call to the
 <a href="DefaultParameterDescriptorGroup.html#createValue()"><code>create­Value()</code></a> method.
 New value groups initially contain all mandatory parameters with their default values and no optional parameter.
 A <a href="DefaultParameterValueGroup.html#parameter(java.lang.String)"><code>parameter(String)</code></a> convenience
 method is provided for fetching a parameter regardless of whether it was present or not — optional parameters
 are created when first needed.</p>

 <div class="note"><b>Example:</b> the following code snippet assumes that the implementer of a Mercator projection
 provides a <code>Parameter­Descriptor­Group</code> instance in a <code>PARAMETERS</code> static constant:

 <blockquote><pre>ParameterValueGroup group = Mercator.PARAMETERS.<b>createValue</b>();
group.<b>parameter</b>(<font color="orangered">"Longitude of natural origin"</font>).<b>setValue</b>(-60);        <i><font color="gray">// Using default units (e.g. degrees).</font></i>
group.<b>parameter</b>(<font color="orangered">"False easting"</font>).<b>setValue</b>(200.0, Units.KILOMETRE);   <i><font color="gray">// Using explicit units.</font></i></pre></blockquote>
 </div>

 Calls to <code>parameter(…)</code> throw a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/ParameterNotFoundException.html?is-external=true" title="class or interface in org.opengis.parameter" class="externalLink"><code>Parameter­Not­Found­Exception</code></a>
 if the given name is unknown to the group.
 Calls to <code>set­Value(…)</code> throw a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/InvalidParameterValueException.html?is-external=true" title="class or interface in org.opengis.parameter" class="externalLink"><code>Invalid­Parameter­Value­Exception</code></a>
 if the given value is not assignable to the expected class or is not inside the value domain.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>0.4</dd>

<p><font size="-1">Defined in the <code>sis-referencing</code> module</font></p>
</dl>
</section>
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="Parameterized.html" title="interface in org.apache.sis.parameter">Parameterized</a></th>
<td class="colLast">
<div class="block">An object which can supply its parameters in a <a href="http://www.geoapi.org/3.0/javadoc/org/opengis/parameter/ParameterValueGroup.html?is-external=true" title="class or interface in org.opengis.parameter" class="externalLink"><code>Parameter­Value­Group</code></a>.</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="AbstractParameterDescriptor.html" title="class in org.apache.sis.parameter">AbstractParameterDescriptor</a></th>
<td class="colLast">
<div class="block">Abstract definition of a parameter or group of parameters used by a coordinate operation or a process.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DefaultParameterDescriptor.html" title="class in org.apache.sis.parameter">DefaultParameterDescriptor</a>&lt;T&gt;</th>
<td class="colLast">
<div class="block">The definition of a single parameter used by an operation method.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DefaultParameterDescriptorGroup.html" title="class in org.apache.sis.parameter">DefaultParameterDescriptorGroup</a></th>
<td class="colLast">
<div class="block">The definition of a group of related parameters used by an operation method.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="DefaultParameterValue.html" title="class in org.apache.sis.parameter">DefaultParameterValue</a>&lt;T&gt;</th>
<td class="colLast">
<div class="block">A single parameter value used by an operation method.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="DefaultParameterValueGroup.html" title="class in org.apache.sis.parameter">DefaultParameterValueGroup</a></th>
<td class="colLast">
<div class="block">A group of related parameter values.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="ParameterBuilder.html" title="class in org.apache.sis.parameter">ParameterBuilder</a></th>
<td class="colLast">
<div class="block">Helper class for <a href="DefaultParameterDescriptor.html" title="class in org.apache.sis.parameter">parameter descriptor</a> instantiations.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="ParameterFormat.html" title="class in org.apache.sis.parameter">ParameterFormat</a></th>
<td class="colLast">
<div class="block">Formats <a href="DefaultParameterDescriptorGroup.html" title="class in org.apache.sis.parameter">parameter descriptors</a> or
 <a href="DefaultParameterValueGroup.html" title="class in org.apache.sis.parameter">parameter values</a> in a tabular format.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colFirst" scope="row"><a href="Parameters.html" title="class in org.apache.sis.parameter">Parameters</a></th>
<td class="colLast">
<div class="block">Convenience methods for fetching parameter values despite the variations in parameter names, value types and units.</div>
</td>
</tr>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="TensorParameters.html" title="class in org.apache.sis.parameter">TensorParameters</a>&lt;E&gt;</th>
<td class="colLast">
<div class="block">Creates parameter groups for tensors (usually matrices).</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary">
<caption><span>Enum Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Enum</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="ParameterFormat.ContentLevel.html" title="enum in org.apache.sis.parameter">ParameterFormat.ContentLevel</a></th>
<td class="colLast">
<div class="block">The amount of information to include in the table formatted by <a href="ParameterFormat.html" title="class in org.apache.sis.parameter"><code>Parameter­Format</code></a>.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></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">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2010&#x2013;2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
