diff --git a/docs/common.py b/docs/common.py
index 034e075bbba..d6a5661dc59 100644
--- a/docs/common.py
+++ b/docs/common.py
@@ -24,7 +24,7 @@
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.todo','sphinx.ext.extlinks']
+extensions = ['sphinx.ext.todo','sphinx.ext.extlinks', 'sphinxcontrib.spelling']
extlinks = {
'wiki': ('https://github.com/geotools/geotools/wiki/%s',''),
@@ -112,6 +112,11 @@
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
+# Spelling options
+
+spelling_lang='en_US'
+spelling_show_suggestions=True
+spelling_word_list_filename='./spelling/local.dict'
# -- Options for HTML output ---------------------------------------------------
diff --git a/docs/developer/conventions/code/assumptions.rst b/docs/developer/conventions/code/assumptions.rst
index b3416b82810..1121c63bb34 100644
--- a/docs/developer/conventions/code/assumptions.rst
+++ b/docs/developer/conventions/code/assumptions.rst
@@ -89,7 +89,7 @@ The above code is wrong for two reasons described below:
If you are tempted to fetch different coefficients in an affine transform according some conditions, it is worth to take a paper and a pencil, write down the matrix and see if the equations can be written in some form invariant to rotation, flipping or axis swapping. This is often possible and leads to more robust and generic code.
- It may sound like paranoiac, but it is not. Old Geotools code was assuming (longitude,latitude) axis order in all cases, for example through unconditional calls to AffineTransform.getScaleX(). It required a great amount of energy from nice volunter in order to handle the (latitude,longitude) axis order as well. Unfortunatly the initial fix for this axis order issue, based on the "Axis Interchange with Modal Code" approach, has just pushed the problem a little bit further away. The code will fails for the next great Geotools step: 3D-Coverage. Users will want to see 2D slices using a wide range axis that are not longitude or latitude. It is better to make the best possible use of affine transform mathematic early than revisiting again the whole Geotools code base as in the "axis order issue" case.
+ It may sound like paranoiac, but it is not. Old GeoTools code was assuming (longitude,latitude) axis order in all cases, for example through unconditional calls to AffineTransform.getScaleX(). It required a great amount of energy from nice volunter in order to handle the (latitude,longitude) axis order as well. Unfortunatly the initial fix for this axis order issue, based on the "Axis Interchange with Modal Code" approach, has just pushed the problem a little bit further away. The code will fails for the next great GeoTools step: 3D-Coverage. Users will want to see 2D slices using a wide range axis that are not longitude or latitude. It is better to make the best possible use of affine transform mathematic early than revisiting again the whole GeoTools code base as in the "axis order issue" case.
Prefer MathTransform over GridRange - Envelope pair
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -101,4 +101,4 @@ In some place of GeoTools API, a MathTransform is inferred automatically from a
While the GridRange - Envelope pair seems easier and more intuitive, it is also ambiguous. There is no way to infer a MathTransform from this pair without making some assumptions on axis order and axis reversal. For example GeneralGridGeometry assumes that the y axis must be reversed in order to match the direction used in most screen devices (y values increasing down). Only the constructor with MathTransform argument is unambiguous.
-GridRange - Envelope pairs are provided as a convenience for helping users to get their first math transform right in a majority (but not all) cases. From that point, Geotools code should perform all their internal work on MathTransform, never on Envelope. Need to expand an envelope? Compute a scale affine transform and concatenate it with the user math transform. Need to translate, flip or swap axis? Same approach: express your change as an other transform, then concatenate.
\ No newline at end of file
+GridRange - Envelope pairs are provided as a convenience for helping users to get their first math transform right in a majority (but not all) cases. From that point, GeoTools code should perform all their internal work on MathTransform, never on Envelope. Need to expand an envelope? Compute a scale affine transform and concatenate it with the user math transform. Need to translate, flip or swap axis? Same approach: express your change as an other transform, then concatenate.
\ No newline at end of file
diff --git a/docs/developer/conventions/code/log.rst b/docs/developer/conventions/code/log.rst
index fc175d3a4e7..8ffc3590f20 100644
--- a/docs/developer/conventions/code/log.rst
+++ b/docs/developer/conventions/code/log.rst
@@ -130,7 +130,7 @@ Provides fairly detailed logging message from the GML module, but not from the r
Log4J interoperability
^^^^^^^^^^^^^^^^^^^^^^
-Geotools can produces a console output similar to the Log4J one (single-line instead of multi-line log message) if the following code is invoked once at application starting time::
+GeoTools can produces a console output similar to the Log4J one (single-line instead of multi-line log message) if the following code is invoked once at application starting time::
Logging.ALL.forceMonolineConsoleOutput();
diff --git a/docs/developer/conventions/module.rst b/docs/developer/conventions/module.rst
index 8a71b4a0576..35e2690396b 100644
--- a/docs/developer/conventions/module.rst
+++ b/docs/developer/conventions/module.rst
@@ -1,7 +1,7 @@
Module Directory Structure
==========================
-Geotools 2.4 and above complies to the Maven standard layout regarding nested modules; and the layout
+GeoTools 2.4 and above complies to the Maven standard layout regarding nested modules; and the layout
of source code directories.
This section provides a summary of module structure and a examples how we have groupled modules
diff --git a/docs/developer/conventions/profile.rst b/docs/developer/conventions/profile.rst
index 66ad64bc36b..72bf2629578 100644
--- a/docs/developer/conventions/profile.rst
+++ b/docs/developer/conventions/profile.rst
@@ -18,7 +18,7 @@ License management
YourKit is a commercial product, which provides open source project
committers with free licenses.
-Geotools PMC has been granted 10 licenses, each one can be used by at most
+GeoTools PMC has been granted 10 licenses, each one can be used by at most
one developer in a given period of time.
Andrea Aime is managing the licenses now, so if you feel like using
YourKit for profiling the gt2 source code base please:
diff --git a/docs/developer/conventions/refactor.rst b/docs/developer/conventions/refactor.rst
index 44096c86b89..6315542be27 100644
--- a/docs/developer/conventions/refactor.rst
+++ b/docs/developer/conventions/refactor.rst
@@ -16,7 +16,7 @@ This is especially important when using either of the tools at the end of this p
Changing public API
^^^^^^^^^^^^^^^^^^^
-Before to refactor a method, make sure that it did not have public access in the previous Geotools release.
+Before to refactor a method, make sure that it did not have public access in the previous GeoTools release.
* If it was public, then we need to go through a "deprecate, then remove" cycle.
* If not was not public, go ahead with with the refactoring.
@@ -30,7 +30,7 @@ For example consider the following method::
// Do something
}
-Suppose that Geotools 2.3 is already released and we are working on Geotools 2.4. Suppose that we want to add a String argument to the above method. Do not refactor this method directly like this:
+Suppose that GeoTools 2.3 is already released and we are working on GeoTools 2.4. Suppose that we want to add a String argument to the above method. Do not refactor this method directly like this:
WRONG::
@@ -41,7 +41,7 @@ WRONG::
// Do something
}
-Instead, duplicate the method for at least one Geotools release:
+Instead, duplicate the method for at least one GeoTools release:
Better::
@@ -63,7 +63,7 @@ Better::
// Do something
}
-Note the @since 2.4 javadoc tag. It is an important hint for both users and the module maintainer, so do not forget it. The deprecated method can be removed in Geotools 2.5.
+Note the @since 2.4 javadoc tag. It is an important hint for both users and the module maintainer, so do not forget it. The deprecated method can be removed in GeoTools 2.5.
Keep methods private
^^^^^^^^^^^^^^^^^^^^^
@@ -84,7 +84,7 @@ RefactorIt
* and provide code metrics.
* More details can be found from the online help.
- RefactorIt is commercial, but provides free licences for Open Source projects like Geotools.
+ RefactorIt is commercial, but provides free licences for Open Source projects like GeoTools.
See the RefactorIt web pages for details. It can be plugged into a variety of IDEs, including
Netbeans.
diff --git a/docs/developer/conventions/test/junit.rst b/docs/developer/conventions/test/junit.rst
index 053d59168bb..5582f3a644d 100644
--- a/docs/developer/conventions/test/junit.rst
+++ b/docs/developer/conventions/test/junit.rst
@@ -15,7 +15,7 @@ The general idea:
* create a file test/org/geotools/module/HelloWorldTest.java
* any public void methods starting with test will be run by JUnit
* maven will run all tests for your module using: mvn test
-* tests can be ignored using you pom.xml file
+* tests can be ignored using you ``pom.xml`` file
* maven will not "release" your module into the repository while it still fails unit testing
Example TestCase
diff --git a/docs/developer/conventions/test/online.rst b/docs/developer/conventions/test/online.rst
index 69a1d85753b..e2edc6b660e 100644
--- a/docs/developer/conventions/test/online.rst
+++ b/docs/developer/conventions/test/online.rst
@@ -1,7 +1,7 @@
Online Tests
------------
-We make use of a naming convention, ie ensure the name of your TestCase ends in OnlineTest, to indicate the use of external web services and databases. If a unit test requires a network connection to pass, it is an online test.
+We make use of a naming convention, i.e. ensure the name of your TestCase ends in OnlineTest, to indicate the use of external web services and databases. If a unit test requires a network connection to pass, it is an online test.
These tests will be skipped as part of the normal build process, but will be executed by certain build boxes.
diff --git a/docs/developer/conventions/version.rst b/docs/developer/conventions/version.rst
index 58d7536d400..985d40ddf34 100644
--- a/docs/developer/conventions/version.rst
+++ b/docs/developer/conventions/version.rst
@@ -72,7 +72,7 @@ The release process has changed a bit since moving to subversion for details ple
@since javadoc tag
^^^^^^^^^^^^^^^^^^^
-Every public and protected class, interface, method or field should have a @since javadoc tag. If the Geotools 2.2 release is under development, then every new API should be identified with a @since 2.2 tag. For the end user, it means that:
+Every public and protected class, interface, method or field should have a @since javadoc tag. If the GeoTools 2.2 release is under development, then every new API should be identified with a @since 2.2 tag. For the end user, it means that:
* All classes and methods with a @since 2.0 or @since 2.1 javadoc tag are safe. Because they were there is previous releases, they will not change except for bug fixes (a few of them may be deprecated however).
diff --git a/docs/developer/docs/tutorial.rst b/docs/developer/docs/tutorial.rst
index a1e28713880..7ead885946f 100644
--- a/docs/developer/docs/tutorial.rst
+++ b/docs/developer/docs/tutorial.rst
@@ -72,7 +72,7 @@ Here is an example template to get you started.
and you will have a chance to try out using PostGIS or a Web Feature Server at the end of this
example.
- 1. Please ensure your pom.xml includes the following:
+ 1. Please ensure your ``pom.xml`` includes the following:
.. literalinclude:: artifacts/pom.xml
:language: xml
diff --git a/docs/developer/procedures/add.rst b/docs/developer/procedures/add.rst
index a559ca8b513..a5b2e1079bc 100644
--- a/docs/developer/procedures/add.rst
+++ b/docs/developer/procedures/add.rst
@@ -30,7 +30,7 @@ Review a couple of the repository search websites:
1.0.2
-3. Navigate to the root pom.xml for the project and go to the dependency management section.
+3. Navigate to the root ``pom.xml`` for the project and go to the dependency management section.
Cut and past paste the dependency information here as well::
@@ -40,7 +40,7 @@ Review a couple of the repository search websites:
1.0.2
-3. You can then adjust your pom.xml to not include the version number (as it will be retrieved
+3. You can then adjust your ``pom.xml`` to not include the version number (as it will be retrieved
from the dependency management section).::
@@ -52,14 +52,14 @@ Review a couple of the repository search websites:
Recommended reading on Dependencies
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-If you are not familiar with the way to declare a dependency in a Maven pom.xml file, see "How do I use external dependencies?" in the Maven Getting started guide. More information can also be found in the Guide to deploying 3rd party JARs to remote repository in Maven documentation.
+If you are not familiar with the way to declare a dependency in a Maven ``pom.xml`` file, see "How do I use external dependencies?" in the Maven Getting started guide. More information can also be found in the Guide to deploying 3rd party JARs to remote repository in Maven documentation.
References:
* http://maven.apache.org/guides/getting-started/index.html
* http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
-Our build process does not include jar files inside the subversion repository, instead Maven downloads jar files it needs from remote repositories (web sites). The location of these web sites is specified in the parent pom.xml file, which is inherited by all modules. There are mainly three sites available:
+Our build process does not include jar files inside the subversion repository, instead Maven downloads jar files it needs from remote repositories (web sites). The location of these web sites is specified in the parent ``pom.xml`` file, which is inherited by all modules. There are mainly three sites available:
* Java.net repository
@@ -82,14 +82,14 @@ Our build process does not include jar files inside the subversion repository, i
General utility open source projects, especially apache related
-Take a look at these sites and some of the "mystery" out of how Maven works. You may notice that the directory structure matches the dependency entries that you see in the pom.xml files. If the dependency entry has a groupId tag then this will be the name of the folder, if it just has an id tag then this will be used for the name of the folder and the jar within it.
+Take a look at these sites and some of the "mystery" out of how Maven works. You may notice that the directory structure matches the dependency entries that you see in the ``pom.xml`` files. If the dependency entry has a groupId tag then this will be the name of the folder, if it just has an id tag then this will be used for the name of the folder and the jar within it.
It is always worth taking a look at these sites (particularly the maven one) just to check that a version of the jar you want to use is not already available.
It really is not available - how to upload?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Assuming the jar you want is not already hosted on one of these sites you need to upload it and add a dependency entry to your pom.xml file.
+Assuming the jar you want is not already hosted on one of these sites you need to upload it and add a dependency entry to your ``pom.xml`` file.
* Upload with Maven (not by copy-and-paste)
@@ -169,7 +169,7 @@ Uploading to Ibiblio
Examples of Updating JTS Jar
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-1. Change into one of the GeoTools directories (the geotools pom.xml has all the
+1. Change into one of the GeoTools directories (the geotools ``pom.xml`` has all the
repository definitions so changing directories is easier than editing your settings.xml)::
C:\> cd java\geotools\trunk
diff --git a/docs/developer/procedures/check.rst b/docs/developer/procedures/check.rst
index 7efb0022d08..691ed51a26c 100644
--- a/docs/developer/procedures/check.rst
+++ b/docs/developer/procedures/check.rst
@@ -25,7 +25,7 @@ Here is how a plugin (aka hooks into the geotools library) may earn a star:
* Passes IP check, basically has correct headers
* Releasable - has no non blocking bugs in jira
-* Used in anger - Used by GeoServer or uDig or Geomajas (ie some kind of large real world datasets)
+* Used in anger - Used by GeoServer or uDig or Geomajas (i.e. some kind of large real world datasets)
* Optimised - has been tuned to meet hard performance requirements (example shapefile)
* Supported - user docs, module maintainer watches user list, answers email etc.. (example referencing)
diff --git a/docs/developer/procedures/create.rst b/docs/developer/procedures/create.rst
index a83bf7d2544..8a751806be9 100644
--- a/docs/developer/procedures/create.rst
+++ b/docs/developer/procedures/create.rst
@@ -85,7 +85,7 @@ The modules/unsupported/ directory is there to welcome your experimental work; t
#. pom.xml
- We start by getting the pom.xml configured since maven will need that to work against the module. The following will start you out:
+ We start by getting the ``pom.xml`` configured since maven will need that to work against the module. The following will start you out:
Change all occurances of the word example to the name of your module::
diff --git a/docs/developer/procedures/git.rst b/docs/developer/procedures/git.rst
index 05e97533def..8dedafcbc1a 100644
--- a/docs/developer/procedures/git.rst
+++ b/docs/developer/procedures/git.rst
@@ -244,7 +244,7 @@ of for rebasing include:
It is **critically important** that rebasing never occur on a shared or primary
branch. The rule of thumb with rebasing is that you must **never** rewrite commits
- that are not strictly local, ie commits that have been pushed up to an online
+ that are not strictly local, i.e. commits that have been pushed up to an online
repository.
Other Tips
diff --git a/docs/developer/procedures/release.rst b/docs/developer/procedures/release.rst
index 913da03cac0..71dbaabcd58 100644
--- a/docs/developer/procedures/release.rst
+++ b/docs/developer/procedures/release.rst
@@ -29,7 +29,7 @@ Versions and revisions
When performing a release we don't require a "code freeze" in which no developers can commit to the repository. Instead we release from a revision that is known to pass all tests, including unit/integration tests as well as CITE tests on the GeoServer side. These instructions are valid in case you are making a release in combination with GeoServer, if you are making a stand alone release it's up to you to choose the proper GIT revision number for the GeoTools released to be picked from.
-To obtain the GeoServer and Geotools revisions that have passed the `CITE test `_, navigate to the latest Jenkins run of the CITE test and view it's console output and select to view its full log. For example:
+To obtain the GeoServer and GeoTools revisions that have passed the `CITE test `_, navigate to the latest Jenkins run of the CITE test and view it's console output and select to view its full log. For example:
https://build.geoserver.org/job/2.11-cite-wms-1.1/286/consoleText
@@ -77,10 +77,10 @@ When creating the first release candidate of a series, there are some extra step
* Enable `GitHub branch protection `_ for the new stable branch: tick "Protect this branch" (only) and press "Save changes".
-* Checkout the master branch and update the version in all pom.xml files and a few miscellaneous files; for example, if changing master from ``17-SNAPSHOT`` to ``18-SNAPSHOT``::
+* Checkout the master branch and update the version in all ``pom.xml`` files and a few miscellaneous files; for example, if changing master from ``17-SNAPSHOT`` to ``18-SNAPSHOT``::
git checkout master
- find . -name pom.xml -exec sed -i 's/17-SNAPSHOT/18-SNAPSHOT/g' {} \;
+ find . -name ``pom.xml`` -exec sed -i 's/17-SNAPSHOT/18-SNAPSHOT/g' {} \;
sed -i 's/17-SNAPSHOT/18-SNAPSHOT/g' \
build/rename.xml \
docs/build.xml \
@@ -129,7 +129,7 @@ Run the `geotools-release functionNames = factory.getFunctionNames();
@@ -466,7 +466,9 @@ public int compare(FunctionName o1, FunctionName o2) {
Parameter> result = functionName.getReturn();
StringBuilder fn = new StringBuilder();
+ fn.append(codeBlock);
fn.append(functionName.getName());
+
fn.append("(");
int i = 0;
for (Parameter> argument : functionName.getArguments()) {
@@ -476,7 +478,8 @@ public int compare(FunctionName o1, FunctionName o2) {
fn.append(argument.getName());
}
fn.append(")");
- fn.append(": " + result.getName());
+ fn.append(codeBlock);
+ fn.append(": returns " + codeBlock + result.getName() + codeBlock);
System.out.println(fn.toString());
for (int h = 0; h < fn.length(); h++) {
@@ -489,35 +492,48 @@ public int compare(FunctionName o1, FunctionName o2) {
System.out.println("* " + argument(argument));
System.out.println();
}
- System.out.println("* " + argument(result));
+ System.out.println("* " + argument(result, true));
System.out.println();
}
}
}
+ static final String codeBlock = "``";
+
public static String argument(Parameter> argument) {
+ return argument(argument, false);
+ }
+
+ public static String argument(Parameter> argument, boolean result) {
+
StringBuilder arg = new StringBuilder();
+ arg.append(codeBlock);
arg.append(argument.getName());
+ arg.append(codeBlock);
Class> type = argument.getType();
if (type == null || (type == Object.class && argument.isRequired())) {
// nothing more is known
} else {
+ arg.append(" (" + codeBlock);
+ arg.append(type.getSimpleName());
+ arg.append(codeBlock+")");
int min = argument.getMinOccurs();
int max = argument.getMaxOccurs();
-
- arg.append(": ");
- arg.append(type.getSimpleName());
-
- arg.append(" ");
- arg.append(min);
- arg.append(":");
- arg.append(max == Integer.MAX_VALUE ? "unbounded" : max);
-
- if (argument.isRequired()) {
- arg.append(" required");
- } else if (argument.getMinOccurs() == 0 && argument.getMaxOccurs() == 1) {
- arg.append(" optional");
+ if (min > 1 && max > 1) {
+ arg.append(": ");
+ arg.append(" min=");
+ arg.append(min);
+ arg.append(" max=");
+ arg.append(max == Integer.MAX_VALUE ? "unbounded" : max);
+ } else {
+ if (!result) {
+ if (argument.isRequired()) {
+ arg.append(" required");
+ } else if (argument.getMinOccurs() == 0 && argument.getMaxOccurs() == 1) {
+ arg.append(" optional");
+ }
+ }
}
}
return arg.toString();
diff --git a/docs/user/artifacts/function_list b/docs/user/artifacts/function_list
index 7912d918554..c176d09e054 100644
--- a/docs/user/artifacts/function_list
+++ b/docs/user/artifacts/function_list
@@ -1,2932 +1,2904 @@
-DefaultFunctionFactory
-^^^^^^^^^^^^^^^^^^^^^^
+``DefaultFunctionFactory``
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-Contains 202 functions.
+Contains 199 functions.
-Area(geometry): area
-''''''''''''''''''''
-
-* geometry: Geometry 1:1 required
-
-* area: Double 1:1 required
+``Area(geometry)``: returns ``area``
+''''''''''''''''''''''''''''''''''''
-Categorize(LookupValue, Value, Threshold 1, Value 1, Threshold 2, Value 2, succeeding or preceding): return
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* LookupValue
+* ``area`` (``Double``)
-* Value
+``Categorize(LookupValue, Value, Threshold 1, Value 1, Threshold 2, Value 2, succeeding or preceding)``: returns ``return``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* Threshold 1
+* ``LookupValue``
-* Value 1
+* ``Value``
-* Threshold 2
+* ``Threshold 1``
-* Value 2
+* ``Value 1``
-* succeeding or preceding
+* ``Threshold 2``
-* return
+* ``Value 2``
-Collection_Average(expression): average
-'''''''''''''''''''''''''''''''''''''''
+* ``succeeding or preceding``
-* expression: Number 1:1 required
+* ``return``
-* average: Number 1:1 required
+``Collection_Average(expression)``: returns ``average``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Bounds(geometry): bounds
-'''''''''''''''''''''''''''''''''''
+* ``expression`` (``Number``) required
-* geometry: Geometry 1:1 required
+* ``average`` (``Number``)
-* bounds
+``Collection_Bounds(geometry)``: returns ``bounds``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Count(features): count
-'''''''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* features
+* ``bounds``
-* count: Number 1:1 required
+``Collection_Count(features)``: returns ``count``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Max(expression): max
-'''''''''''''''''''''''''''''''
+* ``features``
-* expression: Comparable 1:1 required
+* ``count`` (``Number``)
-* max: Comparable 1:1 required
+``Collection_Max(expression)``: returns ``max``
+'''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Median(expression): median
-'''''''''''''''''''''''''''''''''''''
+* ``expression`` (``Comparable``) required
-* expression: Comparable 1:1 required
+* ``max`` (``Comparable``)
-* median: Comparable 1:1 required
+``Collection_Median(expression)``: returns ``median``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Min(expression): min
-'''''''''''''''''''''''''''''''
+* ``expression`` (``Comparable``) required
-* expression: Comparable 1:1 required
+* ``median`` (``Comparable``)
-* min: Comparable 1:1 required
+``Collection_Min(expression)``: returns ``min``
+'''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Nearest(value): expression
-'''''''''''''''''''''''''''''''''''''
+* ``expression`` (``Comparable``) required
-* value: Comparable 1:1 required
+* ``min`` (``Comparable``)
-* expression: Expression 1:1 required
+``Collection_Nearest(value)``: returns ``expression``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Sum(expression): sum
-'''''''''''''''''''''''''''''''
+* ``value`` (``Comparable``) required
-* expression: Number 1:1 required
+* ``expression`` (``Expression``)
-* sum: Number 1:1 required
+``Collection_Sum(expression)``: returns ``sum``
+'''''''''''''''''''''''''''''''''''''''''''''''
-Collection_Unique(expression): unique
-'''''''''''''''''''''''''''''''''''''
+* ``expression`` (``Number``) required
-* expression
+* ``sum`` (``Number``)
-* unique
+``Collection_Unique(expression)``: returns ``unique``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
-Concatenate(text): result
-'''''''''''''''''''''''''
+* ``expression``
-* text: String 2:-1 required
+* ``unique``
-* result: String 1:1 required
+``Concatenate(text)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''
-EqualArea(value, classes, areaFunction): EqualArea
-''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``text`` (``String``) required
-* value: Double 1:1 required
+* ``result`` (``String``)
-* classes: Integer 1:1 required
+``EqualArea(value, classes, areaFunction)``: returns ``EqualArea``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* areaFunction: Double 0:1 optional
+* ``value`` (``Double``) required
-* EqualArea: RangedClassifier 1:1 required
+* ``classes`` (``Integer``) required
-EqualInterval(value, classes): EqualInterval
-''''''''''''''''''''''''''''''''''''''''''''
+* ``areaFunction`` (``Double``) optional
-* value: Double 1:1 required
+* ``EqualArea`` (``RangedClassifier``)
-* classes: Integer 1:1 required
+``EqualInterval(value, classes)``: returns ``EqualInterval``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* EqualInterval: RangedClassifier 1:1 required
+* ``value`` (``Double``) required
-IEEEremainder(dividend, divisor): remainder
-'''''''''''''''''''''''''''''''''''''''''''
+* ``classes`` (``Integer``) required
-* dividend: Number 1:1 required
+* ``EqualInterval`` (``RangedClassifier``)
-* divisor: Number 1:1 required
+``IEEEremainder(dividend, divisor)``: returns ``remainder``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* remainder: Double 1:1 required
+* ``dividend`` (``Number``) required
-Interpolate(data value pairs, mode, method): lookup
-'''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``divisor`` (``Number``) required
-* data value pairs
+* ``remainder`` (``Double``)
-* mode: String 1:1 required
+``Interpolate(data value pairs, mode, method)``: returns ``lookup``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* method: String 0:1 optional
+* ``data value pairs``
-* lookup
+* ``mode`` (``String``) required
-Jenks(value, classes): Jenks
-''''''''''''''''''''''''''''
+* ``method`` (``String``) optional
-* value: Double 1:1 required
+* ``lookup``
-* classes: Integer 1:1 required
+``Jenks(value, classes)``: returns ``Jenks``
+''''''''''''''''''''''''''''''''''''''''''''
-* Jenks: RangedClassifier 1:1 required
+* ``value`` (``Double``) required
-PropertyExists(propertyName): exists
-''''''''''''''''''''''''''''''''''''
+* ``classes`` (``Integer``) required
-* propertyName
+* ``Jenks`` (``RangedClassifier``)
-* exists: Boolean 1:1 required
+``PropertyExists(propertyName)``: returns ``exists``
+''''''''''''''''''''''''''''''''''''''''''''''''''''
-Quantile(value, classes): Quantile
-''''''''''''''''''''''''''''''''''
+* ``propertyName``
-* value: Double 1:1 required
+* ``exists`` (``Boolean``)
-* classes: Integer 1:1 required
+``Quantile(value, classes)``: returns ``Quantile``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-* Quantile: RangedClassifier 1:1 required
+* ``value`` (``Double``) required
-Recode(LookupValue, Data 1, Value 1, Data 2, Value 2): return
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``classes`` (``Integer``) required
-* LookupValue
+* ``Quantile`` (``RangedClassifier``)
-* Data 1
+``Recode(LookupValue, Data 1, Value 1, Data 2, Value 2)``: returns ``return``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* Value 1
+* ``LookupValue``
-* Data 2
+* ``Data 1``
-* Value 2
+* ``Value 1``
-* return
+* ``Data 2``
-StandardDeviation(value, classes): StandardDeviation
-''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``Value 2``
-* value: Double 1:1 required
+* ``return``
-* classes: Integer 1:1 required
+``StandardDeviation(value, classes)``: returns ``StandardDeviation``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* StandardDeviation: RangedClassifier 1:1 required
+* ``value`` (``Double``) required
-UniqueInterval(value, classes): UniqueInterval
-''''''''''''''''''''''''''''''''''''''''''''''
+* ``classes`` (``Integer``) required
-* value: Double 1:1 required
+* ``StandardDeviation`` (``RangedClassifier``)
-* classes: Integer 1:1 required
+``UniqueInterval(value, classes)``: returns ``UniqueInterval``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* UniqueInterval: RangedClassifier 1:1 required
+* ``value`` (``Double``) required
-abs(int): abs
-'''''''''''''
+* ``classes`` (``Integer``) required
-* int: Integer 1:1 required
+* ``UniqueInterval`` (``RangedClassifier``)
-* abs: Integer 1:1 required
+``abs(int)``: returns ``abs``
+'''''''''''''''''''''''''''''
-abs_2(number): long
-'''''''''''''''''''
+* ``int`` (``Integer``) required
-* number: Long 1:1 required
+* ``abs`` (``Integer``)
-* long: Long 1:1 required
+``abs_2(number)``: returns ``long``
+'''''''''''''''''''''''''''''''''''
-abs_3(number): float
-''''''''''''''''''''
+* ``number`` (``Long``) required
-* number: Float 1:1 required
+* ``long`` (``Long``)
-* float: Float 1:1 required
+``abs_3(number)``: returns ``float``
+''''''''''''''''''''''''''''''''''''
-abs_4(number): double
-'''''''''''''''''''''
+* ``number`` (``Float``) required
-* number: Double 1:1 required
+* ``float`` (``Float``)
-* double: Double 1:1 required
+``abs_4(number)``: returns ``double``
+'''''''''''''''''''''''''''''''''''''
-acos(value): arc cosine
-'''''''''''''''''''''''
+* ``number`` (``Double``) required
-* value: Double 1:1 required
+* ``double`` (``Double``)
-* arc cosine: Double 1:1 required
+``acos(value)``: returns ``arc cosine``
+'''''''''''''''''''''''''''''''''''''''
-area2(geometry): area
-'''''''''''''''''''''
+* ``value`` (``Double``) required
-* geometry: Geometry 1:1 required
+* ``arc cosine`` (``Double``)
-* area: Double 1:1 required
+``area2(geometry)``: returns ``area``
+'''''''''''''''''''''''''''''''''''''
-asin(value): arc sine
-'''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* value: Double 1:1 required
+* ``area`` (``Double``)
-* arc sine: Double 1:1 required
+``asin(value)``: returns ``arc sine``
+'''''''''''''''''''''''''''''''''''''
-atan(value): arc tan
-''''''''''''''''''''
+* ``value`` (``Double``) required
-* value: Double 1:1 required
+* ``arc sine`` (``Double``)
-* arc tan: Double 1:1 required
+``atan(value)``: returns ``arc tan``
+''''''''''''''''''''''''''''''''''''
-atan2(x, y): arc tan
-''''''''''''''''''''
+* ``value`` (``Double``) required
-* x: Double 1:1 required
+* ``arc tan`` (``Double``)
-* y: Double 1:1 required
+``atan2(x, y)``: returns ``arc tan``
+''''''''''''''''''''''''''''''''''''
-* arc tan: Double 1:1 required
+* ``x`` (``Double``) required
-attributeCount(count): return
-'''''''''''''''''''''''''''''
+* ``y`` (``Double``) required
-* count
+* ``arc tan`` (``Double``)
-* return
+``attributeCount(count)``: returns ``return``
+'''''''''''''''''''''''''''''''''''''''''''''
-between(value, min, max): between
-'''''''''''''''''''''''''''''''''
+* ``count``
-* value
+* ``return``
-* min
+``between(value, min, max)``: returns ``between``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-* max
+* ``value``
-* between: Boolean 1:1 required
+* ``min``
-boundary(geometry): boundary
-''''''''''''''''''''''''''''
+* ``max``
-* geometry: Geometry 1:1 required
+* ``between`` (``Boolean``)
-* boundary: Geometry 1:1 required
+``boundary(geometry)``: returns ``boundary``
+''''''''''''''''''''''''''''''''''''''''''''
-boundaryDimension(geometry): dimension
-''''''''''''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``boundary`` (``Geometry``)
-* dimension: Integer 1:1 required
+``boundaryDimension(geometry)``: returns ``dimension``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-boundedBy(): result
-'''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``dimension`` (``Integer``)
-buffer(geometry, distance): buffer
-''''''''''''''''''''''''''''''''''
+``boundedBy()``: returns ``result``
+'''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``result`` (``Geometry``)
-* distance: Number 1:1 required
+``buffer(geometry, distance)``: returns ``buffer``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-* buffer: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-bufferWithSegments(geometry, distance, numberOfSegments): buffer
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``distance`` (``Number``) required
-* geometry: Geometry 1:1 required
+* ``buffer`` (``Geometry``)
-* distance: Number 1:1 required
+``bufferWithSegments(geometry, distance, numberOfSegments)``: returns ``buffer``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* numberOfSegments: Number 1:1 required
+* ``geometry`` (``Geometry``) required
-* buffer: Geometry 1:1 required
+* ``distance`` (``Number``) required
-ceil(number): ceiling
-'''''''''''''''''''''
+* ``numberOfSegments`` (``Number``) required
-* number: Number 1:1 required
+* ``buffer`` (``Geometry``)
-* ceiling: Double 1:1 required
+``ceil(number)``: returns ``ceiling``
+'''''''''''''''''''''''''''''''''''''
-centroid(geometry): centroid
-''''''''''''''''''''''''''''
+* ``number`` (``Number``) required
-* geometry: Geometry 1:1 required
+* ``ceiling`` (``Double``)
-* centroid: Point 1:1 required
+``centroid(geometry)``: returns ``centroid``
+''''''''''''''''''''''''''''''''''''''''''''
-classify(expression, classifer): value
-''''''''''''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* expression
+* ``centroid`` (``Point``)
-* classifer: Classifier 1:1 required
+``classify(expression, classifer)``: returns ``value``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* value
+* ``expression``
-contains(geometry1, geometry2): contains
-''''''''''''''''''''''''''''''''''''''''
+* ``classifer`` (``Classifier``) required
-* geometry1: Geometry 1:1 required
+* ``value``
-* geometry2: Geometry 1:1 required
+``contains(geometry1, geometry2)``: returns ``contains``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* contains: Boolean 1:1 required
+* ``geometry1`` (``Geometry``) required
-contrast(reference, color1, color2, threshold): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* reference: Color 1:1 required
+* ``contains`` (``Boolean``)
-* color1: Color 0:1 optional
+``contrast(reference, color1, color2, threshold)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* color2: Color 0:1 optional
+* ``reference`` (``Color``) required
-* threshold: Double 0:1 optional
+* ``color1`` (``Color``) optional
-* result: Color 1:1 required
+* ``color2`` (``Color``) optional
-convert(value, class): converted
-''''''''''''''''''''''''''''''''
+* ``threshold`` (``Double``) optional
-* value
+* ``result`` (``Color``)
-* class: Class 1:1 required
+``convert(value, class)``: returns ``converted``
+''''''''''''''''''''''''''''''''''''''''''''''''
-* converted
+* ``value``
-convexHull(geometry): hull
-''''''''''''''''''''''''''
+* ``class`` (``Class``) required
-* geometry: Geometry 1:1 required
+* ``converted``
-* hull: Geometry 1:1 required
+``convexHull(geometry)``: returns ``hull``
+''''''''''''''''''''''''''''''''''''''''''
-cos(radians): cosine
-''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* radians: Double 1:1 required
+* ``hull`` (``Geometry``)
-* cosine: Double 1:1 required
+``cos(radians)``: returns ``cosine``
+''''''''''''''''''''''''''''''''''''
-crosses(geometry1, geometry2): crosses
-''''''''''''''''''''''''''''''''''''''
+* ``radians`` (``Double``) required
-* geometry1: Geometry 1:1 required
+* ``cosine`` (``Double``)
-* geometry2: Geometry 1:1 required
+``crosses(geometry1, geometry2)``: returns ``crosses``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* crosses: Boolean 1:1 required
+* ``geometry1`` (``Geometry``) required
-darken(color, amount, method): result
-'''''''''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* color: Color 1:1 required
+* ``crosses`` (``Boolean``)
-* amount: Float 1:1 required
+``darken(color, amount, method)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
-* method: Method 0:1 optional
+* ``color`` (``Color``) required
-* result: Color 1:1 required
+* ``amount`` (``Float``) required
-dateDifference(a, b): result
-''''''''''''''''''''''''''''
+* ``method`` (``Method``) optional
-* a: Date 1:1 required
+* ``result`` (``Color``)
-* b: Date 1:1 required
+``dateDifference(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''
-* result: Long 1:1 required
+* ``a`` (``Date``) required
-dateFormat(format, date): formatted
-'''''''''''''''''''''''''''''''''''
+* ``b`` (``Date``) required
-* format: String 1:1 required
+* ``result`` (``Long``)
-* date: Date 1:1 required
+``dateFormat(format, date)``: returns ``formatted``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-* formatted: String 1:1 required
+* ``format`` (``String``) required
-dateParse(format, dateString): date
-'''''''''''''''''''''''''''''''''''
+* ``date`` (``Date``) required
-* format: String 1:1 required
+* ``formatted`` (``String``)
-* dateString: String 1:1 required
+``dateParse(format, dateString)``: returns ``date``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-* date: Date 1:1 required
+* ``format`` (``String``) required
-desaturate(color, amount, method): result
-'''''''''''''''''''''''''''''''''''''''''
+* ``dateString`` (``String``) required
-* color: Color 1:1 required
+* ``date`` (``Date``)
-* amount: Float 1:1 required
+``desaturate(color, amount, method)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* method: Method 0:1 optional
+* ``color`` (``Color``) required
-* result: Color 1:1 required
+* ``amount`` (``Float``) required
-difference(geometry1, geometry2): difference
-''''''''''''''''''''''''''''''''''''''''''''
+* ``method`` (``Method``) optional
-* geometry1: Geometry 1:1 required
+* ``result`` (``Color``)
-* geometry2: Geometry 1:1 required
+``difference(geometry1, geometry2)``: returns ``difference``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* difference: Geometry 1:1 required
+* ``geometry1`` (``Geometry``) required
-dimension(geometry): dimension
-''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``difference`` (``Geometry``)
-* dimension: Integer 1:1 required
+``dimension(geometry)``: returns ``dimension``
+''''''''''''''''''''''''''''''''''''''''''''''
-disjoint(geometry1, geometry2): disjoint
-''''''''''''''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* geometry1: Geometry 1:1 required
+* ``dimension`` (``Integer``)
-* geometry2: Geometry 1:1 required
+``disjoint(geometry1, geometry2)``: returns ``disjoint``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* disjoint: Boolean 1:1 required
+* ``geometry1`` (``Geometry``) required
-disjoint3D(geometry1, geometry2): disjoint3D
-''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* geometry1: Geometry 1:1 required
+* ``disjoint`` (``Boolean``)
-* geometry2: Geometry 1:1 required
+``disjoint3D(geometry1, geometry2)``: returns ``disjoint3D``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* disjoint3D: Double 1:1 required
+* ``geometry1`` (``Geometry``) required
-distance(geometry1, geometry2): distance
-''''''''''''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* geometry1: Geometry 1:1 required
+* ``disjoint3D`` (``Double``)
-* geometry2: Geometry 1:1 required
+``distance(geometry1, geometry2)``: returns ``distance``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* distance: Double 1:1 required
+* ``geometry1`` (``Geometry``) required
-distance3D(geometry1, geometry2): distance3D
-''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* geometry1: Geometry 1:1 required
+* ``distance`` (``Double``)
-* geometry2: Geometry 1:1 required
+``distance3D(geometry1, geometry2)``: returns ``distance3D``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* distance3D: Double 1:1 required
+* ``geometry1`` (``Geometry``) required
-double2bool(double): double2bool
-''''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* double: Double 1:1 required
+* ``distance3D`` (``Double``)
-* double2bool: Boolean 1:1 required
+``double2bool(double)``: returns ``double2bool``
+''''''''''''''''''''''''''''''''''''''''''''''''
-endAngle(linestring): endAngle
-''''''''''''''''''''''''''''''
+* ``double`` (``Double``) required
-* linestring: LineString 1:1 required
+* ``double2bool`` (``Boolean``)
-* endAngle: Double 1:1 required
+``endAngle(linestring)``: returns ``endAngle``
+''''''''''''''''''''''''''''''''''''''''''''''
-endPoint(linestring): endPoint
-''''''''''''''''''''''''''''''
+* ``linestring`` (``LineString``) required
-* linestring: LineString 1:1 required
+* ``endAngle`` (``Double``)
-* endPoint: Point 1:1 required
+``endPoint(linestring)``: returns ``endPoint``
+''''''''''''''''''''''''''''''''''''''''''''''
-env(variable): value
-''''''''''''''''''''
+* ``linestring`` (``LineString``) required
-* variable: String 1:1 required
+* ``endPoint`` (``Point``)
-* value
+``env(variable)``: returns ``value``
+''''''''''''''''''''''''''''''''''''
-envelope(geometry): envelope
-''''''''''''''''''''''''''''
+* ``variable`` (``String``) required
-* geometry: Geometry 1:1 required
+* ``value``
-* envelope: Geometry 1:1 required
+``envelope(geometry)``: returns ``envelope``
+''''''''''''''''''''''''''''''''''''''''''''
-equalTo(a, b): equalTo
-''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* a
+* ``envelope`` (``Geometry``)
-* b
+``equalTo(a, b)``: returns ``equalTo``
+''''''''''''''''''''''''''''''''''''''
-* equalTo: Boolean 1:1 required
+* ``a``
-equalsExact(geometry1, geometry2): equalsExact
-''''''''''''''''''''''''''''''''''''''''''''''
+* ``b``
-* geometry1: Geometry 1:1 required
+* ``equalTo`` (``Boolean``)
-* geometry2: Geometry 1:1 required
+``equalsExact(geometry1, geometry2)``: returns ``equalsExact``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* equalsExact: Boolean 1:1 required
+* ``geometry1`` (``Geometry``) required
-equalsExactTolerance(geometry1, geometry2, tolarance): equalsExactTolerance
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* geometry1: Geometry 1:1 required
+* ``equalsExact`` (``Boolean``)
-* geometry2: Geometry 1:1 required
+``equalsExactTolerance(geometry1, geometry2, tolarance)``: returns ``equalsExactTolerance``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* tolarance: Double 1:1 required
+* ``geometry1`` (``Geometry``) required
-* equalsExactTolerance: Boolean 1:1 required
+* ``geometry2`` (``Geometry``) required
-exp(number): exponent
-'''''''''''''''''''''
+* ``tolarance`` (``Double``) required
-* number: Number 1:1 required
+* ``equalsExactTolerance`` (``Boolean``)
-* exponent: Double 1:1 required
+``exp(number)``: returns ``exponent``
+'''''''''''''''''''''''''''''''''''''
-exteriorRing(geometry): exteriorRing
-''''''''''''''''''''''''''''''''''''
+* ``number`` (``Number``) required
-* geometry: Geometry 1:1 required
+* ``exponent`` (``Double``)
-* exteriorRing: LinearRing 1:1 required
+``exteriorRing(geometry)``: returns ``exteriorRing``
+''''''''''''''''''''''''''''''''''''''''''''''''''''
-floor(double): floor
-''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* double: Double 1:1 required
+* ``exteriorRing`` (``LinearRing``)
-* floor: Double 1:1 required
+``floor(double)``: returns ``floor``
+''''''''''''''''''''''''''''''''''''
-geomFromWKT(geometry): geomFromWKT
-''''''''''''''''''''''''''''''''''
+* ``double`` (``Double``) required
-* geometry: String 1:1 required
+* ``floor`` (``Double``)
-* geomFromWKT: Geometry 1:1 required
+``geomFromWKT(geometry)``: returns ``geomFromWKT``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-geomLength(geometry): geomLength
-''''''''''''''''''''''''''''''''
+* ``geometry`` (``String``) required
-* geometry: Geometry 1:1 required
+* ``geomFromWKT`` (``Geometry``)
-* geomLength: Double 1:1 required
+``geomLength(geometry)``: returns ``geomLength``
+''''''''''''''''''''''''''''''''''''''''''''''''
-geometry(): geometry
-''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* geometry: Boolean 1:1 required
+* ``geomLength`` (``Double``)
-geometryType(geometry): geometryType
+``geometry()``: returns ``geometry``
''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
-
-* geometryType: String 1:1 required
+* ``geometry`` (``Boolean``)
-getGeometryN(geometry, index): getGeometryN
-'''''''''''''''''''''''''''''''''''''''''''
+``geometryType(geometry)``: returns ``geometryType``
+''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* index: Integer 1:1 required
+* ``geometryType`` (``String``)
-* getGeometryN: Geometry 1:1 required
+``getGeometryN(geometry, index)``: returns ``getGeometryN``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-getX(geometry): getX
-''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``index`` (``Integer``) required
-* getX: Double 1:1 required
+* ``getGeometryN`` (``Geometry``)
-getY(geometry): getY
-''''''''''''''''''''
+``getX(geometry)``: returns ``getX``
+''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* getY: Double 1:1 required
+* ``getX`` (``Double``)
-getz(geometry): getz
-''''''''''''''''''''
+``getY(geometry)``: returns ``getY``
+''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* getz: Double 1:1 required
+* ``getY`` (``Double``)
-grayscale(color): result
-''''''''''''''''''''''''
+``getz(geometry)``: returns ``getz``
+''''''''''''''''''''''''''''''''''''
-* color: Color 1:1 required
+* ``geometry`` (``Geometry``) required
-* result: Color 1:1 required
+* ``getz`` (``Double``)
-greaterEqualThan(x, y): greaterEqualThan
+``grayscale(color)``: returns ``result``
''''''''''''''''''''''''''''''''''''''''
-* x
-
-* y
-
-* greaterEqualThan: Boolean 1:1 required
-
-greaterThan(x, y): greaterThan
-''''''''''''''''''''''''''''''
+* ``color`` (``Color``) required
-* x
+* ``result`` (``Color``)
-* y
-
-* greaterThan: Boolean 1:1 required
+``greaterEqualThan(x, y)``: returns ``greaterEqualThan``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-hsl(hue, saturation, lightness): result
-'''''''''''''''''''''''''''''''''''''''
+* ``x``
-* hue: Double 1:1 required
+* ``y``
-* saturation: Double 1:1 required
+* ``greaterEqualThan`` (``Boolean``)
-* lightness: Double 1:1 required
+``greaterThan(x, y)``: returns ``greaterThan``
+''''''''''''''''''''''''''''''''''''''''''''''
-* result: Color 1:1 required
+* ``x``
-id(): id
-''''''''
+* ``y``
-* id: String 1:1 required
+* ``greaterThan`` (``Boolean``)
-if_then_else(condition, then, else): if_then_else
-'''''''''''''''''''''''''''''''''''''''''''''''''
+``hsl(hue, saturation, lightness)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* condition: Boolean 1:1 required
+* ``hue`` (``Double``) required
-* then
+* ``saturation`` (``Double``) required
-* else
+* ``lightness`` (``Double``) required
-* if_then_else
+* ``result`` (``Color``)
-in(candidate, v): result
+``id()``: returns ``id``
''''''''''''''''''''''''
-* candidate
+* ``id`` (``String``)
-* v
+``if_then_else(condition, then, else)``: returns ``if_then_else``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* result: Boolean 1:1 required
+* ``condition`` (``Boolean``) required
-in10(value, in1, in2, in3, in4, in5, in6, in7, in8, in9, in10): in10
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``then``
-* value
+* ``else``
-* in1
+* ``if_then_else``
-* in2
-
-* in3
-
-* in4
+``in(candidate, v)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''
-* in5
+* ``candidate``
-* in6
+* ``v``
-* in7
+* ``result`` (``Boolean``)
-* in8
+``in10(value, in1, in2, in3, in4, in5, in6, in7, in8, in9, in10)``: returns ``in10``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* in9
+* ``value``
-* in10
+* ``in1``
-* in10: Boolean 1:1 required
+* ``in2``
-in2(value, in1, in2): in2
-'''''''''''''''''''''''''
+* ``in3``
-* value
+* ``in4``
-* in1
+* ``in5``
-* in2
+* ``in6``
-* in2: Boolean 1:1 required
+* ``in7``
-in3(value, in1, in2, in3): in3
-''''''''''''''''''''''''''''''
+* ``in8``
-* value
+* ``in9``
-* in1
+* ``in10``
-* in2
+* ``in10`` (``Boolean``)
-* in3
+``in2(value, in1, in2)``: returns ``in2``
+'''''''''''''''''''''''''''''''''''''''''
-* in3: Boolean 1:1 required
+* ``value``
-in4(value, in1, in2, in3, in4): in4
-'''''''''''''''''''''''''''''''''''
+* ``in1``
-* value
+* ``in2``
-* in1
+* ``in2`` (``Boolean``)
-* in2
+``in3(value, in1, in2, in3)``: returns ``in3``
+''''''''''''''''''''''''''''''''''''''''''''''
-* in3
+* ``value``
-* in4
+* ``in1``
-* in4: Boolean 1:1 required
+* ``in2``
-in5(value, in1, in2, in3, in4, in5): in5
-''''''''''''''''''''''''''''''''''''''''
+* ``in3``
-* value
+* ``in3`` (``Boolean``)
-* in1
+``in4(value, in1, in2, in3, in4)``: returns ``in4``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-* in2
+* ``value``
-* in3
+* ``in1``
-* in4
+* ``in2``
-* in5
+* ``in3``
-* in5: Boolean 1:1 required
+* ``in4``
-in6(value, in1, in2, in3, in4, in5, in6): in6
-'''''''''''''''''''''''''''''''''''''''''''''
+* ``in4`` (``Boolean``)
-* value
+``in5(value, in1, in2, in3, in4, in5)``: returns ``in5``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* in1
+* ``value``
-* in2
+* ``in1``
-* in3
+* ``in2``
-* in4
+* ``in3``
-* in5
+* ``in4``
-* in6
+* ``in5``
-* in6: Boolean 1:1 required
+* ``in5`` (``Boolean``)
-in7(value, in1, in2, in3, in4, in5, in6, in7): in7
-''''''''''''''''''''''''''''''''''''''''''''''''''
+``in6(value, in1, in2, in3, in4, in5, in6)``: returns ``in6``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* value
+* ``value``
-* in1
+* ``in1``
-* in2
+* ``in2``
-* in3
+* ``in3``
-* in4
+* ``in4``
-* in5
+* ``in5``
-* in6
+* ``in6``
-* in7
+* ``in6`` (``Boolean``)
-* in7: Boolean 1:1 required
+``in7(value, in1, in2, in3, in4, in5, in6, in7)``: returns ``in7``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-in8(value, in1, in2, in3, in4, in5, in6, in7, in8): in8
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``value``
-* value
+* ``in1``
-* in1
+* ``in2``
-* in2
+* ``in3``
-* in3
+* ``in4``
-* in4
+* ``in5``
-* in5
+* ``in6``
-* in6
+* ``in7``
-* in7
+* ``in7`` (``Boolean``)
-* in8
+``in8(value, in1, in2, in3, in4, in5, in6, in7, in8)``: returns ``in8``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* in8: Boolean 1:1 required
+* ``value``
-in9(value, in1, in2, in3, in4, in5, in6, in7, in8, in9): in9
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``in1``
-* value
+* ``in2``
-* in1
+* ``in3``
-* in2
+* ``in4``
-* in3
+* ``in5``
-* in4
+* ``in6``
-* in5
+* ``in7``
-* in6
+* ``in8``
-* in7
+* ``in8`` (``Boolean``)
-* in8
+``in9(value, in1, in2, in3, in4, in5, in6, in7, in8, in9)``: returns ``in9``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* in9
+* ``value``
-* in9: Boolean 1:1 required
+* ``in1``
-int2bbool(int): int2bbool
-'''''''''''''''''''''''''
+* ``in2``
-* int: Integer 1:1 required
+* ``in3``
-* int2bbool: Boolean 1:1 required
+* ``in4``
-int2ddouble(int): int2ddouble
-'''''''''''''''''''''''''''''
+* ``in5``
-* int: Integer 1:1 required
+* ``in6``
-* int2ddouble: Double 1:1 required
+* ``in7``
-interiorPoint(geometry): interiorPoint
-''''''''''''''''''''''''''''''''''''''
+* ``in8``
-* geometry: Geometry 1:1 required
+* ``in9``
-* interiorPoint: Point 1:1 required
+* ``in9`` (``Boolean``)
-interiorRingN(geometry, n): interiorRingN
+``int2bbool(int)``: returns ``int2bbool``
'''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``int`` (``Integer``) required
-* n: Integer 1:1 required
-
-* interiorRingN: LinearRing 1:1 required
-
-intersection(geometry1, geometry2): intersection
-''''''''''''''''''''''''''''''''''''''''''''''''
+* ``int2bbool`` (``Boolean``)
-* geometry1: Geometry 1:1 required
+``int2ddouble(int)``: returns ``int2ddouble``
+'''''''''''''''''''''''''''''''''''''''''''''
-* geometry2: Geometry 1:1 required
+* ``int`` (``Integer``) required
-* intersection: Geometry 1:1 required
+* ``int2ddouble`` (``Double``)
-intersects(geometry1, geometry2): intersects
-''''''''''''''''''''''''''''''''''''''''''''
+``interiorPoint(geometry)``: returns ``interiorPoint``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry1: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* geometry2: Geometry 1:1 required
+* ``interiorPoint`` (``Point``)
-* intersects: Boolean 1:1 required
+``interiorRingN(geometry, n)``: returns ``interiorRingN``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-intersects3D(geometry1, geometry2): intersects3D
-''''''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* geometry1: Geometry 1:1 required
+* ``n`` (``Integer``) required
-* geometry2: Geometry 1:1 required
+* ``interiorRingN`` (``LinearRing``)
-* intersects3D: Double 1:1 required
+``intersection(geometry1, geometry2)``: returns ``intersection``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-isClosed(geometry): isClosed
-''''''''''''''''''''''''''''
+* ``geometry1`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``geometry2`` (``Geometry``) required
-* isClosed: Boolean 1:1 required
+* ``intersection`` (``Geometry``)
-isCoverage(): isCoverage
-''''''''''''''''''''''''
+``intersects(geometry1, geometry2)``: returns ``intersects``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* isCoverage: Boolean 1:1 required
+* ``geometry1`` (``Geometry``) required
-isEmpty(geometry): isEmpty
-''''''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``intersects`` (``Boolean``)
-* isEmpty: Boolean 1:1 required
+``intersects3D(geometry1, geometry2)``: returns ``intersects3D``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-isLike(string, regex): isLike
-'''''''''''''''''''''''''''''
+* ``geometry1`` (``Geometry``) required
-* string: String 1:1 required
+* ``geometry2`` (``Geometry``) required
-* regex: String 1:1 required
+* ``intersects3D`` (``Double``)
-* isLike: Boolean 1:1 required
+``isClosed(geometry)``: returns ``isClosed``
+''''''''''''''''''''''''''''''''''''''''''''
-isNull(object): isNull
-''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* object
+* ``isClosed`` (``Boolean``)
-* isNull: Boolean 1:1 required
+``isCoverage()``: returns ``isCoverage``
+''''''''''''''''''''''''''''''''''''''''
-isRing(geometry): isRing
-''''''''''''''''''''''''
+* ``isCoverage`` (``Boolean``)
-* geometry: Geometry 1:1 required
+``isEmpty(geometry)``: returns ``isEmpty``
+''''''''''''''''''''''''''''''''''''''''''
-* isRing: Boolean 1:1 required
+* ``geometry`` (``Geometry``) required
-isSimple(geometry): isSimple
-''''''''''''''''''''''''''''
+* ``isEmpty`` (``Boolean``)
-* geometry: Geometry 1:1 required
+``isLike(string, regex)``: returns ``isLike``
+'''''''''''''''''''''''''''''''''''''''''''''
-* isSimple: Boolean 1:1 required
+* ``string`` (``String``) required
-isValid(geometry): isValid
-''''''''''''''''''''''''''
+* ``regex`` (``String``) required
-* geometry: Geometry 1:1 required
+* ``isLike`` (``Boolean``)
-* isValid: Boolean 1:1 required
+``isNull(object)``: returns ``isNull``
+''''''''''''''''''''''''''''''''''''''
-isWithinDistance(geometry1, geometry2, distance): isWithinDistance
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``object``
-* geometry1: Geometry 1:1 required
+* ``isNull`` (``Boolean``)
-* geometry2: Geometry 1:1 required
+``isRing(geometry)``: returns ``isRing``
+''''''''''''''''''''''''''''''''''''''''
-* distance: Double 1:1 required
+* ``geometry`` (``Geometry``) required
-* isWithinDistance: Boolean 1:1 required
+* ``isRing`` (``Boolean``)
-isWithinDistance3D(geometry1, geometry2, distance): isWithinDistance3D
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``isSimple(geometry)``: returns ``isSimple``
+''''''''''''''''''''''''''''''''''''''''''''
-* geometry1: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* geometry2: Geometry 1:1 required
+* ``isSimple`` (``Boolean``)
-* distance: Double 1:1 required
+``isValid(geometry)``: returns ``isValid``
+''''''''''''''''''''''''''''''''''''''''''
-* isWithinDistance3D: Double 1:1 required
+* ``geometry`` (``Geometry``) required
-isometric(geometry, extrusion): isometric
-'''''''''''''''''''''''''''''''''''''''''
+* ``isValid`` (``Boolean``)
-* geometry: Geometry 1:1 required
+``isWithinDistance(geometry1, geometry2, distance)``: returns ``isWithinDistance``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* extrusion: Double 1:1 required
+* ``geometry1`` (``Geometry``) required
-* isometric: Geometry 1:1 required
+* ``geometry2`` (``Geometry``) required
-lapply(source, expression): result
-''''''''''''''''''''''''''''''''''
+* ``distance`` (``Double``) required
-* source: List 1:1 required
+* ``isWithinDistance`` (``Boolean``)
-* expression
+``isWithinDistance3D(geometry1, geometry2, distance)``: returns ``isWithinDistance3D``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* result: List 1:1 required
+* ``geometry1`` (``Geometry``) required
-length(string): length
-''''''''''''''''''''''
+* ``geometry2`` (``Geometry``) required
-* string: String 1:1 required
+* ``distance`` (``Double``) required
-* length: Integer 1:1 required
+* ``isWithinDistance3D`` (``Double``)
-lessEqualThan(a, b): lessEqualThan
-''''''''''''''''''''''''''''''''''
+``isometric(geometry, extrusion)``: returns ``isometric``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* a: Number 1:1 required
+* ``geometry`` (``Geometry``) required
-* b: Number 1:1 required
+* ``extrusion`` (``Double``) required
-* lessEqualThan: Boolean 1:1 required
+* ``isometric`` (``Geometry``)
-lessThan(a, b): lessThan
-''''''''''''''''''''''''
+``jsonPointer(json, pointer)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-* a: Number 1:1 required
+* ``json`` (``String``) required
-* b: Number 1:1 required
+* ``pointer`` (``String``) required
-* lessThan: Boolean 1:1 required
+* ``result``
-lighten(color, amount, method): result
+``length(string)``: returns ``length``
''''''''''''''''''''''''''''''''''''''
-* color: Color 1:1 required
-
-* amount: Float 1:1 required
+* ``string`` (``String``) required
-* method: Method 0:1 optional
+* ``length`` (``Integer``)
-* result: Color 1:1 required
+``lessEqualThan(a, b)``: returns ``lessEqualThan``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-list(item): list
-''''''''''''''''
+* ``a`` (``Number``) required
-* item
+* ``b`` (``Number``) required
-* list: List 1:1 required
+* ``lessEqualThan`` (``Boolean``)
-listMultiply(factor, list): listMultiply
+``lessThan(a, b)``: returns ``lessThan``
''''''''''''''''''''''''''''''''''''''''
-* factor: Number 1:1 required
+* ``a`` (``Number``) required
-* list: String 1:1 required
+* ``b`` (``Number``) required
-* listMultiply: String 1:1 required
+* ``lessThan`` (``Boolean``)
-litem(source, index): result
-''''''''''''''''''''''''''''
+``lighten(color, amount, method)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* source: List 1:1 required
+* ``color`` (``Color``) required
-* index: Integer 1:1 required
+* ``amount`` (``Float``) required
-* result
+* ``method`` (``Method``) optional
-literate(index, times, expression): result
-''''''''''''''''''''''''''''''''''''''''''
+* ``result`` (``Color``)
-* index
+``list(item)``: returns ``list``
+''''''''''''''''''''''''''''''''
-* times: Integer 1:1 required
+* ``item``
-* expression
+* ``list`` (``List``)
-* result: List 1:1 required
+``listMultiply(factor, list)``: returns ``listMultiply``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-log(value): logarithm
-'''''''''''''''''''''
+* ``factor`` (``Number``) required
-* value: Number 1:1 required
+* ``list`` (``String``) required
-* logarithm: Double 1:1 required
+* ``listMultiply`` (``String``)
-max(double, double): maxium
-'''''''''''''''''''''''''''
+``log(value)``: returns ``logarithm``
+'''''''''''''''''''''''''''''''''''''
-* double: Number 1:1 required
+* ``value`` (``Number``) required
-* double: Number 1:1 required
+* ``logarithm`` (``Double``)
-* maxium: Double 1:1 required
+``max(double, double)``: returns ``maxium``
+'''''''''''''''''''''''''''''''''''''''''''
-max_2(long, long): maximum
-''''''''''''''''''''''''''
+* ``double`` (``Number``) required
-* long: Number 1:1 required
+* ``double`` (``Number``) required
-* long: Number 1:1 required
+* ``maxium`` (``Double``)
-* maximum: Long 1:1 required
+``max_2(long, long)``: returns ``maximum``
+''''''''''''''''''''''''''''''''''''''''''
-max_3(float, float): maximum
-''''''''''''''''''''''''''''
+* ``long`` (``Number``) required
-* float: Number 1:1 required
+* ``long`` (``Number``) required
-* float: Number 1:1 required
+* ``maximum`` (``Long``)
-* maximum: Float 1:1 required
+``max_3(float, float)``: returns ``maximum``
+''''''''''''''''''''''''''''''''''''''''''''
-max_4(int, int): maximum
-''''''''''''''''''''''''
+* ``float`` (``Number``) required
-* int: Number 1:1 required
+* ``float`` (``Number``) required
-* int: Number 1:1 required
+* ``maximum`` (``Float``)
-* maximum: Integer 1:1 required
+``max_4(int, int)``: returns ``maximum``
+''''''''''''''''''''''''''''''''''''''''
-min(double, double): minium
-'''''''''''''''''''''''''''
+* ``int`` (``Number``) required
-* double: Double 1:1 required
+* ``int`` (``Number``) required
-* double: Double 1:1 required
+* ``maximum`` (``Integer``)
-* minium: Double 1:1 required
+``min(double, double)``: returns ``minium``
+'''''''''''''''''''''''''''''''''''''''''''
-min_2(long, long): minium
-'''''''''''''''''''''''''
+* ``double`` (``Double``) required
-* long: Number 1:1 required
+* ``double`` (``Double``) required
-* long: Number 1:1 required
+* ``minium`` (``Double``)
-* minium: Long 1:1 required
+``min_2(long, long)``: returns ``minium``
+'''''''''''''''''''''''''''''''''''''''''
-min_3(float, float): minium
-'''''''''''''''''''''''''''
+* ``long`` (``Number``) required
-* float: Number 1:1 required
+* ``long`` (``Number``) required
-* float: Number 1:1 required
+* ``minium`` (``Long``)
-* minium: Float 1:1 required
+``min_3(float, float)``: returns ``minium``
+'''''''''''''''''''''''''''''''''''''''''''
-min_4(int, int): minium
-'''''''''''''''''''''''
+* ``float`` (``Number``) required
-* int: Number 1:1 required
+* ``float`` (``Number``) required
-* int: Number 1:1 required
+* ``minium`` (``Float``)
-* minium: Integer 1:1 required
+``min_4(int, int)``: returns ``minium``
+'''''''''''''''''''''''''''''''''''''''
-mincircle(geometry): mincircle
-''''''''''''''''''''''''''''''
+* ``int`` (``Number``) required
-* geometry: Geometry 1:1 required
+* ``int`` (``Number``) required
-* mincircle: Geometry 1:1 required
+* ``minium`` (``Integer``)
-minimumdiameter(geometry): minimumdiameter
-''''''''''''''''''''''''''''''''''''''''''
+``mincircle(geometry)``: returns ``mincircle``
+''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* minimumdiameter: Geometry 1:1 required
+* ``mincircle`` (``Geometry``)
-minrectangle(geometry): minrectangle
-''''''''''''''''''''''''''''''''''''
+``minimumdiameter(geometry)``: returns ``minimumdiameter``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* minrectangle: Geometry 1:1 required
+* ``minimumdiameter`` (``Geometry``)
-mix(color1, color2, weight): result
-'''''''''''''''''''''''''''''''''''
+``minrectangle(geometry)``: returns ``minrectangle``
+''''''''''''''''''''''''''''''''''''''''''''''''''''
-* color1: Color 1:1 required
+* ``geometry`` (``Geometry``) required
-* color2: Color 1:1 required
+* ``minrectangle`` (``Geometry``)
-* weight: Double 1:1 required
+``mix(color1, color2, weight)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-* result: Color 1:1 required
+* ``color1`` (``Color``) required
-modulo(dividend, divisor): modulo
-'''''''''''''''''''''''''''''''''
+* ``color2`` (``Color``) required
-* dividend: Integer 1:1 required
+* ``weight`` (``Double``) required
-* divisor: Integer 1:1 required
+* ``result`` (``Color``)
-* modulo: Integer 1:1 required
+``modulo(dividend, divisor)``: returns ``modulo``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-not(logicValue): not
-''''''''''''''''''''
+* ``dividend`` (``Integer``) required
-* logicValue: Boolean 1:1 required
+* ``divisor`` (``Integer``) required
-* not: Boolean 1:1 required
+* ``modulo`` (``Integer``)
-notEqualTo(a, b): notEqualTo
-''''''''''''''''''''''''''''
+``not(logicValue)``: returns ``not``
+''''''''''''''''''''''''''''''''''''
-* a
+* ``logicValue`` (``Boolean``) required
-* b
+* ``not`` (``Boolean``)
-* notEqualTo: Boolean 1:1 required
+``notEqualTo(a, b)``: returns ``notEqualTo``
+''''''''''''''''''''''''''''''''''''''''''''
-numGeometries(geometry): numGeometries
-''''''''''''''''''''''''''''''''''''''
+* ``a``
-* geometry: Geometry 1:1 required
+* ``b``
-* numGeometries: Integer 1:1 required
+* ``notEqualTo`` (``Boolean``)
-numInteriorRing(geometry): numInteriorRing
-''''''''''''''''''''''''''''''''''''''''''
+``numGeometries(geometry)``: returns ``numGeometries``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* numInteriorRing: Integer 1:1 required
+* ``numGeometries`` (``Integer``)
-numPoints(geometry): numPoints
-''''''''''''''''''''''''''''''
+``numInteriorRing(geometry)``: returns ``numInteriorRing``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* numPoints: Integer 1:1 required
+* ``numInteriorRing`` (``Integer``)
-numberFormat(format, number, language): numberFormat
-''''''''''''''''''''''''''''''''''''''''''''''''''''
+``numPoints(geometry)``: returns ``numPoints``
+''''''''''''''''''''''''''''''''''''''''''''''
-* format: String 1:1 required
+* ``geometry`` (``Geometry``) required
-* number: Number 1:1 required
+* ``numPoints`` (``Integer``)
-* language: String 0:1 optional
+``numberFormat(format, number, language)``: returns ``numberFormat``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* numberFormat: String 1:1 required
+* ``format`` (``String``) required
-numberFormat2(format, number, minus, decimal, separator): numberFormat2
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``number`` (``Number``) required
-* format: String 1:1 required
+* ``language`` (``String``) optional
-* number: Number 1:1 required
+* ``numberFormat`` (``String``)
-* minus: String 1:1 required
+``numberFormat2(format, number, minus, decimal, separator)``: returns ``numberFormat2``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* decimal: String 1:1 required
+* ``format`` (``String``) required
-* separator: String 1:1 required
+* ``number`` (``Number``) required
-* numberFormat2: String 1:1 required
+* ``minus`` (``String``) required
-octagonalenvelope(geometry): octagonalenvelope
-''''''''''''''''''''''''''''''''''''''''''''''
+* ``decimal`` (``String``) required
-* geometry: Geometry 1:1 required
+* ``separator`` (``String``) required
-* octagonalenvelope: Geometry 1:1 required
+* ``numberFormat2`` (``String``)
-offset(geometry, offsetX, offsetY): offset
-''''''''''''''''''''''''''''''''''''''''''
+``octagonalenvelope(geometry)``: returns ``octagonalenvelope``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* offsetX: Double 1:1 required
+* ``octagonalenvelope`` (``Geometry``)
-* offsetY: Double 1:1 required
+``offset(geometry, offsetX, offsetY)``: returns ``offset``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* offset: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-overlaps(geometry1, geometry2): overlaps
-''''''''''''''''''''''''''''''''''''''''
+* ``offsetX`` (``Double``) required
-* geometry1: Geometry 1:1 required
+* ``offsetY`` (``Double``) required
-* geometry2: Geometry 1:1 required
+* ``offset`` (``Geometry``)
-* overlaps: Geometry 1:1 required
+``overlaps(geometry1, geometry2)``: returns ``overlaps``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-parseBoolean(string): parseBoolean
-''''''''''''''''''''''''''''''''''
+* ``geometry1`` (``Geometry``) required
-* string: String 1:1 required
+* ``geometry2`` (``Geometry``) required
-* parseBoolean: Boolean 1:1 required
+* ``overlaps`` (``Geometry``)
-parseDouble(string): parseDouble
-''''''''''''''''''''''''''''''''
+``parseBoolean(string)``: returns ``parseBoolean``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* parseDouble: Double 1:1 required
+* ``parseBoolean`` (``Boolean``)
-parseInt(string): parseInt
-''''''''''''''''''''''''''
+``parseDouble(string)``: returns ``parseDouble``
+''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* parseInt: Integer 1:1 required
+* ``parseDouble`` (``Double``)
-parseLong(string): parseLong
-''''''''''''''''''''''''''''
+``parseInt(string)``: returns ``parseInt``
+''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* parseLong: Long 1:1 required
+* ``parseInt`` (``Integer``)
-pgNearest(geometry, num_features): pgNearest
+``parseLong(string)``: returns ``parseLong``
''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``string`` (``String``) required
-* num_features: Integer 1:1 required
+* ``parseLong`` (``Long``)
-* pgNearest: Boolean 1:1 required
+``pgNearest(geometry, num_features)``: returns ``pgNearest``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-pi(): pi
-''''''''
+* ``geometry`` (``Geometry``) required
-* pi: Double 1:1 required
+* ``num_features`` (``Integer``) required
-pointN(geometry, index): pointN
-'''''''''''''''''''''''''''''''
+* ``pgNearest`` (``Boolean``)
-* geometry: Geometry 1:1 required
+``pi()``: returns ``pi``
+''''''''''''''''''''''''
-* index: Integer 1:1 required
+* ``pi`` (``Double``)
-* pointN: Geometry 1:1 required
+``pointN(geometry, index)``: returns ``pointN``
+'''''''''''''''''''''''''''''''''''''''''''''''
-pow(base, exponent): power
-''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* base: Number 1:1 required
+* ``index`` (``Integer``) required
-* exponent: Number 1:1 required
+* ``pointN`` (``Geometry``)
-* power: Double 1:1 required
+``pow(base, exponent)``: returns ``power``
+''''''''''''''''''''''''''''''''''''''''''
-property(propertyName): propertyValue
-'''''''''''''''''''''''''''''''''''''
+* ``base`` (``Number``) required
-* propertyName: String 1:1 required
+* ``exponent`` (``Number``) required
-* propertyValue
+* ``power`` (``Double``)
-random(): random
-''''''''''''''''
+``property(propertyName)``: returns ``propertyValue``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
-* random: Double 1:1 required
+* ``propertyName`` (``String``) required
-relate(geometry1, geometry2): relate
-''''''''''''''''''''''''''''''''''''
+* ``propertyValue``
-* geometry1: Geometry 1:1 required
+``random()``: returns ``random``
+''''''''''''''''''''''''''''''''
-* geometry2: Geometry 1:1 required
+* ``random`` (``Double``)
-* relate: String 1:1 required
+``relate(geometry1, geometry2)``: returns ``relate``
+''''''''''''''''''''''''''''''''''''''''''''''''''''
-relatePattern(geometry, geometry, pattern): related
-'''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry1`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``geometry2`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``relate`` (``String``)
-* pattern: String 1:1 required
+``relatePattern(geometry, geometry, pattern)``: returns ``related``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* related: Boolean 1:1 required
+* ``geometry`` (``Geometry``) required
-rescaleToPixels(value, defaultUnit, scaleFactor, rescalingMode): rescaleToPixels
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* value: String 1:1 required
+* ``pattern`` (``String``) required
-* defaultUnit: Unit 1:1 required
+* ``related`` (``Boolean``)
-* scaleFactor: Double 1:1 required
+``rescaleToPixels(value, defaultUnit, scaleFactor, rescalingMode)``: returns ``rescaleToPixels``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* rescalingMode: RescalingMode 0:1 optional
+* ``value`` (``String``) required
-* rescaleToPixels: String 1:1 required
+* ``defaultUnit`` (``Unit``) required
-rint(double): rounded
-'''''''''''''''''''''
+* ``scaleFactor`` (``Double``) required
-* double: Number 1:1 required
+* ``rescalingMode`` (``RescalingMode``) optional
-* rounded: Double 1:1 required
+* ``rescaleToPixels`` (``String``)
-round(number): float
-''''''''''''''''''''
+``rint(double)``: returns ``rounded``
+'''''''''''''''''''''''''''''''''''''
-* number: Number 1:1 required
+* ``double`` (``Number``) required
-* float: Float 1:1 required
+* ``rounded`` (``Double``)
-roundDouble(number): rounded
-''''''''''''''''''''''''''''
+``round(number)``: returns ``float``
+''''''''''''''''''''''''''''''''''''
-* number: Number 1:1 required
+* ``number`` (``Number``) required
-* rounded: Double 1:1 required
+* ``float`` (``Float``)
-round_2(number): long
-'''''''''''''''''''''
+``roundDouble(number)``: returns ``rounded``
+''''''''''''''''''''''''''''''''''''''''''''
-* number: Number 1:1 required
+* ``number`` (``Number``) required
-* long: Long 1:1 required
+* ``rounded`` (``Double``)
-saturate(color, amount, method): result
-'''''''''''''''''''''''''''''''''''''''
+``round_2(number)``: returns ``long``
+'''''''''''''''''''''''''''''''''''''
-* color: Color 1:1 required
+* ``number`` (``Number``) required
-* amount: Float 1:1 required
+* ``long`` (``Long``)
-* method: Method 0:1 optional
+``saturate(color, amount, method)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* result: Color 1:1 required
+* ``color`` (``Color``) required
-setCRS(geometry, CRS): setCRS
-'''''''''''''''''''''''''''''
+* ``amount`` (``Float``) required
-* geometry: Geometry 1:1 required
+* ``method`` (``Method``) optional
-* CRS: String 1:1 required
+* ``result`` (``Color``)
-* setCRS: Geometry 1:1 required
+``setCRS(geometry, CRS)``: returns ``setCRS``
+'''''''''''''''''''''''''''''''''''''''''''''
-shade(color, weight): result
-''''''''''''''''''''''''''''
+* ``geometry`` (``Geometry``) required
-* color: Color 1:1 required
+* ``CRS`` (``String``) required
-* weight: Double 1:1 required
+* ``setCRS`` (``Geometry``)
-* result: Color 1:1 required
+``shade(color, weight)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''
-sin(radians): sine
-''''''''''''''''''
+* ``color`` (``Color``) required
-* radians: Number 1:1 required
+* ``weight`` (``Double``) required
-* sine: Double 1:1 required
+* ``result`` (``Color``)
-size(source): result
-''''''''''''''''''''
+``sin(radians)``: returns ``sine``
+''''''''''''''''''''''''''''''''''
-* source: Collection 1:1 required
+* ``radians`` (``Number``) required
-* result: Integer 1:1 required
+* ``sine`` (``Double``)
-spin(color, amount): result
-'''''''''''''''''''''''''''
+``spin(color, amount)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''
-* color: Color 1:1 required
+* ``color`` (``Color``) required
-* amount: Double 1:1 required
+* ``amount`` (``Double``) required
-* result: Color 1:1 required
+* ``result`` (``Color``)
-sqrt(number): root
-''''''''''''''''''
+``sqrt(number)``: returns ``root``
+''''''''''''''''''''''''''''''''''
-* number: Number 1:1 required
+* ``number`` (``Number``) required
-* root: Double 1:1 required
+* ``root`` (``Double``)
-startAngle(linestring): degrees
-'''''''''''''''''''''''''''''''
+``startAngle(linestring)``: returns ``degrees``
+'''''''''''''''''''''''''''''''''''''''''''''''
-* linestring: LineString 1:1 required
+* ``linestring`` (``LineString``) required
-* degrees: Double 1:1 required
+* ``degrees`` (``Double``)
-startPoint(linestring): point
-'''''''''''''''''''''''''''''
+``startPoint(linestring)``: returns ``point``
+'''''''''''''''''''''''''''''''''''''''''''''
-* linestring: LineString 1:1 required
+* ``linestring`` (``LineString``) required
-* point: Point 1:1 required
+* ``point`` (``Point``)
-strAbbreviate(string, lower, upper, appendTo): string
-'''''''''''''''''''''''''''''''''''''''''''''''''''''
+``strAbbreviate(string, lower, upper, appendTo)``: returns ``string``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* lower: Integer 1:1 required
+* ``lower`` (``Integer``) required
-* upper: Integer 1:1 required
+* ``upper`` (``Integer``) required
-* appendTo: String 1:1 required
+* ``appendTo`` (``String``) required
-* string: String 1:1 required
+* ``string`` (``String``)
-strCapitalize(string): string
-'''''''''''''''''''''''''''''
+``strCapitalize(string)``: returns ``string``
+'''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* string: String 1:1 required
+* ``string`` (``String``)
-strConcat(string1, string2): strConcat
-''''''''''''''''''''''''''''''''''''''
+``strConcat(string1, string2)``: returns ``strConcat``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string1: String 1:1 required
+* ``string1`` (``String``) required
-* string2: String 1:1 required
+* ``string2`` (``String``) required
-* strConcat: String 1:1 required
+* ``strConcat`` (``String``)
-strDefaultIfBlank(string, default): string
-''''''''''''''''''''''''''''''''''''''''''
+``strDefaultIfBlank(string, default)``: returns ``string``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* default: String 1:1 required
+* ``default`` (``String``) required
-* string: String 1:1 required
+* ``string`` (``String``)
-strEndsWith(String, postfix): endsWith
-''''''''''''''''''''''''''''''''''''''
+``strEndsWith(String, postfix)``: returns ``endsWith``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* String: String 1:1 required
+* ``String`` (``String``) required
-* postfix: String 1:1 required
+* ``postfix`` (``String``) required
-* endsWith: Boolean 1:1 required
+* ``endsWith`` (``Boolean``)
-strEqualsIgnoreCase(string, lookup): equals
-'''''''''''''''''''''''''''''''''''''''''''
+``strEqualsIgnoreCase(string, lookup)``: returns ``equals``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* lookup: String 1:1 required
+* ``lookup`` (``String``) required
-* equals: Boolean 1:1 required
+* ``equals`` (``Boolean``)
-strIndexOf(String, lookup): index
-'''''''''''''''''''''''''''''''''
+``strIndexOf(String, lookup)``: returns ``index``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-* String: String 1:1 required
+* ``String`` (``String``) required
-* lookup: String 1:1 required
+* ``lookup`` (``String``) required
-* index: Integer 1:1 required
+* ``index`` (``Integer``)
-strLastIndexOf(String, lookup): index
-'''''''''''''''''''''''''''''''''''''
+``strLastIndexOf(String, lookup)``: returns ``index``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
-* String: String 1:1 required
+* ``String`` (``String``) required
-* lookup: String 1:1 required
+* ``lookup`` (``String``) required
-* index: Integer 1:1 required
+* ``index`` (``Integer``)
-strLength(string): length
-'''''''''''''''''''''''''
+``strLength(string)``: returns ``length``
+'''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* length: Integer 1:1 required
+* ``length`` (``Integer``)
-strMatches(string, regex): match
-''''''''''''''''''''''''''''''''
+``strMatches(string, regex)``: returns ``match``
+''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* regex: String 1:1 required
+* ``regex`` (``String``) required
-* match: Boolean 1:1 required
+* ``match`` (``Boolean``)
-strPosition(string, lookup, method): string
-'''''''''''''''''''''''''''''''''''''''''''
+``strPosition(string, lookup, method)``: returns ``string``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* lookup: String 1:1 required
+* ``lookup`` (``String``) required
-* method: String 1:1 required
+* ``method`` (``String``) required
-* string: String 1:1 required
+* ``string`` (``String``)
-strReplace(string, search, replace, all): string
-''''''''''''''''''''''''''''''''''''''''''''''''
+``strReplace(string, search, replace, all)``: returns ``string``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* search: String 1:1 required
+* ``search`` (``String``) required
-* replace: String 1:1 required
+* ``replace`` (``String``) required
-* all: Boolean 1:1 required
+* ``all`` (``Boolean``) required
-* string: String 1:1 required
+* ``string`` (``String``)
-strStartsWith(string, prefix): starts with
-''''''''''''''''''''''''''''''''''''''''''
+``strStartsWith(string, prefix)``: returns ``starts with``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* prefix: String 1:1 required
+* ``prefix`` (``String``) required
-* starts with: Boolean 1:1 required
+* ``starts with`` (``Boolean``)
-strStripAccents(string): string
-'''''''''''''''''''''''''''''''
+``strStripAccents(string)``: returns ``string``
+'''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* string: String 1:1 required
+* ``string`` (``String``)
-strSubstring(string, beginIndex, endIndex): substring
-'''''''''''''''''''''''''''''''''''''''''''''''''''''
+``strSubstring(string, beginIndex, endIndex)``: returns ``substring``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* beginIndex: Integer 1:1 required
+* ``beginIndex`` (``Integer``) required
-* endIndex: Integer 1:1 required
+* ``endIndex`` (``Integer``) required
-* substring: String 1:1 required
+* ``substring`` (``String``)
-strSubstringStart(string, beginIndex): substring
-''''''''''''''''''''''''''''''''''''''''''''''''
+``strSubstringStart(string, beginIndex)``: returns ``substring``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* beginIndex: Integer 1:1 required
+* ``beginIndex`` (``Integer``) required
-* substring: String 1:1 required
+* ``substring`` (``String``)
-strToLowerCase(string): lowercase
-'''''''''''''''''''''''''''''''''
+``strToLowerCase(string)``: returns ``lowercase``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* lowercase: String 1:1 required
+* ``lowercase`` (``String``)
-strToUpperCase(string): uppercase
-'''''''''''''''''''''''''''''''''
+``strToUpperCase(string)``: returns ``uppercase``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* uppercase: String 1:1 required
+* ``uppercase`` (``String``)
-strTrim(string): trim
-'''''''''''''''''''''
+``strTrim(string)``: returns ``trim``
+'''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* trim: String 1:1 required
+* ``trim`` (``String``)
-strTrim2(string, method, character): trim
-'''''''''''''''''''''''''''''''''''''''''
+``strTrim2(string, method, character)``: returns ``trim``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* string: String 1:1 required
+* ``string`` (``String``) required
-* method: String 1:1 required
+* ``method`` (``String``) required
-* character: String 1:1 required
+* ``character`` (``String``) required
-* trim: String 1:1 required
+* ``trim`` (``String``)
-strURLEncode(encodeable, formUrlEncode): strURLEncode
-'''''''''''''''''''''''''''''''''''''''''''''''''''''
+``strURLEncode(encodeable, formUrlEncode)``: returns ``strURLEncode``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* encodeable: String 1:1 required
+* ``encodeable`` (``String``) required
-* formUrlEncode: Boolean 0:1 optional
+* ``formUrlEncode`` (``Boolean``) optional
-* strURLEncode: String 1:1 required
+* ``strURLEncode`` (``String``)
-stringTemplate(input, pattern, template, defaultValue): return
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``stringTemplate(input, pattern, template, defaultValue)``: returns ``return``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* input
+* ``input``
-* pattern
+* ``pattern``
-* template
+* ``template``
-* defaultValue
+* ``defaultValue``
-* return
+* ``return``
-symDifference(geometry, geometry): symetric difference
-''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``symDifference(geometry, geometry)``: returns ``symetric difference``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* symetric difference: Geometry 1:1 required
+* ``symetric difference`` (``Geometry``)
-tan(radians): tan
-'''''''''''''''''
+``tan(radians)``: returns ``tan``
+'''''''''''''''''''''''''''''''''
-* radians: Number 1:1 required
+* ``radians`` (``Number``) required
-* tan: Double 1:1 required
+* ``tan`` (``Double``)
-tint(color, weight): result
-'''''''''''''''''''''''''''
+``tint(color, weight)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''
-* color: Color 1:1 required
+* ``color`` (``Color``) required
-* weight: Double 1:1 required
+* ``weight`` (``Double``) required
-* result: Color 1:1 required
+* ``result`` (``Color``)
-toDegrees(radians): degrees
-'''''''''''''''''''''''''''
+``toDegrees(radians)``: returns ``degrees``
+'''''''''''''''''''''''''''''''''''''''''''
-* radians: Number 1:1 required
+* ``radians`` (``Number``) required
-* degrees: Double 1:1 required
+* ``degrees`` (``Double``)
-toRadians(degree): radians
-''''''''''''''''''''''''''
+``toRadians(degree)``: returns ``radians``
+''''''''''''''''''''''''''''''''''''''''''
-* degree: Number 1:1 required
+* ``degree`` (``Number``) required
-* radians: Double 1:1 required
+* ``radians`` (``Double``)
-toWKT(geometry): wkt
-''''''''''''''''''''
+``toWKT(geometry)``: returns ``wkt``
+''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* wkt: String 1:1 required
+* ``wkt`` (``String``)
-touches(geometry, geometry): touches
-''''''''''''''''''''''''''''''''''''
+``touches(geometry, geometry)``: returns ``touches``
+''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* touches: Boolean 1:1 required
+* ``touches`` (``Boolean``)
-union(geometry, geometry): union
-''''''''''''''''''''''''''''''''
+``union(geometry, geometry)``: returns ``union``
+''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* union: Geometry 1:1 required
+* ``union`` (``Geometry``)
-vertices(geometry): vertices
-''''''''''''''''''''''''''''
+``vertices(geometry)``: returns ``vertices``
+''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* vertices: MultiPoint 1:1 required
+* ``vertices`` (``MultiPoint``)
-within(geometry, geometry): within
-''''''''''''''''''''''''''''''''''
+``within(geometry, geometry)``: returns ``within``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* within: Boolean 1:1 required
+* ``within`` (``Boolean``)
-ProcessFunctionFactory
-^^^^^^^^^^^^^^^^^^^^^^
+``ProcessFunctionFactory``
+^^^^^^^^^^^^^^^^^^^^^^^^^^
-May 03, 2019 12:32:04 PM org.geotools.image.ImageWorker
+Sep 10, 2019 5:15:28 PM org.geotools.image.ImageWorker
INFO: Warp/affine reduction enabled: true
Contains 102 functions.
-AddCoverages(coverageA, coverageB): result
-''''''''''''''''''''''''''''''''''''''''''
+``AddCoverages(coverageA, coverageB)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverageA: GridCoverage2D 1:1 required
+* ``coverageA`` (``GridCoverage2D``) required
-* coverageB: GridCoverage2D 1:1 required
+* ``coverageB`` (``GridCoverage2D``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Affine(coverage, scalex, scaley, shearx, sheary, translatex, translatey, nodata, interpolation): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``Affine(coverage, scalex, scaley, shearx, sheary, translatex, translatey, nodata, interpolation)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 1:1 required
+* ``coverage`` (``GridCoverage2D``) required
-* scalex: Double 0:1 optional
+* ``scalex`` (``Double``) optional
-* scaley: Double 0:1 optional
+* ``scaley`` (``Double``) optional
-* shearx: Double 0:1 optional
+* ``shearx`` (``Double``) optional
-* sheary: Double 0:1 optional
+* ``sheary`` (``Double``) optional
-* translatex: Double 0:1 optional
+* ``translatex`` (``Double``) optional
-* translatey: Double 0:1 optional
+* ``translatey`` (``Double``) optional
-* nodata: double 0:unbounded
+* ``nodata`` (``double``)
-* interpolation: Interpolation 0:1 optional
+* ``interpolation`` (``Interpolation``) optional
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Aggregate(features, aggregationAttribute, function, singlePass, groupByAttributes): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``Aggregate(features, aggregationAttribute, function, singlePass, groupByAttributes)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* aggregationAttribute: String 0:1 optional
+* ``aggregationAttribute`` (``String``) optional
-* function: AggregationFunction 0:unbounded
+* ``function`` (``AggregationFunction``)
-* singlePass: Boolean 1:1 required
+* ``singlePass`` (``Boolean``) required
-* groupByAttributes: String 0:unbounded
+* ``groupByAttributes`` (``String``)
-* result: Results 1:1 required
+* ``result`` (``Results``)
-AreaGrid(envelope, width, height): result
-'''''''''''''''''''''''''''''''''''''''''
+``AreaGrid(envelope, width, height)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* envelope: ReferencedEnvelope 1:1 required
+* ``envelope`` (``ReferencedEnvelope``) required
-* width: Integer 1:1 required
+* ``width`` (``Integer``) required
-* height: Integer 1:1 required
+* ``height`` (``Integer``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-BandMerge(coverages, roi, transformChoice, index): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``BandMerge(coverages, roi, transformChoice, index)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverages: GridCoverage2D 1:unbounded required
+* ``coverages`` (``GridCoverage2D``) required
-* roi: Geometry 0:1 optional
+* ``roi`` (``Geometry``) optional
-* transformChoice: String 0:1 optional
+* ``transformChoice`` (``String``) optional
-* index: Integer 0:1 optional
+* ``index`` (``Integer``) optional
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-BandSelect(coverage, SampleDimensions, VisibleSampleDimension): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``BandSelect(coverage, SampleDimensions, VisibleSampleDimension)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 1:1 required
+* ``coverage`` (``GridCoverage2D``) required
-* SampleDimensions: int 1:unbounded required
+* ``SampleDimensions`` (``int``) required
-* VisibleSampleDimension: Integer 0:1 optional
+* ``VisibleSampleDimension`` (``Integer``) optional
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-BarnesSurface(data, valueAttr, dataLimit, scale, convergence, passes, minObservations, maxObservationDistance, noDataValue, pixelsPerCell, queryBuffer, outputBBOX, outputWidth, outputHeight): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``BarnesSurface(data, valueAttr, dataLimit, scale, convergence, passes, minObservations, maxObservationDistance, noDataValue, pixelsPerCell, queryBuffer, outputBBOX, outputWidth, outputHeight)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: SimpleFeatureCollection 1:1 required
+* ``data`` (``SimpleFeatureCollection``) required
-* valueAttr: String 1:1 required
+* ``valueAttr`` (``String``) required
-* dataLimit: Integer 0:1 optional
+* ``dataLimit`` (``Integer``) optional
-* scale: Double 1:1 required
+* ``scale`` (``Double``) required
-* convergence: Double 0:1 optional
+* ``convergence`` (``Double``) optional
-* passes: Integer 0:1 optional
+* ``passes`` (``Integer``) optional
-* minObservations: Integer 0:1 optional
+* ``minObservations`` (``Integer``) optional
-* maxObservationDistance: Double 0:1 optional
+* ``maxObservationDistance`` (``Double``) optional
-* noDataValue: Double 0:1 optional
+* ``noDataValue`` (``Double``) optional
-* pixelsPerCell: Integer 0:1 optional
+* ``pixelsPerCell`` (``Integer``) optional
-* queryBuffer: Double 0:1 optional
+* ``queryBuffer`` (``Double``) optional
-* outputBBOX: ReferencedEnvelope 1:1 required
+* ``outputBBOX`` (``ReferencedEnvelope``) required
-* outputWidth: Integer 1:1 required
+* ``outputWidth`` (``Integer``) required
-* outputHeight: Integer 1:1 required
+* ``outputHeight`` (``Integer``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Bounds(features): bounds
-''''''''''''''''''''''''
+``Bounds(features)``: returns ``bounds``
+''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* bounds: ReferencedEnvelope 1:1 required
+* ``bounds`` (``ReferencedEnvelope``)
-BufferFeatureCollection(features, distance, attributeName): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``BufferFeatureCollection(features, distance, attributeName)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* distance: Double 1:1 required
+* ``distance`` (``Double``) required
-* attributeName: String 0:1 optional
+* ``attributeName`` (``String``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Centroid(features): result
-''''''''''''''''''''''''''
+``Centroid(features)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-ClassifyByRange(features, classifyOnAttribute, thresholds, outputValues, classifier, classes, include, outputAttribute, outputType): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``ClassifyByRange(features, classifyOnAttribute, thresholds, outputValues, classifier, classes, include, outputAttribute, outputType)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* classifyOnAttribute: String 1:1 required
+* ``classifyOnAttribute`` (``String``) required
-* thresholds: String 0:unbounded
+* ``thresholds`` (``String``)
-* outputValues: String 0:unbounded
+* ``outputValues`` (``String``)
-* classifier: String 0:1 optional
+* ``classifier`` (``String``) optional
-* classes: Integer 0:1 optional
+* ``classes`` (``Integer``) optional
-* include: Boolean 0:1 optional
+* ``include`` (``Boolean``) optional
-* outputAttribute: String 0:1 optional
+* ``outputAttribute`` (``String``) optional
-* outputType: String 0:1 optional
+* ``outputType`` (``String``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Clip(features, clip, preserveZ): result
-'''''''''''''''''''''''''''''''''''''''
+``Clip(features, clip, preserveZ)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* clip: Geometry 1:1 required
+* ``clip`` (``Geometry``) required
-* preserveZ: Boolean 0:1 optional
+* ``preserveZ`` (``Boolean``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-CollectGeometries(features): result
-'''''''''''''''''''''''''''''''''''
+``CollectGeometries(features)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* result: GeometryCollection 1:1 required
+* ``result`` (``GeometryCollection``)
-Contour(data, band, levels, interval, simplify, smooth, roi): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``Contour(data, band, levels, interval, simplify, smooth, roi)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: GridCoverage2D 1:1 required
+* ``data`` (``GridCoverage2D``) required
-* band: Integer 0:1 optional
+* ``band`` (``Integer``) optional
-* levels: double 0:unbounded
+* ``levels`` (``double``)
-* interval: Double 0:1 optional
+* ``interval`` (``Double``) optional
-* simplify: Boolean 0:1 optional
+* ``simplify`` (``Boolean``) optional
-* smooth: Boolean 0:1 optional
+* ``smooth`` (``Boolean``) optional
-* roi: Geometry 0:1 optional
+* ``roi`` (``Geometry``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-ConvolveCoverage(data, kernel, kernelRadius, kernelWidth, kernelHeight): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``ConvolveCoverage(data, kernel, kernelRadius, kernelWidth, kernelHeight)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: GridCoverage2D 1:1 required
+* ``data`` (``GridCoverage2D``) required
-* kernel: KernelJAI 0:1 optional
+* ``kernel`` (``KernelJAI``) optional
-* kernelRadius: Integer 0:1 optional
+* ``kernelRadius`` (``Integer``) optional
-* kernelWidth: Integer 0:1 optional
+* ``kernelWidth`` (``Integer``) optional
-* kernelHeight: Integer 0:1 optional
+* ``kernelHeight`` (``Integer``) optional
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Count(features): result
-'''''''''''''''''''''''
+``Count(features)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* result: Number 1:1 required
+* ``result`` (``Number``)
-CoverageClassStats(coverage, stats, band, classes, method, noData): results
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``CoverageClassStats(coverage, stats, band, classes, method, noData)``: returns ``results``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 1:1 required
+* ``coverage`` (``GridCoverage2D``) required
-* stats: Statistic 0:unbounded
+* ``stats`` (``Statistic``)
-* band: Integer 0:1 optional
+* ``band`` (``Integer``) optional
-* classes: Integer 0:1 optional
+* ``classes`` (``Integer``) optional
-* method: ClassificationMethod 0:1 optional
+* ``method`` (``ClassificationMethod``) optional
-* noData: Double 0:1 optional
+* ``noData`` (``Double``) optional
-* results: Results 1:1 required
+* ``results`` (``Results``)
-CropCoverage(coverage, cropShape): result
-'''''''''''''''''''''''''''''''''''''''''
+``CropCoverage(coverage, cropShape)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 1:1 required
+* ``coverage`` (``GridCoverage2D``) required
-* cropShape: Geometry 1:1 required
+* ``cropShape`` (``Geometry``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Feature(geometry, crs, typeName): result
-''''''''''''''''''''''''''''''''''''''''
+``Feature(geometry, crs, typeName)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* crs: CoordinateReferenceSystem 1:1 required
+* ``crs`` (``CoordinateReferenceSystem``) required
-* typeName: String 1:1 required
+* ``typeName`` (``String``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-FeatureClassStats(features, attribute, stats, classes, method, noData): results
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``FeatureClassStats(features, attribute, stats, classes, method, noData)``: returns ``results``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* attribute: String 1:1 required
+* ``attribute`` (``String``) required
-* stats: Statistic 0:unbounded
+* ``stats`` (``Statistic``)
-* classes: Integer 0:1 optional
+* ``classes`` (``Integer``) optional
-* method: ClassificationMethod 0:1 optional
+* ``method`` (``ClassificationMethod``) optional
-* noData: Double 0:1 optional
+* ``noData`` (``Double``) optional
-* results: Results 1:1 required
+* ``results`` (``Results``)
-Grid(bounds, width, height, vertexSpacing, mode): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``Grid(bounds, width, height, vertexSpacing, mode)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* bounds: ReferencedEnvelope 1:1 required
+* ``bounds`` (``ReferencedEnvelope``) required
-* width: Double 1:1 required
+* ``width`` (``Double``) required
-* height: Double 0:1 optional
+* ``height`` (``Double``) optional
-* vertexSpacing: Double 0:1 optional
+* ``vertexSpacing`` (``Double``) optional
-* mode: GridMode 1:1 required
+* ``mode`` (``GridMode``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Heatmap(data, radiusPixels, weightAttr, pixelsPerCell, outputBBOX, outputWidth, outputHeight): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``Heatmap(data, radiusPixels, weightAttr, pixelsPerCell, outputBBOX, outputWidth, outputHeight)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: SimpleFeatureCollection 1:1 required
+* ``data`` (``SimpleFeatureCollection``) required
-* radiusPixels: Integer 1:1 required
+* ``radiusPixels`` (``Integer``) required
-* weightAttr: String 0:1 optional
+* ``weightAttr`` (``String``) optional
-* pixelsPerCell: Integer 0:1 optional
+* ``pixelsPerCell`` (``Integer``) optional
-* outputBBOX: ReferencedEnvelope 1:1 required
+* ``outputBBOX`` (``ReferencedEnvelope``) required
-* outputWidth: Integer 1:1 required
+* ``outputWidth`` (``Integer``) required
-* outputHeight: Integer 1:1 required
+* ``outputHeight`` (``Integer``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-InclusionFeatureCollection(first, second): result
-'''''''''''''''''''''''''''''''''''''''''''''''''
+``InclusionFeatureCollection(first, second)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* first: SimpleFeatureCollection 1:1 required
+* ``first`` (``SimpleFeatureCollection``) required
-* second: SimpleFeatureCollection 1:1 required
+* ``second`` (``SimpleFeatureCollection``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-IntersectionFeatureCollection(first feature collection, second feature collection, first attributes to retain, second attributes to retain, intersectionMode, percentagesEnabled, areasEnabled): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``IntersectionFeatureCollection(first feature collection, second feature collection, first attributes to retain, second attributes to retain, intersectionMode, percentagesEnabled, areasEnabled)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* first feature collection: SimpleFeatureCollection 1:1 required
+* ``first feature collection`` (``SimpleFeatureCollection``) required
-* second feature collection: SimpleFeatureCollection 1:1 required
+* ``second feature collection`` (``SimpleFeatureCollection``) required
-* first attributes to retain: String 0:unbounded
+* ``first attributes to retain`` (``String``)
-* second attributes to retain: String 0:unbounded
+* ``second attributes to retain`` (``String``)
-* intersectionMode: IntersectionMode 0:1 optional
+* ``intersectionMode`` (``IntersectionMode``) optional
-* percentagesEnabled: Boolean 0:1 optional
+* ``percentagesEnabled`` (``Boolean``) optional
-* areasEnabled: Boolean 0:1 optional
+* ``areasEnabled`` (``Boolean``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Jiffle(coverage, script, destName, sourceName, outputType): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``Jiffle(coverage, script, destName, sourceName, outputType)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 0:unbounded
+* ``coverage`` (``GridCoverage2D``)
-* script: String 1:1 required
+* ``script`` (``String``) required
-* destName: String 0:1 optional
+* ``destName`` (``String``) optional
-* sourceName: String 0:unbounded
+* ``sourceName`` (``String``)
-* outputType: DataType 0:1 optional
+* ``outputType`` (``DataType``) optional
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-LRSGeocode(features, from_measure_attb, to_measure_attb, measure): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``LRSGeocode(features, from_measure_attb, to_measure_attb, measure)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* from_measure_attb: String 1:1 required
+* ``from_measure_attb`` (``String``) required
-* to_measure_attb: String 1:1 required
+* ``to_measure_attb`` (``String``) required
-* measure: Double 1:1 required
+* ``measure`` (``Double``) required
-* result: FeatureCollection 1:1 required
+* ``result`` (``FeatureCollection``)
-LRSMeasure(features, from_measure_attb, to_measure_attb, point, crs): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``LRSMeasure(features, from_measure_attb, to_measure_attb, point, crs)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* from_measure_attb: String 1:1 required
+* ``from_measure_attb`` (``String``) required
-* to_measure_attb: String 1:1 required
+* ``to_measure_attb`` (``String``) required
-* point: Point 1:1 required
+* ``point`` (``Point``) required
-* crs: CoordinateReferenceSystem 0:1 optional
+* ``crs`` (``CoordinateReferenceSystem``) optional
-* result: FeatureCollection 1:1 required
+* ``result`` (``FeatureCollection``)
-LRSSegment(features, from_measure_attb, to_measure_attb, from_measure, to_measure): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``LRSSegment(features, from_measure_attb, to_measure_attb, from_measure, to_measure)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* from_measure_attb: String 1:1 required
+* ``from_measure_attb`` (``String``) required
-* to_measure_attb: String 1:1 required
+* ``to_measure_attb`` (``String``) required
-* from_measure: Double 1:1 required
+* ``from_measure`` (``Double``) required
-* to_measure: Double 1:1 required
+* ``to_measure`` (``Double``) required
-* result: FeatureCollection 1:1 required
+* ``result`` (``FeatureCollection``)
-MultiplyCoverages(coverageA, coverageB): result
-'''''''''''''''''''''''''''''''''''''''''''''''
+``MultiplyCoverages(coverageA, coverageB)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverageA: GridCoverage2D 1:1 required
+* ``coverageA`` (``GridCoverage2D``) required
-* coverageB: GridCoverage2D 1:1 required
+* ``coverageB`` (``GridCoverage2D``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Nearest(features, point, crs): result
-'''''''''''''''''''''''''''''''''''''
+``Nearest(features, point, crs)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* point: Point 1:1 required
+* ``point`` (``Point``) required
-* crs: CoordinateReferenceSystem 0:1 optional
+* ``crs`` (``CoordinateReferenceSystem``) optional
-* result: FeatureCollection 1:1 required
+* ``result`` (``FeatureCollection``)
-NormalizeCoverage(data): result
-'''''''''''''''''''''''''''''''
+``NormalizeCoverage(data)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''
-* data: GridCoverage2D 1:1 required
+* ``data`` (``GridCoverage2D``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-PointBuffers(center, crs, distances, quadrantSegments): buffers
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``PointBuffers(center, crs, distances, quadrantSegments)``: returns ``buffers``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* center: Point 1:1 required
+* ``center`` (``Point``) required
-* crs: CoordinateReferenceSystem 0:1 optional
+* ``crs`` (``CoordinateReferenceSystem``) optional
-* distances: double 0:unbounded
+* ``distances`` (``double``)
-* quadrantSegments: Integer 0:1 optional
+* ``quadrantSegments`` (``Integer``) optional
-* buffers: SimpleFeatureCollection 1:1 required
+* ``buffers`` (``SimpleFeatureCollection``)
-PointStacker(data, cellSize, weightClusterPosition, normalize, preserveLocation, outputBBOX, outputWidth, outputHeight): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``PointStacker(data, cellSize, weightClusterPosition, normalize, preserveLocation, outputBBOX, outputWidth, outputHeight)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: SimpleFeatureCollection 1:1 required
+* ``data`` (``SimpleFeatureCollection``) required
-* cellSize: Integer 1:1 required
+* ``cellSize`` (``Integer``) required
-* weightClusterPosition: Boolean 1:1 required
+* ``weightClusterPosition`` (``Boolean``) required
-* normalize: Boolean 1:1 required
+* ``normalize`` (``Boolean``) required
-* preserveLocation: PreserveLocation 0:1 optional
+* ``preserveLocation`` (``PreserveLocation``) optional
-* outputBBOX: ReferencedEnvelope 1:1 required
+* ``outputBBOX`` (``ReferencedEnvelope``) required
-* outputWidth: Integer 1:1 required
+* ``outputWidth`` (``Integer``) required
-* outputHeight: Integer 1:1 required
+* ``outputHeight`` (``Integer``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-PolyLabeller(polygon, precision): result
-''''''''''''''''''''''''''''''''''''''''
+``PolyLabeller(polygon, precision)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* polygon: Geometry 1:1 required
+* ``polygon`` (``Geometry``) required
-* precision: Double 1:1 required
+* ``precision`` (``Double``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-PolygonExtraction(data, band, insideEdges, roi, nodata, ranges): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``PolygonExtraction(data, band, insideEdges, roi, nodata, ranges)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: GridCoverage2D 1:1 required
+* ``data`` (``GridCoverage2D``) required
-* band: Integer 0:1 optional
+* ``band`` (``Integer``) optional
-* insideEdges: Boolean 0:1 optional
+* ``insideEdges`` (``Boolean``) optional
-* roi: Geometry 0:1 optional
+* ``roi`` (``Geometry``) optional
-* nodata: Number 0:unbounded
+* ``nodata`` (``Number``)
-* ranges: Range 0:unbounded
+* ``ranges`` (``Range``)
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Query(features, attribute, filter): result
-''''''''''''''''''''''''''''''''''''''''''
+``Query(features, attribute, filter)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* attribute: String 0:unbounded
+* ``attribute`` (``String``)
-* filter: Filter 0:1 optional
+* ``filter`` (``Filter``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-RangeLookup(coverage, band, ranges, outputPixelValues, noData): reclassified
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``RangeLookup(coverage, band, ranges, outputPixelValues, noData)``: returns ``reclassified``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 1:1 required
+* ``coverage`` (``GridCoverage2D``) required
-* band: Integer 0:1 optional
+* ``band`` (``Integer``) optional
-* ranges: Range 0:unbounded
+* ``ranges`` (``Range``)
-* outputPixelValues: int 0:unbounded
+* ``outputPixelValues`` (``int``)
-* noData: Double 0:1 optional
+* ``noData`` (``Double``) optional
-* reclassified: GridCoverage2D 1:1 required
+* ``reclassified`` (``GridCoverage2D``)
-RasterAsPointCollection(data, targetCRS, scale, interpolation, emisphere): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``RasterAsPointCollection(data, targetCRS, scale, interpolation, emisphere)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: GridCoverage2D 1:1 required
+* ``data`` (``GridCoverage2D``) required
-* targetCRS: CoordinateReferenceSystem 0:1 optional
+* ``targetCRS`` (``CoordinateReferenceSystem``) optional
-* scale: Float 0:1 optional
+* ``scale`` (``Float``) optional
-* interpolation: Interpolation 0:1 optional
+* ``interpolation`` (``Interpolation``) optional
-* emisphere: Boolean 0:1 optional
+* ``emisphere`` (``Boolean``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-RasterZonalStatistics(data, band, zones, classification): statistics
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``RasterZonalStatistics(data, band, zones, classification)``: returns ``statistics``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: GridCoverage2D 1:1 required
+* ``data`` (``GridCoverage2D``) required
-* band: Integer 0:1 optional
+* ``band`` (``Integer``) optional
-* zones: SimpleFeatureCollection 1:1 required
+* ``zones`` (``SimpleFeatureCollection``) required
-* classification: GridCoverage2D 0:1 optional
+* ``classification`` (``GridCoverage2D``) optional
-* statistics: SimpleFeatureCollection 1:1 required
+* ``statistics`` (``SimpleFeatureCollection``)
-RasterZonalStatistics2(source, bands, zones, classifier, nodata, mask, useROIAccessor, roi, statistics, minbounds, maxbounds, numbins, rangeData, localStats): zonal statistics
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``RasterZonalStatistics2(source, bands, zones, classifier, nodata, mask, useROIAccessor, roi, statistics, minbounds, maxbounds, numbins, rangeData, localStats)``: returns ``zonal statistics``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* source: GridCoverage2D 1:1 required
+* ``source`` (``GridCoverage2D``) required
-* bands: int 0:unbounded
+* ``bands`` (``int``)
-* zones: Object 0:unbounded
+* ``zones`` (``Object``)
-* classifier: GridCoverage2D 0:1 optional
+* ``classifier`` (``GridCoverage2D``) optional
-* nodata: Range 1:1 required
+* ``nodata`` (``Range``) required
-* mask: Geometry 1:1 required
+* ``mask`` (``Geometry``) required
-* useROIAccessor: Boolean 1:1 required
+* ``useROIAccessor`` (``Boolean``) required
-* roi: Polygon 1:1 required
+* ``roi`` (``Polygon``) required
-* statistics: StatsType 0:unbounded
+* ``statistics`` (``StatsType``)
-* minbounds: double 0:unbounded
+* ``minbounds`` (``double``)
-* maxbounds: double 0:unbounded
+* ``maxbounds`` (``double``)
-* numbins: int 0:unbounded
+* ``numbins`` (``int``)
-* rangeData: Object 0:unbounded
+* ``rangeData`` (``Object``)
-* localStats: Boolean 1:1 required
+* ``localStats`` (``Boolean``) required
-* zonal statistics: List 1:1 required
+* ``zonal statistics`` (``List``)
-RectangularClip(features, clip, preserveZ): result
-''''''''''''''''''''''''''''''''''''''''''''''''''
+``RectangularClip(features, clip, preserveZ)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* clip: ReferencedEnvelope 1:1 required
+* ``clip`` (``ReferencedEnvelope``) required
-* preserveZ: Boolean 0:1 optional
+* ``preserveZ`` (``Boolean``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Reproject(features, forcedCRS, targetCRS): result
-'''''''''''''''''''''''''''''''''''''''''''''''''
+``Reproject(features, forcedCRS, targetCRS)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* forcedCRS: CoordinateReferenceSystem 0:1 optional
+* ``forcedCRS`` (``CoordinateReferenceSystem``) optional
-* targetCRS: CoordinateReferenceSystem 0:1 optional
+* ``targetCRS`` (``CoordinateReferenceSystem``) optional
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-ScaleCoverage(coverage, xScale, yScale, xTranslate, yTranslate, interpolation): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``ScaleCoverage(coverage, xScale, yScale, xTranslate, yTranslate, interpolation)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 1:1 required
+* ``coverage`` (``GridCoverage2D``) required
-* xScale: Double 1:1 required
+* ``xScale`` (``Double``) required
-* yScale: Double 1:1 required
+* ``yScale`` (``Double``) required
-* xTranslate: Double 1:1 required
+* ``xTranslate`` (``Double``) required
-* yTranslate: Double 1:1 required
+* ``yTranslate`` (``Double``) required
-* interpolation: Interpolation 0:1 optional
+* ``interpolation`` (``Interpolation``) optional
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Simplify(features, distance, preserveTopology): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``Simplify(features, distance, preserveTopology)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* distance: Double 1:1 required
+* ``distance`` (``Double``) required
-* preserveTopology: Boolean 1:1 required
+* ``preserveTopology`` (``Boolean``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Snap(features, point, crs): result
-''''''''''''''''''''''''''''''''''
+``Snap(features, point, crs)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: FeatureCollection 1:1 required
+* ``features`` (``FeatureCollection``) required
-* point: Point 1:1 required
+* ``point`` (``Point``) required
-* crs: CoordinateReferenceSystem 0:1 optional
+* ``crs`` (``CoordinateReferenceSystem``) optional
-* result: FeatureCollection 1:1 required
+* ``result`` (``FeatureCollection``)
-StyleCoverage(coverage, style): result
-''''''''''''''''''''''''''''''''''''''
+``StyleCoverage(coverage, style)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* coverage: GridCoverage2D 1:1 required
+* ``coverage`` (``GridCoverage2D``) required
-* style: Style 1:1 required
+* ``style`` (``Style``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-Transform(features, transform): result
-''''''''''''''''''''''''''''''''''''''
+``Transform(features, transform)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* transform: String 1:1 required
+* ``transform`` (``String``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-TransparencyFill(data): result
-''''''''''''''''''''''''''''''
+``TransparencyFill(data)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''
-* data: GridCoverage2D 1:1 required
+* ``data`` (``GridCoverage2D``) required
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-UnionFeatureCollection(first, second): result
-'''''''''''''''''''''''''''''''''''''''''''''
+``UnionFeatureCollection(first, second)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* first: SimpleFeatureCollection 1:1 required
+* ``first`` (``SimpleFeatureCollection``) required
-* second: SimpleFeatureCollection 1:1 required
+* ``second`` (``SimpleFeatureCollection``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-Unique(features, attribute): result
-'''''''''''''''''''''''''''''''''''
+``Unique(features, attribute)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* attribute: String 1:1 required
+* ``attribute`` (``String``) required
-* result: SimpleFeatureCollection 1:1 required
+* ``result`` (``SimpleFeatureCollection``)
-VectorToRaster(features, rasterWidth, rasterHeight, title, attribute, bounds): result
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``VectorToRaster(features, rasterWidth, rasterHeight, title, attribute, bounds)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* features: SimpleFeatureCollection 1:1 required
+* ``features`` (``SimpleFeatureCollection``) required
-* rasterWidth: Integer 1:1 required
+* ``rasterWidth`` (``Integer``) required
-* rasterHeight: Integer 1:1 required
+* ``rasterHeight`` (``Integer``) required
-* title: String 0:1 optional
+* ``title`` (``String``) optional
-* attribute: String 1:1 required
+* ``attribute`` (``String``) required
-* bounds: Envelope 0:1 optional
+* ``bounds`` (``Envelope``) optional
-* result: GridCoverage2D 1:1 required
+* ``result`` (``GridCoverage2D``)
-VectorZonalStatistics(data, dataAttribute, zones): statistics
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``VectorZonalStatistics(data, dataAttribute, zones)``: returns ``statistics``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* data: SimpleFeatureCollection 1:1 required
+* ``data`` (``SimpleFeatureCollection``) required
-* dataAttribute: String 1:1 required
+* ``dataAttribute`` (``String``) required
-* zones: SimpleFeatureCollection 1:1 required
+* ``zones`` (``SimpleFeatureCollection``) required
-* statistics: SimpleFeatureCollection 1:1 required
+* ``statistics`` (``SimpleFeatureCollection``)
-area(geom): result
-''''''''''''''''''
+``area(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: double 1:1 required
+* ``result`` (``double``)
-boundary(geom): result
-''''''''''''''''''''''
+``boundary(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-buffer(geom, distance, quadrantSegments, capStyle): result
-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+``buffer(geom, distance, quadrantSegments, capStyle)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* distance: Double 1:1 required
+* ``distance`` (``Double``) required
-* quadrantSegments: Integer 0:1 optional
+* ``quadrantSegments`` (``Integer``) optional
-* capStyle: BufferCapStyle 0:1 optional
+* ``capStyle`` (``BufferCapStyle``) optional
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-centroid(geom): result
-''''''''''''''''''''''
+``centroid(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-contains(a, b): result
-''''''''''''''''''''''
+``contains(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-convexHull(geom): result
-''''''''''''''''''''''''
+``convexHull(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-crosses(a, b): result
-'''''''''''''''''''''
+``crosses(a, b)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-densify(geom, distance): result
-'''''''''''''''''''''''''''''''
+``densify(geom, distance)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* distance: Double 1:1 required
+* ``distance`` (``Double``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-difference(a, b): result
-''''''''''''''''''''''''
+``difference(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-dimension(geom): result
-'''''''''''''''''''''''
+``dimension(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: int 1:1 required
+* ``result`` (``int``)
-disjoint(a, b): result
-''''''''''''''''''''''
+``disjoint(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-distance(a, b): result
-''''''''''''''''''''''
+``distance(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: double 1:1 required
+* ``result`` (``double``)
-endPoint(geom): result
-''''''''''''''''''''''
+``endPoint(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* geom: LineString 1:1 required
+* ``geom`` (``LineString``) required
-* result: Point 1:1 required
+* ``result`` (``Point``)
-envelope(geom): result
-''''''''''''''''''''''
+``envelope(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-equalsExact(a, b): result
-'''''''''''''''''''''''''
+``equalsExact(a, b)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-equalsExactTolerance(a, b, tolerance): result
-'''''''''''''''''''''''''''''''''''''''''''''
+``equalsExactTolerance(a, b, tolerance)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* tolerance: Double 1:1 required
+* ``tolerance`` (``Double``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-exteriorRing(geom): result
-''''''''''''''''''''''''''
+``exteriorRing(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''
-* geom: Polygon 1:1 required
+* ``geom`` (``Polygon``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-geometryType(geom): result
-''''''''''''''''''''''''''
+``geometryType(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: String 1:1 required
+* ``result`` (``String``)
-getGeometryN(geom, index): result
-'''''''''''''''''''''''''''''''''
+``getGeometryN(geom, index)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-* geom: GeometryCollection 1:1 required
+* ``geom`` (``GeometryCollection``) required
-* index: Integer 1:1 required
+* ``index`` (``Integer``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-getX(geom): result
-''''''''''''''''''
+``getX(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''
-* geom: Point 1:1 required
+* ``geom`` (``Point``) required
-* result: double 1:1 required
+* ``result`` (``double``)
-getY(geom): result
-''''''''''''''''''
+``getY(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''
-* geom: Point 1:1 required
+* ``geom`` (``Point``) required
-* result: double 1:1 required
+* ``result`` (``double``)
-interiorPoint(geom): result
-'''''''''''''''''''''''''''
+``interiorPoint(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-interiorRingN(geom, index): result
-''''''''''''''''''''''''''''''''''
+``interiorRingN(geom, index)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''
-* geom: Polygon 1:1 required
+* ``geom`` (``Polygon``) required
-* index: Integer 1:1 required
+* ``index`` (``Integer``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-intersection(a, b): result
-''''''''''''''''''''''''''
+``intersection(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-intersects(a, b): result
-''''''''''''''''''''''''
+``intersects(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-isClosed(geom): result
-''''''''''''''''''''''
+``isClosed(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* geom: LineString 1:1 required
+* ``geom`` (``LineString``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-isEmpty(geom): result
-'''''''''''''''''''''
+``isEmpty(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-isRing(geom): result
-''''''''''''''''''''
+``isRing(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''
-* geom: LineString 1:1 required
+* ``geom`` (``LineString``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-isSimple(geom): result
-''''''''''''''''''''''
+``isSimple(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-isValid(geom): result
-'''''''''''''''''''''
+``isValid(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-isWithinDistance(a, b, distance): result
-''''''''''''''''''''''''''''''''''''''''
+``isWithinDistance(a, b, distance)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* distance: Double 1:1 required
+* ``distance`` (``Double``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-length(geom): result
-''''''''''''''''''''
+``length(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: double 1:1 required
+* ``result`` (``double``)
-numGeometries(geom): result
-'''''''''''''''''''''''''''
+``numGeometries(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: int 1:1 required
+* ``result`` (``int``)
-numInteriorRing(geom): result
-'''''''''''''''''''''''''''''
+``numInteriorRing(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''
-* geom: Polygon 1:1 required
+* ``geom`` (``Polygon``) required
-* result: int 1:1 required
+* ``result`` (``int``)
-numPoints(geom): result
-'''''''''''''''''''''''
+``numPoints(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: int 1:1 required
+* ``result`` (``int``)
-octagonalEnvelope(geom): result
-'''''''''''''''''''''''''''''''
+``octagonalEnvelope(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-overlaps(a, b): result
-''''''''''''''''''''''
+``overlaps(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-parameter(argumentName, values): parameterMap
-'''''''''''''''''''''''''''''''''''''''''''''
+``parameter(argumentName, values)``: returns ``parameterMap``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* argumentName: String 1:1 required
+* ``argumentName`` (``String``) required
-* values: Object 0:unbounded
+* ``values`` (``Object``)
-* parameterMap: Map 1:1 required
+* ``parameterMap`` (``Map``)
-pointN(geom, index): result
-'''''''''''''''''''''''''''
+``pointN(geom, index)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''
-* geom: LineString 1:1 required
+* ``geom`` (``LineString``) required
-* index: Integer 1:1 required
+* ``index`` (``Integer``) required
-* result: Point 1:1 required
+* ``result`` (``Point``)
-polygonize(geom): result
-''''''''''''''''''''''''
+``polygonize(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-relate(a, b): result
-''''''''''''''''''''
+``relate(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: String 1:1 required
+* ``result`` (``String``)
-relatePattern(a, b, Relate pattern): result
-'''''''''''''''''''''''''''''''''''''''''''
+``relatePattern(a, b, Relate pattern)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* Relate pattern: String 1:1 required
+* ``Relate pattern`` (``String``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-reproject(geometry, sourceCRS, targetCRS): result
-'''''''''''''''''''''''''''''''''''''''''''''''''
+``reproject(geometry, sourceCRS, targetCRS)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* geometry: Geometry 1:1 required
+* ``geometry`` (``Geometry``) required
-* sourceCRS: CoordinateReferenceSystem 0:1 optional
+* ``sourceCRS`` (``CoordinateReferenceSystem``) optional
-* targetCRS: CoordinateReferenceSystem 0:1 optional
+* ``targetCRS`` (``CoordinateReferenceSystem``) optional
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-simplify(geom, distance): result
-''''''''''''''''''''''''''''''''
+``simplify(geom, distance)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''''''''''
-* geom: Geometry 1:1 required
+* ``geom`` (``Geometry``) required
-* distance: Double 1:1 required
+* ``distance`` (``Double``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-splitPolygon(polygon, line): result
-'''''''''''''''''''''''''''''''''''
+``splitPolygon(polygon, line)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''''''''''
-* polygon: Geometry 1:1 required
+* ``polygon`` (``Geometry``) required
-* line: LineString 1:1 required
+* ``line`` (``LineString``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-startPoint(geom): result
-''''''''''''''''''''''''
+``startPoint(geom)``: returns ``result``
+''''''''''''''''''''''''''''''''''''''''
-* geom: LineString 1:1 required
+* ``geom`` (``LineString``) required
-* result: Point 1:1 required
+* ``result`` (``Point``)
-symDifference(a, b): result
-'''''''''''''''''''''''''''
+``symDifference(a, b)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-touches(a, b): result
-'''''''''''''''''''''
+``touches(a, b)``: returns ``result``
+'''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-union(geom): result
-'''''''''''''''''''
+``union(geom)``: returns ``result``
+'''''''''''''''''''''''''''''''''''
-* geom: Geometry 2:unbounded required
+* ``geom`` (``Geometry``): min=2 max=unbounded
-* result: Geometry 1:1 required
+* ``result`` (``Geometry``)
-within(a, b): result
-''''''''''''''''''''
+``within(a, b)``: returns ``result``
+''''''''''''''''''''''''''''''''''''
-* a: Geometry 1:1 required
+* ``a`` (``Geometry``) required
-* b: Geometry 1:1 required
+* ``b`` (``Geometry``) required
-* result: boolean 1:1 required
+* ``result`` (``boolean``)
-PolygonLabelFunctionFactory
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
+``PolygonLabelFunctionFactory``
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Contains 1 functions.
-labelPoint(polygon, tolerance): labelPoint
-''''''''''''''''''''''''''''''''''''''''''
-
-* polygon: Geometry 1:1 required
+``labelPoint(polygon, tolerance)``: returns ``labelPoint``
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-* tolerance: double 1:1 required
+* ``polygon`` (``Geometry``) required
-* labelPoint: Point 1:1 required
+* ``tolerance`` (``double``) required
+* ``labelPoint`` (``Point``)
\ No newline at end of file
diff --git a/docs/user/build/faq.rst b/docs/user/build/faq.rst
index b26ef83cd25..131c55a8692 100644
--- a/docs/user/build/faq.rst
+++ b/docs/user/build/faq.rst
@@ -18,8 +18,8 @@ Complete build instructions are provided in the user guide:
* :doc:`/build/index`
-GeoTools makes use of the maven build system (in part to help us reused code from
-a number of other java projects).
+GeoTools makes use of the Maven build system (in part to help us reused code from
+a number of other Java projects).
To build all the modules::
@@ -42,7 +42,7 @@ To load the modules into the eclipse IDE.
Linux and Mac: :file:`~/.m2/repository`
================== ========================================================
-2. Generate the .project and .classpath files needed for eclipse::
+2. Generate the ``.project`` and ``.classpath`` files needed for eclipse::
mvn eclipse:eclipse -Dall
@@ -53,7 +53,7 @@ Why is Maven 3 Slower?
Maven 3 is not faster out of the box with the default settings.
-Gowever what is new is that you can ask it to use more than one core::
+However what is new is that you can ask it to use more than one core::
mvn install -Dall -T 2C
@@ -68,11 +68,13 @@ This is the fastest build on my machine::
The above options:
-* install (without clean) only recompiles modified code
-* no profiles or flags are used to build optional code; onlt the core library is built
-* skipTests - the tests are still built; they are just not run
-* o - allows the build to work "offline" (thus no external servers are checked during the build)
-* T 2C - builds with two threads per core
+ + install (without clean) only re-compiles modified code
+ + no profiles or flags are used to build optional code; only the core library
+ is built
+ + ``skipTests`` - the tests are still built; they are just not run
+ + ``o`` - allows the build to work "offline" (thus no external servers are
+ checked during the build)
+ + T 2C - builds with two threads per core
I use this configuration to quickly push all local changes into my local maven repository so I can
test in a downstream application such as uDig or GeoServer.
@@ -82,15 +84,18 @@ How do I create an executable jar for my GeoTools app?
If you're familiar with Maven you might have used the `assembly plugin
`_ to create self-contained, executable jars. The bad news is
-that this generally won't work with GeoTools. The problem is that GeoTools modules often define one or more files in its
-META-INF/services directory with the same names as files defined in other modules. The assembly plugin just copies
-files with the same name over the top of each other rather than merging their contents.
-
-The good news is that the `Maven shade plugin `_ can be
-used instead and it will correctly merge the META-INF/services files from each of the GeoTools modules used by your
-application.
-
-The POM below will create an executable jar for the GeoTools :doc:`/tutorial/quickstart/index` module which includes all of the required
+that this generally won't work with GeoTools. The problem is that GeoTools
+modules often define one or more files in its ``META-INF/services`` directory
+with the same names as files defined in other modules. The assembly plugin just
+copies files with the same name over the top of each other rather than merging
+their contents.
+
+The good news is that the `Maven shade plugin
+`_ can be used
+instead and it will correctly merge the ``META-INF/services`` files from each of
+the GeoTools modules used by your application.
+
+The pom below will create an executable jar for the GeoTools :doc:`/tutorial/quickstart/index` module which includes all of the required
GeoTools modules and their dependencies.
.. sourcecode:: xml
diff --git a/docs/user/build/git.rst b/docs/user/build/git.rst
index 31b74722e69..134eb6ac243 100644
--- a/docs/user/build/git.rst
+++ b/docs/user/build/git.rst
@@ -1,7 +1,8 @@
Using Git
=========
-The following helpful git tips, as so many others, are attributed to IanS and have been stolen from his email.
+The following helpful git tips, as so many others, are attributed to Ian
+Schneider and have been stolen from his email.
Git Repository
^^^^^^^^^^^^^^
@@ -27,7 +28,8 @@ This repository is setup with the following branches of GeoTools:
Typical Development Environment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Typically, a developer will create a local 'geotools' directory, move into that directory, and do a checkout of the GeoTools repository. Within the
+Typically, a developer will create a local ``geotools`` directory, move into
+that directory, and do a checkout of the GeoTools repository. Within the
repository switching between branches is trivial::
[geotools]% git branch
@@ -100,7 +102,7 @@ Doing another status reports no more local changes::
But also reports that our local branch is ahead of the remote branch by 1 commit. This is because we have yet to push
the commit. Before pushing it is always a good idea to first pull in case we have any commits that conflict with
-other commits that have already been pushed up to the repostory::
+other commits that have already been pushed up to the repository::
[geotools]% git pull geotools master
[geotools]% git push geotools master
@@ -139,7 +141,7 @@ If the change has been staged but not yet committed::
git checkout /path/to/file/to/rollback
If the change has been committed **but not pushed** it gets interesting. If the change to rollback is at the tip of the branch
-(ie is the most recent commit) you can use git reset::
+(i.e. is the most recent commit) you can use git reset::
git reset
@@ -172,6 +174,6 @@ Tells you info about commits/revision history::
Blame
^^^^^
-My favourite. Annotates a document with who changed what and when::
+My favorite. Annotates a document with who changed what and when::
- git blame Sample.java
\ No newline at end of file
+ git blame Sample.java
diff --git a/docs/user/build/install/index.rst b/docs/user/build/install/index.rst
index 37f626b6741..cc9ef863a8b 100644
--- a/docs/user/build/install/index.rst
+++ b/docs/user/build/install/index.rst
@@ -52,7 +52,7 @@ The following optional downloads provide increased functionality or performance:
* Oracle (Optional):
- * Obtain an ojdbc jar from Oracle or your Oracle installation
+ * Obtain a jdbc jar from Oracle or your Oracle installation
* DB2 (Optional)
diff --git a/docs/user/build/install/jdk.rst b/docs/user/build/install/jdk.rst
index 501a31369bc..05483822437 100644
--- a/docs/user/build/install/jdk.rst
+++ b/docs/user/build/install/jdk.rst
@@ -3,12 +3,12 @@ Java Install
GeoTools is written in the Java Programming Language. The library is targeted for Java 8.
-Java Runtime Environment:
+Java Run-time Environment:
* Java 11 - GeoTools 21.x and above (OpenJDK tested)
* Java 8 - GeoTools 15.x and above (OpenJDK and Oracle JRE tested)
* Java 7 - GeoTools 11.x to GeoTools 14.x (OpenJDK and Oracle JRE tested)
-* Java 6 - Geotools 8.x to GeoTools 10.x (Oracle JRE tested)
+* Java 6 - GeoTools 8.x to GeoTools 10.x (Oracle JRE tested)
* Java 5 - GeoTools 2.5.x to GeoTools 8.x (Sun JRE tested)
* Java 1.4 - GeoTools 2.x to GeoTools 2.4.x (Sun JRE tested)
@@ -30,7 +30,7 @@ Java Initial Final Compiler Setting Compatibility
Java 8 GeoTools 21.x And Above compiler=1.8 Java 8, Java 11
Java 8 GeoTools 15.x GeoTools 20.x compiler=1.8 Java 8
Java 7 GeoTools 11.x GeoTools 14.x compiler=1.7 Java 7
-Java 6 Geotools 8.x GeoTools 10.x compiler=1.6 Java 6
+Java 6 GeoTools 8.x GeoTools 10.x compiler=1.6 Java 6
Java 5 GeoTools 2.5.x GeoTools 8.x compiler=1.5 Java 5
Java 1.4 GeoTools 2.x GeoTools 2.4.x compiler=1.4 Java 1.4
========= ================ ================ ================= ===============
@@ -39,17 +39,17 @@ GeoTools 21.x built with Java 8 can be used in a Java 11 environment. Each jar i
GeoTools Java 8 development is supported on both OpenJDK and Oracle JDK as downloaded from:
-========================= ================== ===== ===== ======= ======= ==============
-Java 8 Provider License Linux macOS Solaris Windows Free Updates
-========================= ================== ===== ===== ======= ======= ==============
-Oracle JDK Binary Code Licene x x x x 2019 January
-Oracle OpenJDK GPL x reference only
-Oracle OpenJDK Binary Code Licene x x reference only
-RedHat OpenJDK GPL x 2023 June
-Adopt OpenJDK GPL x x x 2023 September
-========================= ================== ===== ===== ======= ======= ==============
+========================= =================== ===== ====== ======= ======= ==============
+Java 8 Provider License Linux macOS Solaris Windows Free Updates
+========================= =================== ===== ====== ======= ======= ==============
+Oracle JDK Binary Code License x x x x 2019 January
+Oracle OpenJDK GPL x reference only
+Oracle OpenJDK Binary Code License x x reference only
+RedHat OpenJDK GPL x 2023 June
+Adopt OpenJDK GPL x x x 2023 September
+========================= =================== ===== ====== ======= ======= ==============
-Although the closed source Oracle Technology Network Oracle JDK 8 reached end-of-life in January 2019 `free Java 8 updates `__ are provided by Linux distros, AdoptOpenJDK, Azul, IBM, Red Hat, and others.
+Although the closed source Oracle Technology Network Oracle JDK 8 reached end-of-life in January 2019 `free Java 8 updates `__ are provided by Linux distributions, AdoptOpenJDK, Azul, IBM, Red Hat, and others.
.. note:: Windows users, when installing a JDK do not forget to install matching JRE:
@@ -73,14 +73,14 @@ GeoTools 21.x built with Java 11 can only be used in a Java 11 environment (and
GeoTools Java 11 development is supported on both OpenJDK and Oracle JDK as downloaded from:
-========================= ================== ===== ===== ======= ======= ==============
-Java 11 Provider License Linux macOS Solaris Windows Free Updates
-========================= ================== ===== ===== ======= ======= ==============
-Oracle JDK Binary Code Licene x x x x 2019 March
-Oracle OpenJDK GPL x x x 2019 March
-RedHat OpenJDK GPL x 2024 October
-Adopt OpenJDK GPL x x x 2022 September
-========================= ================== ===== ===== ======= ======= ==============
+========================= =================== ===== ====== ======= ======= ==============
+Java 11 Provider License Linux macOS Solaris Windows Free Updates
+========================= =================== ===== ====== ======= ======= ==============
+Oracle JDK Binary Code License x x x x 2019 March
+Oracle OpenJDK GPL x x x 2019 March
+RedHat OpenJDK GPL x 2024 October
+Adopt OpenJDK GPL x x x 2022 September
+========================= =================== ===== ====== ======= ======= ==============
.. warning:: Since the API changes from Java version to version, building a GeoTools version with a newer Java SDK is risky (you may accidentally use a new method). Pull requests are tested against Java 8, but we do ask you to be careful.
@@ -89,19 +89,19 @@ Why JAVA_HOME does not work on Windows
How to use different versions of Java for building and running on windows.
-Several projects expect to make use of the latest JRE runtime environment
-(for speed or new features). If your computer is set up with both a stable JDK for buildin
-GeoTools; and an experimental JDK for your other projects you will need to sort out how
-to switch between them.
+Several projects expect to make use of the latest JRE run-time environment
+(for speed or new features). If your computer is set up with both a
+stable JDK for building GeoTools; and an experimental JDK for your other
+projects you will need to sort out how to switch between them.
One technique is to set up a batch file similar to the following:
-1. Hunt down the cmd.exe ( Start menu > Accessories > Command Prompt) and right click to send it to the desktop
-2. Edit the desktop cmd.exe short cut and change the target to::
+1. Hunt down the ``cmd.exe`` ( Start menu > Accessories > Command Prompt) and right click to send it to the desktop
+2. Edit the desktop ``cmd.exe`` short cut and change the target to::
%SystemRoot%\system32\cmd.exe /k C:\java\java8.bat
-3. Create the C:\java\java8.bat file mentioned above::
+3. Create the ``C:\java\java8.bat`` file mentioned above::
set ANT_HOME=C:\java\apache-ant-1.9.4
set M2_HOME=C:\java\maven-3.0.5
@@ -110,8 +110,8 @@ One technique is to set up a batch file similar to the following:
set PATH=%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Subversion\bin;%M2_HOME%\bin;%ANT_HOME%\bin
4. Please note that the construction of the PATH above is very important; ``JAVA_HOME\bin`` must
- appear before ``SystemRoot\system32`` as the system32 contains a stub java.exe that looks up
- the correct version of java to run in the registry.
+ appear before ``SystemRoot\system32`` as the ``system32`` contains a stub ``java.exe`` that looks up
+ the correct version of Java to run in the registry.
.. image:: /images/jdk.png
@@ -119,9 +119,9 @@ One technique is to set up a batch file similar to the following:
``My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft > Java Development Kit > CurrentVersion``
is set to **1.8**.
- The **1.8** entry documents the path to the version of java to run.
+ The **1.8** entry documents the path to the version of Java to run.
- Placing JAVA_HOME on the path before System32 shortcuts this annoying "feature".
+ Placing JAVA_HOME on the path before ``System32`` shortcuts this annoying "feature".
Java 8 Extensions
^^^^^^^^^^^^^^^^^
@@ -151,18 +151,18 @@ References:
2. Download JAI for your JDK by clicking on the link for your platform:
- Example: jai-1_1_3-lib-windows-i586-jdk.exe
+ Example: ``jai-1_1_3-lib-windows-i586-jdk.exe``
3. Use the one click installer to install JAI into your JDK
4. Download JAI for your JRE by clicking on the link for your platform:
- Example: jai-1_1_3-lib-windows-i586-jre.exe
+ Example: ``jai-1_1_3-lib-windows-i586-jre.exe``
5. Use the one click installer to install JAI into your JRE
.. note::
- If you are working on linux you will of course need to choose the appropriate download.
+ If you are working on Linux you will of course need to choose the appropriate download.
.. note::
@@ -194,7 +194,7 @@ References:
2. Download ImageIO for your JDK by clicking on the above link.
- Example: jai_imageio-1_1-lib-windows-i586-jdk.exe
+ Example: ``jai_imageio-1_1-lib-windows-i586-jdk.exe``
3. Use the one click installer to install ImageIO into your JDK
@@ -202,11 +202,11 @@ References:
4. Download ImageIO for your JRE by clicking on the link for your platform
- Example: jai_imageio-1_1-lib-windows-i586-jre.exe
+ Example: ``jai_imageio-1_1-lib-windows-i586-jre.exe``
5. Use the one click installer to install the ImageIO into your JRE.
- (If you are working on linux you will of course need to choose the appropriate download)
+ (If you are working on Linux you will of course need to choose the appropriate download)
.. note::
@@ -224,14 +224,14 @@ ImageIO-Ext Install
The installer provided here will install JAI and ImageIO if needed
-The installer from the ImageIO-Ext website can be used to install into your JAVA_HOME (ie the JDK). If you like you can use this to install the software; and then copy the required jars into your JRE by hand (they end up in JAVA_HOME/jre/ext/libs and need to be copied into JRE/ext/libs).
+The installer from the ImageIO-Ext website can be used to install into your JAVA_HOME (i.e. the JDK). If you like you can use this to install the software; and then copy the required jars into your JRE by hand (they end up in ``JAVA_HOME/jre/ext/libs`` and need to be copied into ``JRE/ext/libs``).
1. Download the appropriate version of ImageIO-ext:
* ImageIO-EXT 1.0.10
* http://java.net/projects/imageio-ext
- Tip: You can check the version of ImageIO-EXT used in the root pom.xml file.
+ Tip: You can check the version of ImageIO-EXT used in the root ``pom.xml`` file.
2. Download ImageIO for your JDK by clicking on the above link.
@@ -252,18 +252,18 @@ This is only needed if the windows one-click installers don't work for you:
* Perhaps you are on Linux?
* Perhaps you are on Mac and the version of JAI/ImageIO included with your operating system is out of date?
-The goal is to place the required jars into your lib/ext directory of both your JDK (for compiling) and your JRE (for running).
+The goal is to place the required jars into your ``lib/ext`` directory of both your JDK (for compiling) and your JRE (for running).
-Optional: macOS ImageIO
-'''''''''''''''''''''''
+Optional: mac OS ImageIO
+''''''''''''''''''''''''
-The JAI ImageIO extension is not available as a download for macOS. However, you can use the jar from the Linux/windows download to get “pure java” functionality without hardware acceleration:
+The JAI ImageIO extension is not available as a download for mac OS. However, you can use the jar from the Linux/windows download to get “pure Java” functionality without hardware acceleration:
-1. Copy the jars to ~/Library/Java/Extensions
+1. Copy the jars to ``~/Library/Java/Extensions``
2. Check that the files are present as expected:
- * clibwrapper_jiio.jar
- * jai_core.jar
- * mlibwrapper_jai.jar
- * jai_codec.jar
- * jai_imageio.jar
+ * ``clibwrapper_jiio.jar``
+ * ``jai_core.jar``
+ * ``mlibwrapper_jai.jar``
+ * ``jai_codec.jar``
+ * ``jai_imageio.jar``
diff --git a/docs/user/build/install/mvn.rst b/docs/user/build/install/mvn.rst
index b6f31133dd8..78033d970e0 100644
--- a/docs/user/build/install/mvn.rst
+++ b/docs/user/build/install/mvn.rst
@@ -13,27 +13,27 @@ Download and Install Maven
^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Download Maven. Last tested with Maven 3.3.9.
-2. Unzip the maven download to your computer:
+2. Unzip the Maven download to your computer:
- Example: C:\java\apache-maven-3.3.9.
+ Example: ``C:\java\apache-maven-3.3.9``.
If you do not have an unzip program may we recommend: http://www.7-zip.org/
-3. You need to have the following environmental variables set for maven to work (note your paths may differ based on Java or Maven revision numbers):
+3. You need to have the following environmental variables set for Maven to work (note your paths may differ based on Java or Maven revision numbers):
- * JAVA_HOME = C:\Program Files\java\jdk1.8.0_91\
+ * ``JAVA_HOME = C:\Program Files\java\jdk1.8.0_91\``
Location of your JDK installation
- * M2_HOME = C:\java\apache-maven-3.0.5
+ * ``M2_HOME = C:\java\apache-maven-3.0.5``
- Location of your maven installation
+ Location of your Maven installation
- * PATH = %PATH%;%JAVA_HOME%\bin;%M2_HOME%\bin
+ * ``PATH = %PATH%;%JAVA_HOME%\bin;%M2_HOME%\bin``
- Include java and maven bin directory in your PATH
+ Include Java and Maven bin directory in your PATH
-4. Open up a cmd window and type the following::
+4. Open up a ``cmd`` window and type the following::
> mvn -version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-20 00:51:28+1100)
@@ -52,6 +52,6 @@ install the latest version manually by following the `official installation inst
Maven and Home Brew
^^^^^^^^^^^^^^^^^^^
-On MacOS the homebrew package manager provides a "formula" to install maven::
+On macOS the homebrew package manager provides a "formula" to install Maven::
brew install maven
diff --git a/docs/user/build/install/ojdbc.rst b/docs/user/build/install/ojdbc.rst
index 9b71215a6f0..90bea5a7ab1 100644
--- a/docs/user/build/install/ojdbc.rst
+++ b/docs/user/build/install/ojdbc.rst
@@ -3,9 +3,9 @@ Oracle (Optional)
In order to use the Oracle module you need the proprietary JDBC driver from Oracle.
-This page provides instructions for the plugins/jdbc/jdbc-oracle plugin:
+This page provides instructions for the ``plugins/jdbc/jdbc-oracle`` plugin:
-* The old unsupported Oracle datastore can be built with similar instructions. You will have to use -Doracle.jdbc in place of -Doracle when creating the Eclipse projects
+* The old unsupported Oracle datastore can be built with similar instructions. You will have to use ``-Doracle.jdbc`` in place of ``-Doracle`` when creating the Eclipse projects
* As of Oracle 10.2 oracle has decided to "seal" its jar files (a security option that can be turned on in the manifest file). This option limits access to package-protected members to classes defined in the package and in the same JAR file. This means that the only way to create a connection is via a DataSource (and we are not there yet since we still use JDBC Drivers).
Please download a driver from the 10.1.x series in order to avoid the above problem.
@@ -23,9 +23,9 @@ Unlike most external libraries used in GeoTools, we cannot redistribute this jar
Switching between Oracle Profiles with oracle.jdbc property
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The oracle modules are all set up to work with a pretend "mock" jdbc driver in order to compile. To actually use the real thing you are going to need to set the oracle.jdbc property.
+The oracle modules are all set up to work with a pretend "mock" jdbc driver in order to compile. To actually use the real thing you are going to need to set the ``oracle.jdbc`` property.
-You will need to do this each time on the command line (as of Maven 2.0.4 there is no way to set a property in your setting.xml file that can be used to configure other profiles):
+You will need to do this each time on the command line (as of Maven 2.0.4 there is no way to set a property in your ``settings.xml`` file that can be used to configure other profiles):
Here is an example that builds eclipse .classpath and .project files using the real driver::
diff --git a/docs/user/build/install/sphinx.rst b/docs/user/build/install/sphinx.rst
index dce4159a6d5..667a598c051 100644
--- a/docs/user/build/install/sphinx.rst
+++ b/docs/user/build/install/sphinx.rst
@@ -1,7 +1,7 @@
Sphinx (Optional)
-----------------
-To build the geotools "doc" folder you will need to install the components of the sphinx documentation system.
+To build the GeoTools "doc" folder you will need to install the components of the sphinx documentation system.
Reference:
@@ -36,40 +36,48 @@ Install Python:
easy_install sphinx==1.0.7
+6. Install spellchecker::
+
+ pip install pyenchant
+ pip install sphinxcontrib-spelling
+
rst2pdf Optional Install
^^^^^^^^^^^^^^^^^^^^^^^^
-You can optionally install rst2pdf to build pdf documentation:
+You can optionally install ``rst2pdf`` to build PDF documentation:
-1. Install Visual Studio 2008 Express Edition (this provides windows with a C compiler). It is a free download on the Microsoft site.
- You need to be sure to use the 2008 edition so that easy_install will compile something that can actually be linked to the Python executable.
+1. Install Visual Studio 2008 Express Edition (this provides windows with
+ a C compiler). It is a free download on the Microsoft site. You need to be
+ sure to use the 2008 edition so that ``easy_install`` will compile something
+ that can actually be linked to the Python executable.
-2. Use easy install to produce rst2pdf::
+2. Use easy install to produce ``rst2pdf``::
easy_install rst2pdf
3. This depends on the Python Image Library (which it can probably build now that you have a compiler).
-4. If you cannot manage to build you can download a precompiled Python Image Library (PIL) from here:
+4. If you cannot manage to build you can download a precompiled Python Image
+ Library (PIL) from here:
* http://effbot.org/downloads/#pil (download the one for python 2.7)
Mac Sphinx Install
^^^^^^^^^^^^^^^^^^
-You can use the distribution manager of your choice (example bru, macports, etc...). The following example
-is for macports.
+You can use the distribution manager of your choice (example ``bru``, ``macports``,
+etc...). The following example is for ``macports``.
-1. On OSX Use macports to install Python 2.7::
+1. On OSX Use ``macports`` to install Python 2.7::
sudo port install python27
sudo port install python_select
sudo python_select python27
-2. You can use macports to install Python Image Library::
+2. You can use ``macports`` to install Python Image Library::
sudo port install py27-pil
-3. You can now use python easy_install to install sphinx::
+3. You can now use python ``easy_install`` to install ``sphinx``::
sudo easy_install sphinx
@@ -77,29 +85,39 @@ is for macports.
sudo easy_install sphinx==1.0.7
-4. To build the PDF targets you will also need rst2pdf.::
+4. Install spellchecker::
+
+ pip install pyenchant
+ pip install sphinxcontrib-spelling
+
+5. To build the PDF targets you will also need ``rst2pdf``.::
sudo easy_install rst2pdf
-5. If you uses easy_install to grab the python image library it easy to get compile errors.
+6. If you uses ``easy_install`` to grab the python image library it easy to get
+ compile errors.
Linux Sphinx Install
^^^^^^^^^^^^^^^^^^^^
-Use apt-get and easy install.
+Use ``apt-get`` and ``easy_install``.
1. Python is usually available by default, if not::
apt-get install Python
- You may need to use sudo (if for example you are on unbuntu)
+ You may need to use ``sudo`` (if for example you are on Ubuntu)
-2. Use easy_install to graph sphinx (using sudo if required)::
+2. Use easy_install to graph sphinx (using ``sudo`` if required)::
easy_install sphinx
- Optionally you can install a specifc version::
+ Optionally you can install a specific version::
easy_install sphinx==1.0.7
-
\ No newline at end of file
+
+3. Install spellchecker::
+
+ pip install pyenchant
+ pip install sphinxcontrib-spelling
diff --git a/docs/user/build/maven/build.rst b/docs/user/build/maven/build.rst
index 55b6f9be815..2189f396381 100644
--- a/docs/user/build/maven/build.rst
+++ b/docs/user/build/maven/build.rst
@@ -34,25 +34,25 @@ Your First Build
C:\java\geotools>mvn install
-5. If all is well, Maven should download the required .jar files and build GeoTools modules.
+5. If all is well, Maven should download the required ``.jar`` files and build GeoTools modules.
6. At the end of this process it will display a list of all the modules which were built and installed correctly.::
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
- [INFO] Total time: 9 months, 3 weeks, 12 hours, 3 minuets, and 43 seconds
+ [INFO] Total time: 9 months, 3 weeks, 12 hours, 3 minutes, and 43 seconds
[INFO] Finished at: Sat Feb 12 16:05:08 EST 2011
[INFO] Final Memory: 41M/87M
[INFO] ------------------------------------------------------------------------
-7. The first build takes a while due to the download time for the .jar files.
+7. The first build takes a while due to the download time for the ``.jar`` files.
If you have any trouble check the common build failures at the bottom of this page.
Build Failure
^^^^^^^^^^^^^
-It is all well and good to recognise a successful build, but how do you recognise a build that has failed?
+It is all well and good to recognize a successful build, but how do you recognize a build that has failed?
1. If your build fails you will get feedback like this::
@@ -80,17 +80,17 @@ Expected Build times
Depending on your hardware and internet connection:
-* Building the first time, where maven needs to download everything, may take 20 to 30 minuets.
-* Future builds check for the most recent .jar files from the internet. The checking is based of md5 checksums and does not take long. Building subsequently may take 10 minuets depending on your hardware and internet connection.
-* After everything is downloaded can build "offline" and avoid the checking of mdf5 checksums resulting in a faster build of 5-7 minuets.
-* Finally you can turn off tests (danger!) and build offline to get a build under 2 minuets
+* Building the first time, where maven needs to download everything, may take 20 to 30 minutes.
+* Future builds check for the most recent ``.jar`` files from the internet. The checking is based on an md5 checksum and does not take long. Building subsequently may take 10 minutes depending on your hardware and internet connection.
+* After everything is downloaded can build "offline" and avoid the checking of md5 checksums resulting in a faster build of 5-7 minutes.
+* Finally you can turn off tests (danger!) and build offline to get a build under 2 minutes
Tips to speed up a build:
* Do not do a "clean" build if you do not have to
* Experiment with the best use of Maven 3 "threading" for your computer
* Rebuild a single module after you have modified it
-* Update your "settings.xml" file to point to a "mirror" in your country - allowing you to download closer to home
+* Update your ``settings.xml`` file to point to a "mirror" in your country - allowing you to download from closer to home
* Build offline (when everything is downloaded to your local repository)
Common Build Problems
@@ -100,10 +100,10 @@ The following common problems occur during a::
mvn -U clean install
-Unable to find org.geotools.maven:javadoc:jar
-'''''''''''''''''''''''''''''''''''''''''''''
+Unable to find ``org.geotools.maven:javadoc:jar``
+'''''''''''''''''''''''''''''''''''''''''''''''''
-We have a little of a chicken-and-the-egg problem here when building a tag for the first time.
+We have a little of a chicken-and-egg problem here when building a tag for the first time.
To fix you need to build the javadoc jar by hand.
@@ -111,23 +111,23 @@ To fix you need to build the javadoc jar by hand.
cd build/maven/javadoc
-2. Build the javadoc module
+2. Build the javadoc module::
mvn install
3. You can now return to the root of the project and restart your build.
-Note that this plugin requires your JAVA_HOME to be set to a JDK as it makes use of the tools.jar (in order to build javadocs).
+Note that this plugin requires your JAVA_HOME to be set to a JDK as it makes use of the ``tools.jar`` (in order to build javadocs).
Unable to Delete Directory on Windows
'''''''''''''''''''''''''''''''''''''
-Build systems like maven (that smash files around for a living) are generally incompatible with Microsoft Indexing Service.
+Build systems like Maven (that smash files around for a living) are generally incompatible with Microsoft Indexing Service.
From Lim Goh on email
I would also like to point out for future reference that the Windows
-Indexing Service is not 100% compatible with maven, and causes some
-maven builds to break. Developers who use Windows 7 64-bit (or
+Indexing Service is not 100% compatible with Maven, and causes some
+Maven builds to break. Developers who use Windows 7 64-bit (or
anything close like Vista or 32-bit) may have unsuccessful build due
to "unable to delete directory". If that happens please try to disable
Windows Indexing Service for the entire working copy and try
diff --git a/docs/user/build/maven/eclipse.rst b/docs/user/build/maven/eclipse.rst
index 61873103529..82649c05cd8 100644
--- a/docs/user/build/maven/eclipse.rst
+++ b/docs/user/build/maven/eclipse.rst
@@ -4,7 +4,7 @@ Maven Eclipse Plugin
Maven can be used to work with the Eclipse IDE. While direct integration is currently underway (thanks to Sonyatype) we are documenting the traditional approach here for reference.
Creating .project and .classpath files
-#. You can use maven to set up the files needed for eclipse::
+#. You can use Maven to set up the files needed for eclipse::
mvn eclipse:eclipse
@@ -13,7 +13,7 @@ Creating .project and .classpath files
* .classpath file
* .project file
- The way to read the above line is we are using the eclipse plugin, and we are asking it to do the goal eclipse. The -Dall switch is used to include the unsupported modules.
+ The way to read the above line is we are using the eclipse plugin, and we are asking it to do the goal eclipse. The ``-Dall`` switch is used to include the unsupported modules.
#. You can then import all the GeoTools projects into your Eclipse IDE.
@@ -21,11 +21,11 @@ Creating .project and .classpath files
From the :guilabel:`Import` dialog navigate to :menuselection:`General --> Existing projects into workspace`
- Select your geotools checkout directory, the modules (with generated .project files) will be listed allowing you to import them all.
+ Select your ``geotools`` checkout directory, the modules (with generated .project files) will be listed allowing you to import them all.
#. It will take a moment to compile the first time.
- Note: Because maven and eclipse will both use **target/classes** you will need to perform a clean when switching between maven and eclipse for building.
+ Note: Because Maven and Eclipse will both use **target/classes** you will need to perform a clean when switching between Maven and Eclipse for building.
#. You will need to run `mvn eclipse:eclipse` again if any dependencies change.
@@ -38,10 +38,10 @@ Creating .project and .classpath files
The other options are to specify a default output directory (so that eclipse and maven do not both use target/classes and trip on each other).
-Customising the Name of the Generated Projects
+Customizing the Name of the Generated Projects
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-You can customise the generated project names a little bit (useful you have an existing project like GeoServer with its own "main" project)::
+You can customize the generated project names a little bit (useful you have an existing project like GeoServer with its own "main" project)::
mvn eclipse:eclipse -Declipse.projectNameTemplate="[groupId].[artifactId]"
@@ -49,7 +49,7 @@ An alternative approach could be::
mvn eclipse:eclipse -Declipse.projectNameTemplate="gt2-trunk-[artifactId]"
-For more information see the maven eclipse plugin documentation.
+For more information see the Maven eclipse plugin documentation.
Working With Many Projects
^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -66,7 +66,7 @@ For better performance in your IDE you can the open projects to those you are wo
Creating .project and .classpath files with source code
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-In addition to downloading jars, maven can also download the associated source code. As source code is often much larger you are warned:
+In addition to downloading jars, Maven can also download the associated source code. As source code is often much larger you are warned:
1. Generate with source code (THIS MAY TAKE TWO HOURS)::
mvn eclipse:eclipse -DdownloadSources=true
@@ -95,4 +95,4 @@ Tips and Tricks for working with Eclipse
3. GeoTools has defined templates you can import:
- * build/eclipse/codetemplates.xml
\ No newline at end of file
+ * ``build/eclipse/codetemplates.xml``
diff --git a/docs/user/build/maven/index.rst b/docs/user/build/maven/index.rst
index bd92956ecdb..d868c95d707 100644
--- a/docs/user/build/maven/index.rst
+++ b/docs/user/build/maven/index.rst
@@ -19,11 +19,11 @@ Using Maven
Project Files
^^^^^^^^^^^^^
-The key part of maven is the use of a "project object model" file (ie pom.xml). You will find a pom.xml file in all active modules. The project file tells you the name of the module, who maintains it, who develops it, and what it depends on.
+The key part of Maven is the use of a "project object model" file (i.e. ``pom.xml``). You will find a ``pom.xml`` file in all active modules. The project file tells you the name of the module, who maintains it, who develops it, and what it depends on.
-The most important part of the project file is the dependencies section as maven uses this to determine what order to build the modules in and what support jars to download when needed (if we move over to maven exclusively we will no longer need the extbin folder).
+The most important part of the project file is the dependencies section as Maven uses this to determine what order to build the modules in and what support jars to download when needed (if we move over to Maven exclusively we will no longer need the ``extbin`` folder).
-All the modules have some things in common, the module pom.xml files extend a pom.xml file which can be found in the GeoTools root directory. This root pom.xml file defines things, such as license and build settings which are common to the geotools library. The root pom.xml has a dependencyManagement section that lists the version numbers in one location (so we can be sure that each module is being built with dependencies that can work together).
+All the modules have some things in common, the module ``pom.xml`` files extend a ``pom.xml`` file which can be found in the GeoTools root directory. This root ``pom.xml`` file defines things, such as license and build settings which are common to the GeoTools library. The root ``pom.xml`` has a ``dependencyManagement`` section that lists the version numbers in one location (so we can be sure that each module is being built with dependencies that can work together).
Use of Notepad
^^^^^^^^^^^^^^
diff --git a/docs/user/build/maven/javadocs.rst b/docs/user/build/maven/javadocs.rst
index 198e3c8512d..fabbf1ead7f 100644
--- a/docs/user/build/maven/javadocs.rst
+++ b/docs/user/build/maven/javadocs.rst
@@ -1,7 +1,7 @@
Generating Javadocs
-------------------
-Javadoc can be generated using the standard mvn javadoc:javadoc command.
+Javadoc can be generated using the standard ``mvn javadoc:javadoc`` command.
* It can be generated for an individual module::
@@ -16,9 +16,9 @@ Javadoc can be generated using the standard mvn javadoc:javadoc command.
Dependencies in aggregated javadoc
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-As of October 2006, aggregated javadoc using maven-javadoc-plugin version 2.0 fails to resolve all
-external dependencies like JTS. It may be related to MJAVADOC-66, but the later said that the bug
-is already fixed.
+As of October 2006, aggregated javadoc using ``maven-javadoc-plugin`` version
+2.0 fails to resolve all external dependencies like JTS. It may be related to
+MJAVADOC-66, but the later said that the bug is already fixed.
Waiting for the next maven-javadoc-plugin release in the hope that it will be fixed there.
@@ -30,9 +30,10 @@ The **trunk/pom.xml** file contains the javadoc:javadoc goal configuration. This
Excluded packages are:
-* com.\*
-* org.geotools.maven.\*
-* org.geotools.referencing.util.\*
+ * ``com.\*``
+ * ``org.geotools.maven.\*``
+ * ``org.geotools.referencing.util.\*``
+ * ``org.geotools.maven.\*`` * ``org.geotools.referencing.util.\*``
When Maven fails to generate the javadoc
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/user/build/maven/pom.rst b/docs/user/build/maven/pom.rst
index e3e594427ea..e58ae4cd160 100644
--- a/docs/user/build/maven/pom.rst
+++ b/docs/user/build/maven/pom.rst
@@ -1,14 +1,14 @@
Project Object Model (POM) Files
--------------------------------
-Complete documentation for the project.xml file for maven can be found at the maven site, and in particular in the project descriptor part of the reference section.
+Complete documentation for the project XML file for Maven can be found at the Maven site, and in particular in the project descriptor part of the reference section.
We only show the things specific to a GeoTools **module pom.xml** file here.
Extending a Parent Module
^^^^^^^^^^^^^^^^^^^^^^^^^
-The section allows one pom.xml file to inherit items from another. Modules should extend the pom.xml within the module, plugin, extension or demo directory they belong to:
+The section allows one ``pom.xml`` file to inherit items from another. Modules should extend the ``pom.xml`` within the module, plugin, extension or demo directory they belong to:
.. code-block:: xml
@@ -22,7 +22,7 @@ Id
^^
The id should reflect the name of the module.
-We use a “gt” prefix to avoid conflicts (as the groupId org.geotools does not appears in the final JAR filenames)
+We use a “gt” prefix to avoid conflicts (as the ``groupId`` ``org.geotools`` does not appear in the final JAR filenames)
Examples:
@@ -34,15 +34,15 @@ This policy allows our “gt-main.jar” to avoid conflict with a application
Dependency Management
^^^^^^^^^^^^^^^^^^^^^
-Dependencies are specified within the pom.xml file, but care should be taken to handle this in a consistent manner.
+Dependencies are specified within the ``pom.xml`` file, but care should be taken to handle this in a consistent manner.
New dependencies on another GeoTools module, should use:
-* groupId - identify the project
-* artifactId - identify the jar within that project
-* version - ${project.version} to match the current build
+* ``groupId`` - identify the project
+* ``artifactId`` - identify the jar within that project
+* ``version`` - ``${project.version}`` to match the current build
-Sample pom.xml dependency entry::
+Sample ``pom.xml`` dependency entry::
org.geotools
@@ -52,7 +52,7 @@ Sample pom.xml dependency entry::
New dependencies on a third-party jar need to be handled in two parts.
-The dependency is supplied in the pom.xml file::
+The dependency is supplied in the ``pom.xml`` file::
javax.media
@@ -61,12 +61,12 @@ The dependency is supplied in the pom.xml file::
test
-And the dependency version is supplied in the “root” pom.xml file in the dependency management section.
+And the dependency version is supplied in the “root” ``pom.xml`` file in the dependency management section.
Dependency Version Changes
^^^^^^^^^^^^^^^^^^^^^^^^^^
-When a dependency changes you will need to update the root pom.xml "dependency management section" to reflect the new version number.
+When a dependency changes you will need to update the root ``pom.xml`` "dependency management section" to reflect the new version number.
You should be able to locate an entry like this and change the version number::
@@ -74,4 +74,4 @@ You should be able to locate an entry like this and change the version number::
net.java.dev.swing-layoutswing-layout1.0.2
-
\ No newline at end of file
+
diff --git a/docs/user/build/maven/repositories.rst b/docs/user/build/maven/repositories.rst
index ab3f9ff4ca2..045278ae735 100644
--- a/docs/user/build/maven/repositories.rst
+++ b/docs/user/build/maven/repositories.rst
@@ -2,23 +2,24 @@ Remote Repositories
-------------------
There are repositories of jars required by GeoTools stored online. These repositories are listed
-in the root pom.xml file.
+in the root ``pom.xml`` file.
You can browse them online at:
-* http://central.maven.org/maven2 - maven central
-* http://maven.geo-solutions.it/ - geosolutions repository used for imageio-ext, jai-ext, ...
-* http://download.osgeo.org/webdav/geotools/ - osgeo repository used for geotools dependencies
-* https://repo.boundlessgeo.com/release - boundless repo for releases
+ * http://central.maven.org/maven2 - maven central
+ * http://maven.geo-solutions.it/ - GeoSolutions repository used for ``imageio-ext``, ``jai-ext``, ...
+ * http://download.osgeo.org/webdav/geotools/ - OSGeo repository used for
+ GeoTools dependencies
+ * https://repo.boundlessgeo.com/release - Boundless repository for releases
GeoTools itself is deployed to the following repositories:
-* http://download.osgeo.org/webdav/geotools/ - geotools release repository
-* http://repo.boundlessgeo.com/snapshot - geotools SNAPSHOT repository
+ * http://download.osgeo.org/webdav/geotools/ - GeoTools release repository
+ * http://repo.boundlessgeo.com/snapshot - GeoTools SNAPSHOT repository
Or you can make use of the following cache:
-* https://repo.boundlessgeo.com/main - boundless repository acting as a cache of the above
+ * https://repo.boundlessgeo.com/main - Boundless repository acting as a cache of the above
Reducing Internet Downloads
^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/user/build/maven/settings.rst b/docs/user/build/maven/settings.rst
index c86f7b596f5..c2f1488daaf 100644
--- a/docs/user/build/maven/settings.rst
+++ b/docs/user/build/maven/settings.rst
@@ -1,7 +1,7 @@
Maven Local Settings
--------------------
-On your machine you will find a directory in called 'm2'. This is where maven stores all downloaded jars and installed projects.
+On your machine you will find a directory in called 'm2'. This is where Maven stores all downloaded jars and installed projects.
========== ============================================
Platform Directory
@@ -13,14 +13,17 @@ Windows 7 ``C:\Users\USER\.m2``
The format of this directory is:
-* .m2/repository - this is your local repository where jars have been downloaded or installed
-* .m2/settings.xml - configuration file for site specific settings such as mirror to download from
-* .m2/profiles.xml - configuration file for profiles (not often used)
+ * ``.m2/repository`` - this is your local repository where jars have been
+ downloaded or installed
+ * ``.m2/settings.xml`` - configuration file for site specific settings such as
+ mirror to download from
+ * ``.m2/profiles.xml`` - configuration file for profiles (not often used)
-settings.xml
-^^^^^^^^^^^^
+The ``settings.xml`` file
+^^^^^^^^^^^^^^^^^^^^^^^^^
-You can provide an optional settings.xml file in this directory that is used to describe configuration and resources available on your machine.
+You can provide an optional ``settings.xml`` file in this directory that is used
+to describe configuration and resources available on your machine.
Examples of use:
@@ -29,10 +32,11 @@ Examples of use:
true
-* select testing profiles (so you can test against a local database, or geoserver install)
-* Set up a mirror for better performance:
+ * select testing profiles (so you can test against a local database, or
+ GeoServer install)
+ * Set up a mirror for better performance:
- Using ibiblio as your mirror of the central maven repository:
+ Using ibiblio as your mirror of the central Maven repository:
.. code-block:: xml
@@ -60,7 +64,10 @@ Examples of use:
Local Repository
^^^^^^^^^^^^^^^^
-You should see that any third party jars, such as JTS, will have been installed in this repository. You should also see that all successful module builds (e.g. main, referencing...) have had their jars installed in a directory called org/geotools.
+You should see that any third party jars, such as JTS, will have been installed
+in this repository. You should also see that all successful module builds (e.g.
+main, referencing...) have had their jars installed in a directory called
+``org/geotools``.
Tip:
@@ -74,14 +81,15 @@ Configuring the heap size
The Maven build may requires a fair amount of memory. For example javadoc generation requires a large heap size. If you need the maximal heap size increased check the root :file:`pom.xml` for settings.
-To change the heap size of the maven command itself::
+To change the heap size of the Maven command itself::
set MAVEN_OPTS=-Xmx384M
Configuring a proxy server
^^^^^^^^^^^^^^^^^^^^^^^^^^
-If you are behind a firewall, you will need maven to use a proxy server.
+If you are behind a firewall, you will need Maven to use a proxy server.
-* http://maven.apache.org/guides/mini/guide-proxies.html
+ * http://maven.apache.org/guides/mini/guide-proxies.html
-The above link shows how modify the settings.xml file in your .m2 directory.
+The above link shows how modify the ``settings.xml`` file in your ``.m2``
+directory.
diff --git a/docs/user/build/maven/snapshots.rst b/docs/user/build/maven/snapshots.rst
index c103d9f3b98..963c803b6cd 100644
--- a/docs/user/build/maven/snapshots.rst
+++ b/docs/user/build/maven/snapshots.rst
@@ -17,7 +17,7 @@ To respond to one of these emails include "-u" in your next build.
git pull --rebase upstream master
-2. build using the -U option::
+2. Build using the -U option::
mvn clean install -U -DskipTests
@@ -30,9 +30,10 @@ If you are working on GeoServer or uDig or another project that depends on the l
GeoTools release you will need to know how to deploy a SNAPSHOT (so members of your developer
community do not get compile errors).
-The build server ares is watching the repository, and will build and deploy a snapshot. If you really cannot wait:
+The build server ``build.geoserver.org`` is watching the repository, and will
+build and deploy a snapshot. If you really cannot wait:
-1. Update to make sure you are not missing out on anyones work::
+1. Update to make sure you are not missing out on anyone’s work::
git pull --rebase upstream master
@@ -40,7 +41,7 @@ The build server ares is watching the repository, and will build and deploy a sn
mvn clean install
-3. Commit - remember to include any Jira numbers in your log message::
+3. Commit - remember to include any Jira issue numbers in your log message::
mvn commit -m "Change to fix shapefile charset handling, see GEOT-1437"
@@ -48,12 +49,12 @@ The build server ares is watching the repository, and will build and deploy a sn
mvn push upstream master
-4. Ensure your ~/.m2/settings.xml has your webdav credentials.
+4. Ensure your ``~/.m2/settings.xml`` has your webdav credentials.
- * osgeo - this is the same as your osgeo credentials
- * boundlessgeo - ask on the developer email list
+ * ``osgeo`` - this is the same as your OSGeo credentials
+ * ``boundlessgeo`` - ask on the developer email list
- The settings.xml should list both::
+ The ``settings.xml`` should list both::
@@ -76,4 +77,4 @@ The build server ares is watching the repository, and will build and deploy a sn
mvn deploy -Dmaven.test.skip=true
-6. Let your community know via email! (The email can ask them to build with -U).
\ No newline at end of file
+6. Let your community know via email! (The email can ask them to build with -U).
diff --git a/docs/user/build/maven/testing.rst b/docs/user/build/maven/testing.rst
index 33a03beb853..781c2f6ae1b 100644
--- a/docs/user/build/maven/testing.rst
+++ b/docs/user/build/maven/testing.rst
@@ -47,8 +47,8 @@ The naming convention for these tests is to name them as "OnlineTest".
Examples:
-* PostgisDataStoreAPIOnlineTest.java
-* WMS1_0_0_OnlineTest.java
+ * PostgisDataStoreAPIOnlineTest.java
+ * WMS1_0_0_OnlineTest.java
1. To execute online tests during a build, the online profiles is used::
@@ -61,8 +61,8 @@ Examples:
* ``~/.geotools/db2.properties.example``
* ``~/.geotools/wps.properties.example``
-4. Rename one of the files to not end with "example" (i.e. rename to postgis.properties)
-5. edit the file to fill in the connection parameters for the server you are testing against, and save.
+4. Rename one of the files to not end with "example" (i.e. rename to ``postgis.properties``)
+5. Edit the file to fill in the connection parameters for the server you are testing against, and save.
6. You can now run the online test against your server
* Note many of the database tests are good and create a table, perform a test, and then remove the table when finished.
diff --git a/docs/user/build/maven/tips.rst b/docs/user/build/maven/tips.rst
index bf3f750fa9b..76910d247e7 100644
--- a/docs/user/build/maven/tips.rst
+++ b/docs/user/build/maven/tips.rst
@@ -1,7 +1,7 @@
Maven Tips
----------
-Maven has a fair few tricks and tips associated with its use. The major benefit is with a consistent project structure (and pom.xml description) a number of plugins can be used.
+Maven has a fair few tricks and tips associated with its use. The major benefit is with a consistent project structure (and ``pom.xml`` description) a number of plugins can be used.
Really Building All Modules
^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -10,23 +10,23 @@ GeoTools plays host to a number of experiment "unsupported" modules; if you woul
mvn install -Dall
-The "-Dall" acts as a switch to part engages several profiles; you can also do this by hand with -P
+The ``-Dall`` acts as a switch to part engages several profiles; you can also do this by hand with -P
-The following "profiles" are included by the "-Dall":
+The following "profiles" are included by the ``-Dall``:
=================== ========== ===================================================================
-Profile \-Dall Builds
+Profile ``-Dall`` Builds
=================== ========== ===================================================================
``-Ppending`` included several experimental modules
``-Praster`` included builds coverage tools
-``-Pgeometry`` included builds iso 19107 geometry implementations
+``-Pgeometry`` included builds ISO 19107 geometry implementations
``-Pswing`` included
-``-Pwps`` included wps client
-``-Pprocess`` included addotopma; geometry, raster and feature processes
+``-Pwps`` included WPS client
+``-Pprocess`` included geometry, raster and feature processes
``-Parchive`` modules that no longer work
=================== ========== ===================================================================
-Fore more details see :file:`unsupported/pom.xml` (or try ``mvn help:all-profiles`` for the complete list).
+For more details see :file:`unsupported/pom.xml` (or try ``mvn help:all-profiles`` for the complete list).
Parallel Builds
^^^^^^^^^^^^^^^
@@ -35,7 +35,7 @@ Maven 3 allows you to control your computing resources a bit more::
mvn install -Dall -T 2C
-The above command builds using two threads for each cpu core available.
+The above command builds using two threads for each CPU core available.
You can also set an exact number of threads to use::
@@ -70,26 +70,26 @@ Provided you have done at least one complete build you should be able to build i
cd modules/library/cql
-2. Use maven to compile - it should do a complete build::
+2. Use Maven to compile - it should do a complete build::
mvn compile
-3. Use maven to update the local repository - it should run the test cases and install the jar in the local
+3. Use Maven to update the local repository - it should run the test cases and install the jar in the local
repository for other modules (or applications) to use when they build.::
mvn install
If you have not done a full build yet then the build may fail because it can't find the jar for a module it depends on.
-* An error caused by not having another geotools module installed can be a little misleading::
+ * An error caused by not having another GeoTools module installed can be a little misleading::
- Error: unable to download main-2.1.x.jar
+ Error: unable to download main-2.1.x.jar
-* Maven failed to find main-2.1,x.jar in the local repository where a full build should have put it
-* Maven tried to download the file from the internet (and failed)
-* If you see an error like that, either do a full build or change into the module which is missing (main in this case) and type.::
+ * Maven failed to find main-2.1,x.jar in the local repository where a full build should have put it
+ * Maven tried to download the file from the internet (and failed)
+ * If you see an error like that, either do a full build or change into the module which is missing (main in this case) and type.::
- maven install
+ maven install
Avoiding Tests
^^^^^^^^^^^^^^
@@ -100,7 +100,7 @@ The following will build the tests - but not run them::
mvn -DskipTests install
-This is useful for installing the postgis module test jar; which is used by the postgis-version module as a dependency.
+This is useful for installing the PostGIS module test jar; which is used by the ``postgis-version`` module as a dependency.
The following will not even build the tests::
@@ -111,7 +111,7 @@ Resuming After a Failure
When doing a full build of GeoTools it can be disheartening when a build fails 90% of the way through causing you to fix and start again.
-The -rf (resume from) parameter of is useful in these cases. It is used to resume a multi-module build such as GeoTools from a specific location to avoid rebuilding those modules you have already successfully build.
+The ``-rf`` (resume from) parameter of is useful in these cases. It is used to resume a multi-module build such as GeoTools from a specific location to avoid rebuilding those modules you have already successfully build.
1. For instance, consider quickly building offline::
@@ -126,23 +126,23 @@ This same technique can be used to restart a build after fixing a failed test in
Generate a Web Site
^^^^^^^^^^^^^^^^^^^
-Maven reports can be generated by the following command, to be executed from the directory that contains the parent pom.xml file::
+Maven reports can be generated by the following command, to be executed from the directory that contains the parent ``pom.xml`` file::
mvn site:site
-The site are created in target/site directory of every module. An aggregated javadoc is also created in the parent target/site/apidocs directory.
+The site are created in :file:`target/site` directory of every module. An aggregated javadoc is also created in the parent :file:`target/site/apidocs` directory.
-Oracle ojdbc jar
-^^^^^^^^^^^^^^^^
+Oracle JDBC Jar
+^^^^^^^^^^^^^^^
-We are not in position to publish everything in a public maven repository. The ojdbc7 JDBC driver
+We are not in position to publish everything in a public maven repository. The ``ojdbc7.jar`` JDBC driver
(required to run oracle online tests) will need to be installed by hand.
If you have access to the real driver you can rebuild the ``jdbc-oracle`` plugin
-with ojdbc driver. -->
+with jdbc driver. -->
-1. Download the ojdbc jar from oracle
-2. Install the ojdbc jar into your local maven repository::
+1. Download the jdbc jar from oracle
+2. Install the jdbc jar into your local Maven repository::
mvn install:install-file -Dfile=ojdbc7.jar \
-DgroupId=com.oracle -DartifactId=ojdbc7 \
@@ -167,22 +167,22 @@ with ojdbc driver. -->
[INFO] Final Memory: 3M/81M
[INFO] ------------------------------------------------------------------------
-3. You can then supply -Doracle=true on the command line when building::
+3. You can then supply ``-Doracle=true`` on the command line when building::
cd modules/plugins/jdbc/jdbc-oracle
mvn clean install -Doracle=true
The ``gt-jdbc-oracle`` plugin is now deployed in your repository with a dependency
- on the ojdbc oracle driver.
+ on the oracle JDBC driver.
4. Or when setting up eclipse::
mvn eclipse:eclipse -Dall -Doracle=true
- The eclipse .project and .classpath generated now includes a reference to the ojdbc oracle
+ The eclipse :file:`.project` and :file:`.classpath` generated now includes a reference to the oracle JDBC
driver.
5. Or when running online tests::
cd modules/plugin/jdbc/jdbc-oracle/
- mvn test -Doracle=true -P online
\ No newline at end of file
+ mvn test -Doracle=true -P online
diff --git a/docs/user/build/source.rst b/docs/user/build/source.rst
index bb95662287a..976230ef1be 100644
--- a/docs/user/build/source.rst
+++ b/docs/user/build/source.rst
@@ -4,7 +4,7 @@ Source Code
The GeoTools source code is organized into the following structure:
======================== =========================================================================
-``build/`` java projects that help with our build process
+``build/`` Java projects that help with our build process
``docs/`` documentation and website source in rich structured text
``modules/library/`` the core library allowing your application to be spatial
``modules/extensions/`` extensions built on top of the library that do useful things
@@ -52,11 +52,12 @@ Please just check out the code and have fun. If you are interested in getting co
C:\java>
-#. Checkout geotools using git (a new directory "geotools" will be created)::
+#. Checkout GeoTools using git (a new directory :file:`geotools` will be created)::
C:\java> git clone git://github.com/geotools/geotools.git
-#. This will create a geotools directory that contains the source code for this project
+#. This will create a file:`geotools` directory that contains the source code
+for this project
Notes:
@@ -74,4 +75,7 @@ Notes:
http://www.sbf5.com/~cduan/technical/git/
-* Although links to various IDE interfaces will be made available, no GUI will substitute for an understanding of the underlying git versioning model, and how the system is actually doing work.
+* Although links to various IDE interfaces will be made available, no GUI will
+ substitute for an understanding of the underlying git versioning model, and how
+ the system is actually doing work.
+
diff --git a/docs/user/conf.py b/docs/user/conf.py
index 6ae7e1a5066..e4789a3d252 100644
--- a/docs/user/conf.py
+++ b/docs/user/conf.py
@@ -4,9 +4,9 @@
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.extlinks']
+extensions = ['sphinx.ext.extlinks','sphinxcontrib.spelling']
-extlinks = {
+extlinks = {
'geoserver': ('http://docs.geoserver.org/latest/en/user/%s','')
}
@@ -20,3 +20,5 @@
master_doc = 'index'
html_title='GeoTools %s User Guide' % release
+
+spelling_show_suggestions=False
diff --git a/docs/user/extension/brewer/colorbrewer.rst b/docs/user/extension/brewer/colorbrewer.rst
index 64711cabb8c..0313335eb80 100644
--- a/docs/user/extension/brewer/colorbrewer.rst
+++ b/docs/user/extension/brewer/colorbrewer.rst
@@ -11,8 +11,8 @@ The class that does the work is called StyleGenerator.
.. image:: /images/StyleGenerator.PNG
-StyleGenerator takes a Color[] (either from ColorBrewer or provided by you!) and
-will create a Style containing a Rule for entry indicated by a Classifier.
+StyleGenerator takes a ``Color[]`` (either from ColorBrewer or provided by you!)
+and will create a Style containing a Rule for entry indicated by a Classifier.
.. literalinclude:: /../src/main/java/org/geotools/brewer/BrewerExamples.java
:language: java
@@ -22,7 +22,9 @@ will create a Style containing a Rule for entry indicated by a Classifier.
ColorBrewer
^^^^^^^^^^^
-The colorbrewer project defines a "good" set of palettes backed a description of how appropriate each set of colours is for different uses (grayscale printing, display with a projector, friendly to color a blind audience or all three!).
+The ColorBrewer project defines a "good" set of palettes backed a description of
+how appropriate each set of colors is for different uses (gray-scale printing,
+display with a projector, friendly to color blind audience or all three!).
Website
'''''''
@@ -50,7 +52,10 @@ on suitability and the number of samples that are able to be represented.
.. image:: /images/ColorBrewer.PNG
-The palettes used for these styles are defined by the colorbrewer project and are defined with a range of metadata allowing you to select an appropriate palette for different uses (grayscale printing, display with a projector, friendly to color a blind audience or all three!).
+The palettes used for these styles are defined by the ColorBrewer project and
+are defined with a range of metadata allowing you to select an appropriate
+palette for different uses (gray-scale printing, display with a projector,
+friendly to color a blind audience or all three!).
1. Create ColorBrewer (it will load the built-in palettes).
@@ -70,7 +75,9 @@ The palettes used for these styles are defined by the colorbrewer project and ar
Example
'''''''
-Here is a complete example showing the steps required to generate a FeatureTypeStyle with a predefined palette for the provided SimpleFeatureCollection.
+Here is a complete example showing the steps required to generate a
+FeatureTypeStyle with a predefined palette for the provided
+SimpleFeatureCollection.
.. literalinclude:: /../src/main/java/org/geotools/brewer/BrewerExamples.java
:language: java
diff --git a/docs/user/extension/brewer/faq.rst b/docs/user/extension/brewer/faq.rst
index d3b46f98222..bc12d04151c 100644
--- a/docs/user/extension/brewer/faq.rst
+++ b/docs/user/extension/brewer/faq.rst
@@ -4,7 +4,7 @@ Brewer FAQ
Q: I have 47 classes to represent and ColorBrewer only goes up to 12!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Feel free to create your own Color[] for use with StyleGenerator.
+ Feel free to create your own ``Color[]`` for use with StyleGenerator.
Q: But why does it only go up to 12?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -12,8 +12,9 @@ Q: But why does it only go up to 12?
This is a surprisingly common question!
Have a look at the http://colorbrewer2.org/ website above; the point of the research is that the
-human eye cannot tell very many colours apart. Indeed the number goes down depending on what
-you are trying communicate (ie that the things shown are of equal importance, or do they form a smooth spread of values?).
+human eye cannot tell very many colors apart. Indeed the number goes down
+depending on what you are trying communicate (i.e. that the things shown are of
+equal importance, or do they form a smooth spread of values?).
-In other words you are free to create a pretty map with more than 12 colours; but you should not
-be surprised if that is too complicated for people to understand.
\ No newline at end of file
+In other words you are free to create a pretty map with more than 12 colors; but you should not
+be surprised if that is too complicated for people to understand.
diff --git a/docs/user/extension/brewer/index.rst b/docs/user/extension/brewer/index.rst
index 098e5485946..0bbf62acccf 100644
--- a/docs/user/extension/brewer/index.rst
+++ b/docs/user/extension/brewer/index.rst
@@ -2,7 +2,7 @@
Brewer
======
-The Brewer module helps you create interesting or appropriate content based on your data. This is as close to the concept of a "theme" as we come to in the GeoTools library with this extension using categorisation functions defined by gt-main as a basis for the generation of styles.
+The Brewer module helps you create interesting or appropriate content based on your data. This is as close to the concept of a "theme" as we come to in the GeoTools library with this extension using categorization functions defined by ``gt-main`` as a basis for the generation of styles.
.. sidebar:: Details
diff --git a/docs/user/extension/graph/index.rst b/docs/user/extension/graph/index.rst
index 97b66b32290..aa4d22f245d 100644
--- a/docs/user/extension/graph/index.rst
+++ b/docs/user/extension/graph/index.rst
@@ -2,7 +2,8 @@
Graph
=====
-The gt-graph package defines the concept of a graph (or network) made up of geotools Features.
+The ``gt-graph`` package defines the concept of a graph (or network) made up of
+GeoTools Features.
**Maven**::
@@ -26,19 +27,20 @@ ported to GeoTools.
The Graph module makes use of concepts and (classes) from the GeoTools core:
-* Feature - atomic unit of geographic information
-* FeatureType - keeps track of what attributes each Feature can hold
-* FeatureID - a unique id associated with each Feature (must start with a non-numeric character)
+ * ``Feature`` - atomic unit of geographic information
+ * ``FeatureType`` - keeps track of what attributes each Feature can hold
+ * ``FeatureID`` - a unique id associated with each Feature (must start with
+ a non-numeric character)
In addition to the Feature API from core, the graph module makes use of relationships.
Usually relationships are based on spatial comparisons between features, although you
may be able to quickly establish a relationship using your feature attributes.
-* Graph constructed from LineStrings based on "shared end points"
+* Graph constructed from ``LineStrings`` based on "shared end points"
Example a road network used for navigation.
-* Graph constructed from Polygons based on "touches"
+* Graph constructed from ``Polygons`` based on "touches"
Example graph of watersheds used for ground water analysis.
@@ -80,25 +82,25 @@ Graph Access
A Graph supports simple direct access is supported using:
-* Graph.getNodes()
-* Graph.getEdges()
+ + ``Graph.getNodes()``
+ + ``Graph.getEdges()``
You can also pass in a visitor in order to traverse the graph contents:
-* Graph.visitNodes( visitor )
-* Graph.visitEdges( visitor )
+ + ``Graph.visitNodes( visitor )``
+ + ``Graph.visitEdges( visitor )``
The visitor can also control when to stop the process using:
-* Graph.queryNodes( visitor )
-* Graph.queryEdges( visitor )
+ * ``Graph.queryNodes( visitor )``
+ * ``Graph.queryEdges( visitor )``
To provide control your visitor can indicate when it wants to stop, backtrack or continue using:
- * GraphTraversal.CONTINUE
- * GraphTraversal.KILL_BRANCH
- * GraphTraversal.STOP
- * GraphTraversal.SUSPEND
+ * ``GraphTraversal.CONTINUE``
+ * ``GraphTraversal.KILL_BRANCH``
+ * ``GraphTraversal.STOP``
+ * ``GraphTraversal.SUSPEND``
Graph Traversal
^^^^^^^^^^^^^^^
@@ -112,7 +114,7 @@ An alternative to direct access is the configure a **GraphTraversal** using:
* **GraphWalker**: walker being iterated over the graph (usually to accomplish a specific goal)
- GeoTools provides out of the box implementations for many common problems: finding the the
+ GeoTools provides out of the box implementations for many common problems: finding the
shortest path, partition a graph into sections, or visiting all the elements.
Directed Graph
@@ -131,12 +133,13 @@ Building
GraphBuilder
^^^^^^^^^^^^
-At a low level graph creation is handled using a GraphBuilder. We have a range
+At a low level graph creation is handled using a ``GraphBuilder``. We have a range
of implementations available. The important point is that you control them by
-calling buildNode, and buildEdge repeatedly allowing it to build up an internal
+calling ``buildNode``, and ``buildEdge`` repeatedly allowing it to build up an internal
representation of your Graph.
-When you are satisfied with the result you can call getGraph() to retrieve the result.
+When you are satisfied with the result you can call ``getGraph()`` to retrieve
+the result.
.. image:: /images/graph_builder.PNG
@@ -151,11 +154,11 @@ Example
:start-after: // graphExample start
:end-before: // graphExample end
-2. To make use of your graph we will use a GraphVisitor:
+2. To make use of your graph we will use a ``GraphVisitor``:
- The following OrphanVistor is called for "each" GraphComponent where
- it has a chance to check if the GraphComponent is an orphan (ie has
- no relationships) or not.
+ The following ``OrphanVistor`` is called for "each" ``GraphComponent`` where it
+ has a chance to check if the ``GraphComponent`` is an orphan (i.e. has no
+ relationships) or not.
.. literalinclude:: /../src/main/java/org/geotools/graph/GraphExamples.java
:language: java
@@ -168,14 +171,14 @@ GraphGenerator
^^^^^^^^^^^^^^
The other approach is we have a number of generators which will automatically create a
-Graph for you based on information you feed in. The GraphGenerators use a GraphBuilder
+Graph for you based on information you feed in. The ``GraphGenerators`` use a ``GraphBuilder``
to build up each node and edge internally; so you will need to be careful to construct them
with the correct builder for the problem you are wishing to solve.
.. image:: /images/graph_generator.PNG
-Each one of these implementations is set up to handle different kinds of data (Features, LineStrings, etc...)
+Each one of these implementations is set up to handle different kinds of data (``Features``, ``LineStrings``, etc...)
so please be sure to read the javadocs.
Building Graph from a FeatureCollection
@@ -229,9 +232,10 @@ Building Graph from Line Segments
Building a FeatureCollection from your Graph
--------------------------------------------
-Once the graph is built each, edge#getObject() will hold the original feature used to built it.
+Once the graph is built each, ``edge.getObject()`` will hold the original
+feature used to built it.
-You can traverse your graph and build up FeatureCollection as you go.::
+You can traverse your graph and build up ``FeatureCollection`` as you go.::
SimpleFeatureCollection features = new DefaultFeatureCollection();
diff --git a/docs/user/extension/grid.rst b/docs/user/extension/grid.rst
index 038a559afa3..0784e88fde7 100644
--- a/docs/user/extension/grid.rst
+++ b/docs/user/extension/grid.rst
@@ -25,8 +25,10 @@ The Grids utility class provides methods to create grids of rectangular or hexag
Creating square grids
^^^^^^^^^^^^^^^^^^^^^
-The easiest way to create a basic grid is with the static methods in the **Grids** utility class.
-This example creates a lat-lon grid with squares 10 degrees wide to display over a map of Australia:
+The easiest way to create a basic grid is with the static methods in the
+**Grids** utility class. This example creates a latitude longitude grid with
+squares
+10 degrees wide to display over a map of Australia:
.. literalinclude:: /../src/main/java/org/geotools/grid/GridExamples.java
:language: java
@@ -40,13 +42,15 @@ Here is the resulting grid:
Grids for display in different map projections
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The grid created in the previous section consists of SimpleFeatures, each of which has a minimal
-polygon, ie. one represented by four corner vertices. This is fine if you only need to display it in
-the one map projection. But say we need to display the above map in EPSG:4462 (Lambert's Conformal
-Conic for Australia). The image below shows a square grid created in WGS84 (lat-lon) and then
-transformed into Lambert's Conformal Conic. Because we only have vertices for the grid cell corners
-the cell edges appear straight rather than curved. We've used 20 degree wide grid squares in this
-example to make this effect obvious:
+The grid created in the previous section consists of SimpleFeatures, each of
+which has a minimal polygon, i.e. one represented by four corner vertices. This
+is fine if you only need to display it in the one map projection. But say we
+need to display the above map in EPSG:4462 (Lambert's Conformal Conic for
+Australia). The image below shows a square grid created in WGS84 (latitude
+longitude) and then transformed into Lambert's Conformal Conic. Because we only
+have vertices for the grid cell corners the cell edges appear straight rather
+than curved. We've used 20 degree wide grid squares in this example to make this
+effect obvious:
.. image:: /images/grid_transformed.png
@@ -65,9 +69,9 @@ Creating hexagonal grids
^^^^^^^^^^^^^^^^^^^^^^^^
The Grids class also has methods to create hexagonal grids. These have the property that all six
-neighbours of a grid element lie at an equal distance, in contrast to rectangular grids where the
-diagonal neighbours are more distant than the orthogonal neighbours. This makes hexagonal grids
-useful for analysing contagious spatial processes such as disease spread, wildfire, urban
+neighbors of a grid element lie at an equal distance, in contrast to rectangular grids where the
+diagonal neighbors are more distant than the orthogonal neighbors. This makes hexagonal grids
+useful for analyzing contagious spatial processes such as disease spread, wildfire, urban
development and animal movement.
Creating a basic hexagonal grid is simple:
@@ -81,8 +85,8 @@ Which gives this result:
.. image:: /images/grid_hex.png
-As with square grids, there is also a version of the createHexagonalGrid method that takes an
-additional double argument for vertex spacing.
+As with square grids, there is also a version of the ``createHexagonalGrid``
+method that takes an additional double argument for vertex spacing.
Working with a user-defined feature type
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -142,9 +146,10 @@ elements you can go down to the next level and use the Oblongs and Hexagons clas
Oblongs
'''''''
-This class is responsible for creating rectangular grid elements and grids (its name was chosen to
-avoid confusion with java.awt.Rectangle). You can use this class directly when you want to create a
-grid with rectangular, rather than square, elements as in this example:
+This class is responsible for creating rectangular grid elements and grids (its
+name was chosen to avoid confusion with ``java.awt.Rectangle``). You can use
+this class directly when you want to create a grid with rectangular, rather than
+square, elements as in this example:
.. literalinclude:: /../src/main/java/org/geotools/grid/GridExamples.java
:language: java
@@ -180,10 +185,11 @@ Line grids
For displaying a map grid over features you don't really need polygons. Lines will suffice and also
have the advantage that they can be more flexibly styled, e.g. different line thickness, color and
-labelling for major vs minor grid lines.
+labeling for major vs minor grid lines.
-The **Lines** utility class provides method to create *ortho-lines*, ie. lines parallel to the map
-projection axes. In the example below, we create a grid of lines at two *levels*: major lines at
+The **Lines** utility class provides method to create *ortho-lines*, i.e. lines
+parallel to the map projection axes. In the example below, we create a grid of
+lines at two *levels*: major lines at
10 degree spacing and minor lines at 2 degree spacing. The levels are indicated by integer values
with larger values taking precedence over smaller (values are arbitrary, only their rank order
matters):
diff --git a/docs/user/extension/ogc/index.rst b/docs/user/extension/ogc/index.rst
index 0aa5443b9b5..69cd7fdfcb7 100644
--- a/docs/user/extension/ogc/index.rst
+++ b/docs/user/extension/ogc/index.rst
@@ -1,7 +1,7 @@
OGC
===
-Generated Java objects to match the XML schemas employed by gt-xml.
+Generated Java objects to match the XML schemas employed by ``gt-xml``
.. toctree::
@@ -15,4 +15,4 @@ Generated Java objects to match the XML schemas employed by gt-xml.
References:
* :doc:`gt-xml `
-* :doc:`gt-xsd `
\ No newline at end of file
+* :doc:`gt-xsd `
diff --git a/docs/user/extension/ogc/ows.rst b/docs/user/extension/ogc/ows.rst
index 4ab1abe140e..35b7d6c8982 100644
--- a/docs/user/extension/ogc/ows.rst
+++ b/docs/user/extension/ogc/ows.rst
@@ -1,6 +1,6 @@
-net.opengis.ows
----------------
+``net.opengis.ows``
+--------------------
-Additional generated objects for "open web services", beyond the core filter modules provided by gt-main.
+Additional generated objects for "open web services", beyond the core filter modules provided by ``gt-main.``
-No documentation has been supplied.
\ No newline at end of file
+No documentation has been supplied.
diff --git a/docs/user/extension/ogc/wcs.rst b/docs/user/extension/ogc/wcs.rst
index f7bcd3ee86b..6898f2c7868 100644
--- a/docs/user/extension/ogc/wcs.rst
+++ b/docs/user/extension/ogc/wcs.rst
@@ -1,6 +1,6 @@
-net.opengis.wcs
----------------
+``net.opengis.wcs``
+--------------------
Additional generated objects for web coverage service.
-No documentation has been supplied.
\ No newline at end of file
+No documentation has been supplied.
diff --git a/docs/user/extension/ogc/wfs.rst b/docs/user/extension/ogc/wfs.rst
index 642e14f667d..1714563a2a1 100644
--- a/docs/user/extension/ogc/wfs.rst
+++ b/docs/user/extension/ogc/wfs.rst
@@ -1,6 +1,6 @@
-net.opengis.wfs
----------------
+``net.opengis.wfs``
+-------------------
Additional generated objects for web feature service.
-No documentation has been supplied.
\ No newline at end of file
+No documentation has been supplied.
diff --git a/docs/user/extension/ogc/wfsv.rst b/docs/user/extension/ogc/wfsv.rst
index 18d6614548b..a76d2f48503 100644
--- a/docs/user/extension/ogc/wfsv.rst
+++ b/docs/user/extension/ogc/wfsv.rst
@@ -1,9 +1,9 @@
-net.opengis.wfsv
-----------------
+``net.opengis.wfsv``
+--------------------
Additional generated objects for "versioned" extension to web feature service.
This is an extension of the basic web feature service protocol with
the ability to query for feature history.
-No documentation has been supplied.
\ No newline at end of file
+No documentation has been supplied.
diff --git a/docs/user/extension/ogc/wps.rst b/docs/user/extension/ogc/wps.rst
index 45a6890dc84..bad67d2d5d8 100644
--- a/docs/user/extension/ogc/wps.rst
+++ b/docs/user/extension/ogc/wps.rst
@@ -1,6 +1,6 @@
-net.opengis.wps
----------------
+``net.opengis.wps``
+--------------------
Additional generated objects for web processing service.
-No documentation has been supplied.
\ No newline at end of file
+No documentation has been supplied.
diff --git a/docs/user/extension/ogc/xlink.rst b/docs/user/extension/ogc/xlink.rst
index c75b8beb86f..964520c06d1 100644
--- a/docs/user/extension/ogc/xlink.rst
+++ b/docs/user/extension/ogc/xlink.rst
@@ -1,6 +1,6 @@
-org.w3.xlink
-------------
+``org.w3.xlink``
+-----------------
Additional generated objects for XLink.
-No documentation has been supplied.
\ No newline at end of file
+No documentation has been supplied.
diff --git a/docs/user/extension/transform/transform.rst b/docs/user/extension/transform/transform.rst
index e96fda12bbb..9fbc31d1186 100644
--- a/docs/user/extension/transform/transform.rst
+++ b/docs/user/extension/transform/transform.rst
@@ -4,11 +4,11 @@ Transform plugin
The *gt-transform* module allows to wrap ``SimpleFeatureSource`` or ``SimpleFeatureStore`` objects and transform their features and feature types. The transformation abilities include:
* renaming existing attributes
- * convert an attribute type to a different type (via Converters api)
+ * convert an attribute type to a different type (via Converters API)
* create a new attribute as an Expression of existing attributes (the module will try to figure out the target type of the new attribute if none is provided)
* remove attributes
-The transformed feature source will make sure all ``Filter`` and ``Query`` are translated back to the original feature type when accessing data, and will apply the transformations on the fly when returning data. If the original source was writeable, the transformed version will still work as writeable, with back transformations of renamed/retyped attributes.
+The transformed feature source will make sure all ``Filter`` and ``Query`` are translated back to the original feature type when accessing data, and will apply the transformations on the fly when returning data. If the original source was writable, the transformed version will still work as writable, with back transformations of renamed/retyped attributes.
**Maven**::
diff --git a/docs/user/extension/validation.rst b/docs/user/extension/validation.rst
index 4192e31f3ad..c0f32cb6516 100644
--- a/docs/user/extension/validation.rst
+++ b/docs/user/extension/validation.rst
@@ -33,7 +33,7 @@ GeoTools library. As a result **ValidationProcessor** is is a ready to use
software component with its own file formats and so forth.
It is not trying to implement any standards in order to integrate with your
-your existing infrastructure; it is up to you to host a :doc:`Repository ` allowing the **ValidationProcessor** to access your organisations data.
+your existing infrastructure; it is up to you to host a :doc:`Repository ` allowing the **ValidationProcessor** to access your organizations data.
The key concepts offered by the Validation Processor are:
@@ -49,10 +49,10 @@ The design of the ValidationProcessor is similar in spirit to JUnit tests; a "te
Configuration
-------------
-THe ValidationProcessor is configured using:
+The ValidationProcessor is configured using:
* plugin configuration: plugins are defined using a combination of xml and an implementing Java class. This configuration can be reused between
- applications; and are aligned with your organisation data quality policies.
+ applications; and are aligned with your organization data quality policies.
Here is an example::
@@ -104,9 +104,9 @@ THe ValidationProcessor is configured using:
This file defines a suite of two tests that will be performed against LAKES.
* One of these is a reference the the **Is Valid Geometry** plugin defined above. Note that this
- test is restricted to the typeRef "LAKES:lakes"
+ test is restricted to the ``typeRef`` "LAKES:lakes"
- * The second test is an integrity test that needs to make reference to another layer (ie typeRef "STREAMS.streams").
+ * The second test is an integrity test that needs to make reference to another layer (i.e. ``typeRef`` "STREAMS.streams").
The test is defined to prevent lakes and streams being used to describe the same water work.
Feature Validation Example
diff --git a/docs/user/extension/wms/index.rst b/docs/user/extension/wms/index.rst
index fa3c15ef62e..8350407d1fb 100644
--- a/docs/user/extension/wms/index.rst
+++ b/docs/user/extension/wms/index.rst
@@ -2,7 +2,7 @@
WMS
===
-The gt-wms extension offers a full featured web map server client. This allows your application to connect to a range of web map services, review the capabilities and issue requests such as "GetMap" and "GetInfo".
+The ``gt-wms`` extension offers a full featured web map server client. This allows your application to connect to a range of web map services, review the capabilities and issue requests such as "GetMap" and "GetInfo".
.. sidebar:: Details
diff --git a/docs/user/extension/wms/wms.rst b/docs/user/extension/wms/wms.rst
index 42a7bbdff64..fabbfe7fa66 100644
--- a/docs/user/extension/wms/wms.rst
+++ b/docs/user/extension/wms/wms.rst
@@ -29,7 +29,7 @@ This page contains examples how how to connect and use the GeoTools WebMapServer
//For example, the capabilities it returned was not valid
}
- Assuming nothing went wrong, we now have a WebMapServer object "wms"
+ Assuming nothing went wrong, we now have a WebMapServer object ``wms``
that contains the Capabilities document of returned from the server. It
can also provide further communication with the server.
@@ -38,7 +38,7 @@ WMSCapabilities
WMSCapabilities is used to describe the abilities and published information available via a Web Map Service.
-You can retrive a WMSCapabilities directly from your WebMapService::
+You can retrieve a WMSCapabilities directly from your WebMapService::
WMSCapabilities capabilities = wms.getCapabilities();
@@ -163,7 +163,7 @@ Other common activities:
* Requesting with a style
- If you want to request the map with some of its available styles use the appropriate addLayer method::
+ If you want to request the map with some of its available styles use the appropriate ``addLayer`` method::
Layer[] layers = WMSUtils.getNamedLayers(capabilities);
List styles = layers[2].getStyles();
diff --git a/docs/user/extension/wmts/index.rst b/docs/user/extension/wmts/index.rst
index 5e696f67b20..81b34eb46f9 100644
--- a/docs/user/extension/wmts/index.rst
+++ b/docs/user/extension/wmts/index.rst
@@ -2,7 +2,7 @@
WMTS
====
-The gt-wmts extension builds on top of the :doc:`gt-tile-client <../tile-client/index>` module in order to offer a web map tile service client.
+The ``gt-wmts`` extension builds on top of the :doc:`gt-tile-client <../tile-client/index>` module in order to offer a web map tile service client.
This allows your application to connect to KVP or REST based web map tile services, review the capabilities and
issue requests such as "GetTile".
@@ -25,4 +25,4 @@ References:
* http://www.opengeospatial.org/standards/wmts (OGC standard)
* http://www.geowebcache.org/ (WMTS server)
-* :doc:`gt-tile-client <../tile-client/index>`
\ No newline at end of file
+* :doc:`gt-tile-client <../tile-client/index>`
diff --git a/docs/user/extension/wmts/wmts.rst b/docs/user/extension/wmts/wmts.rst
index 170af110553..11344ec1f63 100644
--- a/docs/user/extension/wmts/wmts.rst
+++ b/docs/user/extension/wmts/wmts.rst
@@ -33,7 +33,7 @@ for a remote "Web Map Tile Server" and can be used to examine and retrieve publi
// For example, the capabilities it returned was not valid
}
- Assuming nothing went wrong, we now have a WebMapTileServer object "wmts"
+ Assuming nothing went wrong, we now have a WebMapTileServer object ``wmts``
that contains the Capabilities document of returned from the server. It
can also provide further communication with the server.
@@ -68,7 +68,7 @@ Service contains metadata information about the server:
Request
^^^^^^^
-The WMTS Operations describe the requests entrypoints:
+The WMTS Operations describe the requests entry points:
.. code-block:: java
@@ -177,7 +177,7 @@ Making a GetTile request is more interesting than looking at WMSCapabilities.
Set responses = wmts.issueRequest(req);
We are getting a Set of Tiles, which are all the Tiles needed to fill
- the bbox we requested.
+ the bounding box we requested.
5. In order to get the tile images, we'll have to use the info in the Tiles:
diff --git a/docs/user/extension/xsd/core.rst b/docs/user/extension/xsd/core.rst
index 6430b341298..692016f333d 100644
--- a/docs/user/extension/xsd/core.rst
+++ b/docs/user/extension/xsd/core.rst
@@ -1,7 +1,7 @@
XSD-Core
--------
-These extensions are used by the gt-xml module to handle basic XML schema types
+These extensions are used by the ``gt-xml`` module to handle basic XML schema types
and XLink.
References:
diff --git a/docs/user/extension/xsd/fes.rst b/docs/user/extension/xsd/fes.rst
index 5d16e6962c7..91e4e066641 100644
--- a/docs/user/extension/xsd/fes.rst
+++ b/docs/user/extension/xsd/fes.rst
@@ -1,4 +1,4 @@
XSD-FES
--------
-Filter 2.0 schema for gt-xml.
\ No newline at end of file
+Filter 2.0 schema for ``gt-xml``
diff --git a/docs/user/extension/xsd/filter.rst b/docs/user/extension/xsd/filter.rst
index 09ba568e4ee..62ff2716a32 100644
--- a/docs/user/extension/xsd/filter.rst
+++ b/docs/user/extension/xsd/filter.rst
@@ -1,4 +1,4 @@
XSD-Filter
----------
-Filter 1.0 schema for gt-xml.
\ No newline at end of file
+Filter 1.0 schema for ``gt-xml``
diff --git a/docs/user/extension/xsd/gml2.rst b/docs/user/extension/xsd/gml2.rst
index 726a1853e25..a1b8127fa1c 100644
--- a/docs/user/extension/xsd/gml2.rst
+++ b/docs/user/extension/xsd/gml2.rst
@@ -1,4 +1,4 @@
XSD GML2
--------
-GML2 schema for gt-gml.
\ No newline at end of file
+GML2 schema for ``gt-gml``
diff --git a/docs/user/extension/xsd/gml3.rst b/docs/user/extension/xsd/gml3.rst
index 11a7575ecfa..55454da1588 100644
--- a/docs/user/extension/xsd/gml3.rst
+++ b/docs/user/extension/xsd/gml3.rst
@@ -1,4 +1,4 @@
XSD-GML3
--------
-GML3 schema for gt-xml.
\ No newline at end of file
+GML3 schema for ``gt-xml``
diff --git a/docs/user/extension/xsd/index.rst b/docs/user/extension/xsd/index.rst
index 31fb2ed39df..f113a7a10f1 100644
--- a/docs/user/extension/xsd/index.rst
+++ b/docs/user/extension/xsd/index.rst
@@ -1,8 +1,8 @@
XSD
===
-These extensions are used by the gt-xml module to capture common XML schemas
-(and represent them programatically using the eclipse XSD library). This work
+These extensions are used by the ``gt-xml`` module to capture common XML schemas
+(and represent them programmatically using the eclipse XSD library). This work
prevents GeoTools from needing to contact the Internet when working with basic
XML schema bindings and XLinks.
@@ -24,4 +24,4 @@ XML schema bindings and XLinks.
References:
* :doc:`gt-xml `
-* :doc:`gt-ogc `
\ No newline at end of file
+* :doc:`gt-ogc `
diff --git a/docs/user/extension/xsd/kml.rst b/docs/user/extension/xsd/kml.rst
index de727a88fee..e7d0d5d08b8 100644
--- a/docs/user/extension/xsd/kml.rst
+++ b/docs/user/extension/xsd/kml.rst
@@ -1,7 +1,7 @@
XSD-KML
-------
-KML schema and bindings for gt-xml allowing the handling of FeatureCollection
+KML schema and bindings for ``gt-xml`` allowing the handling of FeatureCollection
and Feature content.
References:
diff --git a/docs/user/extension/xsd/ows.rst b/docs/user/extension/xsd/ows.rst
index 4b042e8cfb3..e418567d926 100644
--- a/docs/user/extension/xsd/ows.rst
+++ b/docs/user/extension/xsd/ows.rst
@@ -1,4 +1,4 @@
XSD OWS
-------
-Open web services (OWS) schema for gt-xml.
\ No newline at end of file
+Open web services (OWS) schema for ``gt-xml``
diff --git a/docs/user/extension/xsd/sld.rst b/docs/user/extension/xsd/sld.rst
index ad721bb57e7..8cc2135ce4c 100644
--- a/docs/user/extension/xsd/sld.rst
+++ b/docs/user/extension/xsd/sld.rst
@@ -1,4 +1,4 @@
XSD SLD
-------
-SLD Schema for gt-xml.
\ No newline at end of file
+SLD Schema for ``gt-xml``
diff --git a/docs/user/extension/xsd/wcs.rst b/docs/user/extension/xsd/wcs.rst
index bbbb3472ece..b9bd8b44c65 100644
--- a/docs/user/extension/xsd/wcs.rst
+++ b/docs/user/extension/xsd/wcs.rst
@@ -1,4 +1,4 @@
XSD WCS
-------
-Web coverage service (WCS) schema for gt-xml.
\ No newline at end of file
+Web coverage service (WCS) schema for ``gt-xml``
diff --git a/docs/user/extension/xsd/wfs.rst b/docs/user/extension/xsd/wfs.rst
index 748aaeabc61..8d7d0868c23 100644
--- a/docs/user/extension/xsd/wfs.rst
+++ b/docs/user/extension/xsd/wfs.rst
@@ -1,4 +1,4 @@
XSD WFS
-------
-Web feature service (WFS) for gt-xml.
\ No newline at end of file
+Web feature service (WFS) for ``gt-xml``
diff --git a/docs/user/extension/xsd/wms.rst b/docs/user/extension/xsd/wms.rst
index 8a94a4fd923..87163f978f6 100644
--- a/docs/user/extension/xsd/wms.rst
+++ b/docs/user/extension/xsd/wms.rst
@@ -1,4 +1,4 @@
XSD WMS
-------
-Web map service (WMS) schema for gt-xml.
\ No newline at end of file
+Web map service (WMS) schema for ``gt-xml``
diff --git a/docs/user/extension/xsd/wps.rst b/docs/user/extension/xsd/wps.rst
index 3f33366eb65..b4829404436 100644
--- a/docs/user/extension/xsd/wps.rst
+++ b/docs/user/extension/xsd/wps.rst
@@ -1,4 +1,4 @@
XSD WPS
-------
-Web processing service (WPS) schema for gt-xml.
\ No newline at end of file
+Web processing service (WPS) schema for ``gt-xml``
diff --git a/docs/user/extension/ysld.rst b/docs/user/extension/ysld.rst
index 07e50ef37e1..f7a4cd9619e 100644
--- a/docs/user/extension/ysld.rst
+++ b/docs/user/extension/ysld.rst
@@ -108,7 +108,7 @@ Color examples:
fill-color: rgb(255,0,255)
Color literals can be specified either as a 6 digit hex string or a 3 argument
-rgb function call.
+``rgb`` function call.
Filters
'''''''
@@ -166,7 +166,7 @@ Lists and arrays are specified as space delimited. For example:
Anchors & References
''''''''''''''''''''
-With Yaml it is possible to reference other parts of a document. With this
+With YAML it is possible to reference other parts of a document. With this
it is possible to support variables and mix ins. An example of a color variable:
.. code-block:: yaml
@@ -643,4 +643,4 @@ YSLD also provides a validator, which can be called using:
Ysld.validate(ysld);
-This call accepts the everything that `Ysld.parse(ysld)` does, and returns a list of exceptions corresponding to syntax errors.
\ No newline at end of file
+This call accepts the everything that `Ysld.parse(ysld)` does, and returns a list of exceptions corresponding to syntax errors.
diff --git a/docs/user/geotools.rst b/docs/user/geotools.rst
index bda02c0239c..01a3c844173 100644
--- a/docs/user/geotools.rst
+++ b/docs/user/geotools.rst
@@ -53,7 +53,7 @@ Core Features
GeoTools also operates as part of a wider community with a staging area used to foster new
talent and promote experimentation.
- Some highlights are swing support (used in our tutorials!), swt, local and web process support,
+ Some highlights are swing support (used in our tutorials!), SWT, local and web process support,
additional symbology, additional data formats, generation of grids and a couple of implementations
of ISO Geometry.
@@ -62,21 +62,57 @@ Supported Formats
* raster formats and data access
- arcsde, arcgrid, geotiff, grassraster, image (JPEG, TIFF, GIF, PNG), imageio-ext-gdal,
- imagemosaic, imagepyramid, JP2K, matlab
-
-* Database "jdbc-ng" support
-
- db2, h2, mysql, oracle, postgis, spatialite, sqlserver
+ + ``arcsde``
+ + ``arcgrid``
+ + ``geotiff``
+ + ``grassraster``
+ + image ( ``JPEG`` ``TIFF`` ``GIF`` ``PNG`` ),
+ + ``imageio-ext-gdal``
+ + ``imagemosaic``
+ + ``imagepyramid``
+ + ``JP2K``
+ + ``matlab``
+
+* Database ``jdbc-ng`` support
+
+ + ``db2``
+ + ``h2``
+ + ``mysql``
+ + ``oracle``
+ + ``postgis``
+ + ``spatialite``
+ + ``sqlserver``
* Vector formats and data access
- app-schema, arcsde, csv, dxf, geojson, org, property, shapefile, wfs
+
+ + ``app-schema``
+ + ``arcsde``
+ + ``csv``
+ + ``dxf``
+ + ``geojson``
+ + ``property``
+ + ``shapefile``
+ + ``wfs``
+
* XML Bindings
Java data structures and bindings provided for the following:
- xsd-core (xml simple types), fes, filter, gml2, gml3, kml, ows, sld, wcs, wfs, wms, wps.
+
+ + ``xsd-core`` (xml simple types)
+ + ``fes``
+ + ``filter``
+ + ``gml2``
+ + ``gml3``
+ + ``kml``
+ + ``ows``
+ + ``sld``
+ + ``wcs``
+ + ``wfs``
+ + ``wms``
+ + ``wmts``
+ + ``wps``
Additional Geometry, Filter and Style parser/encoders available for DOM and SAX applications.
diff --git a/docs/user/library/coverage/arcsde.rst b/docs/user/library/coverage/arcsde.rst
index 6b302c5fcd0..c7aaab9415f 100644
--- a/docs/user/library/coverage/arcsde.rst
+++ b/docs/user/library/coverage/arcsde.rst
@@ -10,12 +10,12 @@ References:
ArcSDE Raster
^^^^^^^^^^^^^
-Since Geotools 2.3.x and 2.4.x.
+Since GeoTools 2.3.x and 2.4.x.
ESRI's ArcSDE spatial database product allows raster data to be stored inside a host RDBMS. ArcSDE then provides a standard API to access the raster data. It's worth noting that the merits of storing large chunks of raster data inside an RDBMS are arguable. Perhaps the DBMS is better at handling Disk I/O, and perhaps there are enterprise or data-management advantages. However, many people actually store raster data inside ArcSDE, so there is a need to support it.
-Connecting to ArcSDE Raster datasets
-''''''''''''''''''''''''''''''''''''
+Connecting to ArcSDE Raster data sets
+'''''''''''''''''''''''''''''''''''''
When using ArcSDE Raster support, you can use it just like a standard GridCoverage2DReader. However,
when instantiating it, you must pass it a String or File containing the URL of the SDE instance
@@ -48,7 +48,7 @@ Raster Support Features
* Connection pooling (based on GT ArcSDE connection pooling)
* Auto-discovery of available CRS information
-* Pyramid support (RRD or "overviews"), if present in the underlying raster dataset
+* Pyramid support (RRD or "overviews"), if present in the underlying raster data set
* 3 or 4 Band unsigned-byte RGBX Rasters
* Colormapped rasters
@@ -57,7 +57,7 @@ Raster Support Features
Supported Raster Types
''''''''''''''''''''''
-Currently ArcSDE Raster support is limited to 3-band or 4-band, one-byte-per-band, non-colormapped rasters. Support for further ArcSDE raster types is in progress. To check out what's on the roadmap, look at the GeoTools ArcSDE Raster Format information page.
+Currently ArcSDE Raster support is limited to 3-band or 4-band, one-byte-per-band, non-colormapped rasters. Support for further ArcSDE raster types is in progress. To check out what's on the road map, look at the GeoTools ArcSDE Raster Format information page.
======== =======================================
Support Raster Type
@@ -70,7 +70,7 @@ no Non unsigned-byte Rasters
General configuration notes
'''''''''''''''''''''''''''
-Also make sure that the port number specified is the same as in the services file (%(%(%systemRoot%\system32\drivers\etc\services in windows), it should contain a line like (if yours is different then change the port param of your datastore definition)::
+Also make sure that the port number specified is the same as in the services file ``(%(%(%systemRoot%\system32\drivers\etc\services in windows)``, it should contain a line like (if yours is different then change the port parameter of your datastore definition)::
esri_sde
5151/tcp
@@ -82,7 +82,7 @@ Also make sure that the port number specified is the same as in the services fil
There is limited support for different kinds of rasters (see the Raster Support Features section
below for specific details) and the code has only been used in one ArcSDE environment.
- The 'Raster Support Plan' section, below, outlines a plan to make the Geotools ArcSDE raster
+ The 'Raster Support Plan' section, below, outlines a plan to make the GeoTools ArcSDE raster
code both support more formats, as well as enter the mainline development tree/process.
Raster Support Plan:
diff --git a/docs/user/library/coverage/coverageio.rst b/docs/user/library/coverage/coverageio.rst
index 8be58d0f2c8..00948afb1db 100644
--- a/docs/user/library/coverage/coverageio.rst
+++ b/docs/user/library/coverage/coverageio.rst
@@ -1,6 +1,6 @@
Coverage IO Plugin
------------------
-Unsupported plugin containing base classes for coveage io opertaions.
+Unsupported plugin containing base classes for coverage IO operations.
-No documentation has been provided.
\ No newline at end of file
+No documentation has been provided.
diff --git a/docs/user/library/coverage/faq.rst b/docs/user/library/coverage/faq.rst
index d00952d3a7a..64a126c9691 100644
--- a/docs/user/library/coverage/faq.rst
+++ b/docs/user/library/coverage/faq.rst
@@ -34,12 +34,12 @@ JAI Image I/O system
When combined, these subsystems provide immense power to the GeoTools coverage module but this dependency does require that programmers who wish to use and extend the module must learn to use these other Java modules.
-To get the most out of the gt-coverage module developers should be familiar with the underlying mathematical ideas. Knowledge of ideas such as an Affine Transforms (for rotating and scaling) is required to work effectively with the coverage module. Affines are explained any computer graphics textbooks, and on many web sites, if you need a refresher.
+To get the most out of the ``gt-coverage`` module developers should be familiar with the underlying mathematical ideas. Knowledge of ideas such as an Affine Transforms (for rotating and scaling) is required to work effectively with the coverage module. Affines are explained any computer graphics textbooks, and on many web sites, if you need a refresher.
Q: How to make raster data work in a NetBeans based application?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Reporterly, the NetBeans classloader breaks ImageIO plugin mechanism which is used
+Reportedly, the NetBeans class loader breaks ImageIO plugin mechanism which is used
to locate image format readers, image input and output streams, and the like.
To work around it, run the following line of code, only once, before any raster
access::
diff --git a/docs/user/library/coverage/geotiff.rst b/docs/user/library/coverage/geotiff.rst
index 2c58fe87b91..3f7561be78a 100644
--- a/docs/user/library/coverage/geotiff.rst
+++ b/docs/user/library/coverage/geotiff.rst
@@ -1,7 +1,7 @@
GeoTIFF Plugin
--------------
-The gt-geotiff module in the plugin group provides access to the GeoTiff file format.
+The ``gt-geotiff`` module in the plugin group provides access to the GeoTiff file format.
**References**
diff --git a/docs/user/library/coverage/geotiff_new.rst b/docs/user/library/coverage/geotiff_new.rst
index a7a707129a0..ddddfd3f043 100644
--- a/docs/user/library/coverage/geotiff_new.rst
+++ b/docs/user/library/coverage/geotiff_new.rst
@@ -3,4 +3,4 @@ GeoTIFF New Plugin
Unsupported plugin experimenting with accessing GeoTIFF.
-No documenation has been provided.
\ No newline at end of file
+No documentation has been provided.
diff --git a/docs/user/library/coverage/grassraster.rst b/docs/user/library/coverage/grassraster.rst
index 66a133315ea..5046df32d90 100644
--- a/docs/user/library/coverage/grassraster.rst
+++ b/docs/user/library/coverage/grassraster.rst
@@ -2,8 +2,8 @@ GrassRaster Plugin
------------------
The module supplies support for reading and writing GRASS rasters. The metadata contain both the
-colortable and the categories (if available) of the raster map. The original colortable of the
-GRASS raster is read into the geotools coverage Categories and can as such be visualized
+color table and the categories (if available) of the raster map. The original color table of the
+GRASS raster is read into the GeoTools coverage categories and can as such be visualized
if using a default styler.
**Maven**::
@@ -14,23 +14,27 @@ if using a default styler.
${geotools.version}
-Data structure of a rastermap
------------------------------
-
-Raster data in GRASS are strictly bound to their workspace. Since a workspace is something more on userlevel, I will from now on use grass database for the folder structure and workspace for what the user will interact with at application level.
-
-A GRASS raster map consists of several files in several subdirectories in a mapset, organized as follows:
-
-* cellhd/: map header including projection code, coordinates representing the spatial extent of the raster map, number of rows and columns, resolution, and information about map compression;
-* cell/, fcell/ or grid3/: generic matrix of values in a compressed, portable format which depends on the raster data type (integer, floating point or 3D grid);
-* hist/: history file which contains metadata such as the data source, the command that was used to generate the raster map, or other information provided by the user;
-* cats/: optional category file which contains text or numeric labels assigned to the raster map categories;
-* colr/: optional color table;
-* cell_misc/: optional timestamp, range of values, quantization rules (for floating point maps) and null (no-data) files;
-* WIND: contains the active processing region and the resolution
-* PROJ_INFO: contains the information about the projection
-* PROJ_UNITS: contains the information about projection units used
-* vector/: contain the vector data since GRASS 6
+Data structure of a raster map
+------------------------------
+
+Raster data in GRASS are strictly bound to their workspace. Since a
+workspace is something more on user level, I will from now on use grass
+database for the folder structure and workspace for what the user will
+interact with at application level.
+
+A GRASS raster map consists of several files in several subdirectories
+in a ``mapset`` , organized as follows:
+
+* ``cellhd/``: map header including projection code, coordinates representing the spatial extent of the raster map, number of rows and columns, resolution, and information about map compression;
+* ``cell/``, ``fcell/`` or ``grid3/``: generic matrix of values in a compressed, portable format which depends on the raster data type (integer, floating point or 3D grid);
+* ``hist/``: history file which contains metadata such as the data source, the command that was used to generate the raster map, or other information provided by the user;
+* ``cats/``: optional category file which contains text or numeric labels assigned to the raster map categories;
+* ``colr/``: optional color table;
+* ``cell_misc/``: optional timestamp, range of values, quantization rules (for floating point maps) and null (no-data) files;
+* ``WIND``: contains the active processing region and the resolution
+* ``PROJ_INFO``: contains the information about the projection
+* ``PROJ_UNITS``: contains the information about projection units used
+* ``vector/``: contain the vector data since GRASS 6
Usage
-----
diff --git a/docs/user/library/coverage/grid.rst b/docs/user/library/coverage/grid.rst
index 5fe59a977fa..1f76a065e41 100644
--- a/docs/user/library/coverage/grid.rst
+++ b/docs/user/library/coverage/grid.rst
@@ -15,9 +15,9 @@ If you already know what kind of file you have you have you can create the reade
GeoTiffReader reader = new GeoTiffReader(file, new Hints(Hints.FORCE_LONGITUDE_FIRST_AXIS_ORDER, Boolean.TRUE));
GridCoverage2D coverage = reader.read(null);
-You can also create a GridCoverage "by hand" if you have a BufferedImage in memory that you would like to place onto a map.
+You can also create a GridCoverage "by hand" if you have a ``BufferedImage`` in memory that you would like to place onto a map.
-Here is an example of creating a grid coverage from a tile (containing a bufferedImage and a ReferencedEnvelope location:
+Here is an example of creating a grid coverage from a tile (containing a ``BufferedImage`` and a ``ReferencedEnvelope`` location:
.. literalinclude:: /../src/main/java/org/geotools/coverage/CoverageExamples.java
:language: java
@@ -49,19 +49,23 @@ You can also evaluate the coverage at a specific point in order to determine wha
RenderedImage
'''''''''''''
-We can trivially get an AWT image from a GridCoverage2D with a simple call to the getRenderedImage() method. The result is a standard RenderedImage.
+We can trivially get an AWT image from a ``GridCoverage2D`` with a simple call to
+the ``getRenderedImage()`` method. The result is a standard ``RenderedImage``.
Obviously we can combine two of these steps to go directly from the created grid coverage to the final image::
RenderedImage ri = myGridCoverage.getView(ViewType.GEOPHYSICS).getRenderedImage();
-It should be possible, when generating the RenderedImage to specify the color scheme to use for that particular image. Currently this
-is handled as part of the rendering process using a RasterSymbolizer.
+It should be possible, when generating the ``RenderedImage`` to specify the color scheme to use for that particular image. Currently this
+is handled as part of the rendering process using a ``RasterSymbolizer``.
Advanced
^^^^^^^^
-The coverage module provides some powerful methods to use the different views of the grid coverage. Many of these uses are backed by the standard JAI mechanisms behind the scenes, sometimes combined with the georeferencing operations of the referencing module.
+The coverage module provides some powerful methods to use the different
+views of the grid coverage. Many of these uses are backed by the
+standard JAI mechanisms behind the scenes, sometimes combined with the
+georeferencing operations of the referencing module.
The GeoTools coverage module provides **Operations** for convenience, this class bundles up the sophisticated and powerful internal mechanism of the processing package. The package summary in javadocs begins the explanation of the internal mechanism. This documentation page will need to be expanded with a better explanation of the coverage module operation system.
@@ -70,7 +74,7 @@ The basic pattern of the operations mechanism runs as follows:
1. Instantiate a new Processor
2. Get the parameter group for the desired operation
3. Configure the parameters in the parameter group
-4. Call the doOperation(..) method on the Processor
+4. Call the ``doOperation(..)`` method on the Processor
With several options for configuration along the way.
@@ -105,7 +109,16 @@ We can use the resample(..) method to transform any GridCoverage to another CRS.
Wow, this is getting fun!
-This georeferencing transformation works backwards from what one might naively expect and from what happens with vector data. With vector data, tranformations take the positions in the original referencing system and calculate the positions in the target referencing system. In the GridCoverage system, we are expecting a regular grid in the target referencing system. Therefore, we first calculate the position of the grid points in the target referencing system, then, for each, we calculate the equivalent position in the original referencing system and estimate the value which the original grid would have at that calculated position. This is why we go through the resample(..) operation.
+This georeferencing transformation works backwards from what one might
+naively expect and from what happens with vector data. With vector
+data, transformations take the positions in the original referencing
+system and calculate the positions in the target referencing system. In
+the GridCoverage system, we are expecting a regular grid in the target
+referencing system. Therefore, we first calculate the position of the grid
+points in the target referencing system, then, for each, we calculate the
+equivalent position in the original referencing system and estimate the
+value which the original grid would have at that calculated position. This
+is why we go through the ``resample(..)`` operation.
interpolate
'''''''''''
@@ -154,7 +167,8 @@ Users can create their own operations and add them to the operation system.
CoverageStack
^^^^^^^^^^^^^
-We can combine several GridCoverage2D instances into a 3 dimensional stack of coverages using the CoverageStack class.
+We can combine several GridCoverage2D instances into a 3 dimensional
+stack of coverages using the CoverageStack class.
Utility classes
^^^^^^^^^^^^^^^
diff --git a/docs/user/library/coverage/image.rst b/docs/user/library/coverage/image.rst
index c369666abe6..0e5f360af58 100644
--- a/docs/user/library/coverage/image.rst
+++ b/docs/user/library/coverage/image.rst
@@ -30,64 +30,56 @@ raster images with an associated world file.::
AbstractGridFormat format = GridFormatFinder.findFormat( file );
GridCoverage2DReader reader = format.getReader( file );
-World files have the same name as the image (different file extension) and contain just
-enough information to convert pixel coordinates to real world coordinates. They do not
-store any coordinate reference system information for the coordinates.
+World files have the same name as the image (different file extension)
+and contain just enough information to convert pixel coordinates to real
+world coordinates. They do not store any coordinate reference system
+information for the coordinates.
-The gt-image plugin depends on Java to read the image file; so depending on how you have
-JAI / Image IO configured the following should be supported:
+The gt-image plugin depends on Java to read the image file; so depending
+on how you have JAI / Image IO configured the following should be
+supported:
-============= ======================= =====================
-Image Format Image Format Extension World File Extension
-============= ======================= =====================
-JPEG file.jpg or file.jpeg file.jgw or file.wld
-TIFF file.tif or file.tiff file.tfw or file.wld
-PNG file.png file.pgw or file.wld
-GIF file.gif file.gfw or file.wld
-============= ======================= =====================
+============= ============================== ==============================
+Image Format Image Format Extension World File Extension
+============= ============================== ==============================
+JPEG ``file.jpg`` or ``file.jpeg`` ``file.jgw`` or ``file.wld``
+TIFF ``file.tif`` or ``file.tiff`` ``file.tfw`` or ``file.wld``
+PNG ``file.png`` ``file.pgw`` or ``file.wld``
+GIF ``file.gif`` ``file.gfw`` or ``file.wld``
+============= ============================== ==============================
World File
^^^^^^^^^^
-A world file is a small text file that says where the corners of the image is. The extension of
-a world file is the first and last letters of the image extension with "w" appended at the end.
-The coordinates are in the units of the projections, so -180,180 -90,90 for lat/long.
+A world file is a small text file that says where the corners of the
+image is. The extension of a world file is the first and last letters
+of the image extension with "w" appended at the end. The coordinates
+are in the units of the projections, so -180,180 -90,90 for lat/long.
-If your image is not in lat/long you will have to include a .prj file, which is a text file with
-the WKT definition of the coordinate system that should be used.
+If your image is not in lat/long you will have to include a ``.prj`` file,
+which is a text file with the WKT definition of the coordinate system
+that should be used.
Example contents of a world file are as follows:
-+------+----------------+---------------------------------------------------------------+
-|Line | Example | Definition |
-+======+================+===============================================================+
-|1 |0.0359281435 | Horizontal scale for a pixel |
-+------+----------------+---------------------------------------------------------------+
-|2 |0.0000000000 | Rotation for row, usually zero |
-+------+----------------+---------------------------------------------------------------+
-|3 |0.0000000000 | Rotation for column, usually zero |
-+------+----------------+---------------------------------------------------------------+
-|4 |-0.0359281437 | Vertical scale for pixel, usually negative as rasters count |
-| | | down from the upper left corner |
-+------+----------------+---------------------------------------------------------------+
-|5 |-179.9820349282 | Translation, usually "easting" location of the upper left |
-| | | pixel (ie column 0) |
-+------+----------------+---------------------------------------------------------------+
-|6 |89.9820359281 | Translation, usually "northing" location of the upper left |
-| | | pixel (ie row 0) |
-+------+----------------+---------------------------------------------------------------+
-
-The Translation information can be thought of as the location of the upper left pixel, this
-location is provided in the units of the projections being used:
-
-* For lat/long this location should be in the range -180,180 -90,90
-* If your image is not in lat/long you will have to include a .prj file, which is a text file with the
- WKT definition of the coordinate system that should be used.
+====== ================ ================================================================
+Line Example Definition
+====== ================ ================================================================
+1 0.0359281435 Horizontal scale for a pixel
+2 0.0000000000 Rotation for row, usually zero
+3 0.0000000000 Rotation for column, usually zero
+4 -0.0359281437 Vertical scale for pixel, usually negative as rasters count
+ down from the upper left corner
+5 -179.9820349282 Translation, usually "easting" location of the upper left
+ pixel (i.e. column 0)
+6 89.9820359281 Translation, usually "northing" location of the upper left
+ pixel (i.e. row 0)
+====== ================ ================================================================
**Projection File**
-A projection file (prj) is WKT representation of the projection the image is in:
+A projection file (``prj``) is WKT representation of the projection the image is in.
**image.prj**::
@@ -97,9 +89,9 @@ A projection file (prj) is WKT representation of the projection the image is in:
JPEG Example
^^^^^^^^^^^^
-If your image is world.jpg then you need a world.jgw file and optionally a world.prj file.
+If your image is ``world.jpg`` then you need a ``world.jgw`` file and optionally a ``world.prj`` file.
-An example world.jgw::
+An example ``world.jgw``::
0.0359281435
0.0000000000
@@ -108,7 +100,7 @@ An example world.jgw::
-179.9820349282
89.9820359281
-An example world.prj is::
+An example ``world.prj`` is::
GEOGCS["GCS_WGS_1984", DATUM["WGS_1984", SPHEROID["WGS_1984",6378137,298.257223563]],
PRIMEM["Greenwich",0], UNIT["Degree",0.017453292519943295]]
diff --git a/docs/user/library/coverage/imageio.rst b/docs/user/library/coverage/imageio.rst
index 5b55c9eb0ba..552b69bfcdf 100644
--- a/docs/user/library/coverage/imageio.rst
+++ b/docs/user/library/coverage/imageio.rst
@@ -1,11 +1,11 @@
ImageIO-EXT GDAL Plugin
-----------------------
-The ImageIO-EXT plug-in allows geotools to make use of the additional formats provided via the
+The ImageIO-EXT plug-in allows GeoTools to make use of the additional formats provided via the
Java Extension ImageIO-EXT.
The Java ImageIO library comes with a few formats out of the box (such as PNG, etc...) the
-imageio-ext project provides support for additional geospatial formats.
+ImageIO-EXT project provides support for additional geospatial formats.
**References**
@@ -26,7 +26,7 @@ At the GeoTools level, the set of formats supported by the GeoTools ImageIO-Ext
is composed of:
* DTED Elevation Raster
-* ESRI .hdr labelled
+* ESRI ``.hdr`` labeled
* Erdas Imagine Images
* NITF: National Imagery Transmission Format
* ECW: ERMapper Compressed Wavelets
@@ -43,7 +43,7 @@ file formats:
* Arc/Info ASCII Grid
* Arc/Info Binary Grid
-* ENVI .hdr Labelled
+* ENVI ``.hdr`` labeled
* ENVISAT Image Format
* GDAL VRT
* GeoTIFF
diff --git a/docs/user/library/coverage/index.rst b/docs/user/library/coverage/index.rst
index 54f11e2fd55..48980cffd20 100644
--- a/docs/user/library/coverage/index.rst
+++ b/docs/user/library/coverage/index.rst
@@ -11,7 +11,7 @@ The gt-coverage module is responsible for:
* implementation of the coverage interfaces from :doc:`gt-opengis <../opengis/index>` such as GridCoverage2D and Format
* Bridging between Java Advanced Imaging, JAI Image IO and Java Image facilities and the geospatial idea of a GridCoverage
-* Recognising additional formats available on the CLASSPATH using **GridFormatFinder**
+* Recognizing additional formats available on the CLASSPATH using **GridFormatFinder**
The module supports the use of coverage information (i.e. raster) from a range of sources.
diff --git a/docs/user/library/coverage/internal/format.rst b/docs/user/library/coverage/internal/format.rst
index 6f8cb700068..ed001bcacf1 100644
--- a/docs/user/library/coverage/internal/format.rst
+++ b/docs/user/library/coverage/internal/format.rst
@@ -3,17 +3,17 @@ Format
The standard way to access an external data source to create GeoTools GridCoverage instances currently requires creating several classes:
-1. A javax.imageio.ImageReader class to access the data source and providing the methods to create:
+1. A ``javax.imageio.ImageReader`` class to access the data source and providing the methods to create:
- * java.awt.image.RenderedImage
- * javax.imageio.metadata.IIOMetadata instance defining both:
+ * ``java.awt.image.RenderedImage``
+ * ``javax.imageio.metadata.IIOMetadata`` instance defining both:
- * the meaning of the numeric values in the RenderedImage; and
- * the georeferencing parameters to geolocate the image
+ * the meaning of the numeric values in the ``RenderedImage``; and
+ * the georeferencing parameters to geolocate the image
2. A builder of the GridCoverage2D which uses the above information to create an instance.
-The gt-opengis module documentation explains the concepts behind this work. It should eventually be possible to reduce the effort required of programmers wishing to use this part of the library (in particular a standard way to define all the different kinds of metadata for grid coverages).
+The ``gt-opengis`` module documentation explains the concepts behind this work. It should eventually be possible to reduce the effort required of programmers wishing to use this part of the library (in particular a standard way to define all the different kinds of metadata for grid coverages).
This page explores some of the examples available today.
@@ -26,12 +26,20 @@ This ImageReader will need to provide both a RenderedImage and an object which e
The final step involves writing a class which can create a GridCoverage2D. That class will need to get the RenderedImage from the ImageReader and will need to parse the IIOMetaData instance also obtained from the ImageReader to extract the required information on both the meaning of the data and the georeferencing of the image. With that information, the class will use the GridCoverageFactory in the coverage module to instantiate the GridCoverage2d.
* Unfortunately, we have not yet arrived at a design sufficiently powerful and flexible to handle the creation of GridCoverage instances from all the different kinds of data a user can have. Therefore, it is the programmer using the GeoTools library who must create a system to generate a new GridCoverage for each data file type they need to access. It is up to that programmer, based on the knowledge of the data format and the data contents of the files their applications use, to extract any generalization which they can get to avoid having to write a new class for every file.
-* Some work has been done in GeoAPI and GeoTools to start to create a more general framework. For example, the class that builds a GridCoverage is generally called a GridCoverageReader since it is based on an ImageReader---there is even an interface of that name in GeoAPI. Unfortunately, this is work in progress and the API will probably change once we start work to finalize the standard way to access grid data. Programmers today should ignore all that work and build their own. However, the unsupported module coverageio and coverageio-netcdf may have useful ideas for programmers who wish to look at that code.
-
-This page refers to the DEM example from the gt-opengis explanation of GridCoverage.
+* Some work has been done in GeoAPI and GeoTools to start to create
+ a more general framework. For example, the class that builds a
+ GridCoverage is generally called a GridCoverageReader since it is
+ based on an ImageReader---there is even an interface of that name in
+ GeoAPI. Unfortunately, this is work in progress and the API will probably
+ change once we start work to finalize the standard way to access grid
+ data. Programmers today should ignore all that work and build their
+ own. However, the unsupported module ``coverageio`` and ``coverageio-netcdf``
+ may have useful ideas for programmers who wish to look at that code.
+
+This page refers to the DEM example from the ``gt-opengis`` explanation of GridCoverage.
========== ==================== ============== ======================
-RAW Data Category Value Colour
+RAW Data Category Value Color
========== ==================== ============== ======================
-9999 QualitativeCategory NaN new Color(0,0,0,0)
-8888 QualitativeCategory NaN Color.WHITE
@@ -40,12 +48,12 @@ RAW Data Category Value Colour
**ImageReader**
-The ImageReader class is part of the javax.imageio package. It is an abstract class which needs only a few methods defined to work the critical ones being:
+The ImageReader class is part of the ``javax.imageio`` package. It is an abstract class which needs only a few methods defined to work the critical ones being:
-* getImageMetadata(..): IIOMetaData
-* read(..): BufferedImage
+* ``getImageMetadata(..)``: ``IIOMetaData``
+* ``read(..)``: ``BufferedImage``
-The key difficulty, apart from being able to generate the image, being how to build the IIOMetaData object. In our case, we subclass that object adding the metadata information we will need.
+The key difficulty, apart from being able to generate the image, being how to build the ``IIOMetaData`` object. In our case, we subclass that object adding the metadata information we will need.
The core functionality of this class follows the standard Java Image I/O framework which is explained in the package documentation which includes the useful Java Image I/O API Guide.
@@ -57,7 +65,7 @@ The core functionality of this class follows the standard Java Image I/O framewo
We must also create a class which is able to draw on the ImageReader we created above and use its contents to create the GridCoverage2D. This is merely a matter of using the ImageReader to get all the required pieces and reassembling those pieces to work for the Factory we use to create the GridCoverage2D.
-The ImageReader can furnish the required RenderedImage using the read(..) method. The rest of the required information which is described below will need to be extracted from the IIOMetaData object obtained from the getImageMetadata(..) method (depending, as explained in the note above, on where the programmer decides to obtain all the required metadata).
+The ImageReader can furnish the required RenderedImage using the ``read(..)`` method. The rest of the required information which is described below will need to be extracted from the IIOMetaData object obtained from the ``getImageMetadata(..)`` method (depending, as explained in the note above, on where the programmer decides to obtain all the required metadata).
The builder will have to wrap up the following steps.
@@ -128,7 +136,7 @@ Available Plugins
Keeping the above implementation advice in mind we can review some of the plugin modules that support reading and writing of images from or to file or databases.
-The simple plugins provide access to a single file format of two dimensional images. More complex plugins can read, sometimes even create, image tiles mosaicing original data sets which can be very large, possibly much larger than available memory, into manageable pieces or tiles providing hierarchical levels of generalisations in pyramids or combinations of the pyramids and mosaics. Other complex plugins can handle more complex file formats such as the multi-dimensional file formats used to store temporal series of images, or multi-valued imagery.
+The simple plugins provide access to a single file format of two dimensional images. More complex plugins can read, sometimes even create, image tiles mosaicing original data sets which can be very large, possibly much larger than available memory, into manageable pieces or tiles providing hierarchical levels of generalizations in pyramids or combinations of the pyramids and mosaics. Other complex plugins can handle more complex file formats such as the multi-dimensional file formats used to store temporal series of images, or multi-valued imagery.
These implementations show a range of design approaches and you are free to explore your own ideas.
@@ -144,7 +152,7 @@ Simple Imagery
Several plugins provide access to simple imagery, generally a single 2 dimensional block of pixels. These Input/Output (I/O) packages are provided in separate plugins modules to GeoTools often in the 'plugin' group of modules.
-These plugins use either the geo-referencing information stored in the file format itself or use a second file with the geo-referencing information, a so-called 'world' file in the 'image+world file' type formats.
+These plugins use either the georeferencing information stored in the file format itself or use a second file with the georeferencing information, a so-called 'world' file in the 'image+world file' type formats.
Because GeoTools has not yet defined a single approach to for creating GridCoverages, alternative approaches have emerged for reading and writing GridCoverages from external sources. Previous sections have discussed how a user can create their own system to read and write files. This section presents the approaches used in the plugin system.
@@ -160,18 +168,19 @@ Mosaics and Pyramids
GeoTools provides modules capable of working with tiles of images which form mosaics or pyramids. Such tilings are very useful where programs need to provide efficient access to imagery either to small sections of a large image or at several levels of resolution to enable zooming.
-GeoSolutions has created a set of modules in the plugins group to read mosaics and pyramids from pre-generated files.
+GeoSolutions has created a set of modules in the plugins group to read
+mosaics and pyramids from pregenerated files.
* Image Mosaic Plugin
* Image Pyramid Plugin
-Christian Mueller has created the imagemosaic-jdbc module to read pre-generated tiles which are stored in a database.
+Christian Mueller has created the ``imagemosaic-jdbc`` module to read pregenerated tiles which are stored in a database.
* Image Mosaicing Pyramidal JDBC Plugin
-An alternative approach has been created in the coverageio module of the unsupported module group.
+An alternative approach has been created in the ``coverageio`` module of the unsupported module group.
Multi-dimensional
'''''''''''''''''
-There are also several approaches to handling multi-dimensional data, again with different approaches taken by different groups. Usually these groups are working with NetCDF files from different organisations (and thus have different conventions to contend with).
\ No newline at end of file
+There are also several approaches to handling multi-dimensional data, again with different approaches taken by different groups. Usually these groups are working with NetCDF files from different organizations (and thus have different conventions to contend with).
diff --git a/docs/user/library/coverage/jdbc/customized.rst b/docs/user/library/coverage/jdbc/customized.rst
index 5f60f79601b..8476ef180cc 100644
--- a/docs/user/library/coverage/jdbc/customized.rst
+++ b/docs/user/library/coverage/jdbc/customized.rst
@@ -12,12 +12,14 @@ concerning raster data.
* An existing database layout (tables,views) holding the raster data.
-Image Mosaicing Pyramidal JDBC Plugin has an interface called org.geotools.gce.imagemosaic.jdbc.JDBCAccess.
-Classes implementing this interface are responsible for the jdbc communication. Additionally, there is an
-abstract base class with some default implementations, org.geotools.gce.imagemosaic.jdbc.JDBCAccessCustom.
+Image Mosaicing Pyramidal JDBC Plugin has an interface called
+``org.geotools.gce.imagemosaic.jdbc.JDBCAccess``. Classes implementing this
+interface are responsible for the jdbc communication. Additionally,
+there is an abstract base class with some default implementations,
+``org.geotools.gce.imagemosaic.jdbc.JDBCAccessCustom``.
A customized implementation should subclass this class and implement two methods. The name of this
-subclass is a configuration parameter in the xml config file.
+subclass is a configuration parameter in the XML configuration file.
The concrete procedure
''''''''''''''''''''''
@@ -26,9 +28,9 @@ The concrete procedure
The abstract super class has some nice methods, especially
- * Connection getConnection()
- * Config getConfig()
- * CoordinateReferenceSystem getCRS
+ * ``Connection getConnection()``
+ * ``Config getConfig()``
+ * ``CoordinateReferenceSystem getCRS()``
Here is an example::
@@ -55,13 +57,13 @@ The concrete procedure
2. Initialize the meta info
- This is done in the method initialize. This method is called only once for each coverage / xml
- config file.
+ This is done in the method initialize. This method is called only once for each coverage / XML
+ configuration file.
- The essential part is to create a list of org.geotools.gce.imagemosaic.jdbc.ImageLevelInfo objects.
+ The essential part is to create a list of ``org.geotools.gce.imagemosaic.jdbc.ImageLevelInfo`` objects.
- The info object at index 0 describes the base image, at index 1 is the info for the first pyramid,
- and so on. If there are no pyramids, the list has only one info object.
+ The ``info`` object at index 0 describes the base image, at index 1 is the info for the first pyramid,
+ and so on. If there are no pyramids, the list has only one ``info`` object.
A code template::
@@ -102,53 +104,53 @@ The concrete procedure
3. Fetch raster data
- This is done in the method startTileDecoders. There are a lot of parameters, maybe not all
+ This is done in the method ``startTileDecoders``. There are a lot of parameters, maybe not all
are useful for a custom implementation.
- Rectangle pixelDimension
+ ``Rectangle pixelDimension``
The requested size in pixel of the result image, perhaps not needed
- GeneralEnvelope requestEnvelope
+ ``GeneralEnvelope requestEnvelope``
The requested size in world coordinates
- ImageLevelInfo info
+ ``ImageLevelInfo info``
The info object of the pyramid to use
- LinkedBlockingQueue tileQueue
+ ``LinkedBlockingQueue tileQueue``
Queue for holding tile queue elements
- GridCoverageFactory coverageFactory
+ ``GridCoverageFactory coverageFactory``
perhaps not needed
This method is responsible for
1. Fetching the tiles for the given level, the area covered may be larger than the area requested
- in the requestEnvelope parameter. This is the minimum to implement.
- 2. Additionally to 1. , mosiac the the tiles to one image.
- 3. Additionally to 2. , crop the image according to the requestEnvelope param
- 4. Additionally to 3, use the pixel dimension of the image and the pixelDimension parameter to
+ in the ``requestEnvelope`` parameter. This is the minimum to implement.
+ 2. Additionally to 1. , mosaic the tiles to one image.
+ 3. Additionally to 2. , crop the image according to the ``requestEnvelope`` parameters
+ 4. Additionally to 3, use the pixel dimension of the image and the ``pixelDimension`` parameter to
rescale the image.
The interesting construct is the tile queue and a tile queue element. Before this method is
- called, a tile queue is created. Additionally an ImageComposerThread is created an started. This
+ called, a tile queue is created. Additionally an ``ImageComposerThread`` is created an started. This
thread is responsible for creating the result image. Depending on the implementation
possibilities described above, this thread is responsible to do the missing steps.
As an example:
- * if the custom implementation of startTileDecoders implements step 1 and 2,
- * the ImageComposerThread will do the missing steps 3 and 4.
+ * if the custom implementation of ``startTileDecoders`` implements step 1 and 2,
+ * the ``ImageComposerThread`` will do the missing steps 3 and 4.
- The primary job of the startTileDecoders method is to fetch the image data as fast as possible,
+ The primary job of the ``startTileDecoders`` method is to fetch the image data as fast as possible,
creating on or more tile queue elements and put these elements into the queue. The
- ImageCompoerThread starts working when the first element is in the queue. It stops working when
+ ``ImageComposerThread`` starts working when the first element is in the queue. It stops working when
it reads a special END Element.
A tile queue element for itself has
* an optional name
- * a BufferedImage object
- * a GeneralEnvelope describing the the tile rectangle in world coordinates
+ * a ``BufferedImage`` object
+ * a ``GeneralEnvelope`` describing the the tile rectangle in world coordinates
A code template::
@@ -158,13 +160,10 @@ The concrete procedure
GridCoverageFactory coverageFactory) throws IOException {
try {
Connection con = getConnection();
-
// getting the index of the level info object
int level = getLevelInfos().indexOf(info);
-
// this example reads exactly one tile
BufferedImage img = getBufferedImage(level, con);
-
GeneralEnvelope genv = new GeneralEnvelope(info.getCrs());
genv.setRange(0, info.getExtentMinX(), info.getExtentMaxX());
genv.setRange(1, info.getExtentMinY(), info.getExtentMaxY());
@@ -178,25 +177,25 @@ The concrete procedure
tileQueue.add(TileQueueElement.ENDELEMENT);
}
- This is a simple template. A more complex implementation can be found in class JDBCAccessBase.
+ This is a simple template. A more complex implementation can be found in class ``JDBCAccessBase``.
This implementation fetches tiles, starts decoder threads to utilize full CPU power, waits for
all decoder threads to finish and sends the end element.
HINT: Hurry up to bring your first tile queue element into the queue.
- IMPORTANT: This method must be thread safe, do not modify instance vars or implement other
+ IMPORTANT: This method must be thread safe, do not modify instance variables or implement other
actions causing problems under load.
-The Config file
-'''''''''''''''
+The Configuration file
+''''''''''''''''''''''
-Here is an example config file::
+Here is an example configuration file::
-
+
@@ -219,13 +218,13 @@ Here is an example config file::
Most elements are self explanatory, the detailed documentation is in Image Mosaicing Pyramidal
JDBC Plugin
-* The name attribute of the Element must be custom.
-* The name attribute of the Element holds the class name of your implementation, org.mycompany.jdbc.MyJDBCAccessImpl in this example.
+* The name attribute of the ```` Element must be custom.
+* The name attribute of the ```` Element holds the class name of your implementation, ``org.mycompany.jdbc.MyJDBCAccessImpl`` in this example.
Deployment
''''''''''
-Package the Java class(es) in a jar file and copy this jar file to your classpath.
+Package the Java classes in a jar file and copy this jar file to your classpath.
Java Example
''''''''''''
@@ -233,4 +232,3 @@ Java Example
How to use the new coverage? Again, see at the end of Image Mosaicing Pyramidal JDBC Plugin.
-Document generated by Confluence on Feb 16, 2011 06:43
\ No newline at end of file
diff --git a/docs/user/library/coverage/jdbc/db2.rst b/docs/user/library/coverage/jdbc/db2.rst
index e66c880d32a..4e8bc735236 100644
--- a/docs/user/library/coverage/jdbc/db2.rst
+++ b/docs/user/library/coverage/jdbc/db2.rst
@@ -3,7 +3,7 @@ Prepare db2 with spatial extender
Preparing a db2 database needs the following steps:
-1. After you created the db, use the db2se utility to do the following::
+1. After you created the db, use the ``db2se`` utility to do the following::
db2se enable_db db_name
diff --git a/docs/user/library/coverage/jdbc/ddl.rst b/docs/user/library/coverage/jdbc/ddl.rst
index a6f32227262..97e7c1104cb 100644
--- a/docs/user/library/coverage/jdbc/ddl.rst
+++ b/docs/user/library/coverage/jdbc/ddl.rst
@@ -8,45 +8,44 @@ Call Syntax::
Options:
-* \-config
-
- The URL or the file name of your xml configuration
+* ``-config``
+ The URL or the file name of your XML configuration
-* \-spatialTNPrefix
-
+* ``-spatialTNPrefix``
The Prefix of the spatial tables. A prefix of "SPAT" results in tables SPAT_0,SPAT_1,....
-* \-tileTNPrefix
+* ``-tileTNPrefix``
The Prefix of the tile tables. Only needed if you plan to store image data in a separate table.
-* \-pyramids
+* ``-pyramids``
Number of pyramid tables
-* \-statementDelim
+* ``-statementDelim``
- The sql statement delimiter used in the scripts
+ The SQL statement delimiter used in the scripts
-* \-srs
+* ``-srs``
- The srs needed for a spatial extension. Not required for universal and mysql.
+ The SRS needed for a spatial extension. Not required for universal and MySQL.
-* \-targetDir
+* ``-targetDir``
The directory where to put the script templates.
Generated Scripts
^^^^^^^^^^^^^^^^^
-createmeta.sql
- The create table statement for the metatable
+``createmeta.sql``
+ The create table statement for the meta table
-dropmeta.sql
+ ``dropmeta.sql``
The drop table statement for the meta table
-add_.sql
- All statements for adding a coverage named (taken from the config)
+ ``add_.sql``
+ All statements for adding a coverage named (taken from the configuration)
-remove_.sql
- All statements for removing a coverage named (taken from the config)
+ ``remove_.sql``
+ All statements for removing a coverage named (taken from the configuration
+ )
diff --git a/docs/user/library/coverage/jdbc/faq.rst b/docs/user/library/coverage/jdbc/faq.rst
index 29d17000513..182e29aa6d0 100644
--- a/docs/user/library/coverage/jdbc/faq.rst
+++ b/docs/user/library/coverage/jdbc/faq.rst
@@ -6,23 +6,23 @@ Q: How to Build image pyramids and tiles?
Creating the pyramids and tiles is not part of this module.
-As a recommendation you can use gdal_retile which has been developed exactly for this requirement:
+As a recommendation you can use ``gdal_retile`` which has been developed exactly for this requirement:
* http://www.gdal.org/gdal_retile.html
-A good idea is to download the fwtools containing gdal_retile.py:
+A good idea is to download the ``fwtools`` containing ``gdal_retile.py``:
* http://fwtools.maptools.org/.
-The output of gdal_retile.py can be imported into the database with the import utility (described later).
+The output of ``gdal_retile.py`` can be imported into the database with the import utility (described later).
A good practice is to use a color table for your source image(s). Less memory consumption and a
better performance are the results. If you have an already tiled source image, be sure that each
-source tile uses the same color table, otherwise use gdal_merge.py (GDAL utility) to produce a big
-single image and apply rgb2pct.py (GDAL utility).
+source tile uses the same color table, otherwise use ``gdal_merge.py`` (GDAL utility) to produce a big
+single image and apply ``rgb2pct.py`` (GDAL utility).
Q: How to import the tiles and the georeferencing information?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Importing the data is database dependent. If you have a spatial extension, the gdal_retile.py utility
-produces the proper world,shape or CSV files which you can import with a database utility.
+Importing the data is database dependent. If you have a spatial extension, the ``gdal_retile.py`` utility
+produces the proper world, shape or CSV files which you can import with a database utility.
diff --git a/docs/user/library/coverage/jdbc/import.rst b/docs/user/library/coverage/jdbc/import.rst
index 40514cd3bed..e31623f1f87 100644
--- a/docs/user/library/coverage/jdbc/import.rst
+++ b/docs/user/library/coverage/jdbc/import.rst
@@ -1,24 +1,25 @@
-Using the java import utility
+Using the Java import utility
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The classpath for the utility is set in the manifest file of gt-imagemosiac-jdbc.jar, so you
+The classpath for the utility is set in the manifest file of
+``gt-imagemosiac-jdbc.jar``, so you
do not need to bother about dependencies.
-The only problem are the jdbc drivers for the the database. First you need to download the jar files.
+The only problem are the JDBC drivers for the the database. First you need to download the jar files.
* DB2
- We need db2jcc.jar and db2jcc_license.jar. Download from:
+ We need ``db2jcc.jar`` and ``db2jcc_license.jar``. Download from:
https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?lang=en_US&source=swg-idsjs11
* Oracle
- We need ojdbc14.jar. Download from:
+ We need ``ojdbc14.jar``, download from:
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html
-* Postgres
+* Postgis
http://jdbc.postgresql.org/download.html
@@ -28,129 +29,134 @@ The only problem are the jdbc drivers for the the database. First you need to do
* Other DB Systems
- Google is your friend
+ Google is your friend.
The problem is to put the jars in the classpath. According to the Sun documentation:
* http://java.sun.com/j2se/1.5.0/docs/tooldocs/findingclasses.html
- a class path in a manifest overrides the CLASSPATH environment variable and the -cp or
- -classpath java option.
+ a class path in a manifest overrides the CLASSPATH environment variable and
+ the ``-cp`` or
+ ``-classpath`` java option.
Solutions:
-* A solution is to copy the jar files into /lib/ext of your java runtime. In this case the extension
+* A solution is to copy the jar files into ``/lib/ext`` of your java runtime. In this case the extension
class loader is responsible to load your jdbc drivers.
-* Another approach is to investigate into the -X options of your java
- runimte. java -X gives help. if there is an option -Xbootclasspath/a: you can avoid copying the
- jdbc jar file into the /lib/ext directory and call "java -Xbootclasspath/a: -jar ...."
+* Another approach is to investigate into the ``-X`` options of your java
+ runtime. java ``-X`` gives help. if there is an option ``-Xbootclasspath/a:`` you can avoid copying the
+ jdbc jar file into the /lib/ext directory and call ``java -Xbootclasspath/a: -jar ....``
Call Syntax
'''''''''''
Common options:
-* -config
+* ``-config``
- the URL or the file name of the xml config file , e.g "file:/temp/mymap.xml"
+ the URL or the file name of the XML configuration file , e.g ``file:/temp/mymap.xml``
-* -commitCount
+* ``-commitCount``
(optional), default 100, insert records in chunks to improve performance
-Importing excactly one level
+Importing exactly one level
-* -spatialTN
+* ``-spatialTN``
the name of the spatial table which must already exist
-* -tileTN
+* ``-tileTN``
the name of the tile table which must already exist. When using a joined table, the tile table
name has to be equal to the spatial table name
-Importing all tiles including the pyramids as produced by gdal_retile.py
+Importing all tiles including the pyramids as produced by ``gdal_retile.py``
-* -spatialTNPrefix
+* ``-spatialTNPrefix``
the prefix of spatial table names (produced by the ddl generation utility)
-* -tileTNPrefix
+
+* ``-tileTNPrefix``
the prefix of tiles table names (produced by the ddl generation utility)
-To import the output of gdal_retile.py using world files (one level)::
+To import the output of ``gdal_retile.p`` using world files (one level)::
java -jar gt-imagemosaic-jdbc.jar import -config URLOrFileName -spatialTN spatialTableName -tileTN tileTableName
[-commitCount commitCount] -dir dir -ext extension
-To import the output of gdal_retile.py using world files (all levels)::
+To import the output of ``gdal_retile.py`` using world files (all levels)::
java -jar gt-imagemosaic-jdbc.jar import -config URLOrFileName -spatialTNPrefix spatialTableNamePrefix
-tileTNPrefix tileTableNamePrefix [-commitCount commitCount] -dir dir -ext extension
Options
-* -dir
+* ``-dir``
The directory containing tiles
-* -ext
+
+* ``-ext``
- The file extension (png,jpg,tif,..). The extension must have exactly 3 chars. The world files
- must have an extension of "wld" or an extension according to the standard for building word files
- (removing the 2. character and appending a 'w').
+ The file extension (``png``, ``jpg``, ``tif``,..). The extension must have exactly 3 chars. The world files
+ must have an extension of "``wld``" or an extension according to the standard for building word files
+ (removing the 2 character and appending a 'w').
- image.tif -> image.tfw, image.png -> image.pgw,....
+ ``image.tif -> image.tfw``, ``image.png -> image.pgw``,....
-To import the output of gdal_retile.py using a shape file (one level)::
+To import the output of ``gdal_retile.py`` using a shape file (one level)::
java -jar gt-imagemosaic-jdbc.jar import -config URLOrFileName -spatialTN spatialTableName -tileTN tileTableName
[-commitCount commitCount] -shape shapeURLOrFileName -shapeKeyField shapeKeyField
-To import the output of gdal_retile.py using a shape file (all levels)::
+To import the output of ``gdal_retile.py`` using a shape file (all levels)::
java -jar gt-imagemosaic-jdbc.jar import -config URLOrFileName -spatialTNPrefix spatialTableNamePrefix -tileTNPrefix tileTableNamePrefix
[-commitCount commitCount] -shape shapeURLOrFileName -shapeKeyField shapeKeyField
Options
-* -shape
+* ``-shape``
the URL or the file name of the shape file , e.g "file:/temp/index.shp"
-* -shapeKeyField
+
+* ``-shapeKeyField``
the name of the attribute in the shape file holding the file names for the tiles
-To import the output of gdal_retile.py using a csv file (one level)::
+To import the output of ``gdal_retile.py`` using a CSV file (one level)::
java -jar gt-imagemosaic-jdbc.jar import -config URLOrFileName -spatialTN spatialTableName -tileTN tileTableName
[-commitCount commitCount] -csv csvURLOrFileName -csvDelim csvDelim
-To import the output of gdal_retile.py using a csv file (all levels)::
+To import the output of ``gdal_retile.p`` using a CSV file (all levels)::
java -jar gt-imagemosaic-jdbc.jar import -config URLOrFileName -spatialTNPrefix spatialTableNamePrefix -tileTNPrefix tileTableNamePrefix
[-commitCount commitCount] -csv csvURLOrFileName -csvDelim csvDelim
Options
-* -csv
+* ``-csv``
- the URL or the file name of the csv file , e.g "file:/temp/index.csv"
-* -csvDelim
+ the URL or the file name of the CSV file , e.g "``file:/temp/index.csv``"
+
+* ``-csvDelim``
- The column delimiter in the csv file.
+ The column delimiter in the CSV file.
-The csv file has exactly 5 columns.
+The CSV file has exactly 5 columns.
1. Filename of the tile
-2. minx
-3. maxx
-4. miny
-5. maxy
+2. ``minx``
+3. ``maxx``
+4. ``miny``
+5. ``maxy``
-Ensure using a point as decimal separator and do not use grouping speparators for the
-coordinates. "12345.6789" is ok, "12.345,6789" is not supported.
+Ensure using a point as decimal separator and do not use grouping separators for the
+coordinates. "12345.6789" is OK, "12.345,6789" is not supported.
-A csv example::
+A CSV example::
oek4000_1_1.tif;109546.250000;429601.536800;333297.122340;573436.750000
oek4000_1_2.tif;429601.536800;688046.180892;333297.122340;573436.750000
diff --git a/docs/user/library/coverage/jdbc/index.rst b/docs/user/library/coverage/jdbc/index.rst
index 9fc4a518c04..87cc9127be2 100644
--- a/docs/user/library/coverage/jdbc/index.rst
+++ b/docs/user/library/coverage/jdbc/index.rst
@@ -3,10 +3,10 @@
Image Mosaic JDBC
-----------------
-This **gt-imagemosaic-jdbc** plugin is intended to handle large images stored as tiles in a JDBC
+This ``gt-imagemosaic-jdbc`` plugin is intended to handle large images stored as tiles in a JDBC
database. Tiles created by pyramids are also stored in the database. The utility uses the indexing
-of databases to speed up access to the requested tiles, the plugin for itself has a multithreaded
-architecture to make use of dual/quad core CPUs and multiprocessor systems.
+of databases to speed up access to the requested tiles, the plugin for itself has a multi-threaded
+architecture to make use of dual/quad core CPUs and multi-processor systems.
.. sidebar:: Details
@@ -26,14 +26,15 @@ This plugin should give you the possibility to handle large images with their py
Credits:
-* This module was funded by Google as part of the GSOC 08 program.
+* This module was funded by Google as part of the Google Summer of Code
+ 2008 program.
Tested Database Systems
* DB2 (with or without Spatial Extender)
* Oracle (with or without Location Based Services, Oracle Spatial not needed)
* MySql
-* Postgres (with or without Postgis)
+* PostgreSQL (with or without Postgis)
* H2
Example Use
@@ -83,7 +84,7 @@ Mapping of table and attribute names
Since there a lot of naming conventions in different enterprises, it is not ideal to force the use of predefined table and attribute names. In our example, the names of the spatial and tile tables is selectable, the name of the meta table and all the attribute names were assumed. The mapping of these names is part of the XML configuration. The corresponding XML fragment shows the mapping of the assumed names.
-A sample XML fragment file **mapping.xml.inc**::
+A sample XML fragment file ``mapping.xml.inc``::
@@ -115,21 +116,22 @@ A sample XML fragment file **mapping.xml.inc**::
The structure of this XML Fragment is kept very simple, use it as a pattern.
-The name attribute of the has to be one of the following values
+The name attribute of the ```` has to be one of the following values
-* universal (a vendor neutral JDBC approach which should work with any JDBC database with BLOB support)
-* db2 (use spatial extender)
-* mysql (use the spatial features of mysql)
-* postgis (use the spatial features of postgis)
+* ``universal`` (a vendor neutral JDBC approach which should work with any JDBC database with BLOB support)
+* ``db2`` (use spatial extender)
+* ``mysql`` (use the spatial features of MySQL)
+* ``postgis`` (use the spatial features of Postgis)
* oracle (use location based services included in every oracle edition, no oracle spatial needed !!!)
-If your spatial extension is universal you need to specify ,,,, but you can omit .
+If your spatial extension is universal you need to specify ````,
+````, ````, ````, but you can omit ````.
-In all other cases, you need the Element and can omit ,,,.
+In all other cases, you need the ```` Element and can omit ````, ````, ````, ````.
Be careful with the case sensitivity of different DBMS products. Look here http://www.alberton.info/dbms_identifiers_and_case_sensitivity.html and here http://en.wikibooks.org/wiki/SQL_dialects_reference/Data_structure_definition/Delimited_identifiers.
-In the above example, we have which will result in an attribute name of MAXX for DB2 and Oracle, but maxx for postgres. A good strategy would be to use identifiers (table and attribute Names ) consisting of uppercase /lowercase letters, depending on your DBMS.
+In the above example, we have ```` which will result in an attribute name of ``MAXX`` for DB2 and Oracle, but ``maxx`` for PostgreSQL. A good strategy would be to use identifiers (table and attribute Names ) consisting of upper case /lower case letters, depending on your DBMS.
This approach assures that there are no predefined table and attribute names, allowing seamless integration into existing naming conventions.
@@ -145,9 +147,13 @@ Each Map with its pyramids is configured by an XML File. The Configuration can b
JDBC Connect configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^
-Dependent on the deployment environment, there are different possibilities for connection to the database. Using this plugin in a client java application will require a JDBC Driver Connect, operation within a J2EE Container should prefer a JNDI Datasource connect (your admin will be happy) .
+Dependent on the deployment environment, there are different possibilities
+for connection to the database. Using this plugin in a client Java
+application will require a JDBC Driver Connect, operation within a J2EE
+Container should prefer a JNDI data source connect (your admin will be
+happy) .
-A sample XML fragment file for a JDBC Driver Connection to the H2 database **connect.xml.inc**::
+A sample XML fragment file for a JDBC Driver Connection to the H2 database ``connect.xml.inc``::
@@ -159,7 +165,7 @@ A sample XML fragment file for a JDBC Driver Connection to the H2 database **con
-XML Fragment for connection to a JNDI Datasource **connect.xml.inc**::
+XML Fragment for connection to a JNDI data source ``connect.xml.inc``::
@@ -169,9 +175,10 @@ XML Fragment for connection to a JNDI Datasource **connect.xml.inc**::
Map Configuration
^^^^^^^^^^^^^^^^^
-Now we can put the things together and create the config file for a map.
+Now we can put the things together and create the configuration
+file for a map.
-Example file map.xml::
+Example file ``map.xml``::
-
+
@@ -191,28 +198,36 @@ Example file map.xml::
&connect;
-The DOCTYPE includes two XML entity references to the connect.xml.inc and mapping.xml.inc. The XML parser includes these fragments at parsing time.
+The ``DOCTYPE`` includes two XML entity references to the ``connect.xml.inc``
+and ``mapping.xml.inc``. The XML parser includes these fragments at parsing time.
Elements:
-config
+``config``
The root element. The version attribute is reserved for future versions of this plugin. Must be "1.0."
-coverageName
+``coverageName``
The name of your map. This name is used for searching the meta data in the meta table.
-coordsys
- The name of a coordinate reference system, will be referenced by CRS.decode() of the geotools library.
+``coordsys``
+ The name of a coordinate reference system, will be referenced by ``CRS.decode()``
+ of the GeoTools
+ library.
-scaleop
- The interpolation method to use (1 = nearest neighbour, 2 = bipolar, 3 = bicubic)
+``scaleop``
+ The interpolation method to use (1 = ``nearest neighbor``, 2 = ``bipolar``, 3 = ``bicubic``)
-axisOrder
+``axisOrder``
The module compares the CRS from the read request to the CRS stored in the configuration. If the axis order differ, an x axis switch is performed.
Some clients are doing this before calling the module and the plugin switches again resulting in the original envelope. A value of "true" suppresses this switch.
-verify
- if you have image data and georeferencing information in different tables and the the attribute cardinality is true , the plugin will check the number of records in each table. If the numbers are not equal, the image/pyramid will be removed and you see a warning in the log. This check is intended for testing environments, set the value to false in production environments to avoid bad performance.
+``verify``
+ if you have image data and georeferencing information in different
+ tables and the attribute cardinality is true , the plugin will
+ check the number of records in each table. If the numbers are not
+ equal, the image/pyramid will be removed and you see a warning in the
+ log. This check is intended for testing environments, set the value
+ to false in production environments to avoid bad performance.
**Configuration Summary**
diff --git a/docs/user/library/coverage/jdbc/internal.rst b/docs/user/library/coverage/jdbc/internal.rst
index 51ab4d06b95..b7840bc0803 100644
--- a/docs/user/library/coverage/jdbc/internal.rst
+++ b/docs/user/library/coverage/jdbc/internal.rst
@@ -1,11 +1,11 @@
Image Mosaic JDBC Design
-------------------------
+-------------------------
-Outline of the multithreaded architecture
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Outline of the multi-threaded architecture
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The multithreaded architecture is based on synchronized Queue available since SDK 5.0. The following threads will be used:
+The multi-threaded architecture is based on synchronized Queue available since SDK 5.0. The following threads will be used:
* One ImageComposer thread which reads GridCoverages from the Queue, mosaicing the image and finally rescales the image for the requested dimension.
* For each tile, a TileDecoder thread which decodes the tile, crops the tile if necessary and puts the result as GridCoverage in the queue.
@@ -20,7 +20,7 @@ If the requested CRS is not equal to the CRS of the tiles, transform the request
4. Wait for all ImageDecoder Threads
5. Put a predefined End Message in the queue which causes the ImageComposer Thread to finish its work
6. Wait for the ImageComposer Thread
-7. If the requested CRS ist not equal to the CRS of the tiles, reproject the image
+7. If the requested CRS is not equal to the CRS of the tiles, reproject the image
8. Return the GridCoverage
Database Design
@@ -28,44 +28,44 @@ Database Design
First, we need a Meta Table for holding Information for each pyramid of the maps. This table has 9 columns as described below
-* Name (String): The name of the map
-* SpatialTable (String): The name of the table where to find the georeferencing information
-* TileTable (String): The name of the table where to find the tile data stored as BLOB.
-* ResX (Double): The resolution of the x-axis
-* ResY (Double): The resolution of the y-axis
-* MinX (Double): The minimum X of the extent
-* MinY (Double): The minimum Y of the extent
-* MaxX (Double): The maximum X of the extent
-* MaxY(Double): The maximum Y of the extent
+* ``Name`` (String): The name of the map
+* ``SpatialTable`` (String): The name of the table where to find the georeferencing information
+* ``TileTable`` (String): The name of the table where to find the tile data stored as BLOB.
+* ``ResX`` (Double): The resolution of the x-axis
+* ``ResY`` (Double): The resolution of the y-axis
+* ``MinX`` (Double): The minimum X of the extent
+* ``MinY`` (Double): The minimum Y of the extent
+* ``MaxX`` (Double): The maximum X of the extent
+* ``MaxY`` (Double): The maximum Y of the extent
**Important**
-The only fields you have to fill are Name,SpatialTable and TileTable. These three fields together are the primary key. All other fields will be calculated by the plugin. It is not necessary to do calculations. The plugin implements the following mechanism during the first request:
+The only fields you have to fill are ``Name``, ``SpatialTable`` and ``TileTable``. These three fields together are the primary key. All other fields will be calculated by the plugin. It is not necessary to do calculations. The plugin implements the following mechanism during the first request:
-1. Check if ResX or ResY is null, if true, calculate the values from a random chosen tile from the corresponding tile table.
-2. Check if one of MinX,MinY,MaxX,MaxY is null, if true, calculate the values from the corresponding spatial table.
-3. If something has been calculated, store these values into to db to avoid recalculation at the next restart
+1. Check if ``ResX`` or ``ResY`` is null, if true, calculate the values from a random chosen tile from the corresponding tile table.
+2. Check if one of ``MinX``, ``MinY``, ``MaxX``, ``MaxY`` is null, if true, calculate the values from the corresponding spatial table.
+3. If something has been calculated, store these values into to the database to avoid recalculation at the next restart
-This approach assures that the probably costly calculation is only executed once, but updating,adding or removing tiles requires you to nullify one of the MinX,MinY,MaxX,MaxY Attributes to force a new extent calculation.
+This approach assures that the probably costly calculation is only executed once, but updating,adding or removing tiles requires you to nullify one of the ``MinX``, ``MinY``, ``MaxX``, ``MaxY`` attributes to force a new extent calculation.
**First example**
Assume we have a Map called Europe with 2 Pyramids. Since we have 3 levels, we need 3 tile tables and 3 spatial tables. Lets start filling the META table.
-====== ============= ========== ===== ===== ===== ===== ===== =====
-Name SpatialTable TileTable ResX ResY MinX MinY MaxX MaxY
-====== ============= ========== ===== ===== ===== ===== ===== =====
-Europe EUSPAT0 EUTILE0 . . . . . .
-Europe EUSPAT1 EUTILE1 . . . . . .
-Europe EUSPAT2 EUTILE2 . . . . . .
-====== ============= ========== ===== ===== ===== ===== ===== =====
+======== ================ ============= ======== ======== ======== ======== ======== ========
+``Name`` ``SpatialTable`` ``TileTable`` ``ResX`` ``ResY`` ``MinX`` ``MinY`` ``MaxX`` ``MaxY``
+======== ================ ============= ======== ======== ======== ======== ======== ========
+Europe EUSPAT0 EUTILE0 . . . . . .
+Europe EUSPAT1 EUTILE1 . . . . . .
+Europe EUSPAT2 EUTILE2 . . . . . .
+======== ================ ============= ======== ======== ======== ======== ======== ========
Remember: You do not have to fill the other attributes.
A tile table needs the following attributes:
* Location (String) : A unique identifier for the tile
-* Data (Blob) : The image data (Encoded in a format readable by JAI, e. g. png,jpeg,...)
+* Data (Blob) : The image data (Encoded in a format readable by JAI, e.g. ``png``, ``jpeg``,...)
The table EUTILE0 for example ( 0x.... indicates binary data)
@@ -83,25 +83,25 @@ A spatial table contains the georeferencing information. Depending on your datab
A spatial Table without using a spatial extension needs the following attributes:
-* Location (String) : A unique identifier used for joining into the tiles table
-* MinX (Double): min x of the tile extent
-* MinY (Double): min y of the tile extent
-* MaxX (Double): max x of the tile extent
-* MaxY (Double): max y of the tile extent
+* ``Location`` (String) : A unique identifier used for joining into the tiles table
+* ``MinX`` (Double): minimum X of the tile extent
+* ``MinY`` (Double): minimum Y of the tile extent
+* ``MaxX`` (Double): maximum X of the tile extent
+* ``MaxY`` (Double): maximum Y of the tile extent
The table EUSPAT0 for example.
-=========== ===== ===== ===== =====
-Location MinX MinY MaxX MaxY
-=========== ===== ===== ===== =====
-Tile_1_1 10 10 20 20
-Tile_1_2 20 10 30 20
-=========== ===== ===== ===== =====
+=============== ========= ========= ========= =========
+``Location`` ``MinX`` ``MinY`` ``MaxX`` ``MaxY``
+=============== ========= ========= ========= =========
+Tile_1_1 10 10 20 20
+Tile_1_2 20 10 30 20
+=============== ========= ========= ========= =========
A spatial Table using a spatial extension needs the following attributes:
-* Location (String) : A unique identifier used for joining into the tiles table
-* Geometry (Geometry): A Multipolygon type provided by your db
+* ``Location`` (String) : A unique identifier used for joining into the tiles table
+* ``Geometry`` (Geometry): A multi-polygon type provided by your database.
The table EUTILE0 for example
@@ -116,33 +116,33 @@ Reducing the number of tables
Since the number of rows in a spatial table has to be equal to the number of rows in a tile table, there is a one to one relationship. It is no problem to join these tables. Applying this redesign to our samples results in the following table structure:
-====== ============= ========== ===== ===== ===== ===== ===== =====
-Name SpatialTable TileTable ResX ResY MinX MinY MaxX MaxY
-====== ============= ========== ===== ===== ===== ===== ===== =====
-Europe EU0 EU0 . . . . . .
-Europe EU1 EU1 . . . . . .
-Europe EU2 EU2 . . . . . .
-====== ============= ========== ===== ===== ===== ===== ===== =====
+========== ================= ============== ========= ========= ========= ========= ========= =========
+``Name`` ``SpatialTable`` ``TileTable`` ``ResX`` ``ResY`` ``MinX`` ``MinY`` ``MaxX`` ``MaxY``
+========== ================= ============== ========= ========= ========= ========= ========= =========
+Europe EU0 EU0 . . . . . .
+Europe EU1 EU1 . . . . . .
+Europe EU2 EU2 . . . . . .
+========== ================= ============== ========= ========= ========= ========= ========= =========
The EU0 Table
-========== ===== ===== ===== ===== ==========
-Location MinX MinY MaxX MaxY Data
-========== ===== ===== ===== ===== ==========
-Tile_1_1 10 10 20 20 0x10011..
-Tile_1_2 20 10 30 20 0x00011..
-========== ===== ===== ===== ===== ==========
+============== ========= ========= ========= ========= ==============
+``Location`` ``MinX`` ``MinY`` ``MaxX`` ``MaxY`` ``Data``
+============== ========= ========= ========= ========= ==============
+Tile_1_1 10 10 20 20 0x10011..
+Tile_1_2 20 10 30 20 0x00011..
+============== ========= ========= ========= ========= ==============
or using a geometry column
-========== =========== ============
-Location Geom Data
-========== =========== ============
-Tile_1_1 0x00111... 0x10011..
-Tile_1_2 0x10011... 0x00011..
-========== =========== ============
+============== =============== ================
+``Location`` ``Geom`` ``Data``
+============== =============== ================
+Tile_1_1 0x00111... 0x10011..
+Tile_1_2 0x10011... 0x00011..
+============== =============== ================
-Further DB Design Rules
+Further Database Design Rules
* It is possible to add custom columns to your tables
* It is possible to create one meta table for all your maps and pyramid levels , or create one meta table for each map containing records for the map and its pyramids, or do any mixture of these two approaches, the only rule is to store a map and its pyramids level together in the same meta table.
diff --git a/docs/user/library/coverage/jdbc/jdbc.rst b/docs/user/library/coverage/jdbc/jdbc.rst
index b1c53b62695..57b581c10f5 100644
--- a/docs/user/library/coverage/jdbc/jdbc.rst
+++ b/docs/user/library/coverage/jdbc/jdbc.rst
@@ -3,7 +3,8 @@ Prepare a jdbc database
For each image level we have to create a spatial and a tiles table, or a joined table.
-Attention: The syntax may differ depending on your used database. For postgres use FLOAT8 instead of DOUBLE and BYTEA instead of BLOB
+Attention: The syntax may differ depending on your used database. For PostgreSQL
+use FLOAT8 instead of DOUBLE and BYTEA instead of BLOB
1. The tile table ::
diff --git a/docs/user/library/coverage/jdbc/mysql.rst b/docs/user/library/coverage/jdbc/mysql.rst
index 7cbe5d26004..42b535d98e1 100644
--- a/docs/user/library/coverage/jdbc/mysql.rst
+++ b/docs/user/library/coverage/jdbc/mysql.rst
@@ -1,4 +1,4 @@
-Prepare for mysql
+Prepare for MySQL
-----------------
1. Create the tile table::
diff --git a/docs/user/library/coverage/jdbc/performance.rst b/docs/user/library/coverage/jdbc/performance.rst
index 3dcc59038a9..39b85404e66 100644
--- a/docs/user/library/coverage/jdbc/performance.rst
+++ b/docs/user/library/coverage/jdbc/performance.rst
@@ -7,7 +7,7 @@ Universal
'''''''''
Here is a proposal if you have more tiles in the x direction than in the y direction. If the
-opposite is true, switch Minx / Miny and Max/ Maxy::
+opposite is true, switch ``Minx`` / ``Miny`` and ``Maxx``/ ``Maxy``::
CREATE INDEX IX_SPATIAL0_1 ON SPATIAL0(MinX,MinY)
CREATE INDEX IX_SPATIAL0_2 ON SPATIAL0(MaxX,MaxY)
@@ -15,7 +15,7 @@ opposite is true, switch Minx / Miny and Max/ Maxy::
DB2 Spatial Extender
''''''''''''''''''''
-Use gseidx utility (ADVISE) to get a proposal for the last 3 parameters (grid sizes)::
+Use ``gseidx`` utility (ADVISE) to get a proposal for the last 3 parameters (grid sizes)::
CREATE INDEX IX_SPATIAL0 ON SPATIAL0(GEOM) EXTEND USING db2gse.spatial_index (10000.0, 100000.0, 1000000.0)
diff --git a/docs/user/library/coverage/jdbc/postgis.rst b/docs/user/library/coverage/jdbc/postgis.rst
index 1da34b4d535..ad8aa982e89 100644
--- a/docs/user/library/coverage/jdbc/postgis.rst
+++ b/docs/user/library/coverage/jdbc/postgis.rst
@@ -1,4 +1,4 @@
-Prepare for postgis
+Prepare for PostGIS
-------------------
1. Install PostGIS
@@ -7,7 +7,7 @@ Prepare for postgis
* http://www.postgis.org/docs/ch02.html
-2. Spatially enabling a postgres db needs the following steps from the command line::
+2. Spatially enabling a PostgreSQL database needs the following steps from the command line::
createlang plpgsql [yourdatabase]
psql -d [yourdatabase] -f lwpostgis.sql
diff --git a/docs/user/library/coverage/jdbc/prepare.rst b/docs/user/library/coverage/jdbc/prepare.rst
index 2170c467338..2d56750994c 100644
--- a/docs/user/library/coverage/jdbc/prepare.rst
+++ b/docs/user/library/coverage/jdbc/prepare.rst
@@ -3,16 +3,17 @@ Prepare with gdal_retile
**Introduction to gdal_retily.py**
-Attention: These examples were executed on a linux, box, if you have a Microsoft platform, you must change your path names.
-Additionally, the executable is gdal_retile.bat instead of gdal_retile.py
+Attention: These examples were executed on a Linux, box, if you have a Microsoft platform, you must change your path names.
+Additionally, the executable is ``gdal_retile.bat`` instead of
+``gdal_retile.py``.
-The following examples assume we have a big image called big.tif.
+The following examples assume we have a big image called ``big.tif``.
* First simple example::
gdal_retile.py -targetDir /tmp/test big.tif
- Result: In the directory /temp/test are many georeferenced tiles, pixelsize 256x256, which will mosaic to the original image.
+ Result: In the directory ``/tmp/test`` are many georeferenced tiles, pixelsize 256x256, which will mosaic to the original image.
* Example of specific size::
@@ -28,13 +29,13 @@ The following examples assume we have a big image called big.tif.
gdal_retile.py -levels 3 -ps 512 512 -targetDir /tmp/test big.tif
- Result: There are 3 additional subdirectories /tmp/test/1,/tmp/test/2,/tmp/test/3 containing the tiles for 3 pyramid levels.
+ Result: There are 3 additional subdirectories ``/tmp/test/1``, ``/tmp/test/2``, ``/tmp/test/3`` containing the tiles for 3 pyramid levels.
-* If we have already a set of tiles (\*.tif) and need only the tiled pyramids::
+* If we have already a set of tiles (``*.tif``) and need only the tiled pyramids::
gdal_retile.py -levels 3 -pyramidOnly -ps 512 512 -targetDir /tmp/test *.tif
-* If we have already a set of tiles (\*.tif or \*.png or ...) and need to retile and to build pyramids::
+* If we have already a set of tiles (``*.tif`` or ``*.png``) and need to retile and to build pyramids::
gdal_retile.py -levels 3 -ps 512 512 -targetDir /tmp/test *.tif
@@ -42,9 +43,9 @@ The following examples assume we have a big image called big.tif.
Common problems:
-* If you have many tiles , the \*.tif pattern could result in a "command line buffer exceeded" error. This is not a problem of the utility.
+* If you have many tiles , the ``*.tif`` pattern could result in a "command line buffer exceeded" error. This is not a problem of the utility.
- In this situation you have to create a file listing all the tif files with absolute path names (Lets call it tilelist.txt )
+ In this situation you have to create a file listing all the TIF files with absolute path names (Lets call it ``tilelist.txt``)
and then change the above command to::
gdal_retile.py -levels 3 -ps 512 512 -targetDir /tmp/test --optfile tilelist.txt
@@ -59,14 +60,14 @@ Now we can decide how to prepare the georeferencing information:
This produces a csv file for for each image level.
- * The csv has 5 columns: filename,minx,maxx,miny,maxy.
+ * The csv has 5 columns: ``filename``, ``minx``, ``maxx``, ``miny``, ``maxy``.
* Each record describes the georeferencing information for a tile.
* Exporting the georeferencing information into a shape file::
gdal_retile.py -levels 3 -ps 512 512 -tileIndex index.shp -tileIndexField LOCATION -targetDir /tmp/test --optfile tilelist.txt
- This produces shape files named index.shp with a geometry attribute LOCATION.
+ This produces shape files named ``index.shp`` with a geometry attribute ``LOCATION``.
Use http://www.gdal.org/ogr/ogrinfo.html to check the content.
* Exporting the georeferencing information into world files::
diff --git a/docs/user/library/coverage/jdbc/setup.rst b/docs/user/library/coverage/jdbc/setup.rst
index 956b426b153..18802f6198e 100644
--- a/docs/user/library/coverage/jdbc/setup.rst
+++ b/docs/user/library/coverage/jdbc/setup.rst
@@ -5,8 +5,8 @@ Setup Example
Prepare your image data in advance. The size of the images has a big influence on performance.
- Here, we are not talking about the size of an encoded image (jpeg,png), the size of the decoded
- image requesting java heap memory is interesting.
+ Here, we are not talking about the size of an encoded image (``jpeg``, ``png``), the size of the decoded
+ image requesting Java heap memory is interesting.
* One of the best possibilities is to use an image with one band and an indexed color table.
* A not so good solution is using a RGBA image needing four bands and requesting 3-4 times more
@@ -26,8 +26,8 @@ Setup Example
2. The next step is to create the table for the meta info.
- Attention: All the table and attribute names have to correspond to the xml mapping fragment,
- otherwise the plugin will not work. If there is a valid xml config, you can use the following
+ Attention: All the table and attribute names have to correspond to the XML mapping fragment,
+ otherwise the plugin will not work. If there is a valid XML configuration, you can use the following
utility to create ddl script templates.
.. toctree::
@@ -47,7 +47,7 @@ Setup Example
* The other options are dedicated to selected databases using their spatial extension.
- The spatialExtension element in the xml mapping fragment is used to specify the option to use.
+ The ``spatialExtension`` element in the XML mapping fragment is used to specify the option to use.
.. toctree::
:maxdepth: 1
diff --git a/docs/user/library/coverage/jp2k.rst b/docs/user/library/coverage/jp2k.rst
index c10e399fd1c..45f97c677b3 100644
--- a/docs/user/library/coverage/jp2k.rst
+++ b/docs/user/library/coverage/jp2k.rst
@@ -3,7 +3,7 @@ JP2K Plugin
The JP2K plug-in allows GeoTools to make use of the JP2K format provided via the available JP2K
image readers in the JAI ImageIO project plus an optional ImageIO plugin based on the Kakadu
-library which is activated only when the Kakadu SDK is in the path (the Kakakdu SDK is not
+library which is activated only when the Kakadu SDK is in the path (the Kakadu SDK is not
Open Source but it comes with a variety of licenses).
Notice that:
@@ -24,17 +24,18 @@ Use of Kakadu
Much better performances in accessing JP2K data with respect to standard JAI ImageIO and GDAL supported SDKs are obtained by directly using the Kakadu libraries in this plugin. Please, note that the Image I/O-Ext project contains also a plug-in built on top of GDAL which in turn uses Kakadu as well, however this new plugin does not need GDAL but only the Kakadu binaries.
-In order to know how to build your Kakadu native libs needed to enable support for it, please, check the imageio-ext setup guide. If your Java Runtime Environment includes the Kakadu native libraries, you will be able to support the JP2K format by means of this plugin, otherwise the JP2K format data access capabilities will be provided by the SUN's ImageIO JP2K plugin. The plugin, when Kakadu is in the path, is able to parse georeferencing information by supporting the following mechanisms:
+In order to know how to build your Kakadu native libraries
+needed to enable support for it, please, check the ``imageio-ext`` setup guide. If your Java Runtime Environment includes the Kakadu native libraries, you will be able to support the JP2K format by means of this plugin, otherwise the JP2K format data access capabilities will be provided by the SUN's ImageIO JP2K plugin. The plugin, when Kakadu is in the path, is able to parse georeferencing information by supporting the following mechanisms:
1. World File + PRJ File (they take precedence over the other mechanism and therefore they can be used to override missing or improper georeferencing).
2. Degenerate GeoTIFF Box (seems that the wording GeoJP2 cannot be used for licensing problems, but that is essentially how everybody calls this box)
-3. MSIG WorldFile Box (if presents), contained within propers UUID boxes.
+3. MSIG WorldFile Box (if present), contained within proper UUID boxes.
Notes:
* This plugin allows to override the georeferencing information as it is obtained
from the internal supported JP2K Boxes. This means that if the CRS is missing
- and/or incorrect you can ovveride it via providing a PRJ file (filename.prj);
+ and/or incorrect you can override it via providing a projection file (``filename.prj``);
on the same line, if you want to override the grid to world transformation you
can do that via providing a world file(filename.j2w, filename.wld).
* Notice that at this time, no GMLJP2 support has been implemented even though that
@@ -44,27 +45,27 @@ Notes:
Standard JP2K readers
-In case you will use the SUN's ImageIO JP2K plugins (as an instance, in case you don't have a copy of the Kakadu software), we have not yet implemented full support to the georeferencing information contained within the JP2K metadata. For this reason, you need to add a PRJ and a WorldFile (J2W file or WLD file) beside your JP2K dataset, in case you want to be able to serve it as a geospatial dataset.
+In case you will use the SUN's ImageIO JP2K plugins (as an instance, in case you don't have a copy of the Kakadu software), we have not yet implemented full support to the georeferencing information contained within the JP2K metadata. For this reason, you need to add a PRJ and a WorldFile (J2W file or WLD file) beside your JP2K data set, in case you want to be able to serve it as a geospatial data set.
Format parameters
A set of parameters allows to customize the way the coverage will be accessed:
-InputTransparentColor
+``InputTransparentColor``
Set the transparent color for the image
-USE_JAI_IMAGEREAD
+``USE_JAI_IMAGEREAD``
Controls the low level mechanism to read the granules. If ‘true’ the plugin will make use of JAI ImageRead operation and its deferred loading mechanism, if ‘false’ it will perform direct ImageIO read calls which will result in immediate loading.
-USE_MULTITHREADING
- if ‘true’, the plugin will use a version of the JAI ImageRead with support for multithreading loading.
+``USE_MULTITHREADING``
+ if ‘true’, the plugin will use a version of the JAI ImageRead with support for multi-threading loading.
-SUGGESTED_TILE_SIZE
+``SUGGESTED_TILE_SIZE``
Controls the tile size of the input images when using tiled read. It consists of two positive integers separated by a comma, like 512,512.
**Code Example**
-Here below we have added some code to show how to interact with the plugin to read JP2K data as GridCoverage2D. There is not much difference between this code and the code to interact with, let's say, a GeoTiff.::
+Here below we have added some code to show how to interact with the plugin to read JP2K data as ``GridCoverage2D``. There is not much difference between this code and the code to interact with, let's say, a GeoTiff.::
final File file = new File ("/home/simone/data/geosolutions.jp2");
final JP2KReader reader = new JP2KReader (file);
diff --git a/docs/user/library/coverage/matlab.rst b/docs/user/library/coverage/matlab.rst
index 2e4aa0c1c80..94b8b004df3 100644
--- a/docs/user/library/coverage/matlab.rst
+++ b/docs/user/library/coverage/matlab.rst
@@ -1,7 +1,7 @@
Matlab Plugin
-------------
-Unsupported plugin to read SAS matlab files with georeferencing information.
+Unsupported plugin to read SAS Matlab files with georeferencing information.
No documentation has been provided.
diff --git a/docs/user/library/coverage/mosaic.rst b/docs/user/library/coverage/mosaic.rst
index 7a847d09281..1a1fd53b276 100644
--- a/docs/user/library/coverage/mosaic.rst
+++ b/docs/user/library/coverage/mosaic.rst
@@ -44,7 +44,7 @@ An example data set looks something like::
The property file is REQUIRED and use to provide a bunch of settings:
- Example bluemarble.properties::
+ Example ``bluemarble.properties``::
#
#Thu Jan 11 14:53:30 CET 2007
@@ -58,22 +58,23 @@ An example data set looks something like::
Where the following are required:
* Name
- * ExpandToRGB: true if we need to expand the color model from indexed to rgba
+ * ``ExpandToRGB``: true if we need to expand the color model from indexed to
+ ``rgba``
* If all your images use the same indexed palette you can set this to false
and get a large performance gain
- * Levels: list of resolutions
+ * ``Levels``: list of resolutions
- * Format: level_0_x_resolution, level_0_y_resolution, level_1_x_resolution,
+ * ``Format``: level_0_x_resolution, level_0_y_resolution, level_1_x_resolution,
level_1_y_resolution
* This measure of resolution describes how big each pixel is in real world units
- * Sample calculation: envelope.getLength(0) / image.getWidth()
+ * Sample calculation: ``envelope.getLength(0) / image.getWidth()``
* You can define several levels in order to capture overview files if you have them
- * LevelsNum: the number of levels mentioned above
- * Envelope2D: bounds in the CRS specified in the prj file
+ * ``LevelsNum``: the number of levels mentioned above
+ * ``Envelope2D``: bounds in the CRS specified in the ``.prj`` file
- * Format: "minX,minY maxX,maxY"
+ * ``Format``: ``minX,minY maxX,maxY``
- * NumFiles: should be the same as the number of features in your shapefile
+ * ``NumFiles``: should be the same as the number of features in your shapefile
diff --git a/docs/user/library/coverage/multidim.rst b/docs/user/library/coverage/multidim.rst
index f2505564ad6..af09acc8501 100644
--- a/docs/user/library/coverage/multidim.rst
+++ b/docs/user/library/coverage/multidim.rst
@@ -8,7 +8,8 @@ The following Module contains two new plugins for reading the following raster f
* NetCDF
* Grib
-Also the module contains a sub-module called coverage-api containing a few classes than can be used for creating a new plugin
+Also the module contains a sub-module called ``gt-coverage-api`` containing a
+few classes than can be used for creating a new plugin
for another multidimensional raster format.
It should be pointed out that the two modules internally use the `Unidata JAVA Libraries `_
@@ -96,15 +97,15 @@ The data dimension values will be mapped to three bands called quality, pressure
Default Enhance Mode
++++++++++++++++++++
-The default `Enhance `_ mode used
+The default `Enhance `_ mode used
by GeoTools is `Enhance.CoordSys`, in order to change the enhance mode use the following system properties:
-- org.geotools.coverage.io.netcdf.enhance.CoordSystems
-- org.geotools.coverage.io.netcdf.enhance.ScaleMissing
-- org.geotools.coverage.io.netcdf.enhance.ConvertEnums
-- org.geotools.coverage.io.netcdf.enhance.ScaleMissingDefer
+- ``org.geotools.coverage.io.netcdf.enhance.CoordSystems``
+- ``org.geotools.coverage.io.netcdf.enhance.ScaleMissing``
+- ``org.geotools.coverage.io.netcdf.enhance.ConvertEnums``
+- ``org.geotools.coverage.io.netcdf.enhance.ScaleMissingDefer``
-These can be set individually. According to the NetCDF-Java docs it is not safe to use ScaleMissing and ScaleMissingDefer
+These can be set individually. According to the NetCDF-Java docs it is not safe to use ``ScaleMissing`` and ``ScaleMissingDefer``
simultaneously.
GRIB
diff --git a/docs/user/library/coverage/netCDF.rst b/docs/user/library/coverage/netCDF.rst
index d625a1df55d..767ab8a6f4c 100644
--- a/docs/user/library/coverage/netCDF.rst
+++ b/docs/user/library/coverage/netCDF.rst
@@ -1,6 +1,12 @@
-netCDF Plugin
+NetCDF Plugin
-------------
-The NetCDF plugin supports gridded NetCDF files having dimensions following the COARDS convention (custom, Time, Elevation, Lat, Lon). The NetCDF plugin supports plain NetCDF datasets (.nc files) as well .ncml files (which aggregate and/or modify one or more datasets) and Feature Collections. It supports Forecast Model Run Collection Aggregations (FMRC) either through the NCML or Feature Collection syntax. It supports an unlimited amount of custom dimensions, including runtime.
+The NetCDF plugin supports gridded NetCDF files having dimensions
+following the COARDS convention (custom, Time, Elevation, Lat, Lon). The
+NetCDF plugin supports plain NetCDF data sets (``.nc`` files) as well ``.ncml``
+files (which aggregate and/or modify one or more data sets) and Feature
+Collections. It supports Forecast Model Run Collection Aggregations
+(FMRC) either through the NCML or Feature Collection syntax. It supports
+an unlimited amount of custom dimensions, including runtime.
-Further documentation is available in `the GeoServer project `_
\ No newline at end of file
+Further documentation is available in `the GeoServer project `_
diff --git a/docs/user/library/coverage/oracle.rst b/docs/user/library/coverage/oracle.rst
index 0f548d9aee3..fb1a94fb6c8 100644
--- a/docs/user/library/coverage/oracle.rst
+++ b/docs/user/library/coverage/oracle.rst
@@ -1,8 +1,9 @@
Oracle GeoRaster Plugin
-----------------------
-This plugin is an extension to the Image Mosaicing Pyramidal JDBC Plugin. Since an Oracle Raster
-Object contains tiles and pyramids, configuration is simple.
+This plugin is an extension to the Image Mosaicing Pyramidal JDBC
+Plugin. Since an Oracle Raster Object contains tiles and pyramids,
+configuration is simple.
Credits
@@ -42,13 +43,13 @@ Since this module requires a coverage name, a table containing a column for the
STORAGE (PCTINCREASE 0)
);
-2. Now insert a record for a coverage named oek.
+2. Now insert a record for a coverage named ``oek``.
The raster- and pyramid tiles are stored in a table called RASTER_RDT.::
INSERT INTO RASTER VALUES ('oek', sdo_geor.init('RASTER_RDT'));
-3. Import the image. Look here in case of problems Oracle Georaster Import::
+3. Import the image. Look here in case of problems Oracle GeoRaster Import::
DECLARE
geor SDO_GEORASTER;
@@ -78,13 +79,13 @@ Since this module requires a coverage name, a table containing a column for the
Configuration
^^^^^^^^^^^^^
-The Config file::
+The configuration file::
coverageName name="oek"/>
-
+
diff --git a/docs/user/library/coverage/pgraster.rst b/docs/user/library/coverage/pgraster.rst
index a46ab445c60..b328d7d8c98 100644
--- a/docs/user/library/coverage/pgraster.rst
+++ b/docs/user/library/coverage/pgraster.rst
@@ -1,8 +1,9 @@
Postgis Raster Plug in
----------------------
-This plug in is an extension to the Image Mosaicing Pyramidal JDBC Plugin. Since a Postgis raster
-object offers spatial functions and predicates, configuration is simple.
+This plugin is an extension to the Image Mosaicing Pyramidal JDBC
+Plugin. Since a Postgis raster object offers spatial functions and
+predicates, configuration is simple.
Prerequisites
@@ -21,25 +22,25 @@ This plugin expects the following table layout:
.. note::
- Of course, it is possible to use sql views instead of tables for
+ Of course, it is possible to use SQL views instead of tables for
creating the best physical table layout for the local deployment
.. warning::
- For Postgis JDBC drivers < version 9 it is necessary to set a property in the database:
+ For Postgis JDBC drivers < version 9 it is necessary to set a property in the database::
- ALTER DATABASE dbname SET bytea_output TO 'escape'
+ ALTER DATABASE dbname SET bytea_output TO 'escape'
-Prepare the tiles and overviews using the gdal tool box http://www.gdal.org.
+Prepare the tiles and overviews using the GDAL tool box http://www.gdal.org.
A good candidate is http://www.gdal.org/gdal_retile.html.
The utility for importing the tiles is described here http://postgis.refractions.net/docs/using_raster.xml.html and is included in Postgis 2.0.
-An example setup assumes the existense of 3 tables, **rtable1**, **rtable2** **rtable3**. **rtable1** is populated with the tiles from the base image,
+An example setup assumes the existence of 3 tables, **rtable1**, **rtable2** **rtable3**. **rtable1** is populated with the tiles from the base image,
**rtable2** and **rtable3** are tables for overviews. The raster column in all tables is named **rast**. The plugin needs exactly one meta data table. Table name
-and column names must match with the xml configuration (example follows) . If the table is not present, create it with::
+and column names must match with the XML configuration (example follows) . If the table is not present, create it with::
create table MOSAIC (NAME varchar(254) not null,
TileTable varchar(254)not null,
@@ -47,7 +48,7 @@ and column names must match with the xml configuration (example follows) . If th
primary key (NAME,TileTable))
-Now insert a record for a coverage named **oek**, which is stored in **rtable1**, **rtable2** **rtable3**. **oek** is the geotools name of the coverage::
+Now insert a record for a coverage named **oek**, which is stored in **rtable1**, **rtable2** **rtable3**. **oek** is the GeoTools name of the coverage::
insert into MOSAIC(NAME,TileTable) values ('oek',''rtable1)
insert into MOSAIC(NAME,TileTable) values ('oek',''rtable2)
@@ -57,7 +58,9 @@ Now insert a record for a coverage named **oek**, which is stored in **rtable1**
Configuration
^^^^^^^^^^^^^
-The plugin needs a xml configuration file. Since connect and mapping info can be reused by many coverages, it is better to have the configuration splitted into 3 parts.
+The plugin needs a XML configuration file. Since connect and mapping info
+can be reused by many coverages, it is better to have the configuration
+split into 3 parts.
1. JDBC connect configuration stored as **connect.pgraster.xml.inc** in this example setup.
@@ -108,7 +111,7 @@ The plugin needs a xml configuration file. Since connect and mapping info can be
-
+
&mapping;
diff --git a/docs/user/library/coverage/pyramid.rst b/docs/user/library/coverage/pyramid.rst
index d2a91eccfb1..3362058511b 100644
--- a/docs/user/library/coverage/pyramid.rst
+++ b/docs/user/library/coverage/pyramid.rst
@@ -24,7 +24,7 @@ Example
^^^^^^^
On disk an image pyramid is going to look a bit like the following (you can use any format for
-the tiles from mrsid to tiff)::
+the tiles from MRSid to tiff)::
directory/
directory/pyramid.properties
diff --git a/docs/user/library/cql/cql.rst b/docs/user/library/cql/cql.rst
index 4d06cc6508a..8a7d1c742a6 100644
--- a/docs/user/library/cql/cql.rst
+++ b/docs/user/library/cql/cql.rst
@@ -163,6 +163,7 @@ Examples
* Filter based on Existence
Check if something exists::
+
Filter result = CQL.toFilter( "ATTR1 EXISTS" );
Check if something does not exist::
@@ -187,7 +188,7 @@ Examples
Filter result = CQL.toFilter( "CROSSES(ATTR1, LINESTRING(1 2, 10 15))" );
Filter result = CQL.toFilter( "INTERSECTS(ATTR1, GEOMETRYCOLLECTION (POINT (10 10),POINT (30 30),LINESTRING (15 15, 20 20)) )" );
- The following example shows how to make a filter using the RELATE geooperation. In this case, the DE-9IM pattern corresponds to the **contains** spatial relation, It will be true if the first geometry contains the second.
+ The following example shows how to make a filter using the RELATE operation. In this case, the DE-9IM pattern corresponds to the **contains** spatial relation, It will be true if the first geometry contains the second.
.. literalinclude:: /../src/main/java/org/geotools/cql/ECQLExamples.java
:language: java
diff --git a/docs/user/library/cql/ecql.rst b/docs/user/library/cql/ecql.rst
index 5d261b8c482..ee73c8c3874 100644
--- a/docs/user/library/cql/ecql.rst
+++ b/docs/user/library/cql/ecql.rst
@@ -7,7 +7,7 @@ References
* `ECQL Parser Design `__ (design doc with BNF, note, in addition to WKT syntax for geometries
GeoTools now supports also Extended WKT, same as PostGIS, see example below)
-* `GeoServer CQL Examples `_ (geoserver)
+* `GeoServer CQL Examples `_ (GeoServer)
.. note::
@@ -45,7 +45,7 @@ Examples
* Filter by Comparing Values
- The CQL language limited us to referencing a propertyName against
+ The CQL language limited us to referencing a ``propertyName`` against
a more general expression.
ECQL allows you to use full expressions everywhere:
@@ -133,7 +133,7 @@ Examples
Filter filter = ECQL.toFilter(
"DWITHIN(buffer(the_geom,5), POINT(1 2), 10, kilometers)");
- The following example shows how to make a filter using the RELATE geooperation. In this case, the DE-9IM pattern corresponds to the **contains** spatial relation, It will be true if the first geometry contains the second.
+ The following example shows how to make a filter using the RELATE operation. In this case, the DE-9IM pattern corresponds to the **contains** spatial relation, It will be true if the first geometry contains the second.
.. literalinclude:: /../src/main/java/org/geotools/cql/ECQLExamples.java
:language: java
diff --git a/docs/user/library/cql/faq.rst b/docs/user/library/cql/faq.rst
index 33128eeb95a..2bcc3a61f22 100644
--- a/docs/user/library/cql/faq.rst
+++ b/docs/user/library/cql/faq.rst
@@ -15,7 +15,7 @@ Here is the most common use for the CQL class - asking for Features:
:end-before: // cql comparison end
-The CQL utility class produced is a Filter; you can create Filters by hand (using a FilterFactory) but this is much easier.
+The CQL utility class produced is a Filter; you can create Filters by hand (using a ``FilterFactory`` but this is much easier.
Q: What version of CQL is implemented?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -29,7 +29,7 @@ of temporal expressions and to leverage its use in the GeoTools library.
Q: Can I just try CQL out?
^^^^^^^^^^^^^^^^^^^^^^^^^^^
-If you're developing with GeoTools, you can easily try out the CQL parser by depending on the **gt-cql**
+If you're developing with GeoTools, you can easily try out the CQL parser by depending on the ``gt-cql``
jar and running the **CQL** class as a normal Java application.
It will present a prompt on the console (standard input) from where you can input CQL strings and
diff --git a/docs/user/library/cql/index.rst b/docs/user/library/cql/index.rst
index 994b3509e25..66a37867ca1 100644
--- a/docs/user/library/cql/index.rst
+++ b/docs/user/library/cql/index.rst
@@ -1,7 +1,7 @@
CQL
===
-The gt-cql module a human readable "Contextual Query Language" for writing filter expressions
+The ``gt-cql`` module a human readable "Contextual Query Language" for writing filter expressions
for working with geospatial information.
CQL was originally known as Common Query Language (so you will find lots of examples that still
@@ -41,4 +41,4 @@ range of GeoTools Filter and Expression ideas using simple text strings.
:maxdepth: 1
cql
- ecql
\ No newline at end of file
+ ecql
diff --git a/docs/user/library/cql/internal.rst b/docs/user/library/cql/internal.rst
index 5568d751fdb..0ecf48072ec 100644
--- a/docs/user/library/cql/internal.rst
+++ b/docs/user/library/cql/internal.rst
@@ -5,7 +5,7 @@ This package is dedicated to support the OGC Common Query Language, version 2.0.
CQL Interface
^^^^^^^^^^^^^
-This diagram presents the package interface. In parser's protocol methods performs the parsing of CQL and builds the the filter.
+This diagram presents the package interface. In parser's protocol methods performs the parsing of CQL and builds the filter.
.. image:: /images/cql.PNG
@@ -13,7 +13,7 @@ This diagram presents the package interface. In parser's protocol methods perfor
CQL Implementation
^^^^^^^^^^^^^^^^^^
-The figure shows the principal class in the parser and build process. CQLParser does a top down analysis of the input string and makes the parsing tree. Each time CQLParser builds a node, it makes a call to CQLCompiler, that implements the semantic actions related and builds the product or subproduct required to make the Filter at the end of the parsing process
+The figure shows the principal class in the parser and build process. CQLParser does a top down analysis of the input string and makes the parsing tree. Each time CQLParser builds a node, it makes a call to CQLCompiler, that implements the semantic actions related and builds the product or sub product required to make the Filter at the end of the parsing process
.. image:: /images/cqlParser.PNG
@@ -165,7 +165,7 @@ Expression::
::= "TRUE" | "FALSE" | "UNKNOWN"
-Georoutine and Relational Geooperations::
+Geo-Routine and Relational Geo-Operations::
::=
@@ -383,7 +383,7 @@ Character String Literal::
Identifier
-The following section is intended to give context for identifier and namespaces. It assumes that the default namespace is specified in the query request and does not allow any overrides of the namepace::
+The following section is intended to give context for identifier and namespaces. It assumes that the default namespace is specified in the query request and does not allow any overrides of the namespace::
::= ::=
diff --git a/docs/user/library/data/arcsde.rst b/docs/user/library/data/arcsde.rst
index b2e5f9c6723..484f3778639 100644
--- a/docs/user/library/data/arcsde.rst
+++ b/docs/user/library/data/arcsde.rst
@@ -6,7 +6,7 @@ The ArcSDE plugin allows the GeoTools developer to work with the `ArcSDE `_
* `Geometry-less` Feature Types: "Non spatial" registered ArcSDE tables can be accessed as GeoTools FeatureTypes
@@ -30,84 +30,96 @@ Configuration Parameters
To connect to an ArcSDE instance you must have the following parameters:
-+-----------------+-------------------------------------------------------------------+
-| Parameter | Description |
-+=================+===================================================================+
-| "dbtype" | Required: must be "arcsde" |
-+-----------------+-------------------------------------------------------------------+
-|"server" | Required: The machine which the ArcSDE instance is running on. |
-+-----------------+-------------------------------------------------------------------+
-|"port" | Required: The port the ArcSDE instance is running on. |
-| | The default is 5151, or if you're using Direct Connect, check the |
-| | :ref:`direct-connect` |
-| | section for further information on how to format this parameter. |
-+-----------------+-------------------------------------------------------------------+
-|"instance" | Optional: The ArcSDE instance name (generally "sde", or whatever |
-| | you called the database). |
-+-----------------+-------------------------------------------------------------------+
-|"user" | Required: The name of the user to connect with. |
-+-----------------+-------------------------------------------------------------------+
-|"password" | Required: The password of the user you are connecting with. |
-+-----------------+-------------------------------------------------------------------+
++-------------------+-------------------------------------------------------------------+
+| Parameter | Description |
++===================+===================================================================+
+| ``dbtype`` | Required: must be ``arcsde`` |
++-------------------+-------------------------------------------------------------------+
+| ``server`` | Required: The machine which the ArcSDE instance is running on. |
++-------------------+-------------------------------------------------------------------+
+| ``port`` | Required: The port the ArcSDE instance is running on. |
+| | The default is 5151, or if you're using Direct Connect, check the |
+| | :ref:`direct-connect` |
+| | section for further information on how to format this parameter. |
++-------------------+-------------------------------------------------------------------+
+| ``instance`` | Optional: The ArcSDE instance name (generally ``sde``, or whatever|
+| | you called the database). |
++-------------------+-------------------------------------------------------------------+
+| ``user`` | Required: The name of the user to connect with. |
++-------------------+-------------------------------------------------------------------+
+| ``password`` | Required: The password of the user you are connecting with. |
++-------------------+-------------------------------------------------------------------+
Access
^^^^^^
There's nothing special from the GeoTools API point of view in accessing an ArcSDE server. Just use the regular GeoTools DataStore creation mechanism with the correct parameters::
- Map map = new HashMap();
- map.put( "dbtype", "arcsde" );
- map.put( "server", "my.arcsdeserver.com" );
- map.put( "port", "5151" );
- map.put( "instance", "sde" );
- map.put( "user", "sde" );
- map.put( "password", "secret" );
-
- DataStore dataStore = DataStoreFinder.getDataStore( Map map );
- String typeName = dataStore.getTypeNames()[0];
-
- FeatureSource source = dataStore( typeName );
-
- Filter filter = CQL.toFilter("BBOX(SHAPE, -180,-90,0,0)");
- FeatureCollection collection = source.getFeatures( filter );
- FeatureIterator iterator = collection.iterator();
- try {
- while( iterator.hasNext() ){
- Feature feature = (Feature) iterator.next();
- ...
- }
- }
- finally {
- collection.close( iterator );
- }
+ Map map = new HashMap();
+ map.put( "dbtype", "arcsde" );
+ map.put( "server", "my.arcsdeserver.com" );
+ map.put( "port", "5151" );
+ map.put( "instance", "sde" );
+ map.put( "user", "sde" );
+ map.put( "password", "secret" );
+
+ DataStore dataStore = DataStoreFinder.getDataStore( Map map );
+ String typeName = dataStore.getTypeNames()[0];
+
+ FeatureSource source = dataStore( typeName );
+ Filter filter = CQL.toFilter("BBOX(SHAPE, -180,-90,0,0)");
+ FeatureCollection collection = source.getFeatures( filter );
+ FeatureIterator iterator = collection.iterator();
+ try {
+ while( iterator.hasNext() ){
+ Feature feature = (Feature) iterator.next();
+ ...
+ }
+ }
+ finally {
+ collection.close( iterator );
+ }
Advanced
^^^^^^^^
-There are also a number of optional parameters to configure the ArcSDE connection 'pool'. GeoTools makes use of a number of connections, but does a decent job of managing them, so that new connections need not be made for each request. The big reason for this is that some ArcSDE licenses only allow a limited number of connections, so these values can be adjusted to minimize the number of simultaneous connections. GeoTools will share the active connections instead of making new ones. Right now it requires at least two connections, as we were having some nasty bugs with ArcSDE connections going stale (only with certain instances, and only with spatial queries, which made debugging a big hassle). With some funded development work this could easily be improved, ArcSDE could definitely benefit from some more effort. If you have more connections available we do recommend upping the pool.maxConnections parameter. The meaning of these optional parameters is as follows:
-
-+----------------------------------+-----------------------------------------------------------------+
-| Parameter | Description |
-+=================================+==================================================================+
-|"pool.minConnections" | The number of connections the pool makes on start up. If needed |
-| | these will be incremented. |
-+---------------------------------+------------------------------------------------------------------+
-|"pool.maxConnections" | The maximum number of connections that a pool is allowed to |
-| | make. This should be as high as possible, but there may be |
-| | license limitations. |
-+---------------------------------+------------------------------------------------------------------+
-|"pool.timeOut" | The amount of time that a connection request should wait for an |
-| | unused connection before failing. |
-+---------------------------------+------------------------------------------------------------------+
-|"namespace" | A String literal representing the namespace URL FeatureTypes |
-| | created by this DataStore will be assigned to. E.g.: |
-| | ``http://my.company.com/testNamespace`` |
-+---------------------------------+------------------------------------------------------------------+
-|"database.version" | The ArcSDE database version to use. |
-+---------------------------------+------------------------------------------------------------------+
-|"datastore.allowNonSpatialTables"| ``true|false`` If enabled, registered non-spatial tables |
-| | are also available. |
-+---------------------------------+------------------------------------------------------------------+
+There are also a number of optional parameters to configure the ArcSDE
+connection 'pool'. GeoTools makes use of a number of connections, but
+does a decent job of managing them, so that new connections need not
+be made for each request. The big reason for this is that some ArcSDE
+licenses only allow a limited number of connections, so these values can
+be adjusted to minimize the number of simultaneous connections. GeoTools
+will share the active connections instead of making new ones. Right
+now it requires at least two connections, as we were having some nasty
+bugs with ArcSDE connections going stale (only with certain instances,
+and only with spatial queries, which made debugging a big hassle). With
+some funded development work this could easily be improved, ArcSDE could
+definitely benefit from some more effort. If you have more connections
+available we do recommend upping the ``pool.maxConnections`` parameter. The
+meaning of these optional parameters is as follows:
+
++-------------------------------------+------------------------------------------------------------------+
+| Parameter | Description |
++=====================================+==================================================================+
+| ``pool.minConnections`` | The number of connections the pool makes on start up. If needed |
+| | these will be incremented. |
++-------------------------------------+------------------------------------------------------------------+
+| ``pool.maxConnections`` | The maximum number of connections that a pool is allowed to |
+| | make. This should be as high as possible, but there may be |
+| | license limitations. |
++-------------------------------------+------------------------------------------------------------------+
+| ``pool.timeOut`` | The amount of time that a connection request should wait for an |
+| | unused connection before failing. |
++-------------------------------------+------------------------------------------------------------------+
+| ``namespace`` | A String literal representing the namespace URL FeatureTypes |
+| | created by this DataStore will be assigned to. E.g.: |
+| | ``http://my.company.com/testNamespace`` |
++-------------------------------------+------------------------------------------------------------------+
+| ``database.version`` | The ArcSDE database version to use. |
++-------------------------------------+------------------------------------------------------------------+
+| ``datastore.allowNonSpatialTables`` | ``true|false`` If enabled, registered non-spatial tables |
+| | are also available. |
++-------------------------------------+------------------------------------------------------------------+
.. _direct-connect:
@@ -122,8 +134,8 @@ The GeoTools ArcSDE configuration parameters are the same as in the `Configurati
* server: In ESRI Direct Connect Mode a value must be given or the Direct Connect Driver will throw an error, so just put a 'none' there - any String will work!
* port: In ESRI Direct Connect Mode the port has a String representation: `sde:oracle10g`, `sde:oracle11g:/:test`, etc. For further information check `ArcSDE connection syntax `_ at the official ArcSDE documentation from ESRI.
* instance: In ESRI Direct Connect Mode a value must be given or the Direct Connect Driver will throw an error, so just put a 'none' there - any String will work!
- * user: The username to authenticate with the geo database.
- * password: The password associated with the above username for authentication with the geo database.
+ * user: The username to authenticate with the database.
+ * password: The password associated with the above username for authentication with the database.
.. note:: Be sure to assemble the password like: password@ for Oracle
@@ -149,7 +161,7 @@ versions (8.3 and 9.0/9.1) has been dropped since a long time due to lack of lic
Dependencies
''''''''''''
-If you're building a project that needs the GeoTools ArcSDE plugin you're hopefuly using Apache Maven so you that you only declare a dependency against the GeoTools ArcSDE plugin
+If you're building a project that needs the GeoTools ArcSDE plugin you're hopefully using Apache Maven so you that you only declare a dependency against the GeoTools ArcSDE plugin
and let Maven take care of the transitive dependencies (i.e. libraries the ArcSDE plugin depends on but your project doesn't directly).
If that is not the case, the following are the full dependencies of the GeoTools ArcSDE plugin, plus the ones listed in the ref:`esri-jars` section::
@@ -237,15 +249,22 @@ If that is not the case, the following are the full dependencies of the GeoTools
Additionally, you'll need the following two jar files:
-* jsde_sdk.jar
-* jpe_sdk.jar
+* ``jsde_sdk.jar``
+* ``jpe_sdk.jar``
We cannot distribute them with GeoTools. Please make sure the required jars are available on
the CLASSPATH (if not the ArcSDE plugin will report itself as unavailable).
-They should be available once you installed the "ArcSDE Java SDK". For example, located in *arcsde install dir**/arcsdesdk/sdeexe92/lib/.
-Make sure you use the same version of the ``jsde_sdk.jar`` and ``jpe_sdk.jar`` libraries than your ArcSDE instance. Or at least that's what ESRI recommends, though
-in some cases we found using a higher version of those jars against a lower version of the ArcSDE instance does not hurt at all, or can even work or perform better.
-But definitely don't use a lower version of the jars against a higher version of ArcSDE.
-
-.. note:: As for version 10.0, ArcSDE is part of the ESRI ArcGIS Server stack, and you may need to request a separate media DVD to ESRI for the ArcSDE Java SDK as it seems it doesn't come with the standard DVD set but you can get it by just asking for it.
+They should be available once you installed the "ArcSDE Java SDK". For
+example, located in *arcsde install dir* ``/arcsdesdk/sdeexe92/lib/``.
+Make sure you use the same version of the ``jsde_sdk.jar`` and
+``jpe_sdk.jar`` libraries than your ArcSDE instance. Or at least that's
+what ESRI recommends, though in some cases we found using a higher version
+of those jars against a lower version of the ArcSDE instance does not
+hurt at all, or can even work or perform better. But definitely don't
+use a lower version of the jars against a higher version of ArcSDE.
+
+.. note:: As for version 10.0, ArcSDE is part of the ESRI ArcGIS Server
+ stack, and you may need to request a separate media DVD to ESRI for the
+ ArcSDE Java SDK as it seems it doesn't come with the standard DVD set
+ but you can get it by just asking for it.
diff --git a/docs/user/library/data/datastore.rst b/docs/user/library/data/datastore.rst
index 59cca84abdf..67c89df07c4 100644
--- a/docs/user/library/data/datastore.rst
+++ b/docs/user/library/data/datastore.rst
@@ -44,7 +44,7 @@ differently.
* Create
To create a new shapefile on disk we are going to have to go one level deeper
- and ask FileDataStoreFinder for a factory matching the "shp" extension.::
+ and ask FileDataStoreFinder for a factory matching the ``shp`` extension.::
FileDataStoreFactorySpi factory = FileDataStoreFinder.getDataStoreFactory("shp");
@@ -124,7 +124,7 @@ If you are working with GeoServer or uDig you have access to some great faciliti
// Making the DataStore
DataStore dataStore = service.resolve( DataStore.class, new NullProgressListener() );
-The idea works similar to a "file handle", you can make a IService "handle" that represents your DataStore (and you can ask the handle several fun questions like "what is your name") before you actually create the beast.
+The idea works similar to a "file handle", you can make a ``IService`` "handle" that represents your DataStore (and you can ask the handle several fun questions like "what is your name") before you actually create the beast.
This separation is really important in an application expecting to talk about thousands of sources of data at a time. Just because your application wants to know about a source of data does not always mean you need a DataStore yet.
diff --git a/docs/user/library/data/export.rst b/docs/user/library/data/export.rst
index 0994fd3b44e..3851fc67491 100644
--- a/docs/user/library/data/export.rst
+++ b/docs/user/library/data/export.rst
@@ -24,7 +24,7 @@ it is under construction.
:start-after: // exportToShapefile start
:end-before: // exportToShapefile end
-* We also have an alternative example (thanks gaby) using FeatureWriter.
+* We also have an alternative example (thanks Gaby) using FeatureWriter.
FeatureSource and FeatureCollection are high level API, to get down and dirty you
can use the low-level FeatureReader / FeatureWriter API.
@@ -54,8 +54,9 @@ A couple of hints:
:start-after: // fixWFSTypeName start
:end-before: // fixWFSTypeName end
-* The WFS-T protocol does not allow us to implement createSchema so creating a new featureType
- will need to be done according to the procedure for your WFS prior to calling addFeature
+* The WFS-T protocol does not allow us to implement ``createSchema`` so creating a new ``featureType``
+ will need to be done according to the procedure for your WFS prior to calling
+ ``addFeature``.
As an example GeoServer supports the use of a REST API for this purpose.
@@ -65,6 +66,6 @@ PostGIS
To copy information into PostGIS:
* You can export from PostGIS as expected using the examples above
-* PostGIS also supports createSchema allowing you to create a new table to hold the content
-* You may wish to adjust the featureType information, especially the lengths of strings
- prior to calling createSchema
+* PostGIS also supports ``createSchema`` allowing you to create a new table to hold the content
+* You may wish to adjust the ``featureType`` information, especially the lengths of strings
+ prior to calling ``createSchema``
diff --git a/docs/user/library/data/faq.rst b/docs/user/library/data/faq.rst
index ab62a5ce0d5..c79b157f8a3 100644
--- a/docs/user/library/data/faq.rst
+++ b/docs/user/library/data/faq.rst
@@ -4,9 +4,10 @@ Data FAQ
Q: How do I get a FeatureStore?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-FeatureStore is an extension of FeatureSource that is only available if your information can be modified.
+``FeatureStore`` is an extension of ``FeatureSource`` that is only available if your information can be modified.
-With this in mind you can use an instanceof check, and then cast to a FeatureStore::
+With this in mind you can use an ``instanceof`` check, and then cast to a
+``FeatureStore``::
SimpleFeatureSource source = dataStore.getFeatureSource( typeName );
if( source instanceof SimpleFeatureStore ){
diff --git a/docs/user/library/data/featuresource.rst b/docs/user/library/data/featuresource.rst
index f9d96259d20..8018114825e 100644
--- a/docs/user/library/data/featuresource.rst
+++ b/docs/user/library/data/featuresource.rst
@@ -166,24 +166,24 @@ Adding features can be done in the following manner.:
Hints:
-* If addFeatures is really slow you probably forgot to use a Transaction!
+* If ``addFeatures`` is really slow you probably forgot to use a ``Transaction``!
-* Got FeatureCollection?
+* Got ``FeatureCollection``?
- The addFeatures method really wants a feature collection, if you have something other than a FeatureCollection there are
- a couple of DataUtilityMethods around to help.
+ The ``addFeatures`` method really wants a feature collection, if you have something other than a ``FeatureCollection`` there are
+ a couple of ``DataUtilityMethods`` around to help::
- * store.addFeatures( DataUtilities.collection( feature ) );
- * store.addFeatures( DataUtilities.collection( array ) );
- * store.addFeatures( DataUtilities.collection( list ) );
- * store.addFeatures( DataUtilities.collection( set ) );
+ store.addFeatures( DataUtilities.collection( feature ) );
+ store.addFeatures( DataUtilities.collection( array ) );
+ store.addFeatures( DataUtilities.collection( list ) );
+ store.addFeatures( DataUtilities.collection( set ) );
And by a couple I mean they are all named *collection* it is just they are willing to adapt from a range of input.
-* Handling of FeatureID
+* Handling of ``FeatureID``
Each feature has an identifier that is intended to be unique in agreement with the WFS specification.
- For most implementations the FeatureID is assigned when the feature is added
+ For most implementations the ``FeatureID`` is assigned when the feature is added
(and even more interestingly when it is committed!):
.. literalinclude:: /../src/main/java/org/geotools/data/SimpleFeatureStoreExamples.java
@@ -191,15 +191,15 @@ Hints:
:start-after: // addFeatureIdExample start
:end-before: // addFeatureIdExample end
- FeatureID are assigned during the commit process. While we make an attempt to determine an
+ ``FeatureID`` are assigned during the commit process. While we make an attempt to determine an
appropriate ID prior to commit we ask that you wait until commit() is finished before
writing down the identifiers of the added content.
- The FeatureID instances returned by addFeatures are updated to reflect the final value
+ The ``FeatureID`` instances returned by ``addFeatures`` are updated to reflect the final value
provided during commit. If you need to perform this step yourself you can listen for a
BatchFeatureEvent as shown below.
-* FeatureEvents are sent out when adding:
+* ``FeatureEvents`` are sent out when adding:
.. literalinclude:: /../src/main/java/org/geotools/data/SimpleFeatureStoreExamples.java
:language: java
@@ -208,12 +208,12 @@ Hints:
The BatchFeatureEvent sent out during commit contains the final set of identifiers
-* Handling of FeatureID Yourself
+* Handling of ``FeatureID`` Yourself
- Recently a few DataStore implementations (JDBCNG and Property) added support for a "Hint" allowing
- you to define your own FeatureID::
+ Recently a few ``DataStore`` implementations (JDBCNG and Property) added support for a "Hint" allowing
+ you to define your own ``FeatureID``::
- if( featureStore.getQueryCapabilities().isUseExisingFIDSupported() ){
+ if( featureStore.getQueryCapabilities().isUseExizingFIDSupported() ){
// featureStore allows us to create our own featureIDs
SimpleFeatureBuilder b = new SimpleFeatureBuilder(featureStore.getSchema());
DefaultFeatureCollection collection = new DefaultFeatureCollection(null,featureStore.getSchema());
@@ -249,7 +249,7 @@ This does of course leave an obvious question:
* Q What was just removed?
- If you would like to report to the user what features were removed you will need to select the FeatureIds out before
+ If you would like to report to the user what features were removed you will need to select the ``FeatureIds`` out before
they are deleted.
.. literalinclude:: /../src/main/java/org/geotools/data/SimpleFeatureStoreExamples.java
@@ -278,12 +278,12 @@ You can also perform batch changes to the all the data matching a specific filte
transaction.rollback();
}
-The above code example finds the feature with ID "fred" and changes his "age" to 24.
+The above code example finds the feature with ID ``fred`` and changes his ``age`` to 24.
SimpleFeatureLocking
^^^^^^^^^^^^^^^^^^^^
-FeatureLocking follows the same model as web feature service locking; a time based lock is requested. The lock is valid
+``FeatureLocking`` follows the same model as web feature service locking; a time based lock is requested. The lock is valid
until released, or until the duration expires.
@@ -299,9 +299,10 @@ Acquiring a lock is straight forward::
System.out.println("Features lock with authorisation: "+lock.getAuthorization() );
-To unlock the features again we need to use the authorisation provided by lock.getAuthorization() above.
-Usually these authorisations are stored as part of your application (as part of a session),
-and used to configure the GeoTools Transaction before use of SimpleFeatureStore.::
+To unlock the features again we need to use the authorization provided by ``lock.getAuthorization()`` above.
+Usually these authorizations are stored as part of your application (as part of a session),
+and used to configure the GeoTools Transaction before use of
+``SimpleFeatureStore``.::
Transaction t = new DefaultTransaction();
diff --git a/docs/user/library/data/geopackage.rst b/docs/user/library/data/geopackage.rst
index 8b4e6c9b2b5..a45b0c1a92c 100644
--- a/docs/user/library/data/geopackage.rst
+++ b/docs/user/library/data/geopackage.rst
@@ -7,7 +7,7 @@ GeoPackage is an open, standards-based, platform-independent, portable, self-des
The module supports both vector data, as GeoPackage features, and raster data, as GeoPackage tiles. Access to a GeoPackage
can be performed either low level, using the GeoPackage class, or high level, using the GeoPackage JDBC data store
-for vector data, and the GeoPackageReader for raster data.
+for vector data, and the ``GeoPackageReader`` for raster data.
References:
@@ -31,9 +31,9 @@ DataStore Connection Parameters
============== ============================================
Parameter Description
============== ============================================
-"dbtype" Must be the string "geopkg"
-"database" The database to connect to
-"user" User name (optional)
+``dbtype`` Must be the string ``geopkg``
+``database`` The database to connect to
+``user`` User name (optional)
============== ============================================
Access
diff --git a/docs/user/library/data/index.rst b/docs/user/library/data/index.rst
index 2e56a7aa7a1..391275f2f60 100644
--- a/docs/user/library/data/index.rst
+++ b/docs/user/library/data/index.rst
@@ -10,13 +10,13 @@ the toolkit to work.
.. image:: /images/gt-main.png
-The gt-main module is the foundation for implementing additional :doc:`DataStore <../main/datastore>`
+The ``gt-main`` module is the foundation for implementing additional :doc:`DataStore <../main/datastore>`
formats:
-* Abstract classes for :doc:`DataStore <../main/datastore>` implementors to start from such
+* Abstract classes for :doc:`DataStore <../main/datastore>` implementers to start from such
as **ContentDataStore** and **DirectoryDataStore**
-The gt-main module requires plug ins for different formats to be supplied.
+The ``gt-main`` module requires plug ins for different formats to be supplied.
**Maven**::
diff --git a/docs/user/library/data/internal.rst b/docs/user/library/data/internal.rst
index bcadd0fa8eb..6ca0b2b69e0 100644
--- a/docs/user/library/data/internal.rst
+++ b/docs/user/library/data/internal.rst
@@ -1,79 +1,79 @@
Internals
---------
-The internals of gt-main provide assistance to those writing new format support for the DataStore API with a wealth of abstract classes to extend, and utility classes performing common functions.
+The internals of ``gt-main`` provide assistance to those writing new format support for the DataStore API with a wealth of abstract classes to extend, and utility classes performing common functions.
ContentDataStore
^^^^^^^^^^^^^^^^
-ContentDataStore represents a ground up rewrite of "much loved" AbstractDataStore. Since the form of that love was reflect in lots of workarounds, and extra methods, and complicated class interactions this is generally viewed as a good thing.
+``ContentDataStore`` represents a ground up rewrite of "much loved" ``AbstractDataStore``. Since the form of that love was reflect in lots of workarounds, and extra methods, and complicated class interactions this is generally viewed as a good thing.
.. image:: /images/content.PNG
-It offers a clear design with a small number of classes to implement. These classes are referenced by ContentDataStore as it goes about
+It offers a clear design with a small number of classes to implement. These classes are referenced by ``ContentDataStore`` as it goes about
doing its job, as a result you are not responsible for many of the usual DataStore classes.
There is a tutorial showing how to read a simple comma separated value file:
* :doc:`/tutorial/datastore/index` (tutorial)
-Central to this design is the ContentEntry and ContentState classes. These classes are provided to you as you are implementing
-for general note keeping. You can override the instance of ContentState that is created if you need to track additional details cache information specific to your implementation.
+Central to this design is the ``ContentEntry`` and ``ContentState`` classes. These classes are provided to you as you are implementing
+for general note keeping. You can override the instance of ``ContentState`` that is created if you need to track additional details cache information specific to your implementation.
-* ContentEntry stores all the notes needed for a featureSource to function.
+* ``ContentEntry`` stores all the notes needed for a ``featureSource`` to function.
- * getName()
- * getTypeName()
+ ``getName()``
+ ``getTypeName()``
- These two methods identify a published FeatureType
+ These two methods identify a published ``FeatureType``
- * getState( Transaction )
+ * ``getState( Transaction )``
- Access to the ContentState for ongoing Transactions.
- Two FeatureStores using the same Transaction will end up using the same ContentState.
- * dispose()
- * getDataStore()
+ Access to the ``ContentState`` for ongoing ``Transactions``.
+ Two ``FeatureStores`` using the same Transaction will end up using the same ``ContentState``.
+ * ``dispose()``
+ * ``getDataStore()``
-* ContentState maintains all the information for an on going Transaction.
+* ``ContentState`` maintains all the information for an on going Transaction.
- * getEntry()
- * getTransaction()
- * setTransaction(Transaction)
+ * ``getEntry()``
+ * ``getTransaction()``
+ * ``setTransaction(Transaction)``
You can cache your generated schema and summary values here:
- * getFeatureType()
- * setFeatureType(SimpleFeatureType)
- * getCount()
- * setCount(int)
- * getBounds()
- * setBounds(ReferencedEnvelope)
+ * ``getFeatureType()``
+ * ``setFeatureType(SimpleFeatureType)``
+ * ``getCount()``
+ * ``setCount(int)``
+ * ``getBounds()``
+ * ``setBounds(ReferencedEnvelope)``
- Listener information is gathered here where your FeatureStore can delegate to it.
+ Listener information is gathered here where your ``FeatureStore`` can delegate to it.
You can call these methods as modifications are made to your data.
- * addListener(FeatureListener)
- * removeListener(FeatureListener)
- * getBatchFeatureEvent()
- * hasListener()
- * fireFeatureUpdated(FeatureSource, ?>, Feature, ReferencedEnvelope)
- * fireFeatureAdded(FeatureSource, ?>, Feature)
- * fireFeatureRemoved(FeatureSource, ?>, Feature)
- * fireFeatureEvent(FeatureEvent)
- * fireBatchFeatureEvent(boolean)
+ * ``addListener(FeatureListener)``
+ * ``removeListener(FeatureListener)``
+ * ``getBatchFeatureEvent()``
+ * ``hasListener()``
+ * ``fireFeatureUpdated(FeatureSource, ?>, Feature, ReferencedEnvelope)``
+ * ``fireFeatureAdded(FeatureSource, ?>, Feature)``
+ * ``fireFeatureRemoved(FeatureSource, ?>, Feature)``
+ * ``fireFeatureEvent(FeatureEvent)``
+ * ``fireBatchFeatureEvent(boolean)``
Care and feeding:
- * flush()
- * close()
- * copy() - used when copying the Transaction.AUTO_COMMIT ContentState at the start of a Transaction
+ * ``flush()``
+ * ``close()``
+ * ``copy()`` - used when copying the ``Transaction.AUTO_COMMI`` ``ContentState`` at the start of a ``Transaction``
DirectoryDataStore
^^^^^^^^^^^^^^^^^^
-DirectoryDataStore is used to allow file based datastores (such as shapefile) to smoothly represent a directory of files in one fell swoop.
+``DirectoryDataStore`` is used to allow file based ``DataStores`` (such as shapefile) to smoothly represent a directory of files in one fell swoop.
-Here is an example for "csv" files::
+Here is an example for "CSV" files::
/** Extend a CSVDataStoreFactory for a Directory of files */
public class CSVDirectoryFactory extends CSVDataStoreFactory {
diff --git a/docs/user/library/data/memory.rst b/docs/user/library/data/memory.rst
index 162d5b2c6b0..aaea4236a92 100644
--- a/docs/user/library/data/memory.rst
+++ b/docs/user/library/data/memory.rst
@@ -1,11 +1,11 @@
-MemoryDataStore
----------------
+``MemoryDataStore``
+--------------------
-We do have one MemoryDataStore suitable for storing temporary information in memory prior to saving it out to disk.
+We do have one ``MemoryDataStore`` suitable for storing temporary information in memory prior to saving it out to disk.
Please be advised that it is set up to accurately mirror information being located on disk and is not performant in
any way. That said it works; and is pretty easy to stuff your data into.
-This implementation is actually offered by the **gt-main** module, it is being documented here for consistency.
+This implementation is actually offered by the **``gt-main``** module, it is being documented here for consistency.
References:
@@ -15,9 +15,9 @@ References:
Create
^^^^^^
-MemoryDataStore is not fast - it is for testing. Why is it not fast do you ask? Because we use it to be strict and model what working with an external service is like (as such it is going to copy your data again and again and again).
+``MemoryDataStore`` is not fast - it is for testing. Why is it not fast do you ask? Because we use it to be strict and model what working with an external service is like (as such it is going to copy your data again and again and again).
-Unlike most DataStores we will be creating this one by hand, rather than using a factory.::
+Unlike most ``DataStores`` we will be creating this one by hand, rather than using a factory.::
MemoryDataStore memory = new MemoryDataStore();
@@ -37,12 +37,12 @@ Unlike most DataStores we will be creating this one by hand, rather than using a
* Q: Given me something faster
The :doc:`gt-main DataUtilities<../main/data>` offers several high performance alternatives to
- MemoryDataStore.
+ ``MemoryDataStore``.
Examples
^^^^^^^^
-* Using a Memory DataStore to alter content.
+* Using a ``MemoryDataStore`` to alter content.
Thanks to Mau Macros for the following example:
diff --git a/docs/user/library/data/mongodb.rst b/docs/user/library/data/mongodb.rst
index 9f35786e2d4..c137a673040 100644
--- a/docs/user/library/data/mongodb.rst
+++ b/docs/user/library/data/mongodb.rst
@@ -1,4 +1,4 @@
-Mongodb Plugin
+MongoDB Plugin
--------------
MongoDB is a popular documentation database. This plugin provides read-write
@@ -14,8 +14,9 @@ access to appropriately indexed collections.
To publish a collection:
-* A compliant collection must have one or more spatial indexes of type 2dsphere.
- Any collection without an indexed field of type 2dsphere will be ignored.
+* A compliant collection must have one or more spatial indexes of type
+ ``2dsphere``.
+ Any collection without an indexed field of type ``2dsphere`` will be ignored.
* When examining compliant collections, the schema store will be queried for an
existing schema by using the collection name as the schema name. If a schema
@@ -27,16 +28,16 @@ To publish a collection:
longitude/latitude. Therefore, the geometry attribute descriptor in a schema
must specify EPSG:4326 as CRS (always true for inferred schemas).
-* A new collection can be created using createSchema method. This should not be
+* A new collection can be created using ``createSchema`` method. This should not be
used to manually define a schema for an existing collection.
Functionality
-------------
-The MongoDataStore supports the use of MongoDB as a data store with the
+The ``MongoDataStore`` supports the use of MongoDB as a data store with the
following connection parameters:
-* data_store: specifies the MongoDB instance and database to connect to.
+* ``data_store``: specifies the MongoDB instance and database to connect to.
This field requires a MongoDB client URI as specified by the MongoDB Manual. A
typical URI will be of the form: :kbd:`mongodb://example.com:27017/database` .
@@ -47,17 +48,17 @@ following connection parameters:
credentials can be supplied with the MongoDB client URI, in the form:
:kbd:`mongodb://username:password@example.com:27017/database` .
-* schema_store: Designates the storage for inferred and manually defined
+* ``schema_store``: Designates the storage for inferred and manually defined
schemas.
- This field can accept either a mongodb or file URI. The directory will be
+ This field can accept either a MongoDB or file URI. The directory will be
created if it does not exist, in which case write permissions will be necessary.
The database and collection names are optional. If missing, the database name
- will default to geotools and the collection name to schemas. The database and
+ will default to ``geotools`` and the collection name to ``schemas``. The database and
collection must be writable using the credentials provided with the URI. Schemas
are stored as MongoDB documents or files adhering to the JSON schema format with
- the schema "Type Name" (typeName) as the key.
+ the schema "Type Name" (``typeName``) as the key.
* max_objs_schema: specifies the maximun integer number of JSON objects on the collection
to be used in the schema generation process.
@@ -72,12 +73,12 @@ JSON Schema
Keep in mind:
-* The valid GeoJSON geometry encodings are Point, LineString,
- Polygon, MultiPoint, MultiLineString, MultiPolygon. GeoJSON multigeometry
- variants are only supported for MongDB version 2.5 and newer.
+* The valid GeoJSON geometry encodings are ``Point``, ``LineString``,
+ ``Polygon``, ``MultiPoint``, ``MultiLineString``, ``MultiPolygon``. GeoJSON multigeometry
+ variants are only supported for MongoDB version 2.5 and newer.
-* The following Java equivalents of BSON types are valid: String, Double, Long,
- Integer, Boolean, Date.
+* The following Java equivalents of BSON types are valid: ``String``, ``Double``, ``Long``,
+ ``Integer``, ``Boolean``, ``Date``.
For the following GeoJSON feature::
@@ -137,10 +138,10 @@ is described using the following schema::
File URI schema stores:
-* For the directory-based schema store, edit the JSON document with the typeName
+* For the directory-based schema store, edit the JSON document with the ``typeName``
requiring modification.
- Schemas are written using createSchema() without indenting, but you can indent the
+ Schemas are written using ``createSchema()`` without indenting, but you can indent the
resulting file for readability if desired.
MongoDB URI schema stores:
@@ -150,12 +151,12 @@ MongoDB URI schema stores:
JSON schema format.
The JSON files contained in the file schema store are in a format that can be
- inserted into a MongoDB schema store (as long as the typeName in the file is
+ inserted into a MongoDB schema store (as long as the ``typeName`` in the file is
unique to the document collection ).
Multiple schemas, or views, can be created for a single MongoDB document
- collection by creating a new, unique, typeName and specifying the collection
- under the root-level userData object.
+ collection by creating a new, unique, ``typeName`` and specifying the collection
+ under the root-level ``userData`` object.
Implementation Notes
--------------------
@@ -165,20 +166,22 @@ Implementation Notes
* Multigeometry support requires MongoDB versions 2.5 and newer
* Self-intersecting polygons is a common data problem preventing
- MongoDBDataStore from functioning. Please note that self-intersection
+ ``MongoDBDataStore`` from functioning. Please note that self-intersection
may arise due to the transformation to WGS84 coordinates (which is a necessary
preliminary step for importing data into MongoDB), even
- if they did not exist in the original dataset.
+ if they did not exist in the original data set.
-* All 2dsphere indexes and spatial operations assume the WGS84 datum. All
+* All ``2dsphere`` indexes and spatial operations assume the WGS84 datum. All
indexed GeoJSON data stored in a MongoDB document collection is assumed to be
referenced with the WGS84 coordinate reference system.
-* Native $or operator execution is automatically enabled when MongoDB detected version >= 2.6.0;
+
+* Native ``$or`` operator execution is automatically enabled when MongoDB detected version >= 2.6.0;
if you run a lower version, native $or operator execution is automatically disabled.
-* Within, Intersects and BBOX filters are implemented with $geoWithin and
- $geoIntersects operations. These operations are limited when effected by
+* ``Within``, ``Intersects`` and ``BBOX`` filters are implemented with
+ ``$geoWithin`` and
+ ``$geoIntersects`` operations. These operations are limited when effected by
geometries spanning a hemisphere (and will use the smaller geometry).
Usage Notes
diff --git a/docs/user/library/data/ogr.rst b/docs/user/library/data/ogr.rst
index 8d0dab0c372..67979af503f 100644
--- a/docs/user/library/data/ogr.rst
+++ b/docs/user/library/data/ogr.rst
@@ -15,7 +15,7 @@ There are two implementations of the OGR plugin. The first uses OGR's standard
Your installation of GDAL/OGR needs to be compiled with Java support to use this module.
-The other OGR plugin uses Bridj to create Java bindings to OGR. This version does not require
+The other OGR plugin uses ``Bridj`` to create Java bindings to OGR. This version does not require
GDAL/OGR to be compiled with Java support.
**Maven**::
@@ -26,11 +26,11 @@ GDAL/OGR to be compiled with Java support.
${geotools.version}
-The OGR DataStore does require the GDAL/OGR native library. Once installed you need to add the location to your PATH on Windows, DYLD_LIBRARY_PATH on Mac, and LD_LIBRARY_PATH on Linux. If you use gt-ogr-bridj and the dll/dylib/so file is not named gdal you will need to set the GDAL_LIBRARY_NAME. Often it is something like gdal10 depending on the version of GDAL you installed. You will also have to set the java.library.path to the GDAL's location when running your program.
+The OGR DataStore does require the GDAL/OGR native library. Once installed you need to add the location to your ``PATH`` on Windows, ``DYLD_LIBRARY_PATH`` on Mac, and ``LD_LIBRARY_PATH`` on Linux. If you use ``gt-ogr-bridj`` and the ``dll``/``dylib``/``so`` file is not named ``gdal`` you will need to set the ``GDAL_LIBRARY_NAME``. Often it is something like ``gdal10`` depending on the version of GDAL you installed. You will also have to set the ``java.library.path`` to the GDAL location when running your program.
-You can then access the module by creating a DataStoreFactory.
+You can then access the module by creating a ``DataStoreFactory``.
-If you are using Bridj::
+If you are using ``Bridj``::
OGRDataStoreFactory factory = new BridjOGRDataStoreFactory();
@@ -47,9 +47,9 @@ You can list available drivers::
To connect to an OGR layer there are two parameters:
-* DriverName = The name of the OGR Driver (http://www.gdal.org/ogr_formats.html).
+* ``DriverName`` = The name of the OGR Driver (http://www.gdal.org/ogr_formats.html).
-* DataSourceName = The name of the file or data source connection. This value depends on what driver you are using.
+* ``DataSourceName`` = The name of the file or data source connection. This value depends on what driver you are using.
Here is how you would read a shapefile::
diff --git a/docs/user/library/data/pregeneralized.rst b/docs/user/library/data/pregeneralized.rst
index 5c91bf8fc36..43f1924bd09 100644
--- a/docs/user/library/data/pregeneralized.rst
+++ b/docs/user/library/data/pregeneralized.rst
@@ -1,7 +1,7 @@
Pregeneralized Plugin
---------------------
-This plugin offers the the possibility to use pregeneralized features to reduce CPU and memory
+This plugin offers the possibility to use pregeneralized features to reduce CPU and memory
usage at runtime. The effect is used to improve the response time for client code.
This is an advanced plugin that is great for eking the greatest performance out of the GeoTools
@@ -25,31 +25,31 @@ Consider it something like an image pyramid for raster data operating at differe
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
-+---------------------------------------+-----------------------------------------------------+
-| Parameter | Description |
-+=======================================+=====================================================+
-|"RepositoryClassName" | Class name for the Repository implementation, |
-| | must have a default Constructor |
-+---------------------------------------+-----------------------------------------------------+
-|"GeneralizationInfosProviderClassName" | Class name for a GeneralizationInfosProvider |
-| | must have a default Constructor |
-+---------------------------------------+-----------------------------------------------------+
-|"GeneralizationInfosProviderParam" | Optional Parameter for getGeneralizationInfos(obj) |
-+---------------------------------------+-----------------------------------------------------+
-|"namespace" | Optional, an URI for an optional name space |
-+---------------------------------------+-----------------------------------------------------+
++------------------------------------------+--------------------------------------------------------+
+| Parameter | Description |
++==========================================+========================================================+
+| ``RepositoryClassName`` | Class name for the Repository implementation, |
+| | must have a default Constructor |
++------------------------------------------+--------------------------------------------------------+
+| ``GeneralizationInfosProviderClassName`` | Class name for a ``GeneralizationInfosProvider`` |
+| | must have a default Constructor |
++------------------------------------------+--------------------------------------------------------+
+| ``GeneralizationInfosProviderParam`` | Optional Parameter for ``getGeneralizationInfos(obj)`` |
++------------------------------------------+--------------------------------------------------------+
+| ``namespace`` | Optional, an URI for an optional name space |
++------------------------------------------+--------------------------------------------------------+
Pregeneralized
^^^^^^^^^^^^^^
Before we start we need couple of things:
-* Repository - used to look up featureSource implementations. See :doc:`gt-main repository <../main/repository>` page.
-* GeneralizationInfos - configuration for PreGeneralizedDataStore describing generalisation method used.
+* Repository - used to look up ``featureSource`` implementations. See :doc:`gt-main repository <../main/repository>` page.
+* ``GeneralizationInfos`` - configuration for ``PreGeneralizedDataStore`` describing generalization method used.
-To create a **PreGeneralizedDataStore**:
+To create a ``reGeneralizedDataStore``
-* As usual we recommend use of **DataStoreFinder** (as this plugin provides **PreGeneralizedDataStoreFactory** for it to use).::
+* As usual we recommend use of ``DataStoreFinder`` (as this plugin provides ``PreGeneralizedDataStoreFactory`` for it to use).::
Map paramMap = new HashMap();
DataStore ds = null;
@@ -65,7 +65,7 @@ To create a **PreGeneralizedDataStore**:
FeatureSource fs = ds.getFeatureSource("GenStreams")
To benefit from less memory usage and less CPU consumption the usage of
- Hints.GEOMETRY_DISTANCE is required. It is possible to pass hints to a
+ ``Hints.GEOMETRY_DISTANCE`` is required. It is possible to pass hints to a
query object, an example for reading all features with geometries fitting
for a generalization of 22 meters::
@@ -80,7 +80,7 @@ To create a **PreGeneralizedDataStore**:
// business as usual, but with generalized geometries!
//
-* Creating by hand using RepositoryDSFinder::
+* Creating by hand using ``RepositoryDSFinder``::
Repository repo = new RepositoryDSFinder();
GeneralizationInfosProvider provider = new GeneralizationInfosProviderImpl();
@@ -93,7 +93,7 @@ To create a **PreGeneralizedDataStore**:
DataStore ds = new PreGeneralizedDataStore(infos,repo)
FeatureSource fs = ds.getFeatureSource("GenStreams")
-* Creating by hand using DefaultRepository::
+* Creating by hand using ``DefaultRepository``::
Repository repo = new DefaultRepository();
//
@@ -117,7 +117,7 @@ This section has sample XML configuration files with corresponding physical layo
XML
'''
-Part of this java package is a GeneralizationInfosProviderImpl which offers the possibility to configure a GeneralizationInfos object in XML syntax.
+Part of this Java package is a ``GeneralizationInfosProviderImpl`` which offers the possibility to configure a ``GeneralizationInfos`` object in XML syntax.
Code example::
@@ -172,17 +172,17 @@ Physical Layout
Definition: The **Base Feature** is the original feature which is the starting point
-A geometry generalized to m meters will be written as g(m) , e. g. g(5) is a
+A geometry generalized to m meters will be written as ``g(m)``, e.g. ``g(5)`` is a
geometry generalized to a minimum distance of 5 meters. The original geometry will
-be written as g(1)
+be written as ``dq(1)``.
A feature has the following components
-1. FID (Feature Identifier)
+1. ``FID`` (Feature Identifier)
2. a set of data attributes
3. a set of geometry attributes (mostly only one, depending on the data store)
-For the following example we will use the **streams.shp** from the gt-sample-data jar (which contains sample data for test cases).
+For the following example we will use the ``streams.shp`` from the ``gt-sample-data`` jar (which contains sample data for test cases).
* :download:`streams.shp `
* :download:`streams.dbf `
@@ -193,11 +193,11 @@ This shapefile has the following feature type structure:
* streams
- +-----+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +=====+========+===========+============+
- | int | int | int | linestring |
- +-----+--------+-----------+------------+
+ +---------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +=========+============+===============+================+
+ | ``int`` | ``int`` | ``int`` | ``linestring`` |
+ +---------+------------+---------------+----------------+
We have two alternatives for how to represent generalized feature:
@@ -207,114 +207,116 @@ We have two alternatives for how to represent generalized feature:
* streams
- +-----------+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +===========+========+===========+============+
- | streams.1 | 1 | 4711 | g1(1) |
- +-----------+--------+-----------+------------+
- | streams.2 | 2 | 4712 | g2(1) |
- +-----------+--------+-----------+------------+
- | ... | ... | ... | .. |
- +-----------+--------+-----------+------------+
+ +---------------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +===============+============+===============+================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(1)`` |
+ +---------------+------------+---------------+----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(1)`` |
+ +---------------+------------+---------------+----------------+
+ | ... | ... | ... | .. |
+ +---------------+------------+---------------+----------------+
* streams_5
- +-----------+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +===========+========+===========+============+
- | streams.1 | 1 | 4711 | g1(5) |
- +-----------+--------+-----------+------------+
- | streams.2 | 2 | 4712 | g2(5) |
- +-----------+--------+-----------+------------+
- | ... | ... | ... | .. |
- +-----------+--------+-----------+------------+
+ +---------------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +===============+============+===============+================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(5)`` |
+ +---------------+------------+---------------+----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(5)`` |
+ +---------------+------------+---------------+----------------+
+ | ... | ... | ... | .. |
+ +---------------+------------+---------------+----------------+
* streams_10
- +-----------+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +===========+========+===========+============+
- | streams.1 | 1 | 4711 | g1(10) |
- +-----------+--------+-----------+------------+
- | streams.2 | 2 | 4712 | g2(10) |
- +-----------+--------+-----------+------------+
- | ... | ... | ... | .. |
- +-----------+--------+-----------+------------+
+ +---------------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +===============+============+===============+================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(10)`` |
+ +---------------+------------+---------------+----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(10)`` |
+ +---------------+------------+---------------+----------------+
+ | ... | ... | ... | .. |
+ +---------------+------------+---------------+----------------+
* streams_20
- +-----------+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +===========+========+===========+============+
- | streams.1 | 1 | 4711 | g1(20) |
- +-----------+--------+-----------+------------+
- | streams.2 | 2 | 4712 | g2(20) |
- +-----------+--------+-----------+------------+
- | ... | ... | ... | .. |
- +-----------+--------+-----------+------------+
+ +---------------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +===============+============+===============+================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(20)`` |
+ +---------------+------------+---------------+----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(20)`` |
+ +---------------+------------+---------------+----------------+
+ | ... | ... | ... | .. |
+ +---------------+------------+---------------+----------------+
+
* streams_50
- +-----------+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +===========+========+===========+============+
- | streams.1 | 1 | 4711 | g1(50) |
- +-----------+--------+-----------+------------+
- | streams.2 | 2 | 4712 | g2(50) |
- +-----------+--------+-----------+------------+
- | ... | ... | ... | .. |
- +-----------+--------+-----------+------------+
-
- The only difference between these 5 feature sets are the geometries,
- which are generalized by 5,10,20 and 50 meters respectively.
-
- As you can see this approach results in a fair amount of duplication.
-
- * GenStreams
+ +---------------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +===============+============+===============+================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(50)`` |
+ +---------------+------------+---------------+----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(50)`` |
+ +---------------+------------+---------------+----------------+
+ | ... | ... | ... | .. |
+ +---------------+------------+---------------+----------------+
+
- A new Feature feature type is hiding all other features and using them
- dependent on the GEOMETRY_DISTANCE hint.
+ The only difference between these 5 feature sets are the geometries,
+ which are generalized by 5,10,20 and 50 meters respectively.
- +-----+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +=====+========+===========+============+
- | int | int | int | linestring |
- +-----+--------+-----------+------------+
-
- The disadvantage is the duplication of all attribute values for each
- generalization. If the features are stored as shape files, there is no
- other alternative because shape files allow only one geometry.
-
- Storing the features in a database offers the possibility to use SQL views
- to avoiding this redundancy.
+ As you can see this approach results in a fair amount of duplication.
+
+ * ``GenStreams``
+
+ A new Feature feature type is hiding all other features and using them
+ dependent on the GEOMETRY_DISTANCE hint.
+
+ +---------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +=========+============+===============+================+
+ | ``int`` | ``int`` | ``int`` | ``linestring`` |
+ +---------+------------+---------------+----------------+
+
+ The disadvantage is the duplication of all attribute values for each
+ generalization. If the features are stored as shape files, there is no
+ other alternative because shape files allow only one geometry.
+
+ Storing the features in a database offers the possibility to use SQL views
+ to avoiding this redundancy.
-* Horizontal layout
-
- The generalized geometries were added as additional attributes.
-
- * streams
+ * Horizontal layout
+
+ The generalized geometries were added as additional attributes.
- +-----------+--------+-----------+--------+----------+-----------+-----------+----------+
- | FID | CAT_ID | CAT_DESCR |the_geom|the_geom_5|the_geom_10|the_geom_20|the_geom50|
- +===========+========+===========+========+==========+===========+===========+==========+
- | streams.1 | 1 | 4711 | g1(1) | g1(5) | g1(10) | g1(20) | g1(5) |
- +-----------+--------+-----------+--------+----------+-----------+-----------+----------+
- | streams.2 | 2 | 4712 | g2(1) | g2(5) | g2(10) | g2(20) | g2(5) |
- +-----------+--------+-----------+--------+----------+-----------+-----------+----------+
- | ... | ... | ... | .. | ... |... | ... | ... |
- +-----------+--------+-----------+--------+----------+-----------+-----------+----------+
-
- * GenStreams
+ * streams
+
+ +---------------+------------+---------------+--------------+----------------+-----------------+-----------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` | ``the_geom_5`` | ``the_geom_10`` | ``the_geom_20`` | ``the_geom50`` |
+ +===============+============+===============+==============+================+=================+=================+================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(1)`` | ``g1(5)`` | ``g1(10)`` | ``g1(20)`` | ``g1(5)`` |
+ +---------------+------------+---------------+--------------+----------------+-----------------+-----------------+----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(1)`` | ``g2(5)`` | ``g2(10)`` | ``g2(20)`` | ``g2(5)`` |
+ +---------------+------------+---------------+--------------+----------------+-----------------+-----------------+----------------+
+ | ... | ... | ... | ... | ... | ... | ... | ... |
+ +---------------+------------+---------------+--------------+----------------+-----------------+-----------------+----------------+
+
+ * ``GenStreams``
Again, there is a new feature
- +-----+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +=====+========+===========+============+
- | int | int | int | linestring |
- +-----+--------+-----------+------------+
+ +---------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +=========+============+===============+================+
+ | ``int`` | ``int`` | ``int`` | ``linestring`` |
+ +---------+------------+---------------+----------------+
The generalized geometry attributes are hidden and are not part of the
- GenStreams feature type.
+ ``GenStreams`` feature type.
* Mixed layout
@@ -322,63 +324,63 @@ We have two alternatives for how to represent generalized feature:
* streams
- +-----------+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +===========+========+===========+============+
- | streams.1 | 1 | 4711 | g1(1) |
- +-----------+--------+-----------+------------+
- | streams.2 | 2 | 4712 | g2(1) |
- +-----------+--------+-----------+------------+
- | ... | ... | ... | .. |
- +-----------+--------+-----------+------------+
+ +---------------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +===============+============+===============+================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(1)`` |
+ +---------------+------------+---------------+----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(1)`` |
+ +---------------+------------+---------------+----------------+
+ | ... | ... | ... | .. |
+ +---------------+------------+---------------+----------------+
* streams_5_10
- +-----------+--------+-----------+------------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom_5 | the_geom10 |
- +===========+========+===========+============+============+
- | streams.1 | 1 | 4711 | g1(5) | g1(10) |
- +-----------+--------+-----------+------------+------------+
- | streams.2 | 2 | 4712 | g2(5) | g2(10) |
- +-----------+--------+-----------+------------+------------+
- | ... | ... | ... | .. | ... |
- +-----------+--------+-----------+------------+------------+
+ +---------------+------------+---------------+----------------+-----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom_5`` | ``the_geom_10`` |
+ +===============+============+===============+================+=================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(5)`` | ``g1(10)`` |
+ +---------------+------------+---------------+----------------+-----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(5)`` | ``g2(10)`` |
+ +---------------+------------+---------------+----------------+-----------------+
+ | ... | ... | ... | .. | .. |
+ +---------------+------------+---------------+----------------+-----------------+
* streams_20_50
- +-----------+--------+-----------+------------+-------------+
- | FID | CAT_ID | CAT_DESCR | the_geom_20| the_geom_50 |
- +===========+========+===========+============+=============+
- | streams.1 | 1 | 4711 | g1(10) | g1(50) |
- +-----------+--------+-----------+------------+-------------+
- | streams.2 | 2 | 4712 | g2(10) | g2(50) |
- +-----------+--------+-----------+------------+-------------+
- | ... | ... | ... | .. | ... |
- +-----------+--------+-----------+------------+-------------+
-
- * GenStreams
+ +---------------+------------+---------------+-----------------+-----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom_20`` | ``the_geom_50`` |
+ +===============+============+===============+=================+=================+
+ | ``streams.1`` | ``1`` | ``4711`` | ``g1(20)`` | ``g1(50)`` |
+ +---------------+------------+---------------+-----------------+-----------------+
+ | ``streams.2`` | ``2`` | ``4712`` | ``g2(20)`` | ``g2(50)`` |
+ +---------------+------------+---------------+-----------------+-----------------+
+ | ... | ... | ... | ... | ... |
+ +---------------+------------+---------------+-----------------+-----------------+
+
+ * ``GenStreams``
- +-----+--------+-----------+------------+
- | FID | CAT_ID | CAT_DESCR | the_geom |
- +=====+========+===========+============+
- | int | int | int | linestring |
- +-----+--------+-----------+------------+
+ +---------+------------+---------------+----------------+
+ | ``FID`` | ``CAT_ID`` | ``CAT_DESCR`` | ``the_geom`` |
+ +=========+============+===============+================+
+ | ``int`` | ``int`` | ``int`` | ``linestring`` |
+ +---------+------------+---------------+----------------+
- Independent of the used physical layout, the feature type of GenStreams
+ Independent of the physical layout used, the feature type of ``GenStreams``
is always the same. All other feature types are not visible and are
- called backend features.
+ called back end features.
Toolbox
^^^^^^^
Included in this packages is a command line utility. Locate the jar file, the name is
-"gt-feature-pregeneralized-.jar Assuming the version is "2.5-SNAPSHOT", call with::
+``gt-feature-pregeneralized-.jar`` Assuming the version is ``2.5-SNAPSHOT``, call with::
java -jar gt-feature-pregeneralized-2.5-SNAPSHOT.jar
-* Validating the xml config file
+* Validating the XML configuration file
- You can validate your xml config file with::
+ You can validate your XML configuration file with::
java -jar gt-feature-pregeneralized-2.5-SNAPSHOT.jar validate myconfig.xml
@@ -390,15 +392,15 @@ Included in this packages is a command line utility. Locate the jar file, the na
In the above example the parameters are:
- * streams.shp
+ * ``streams.shp``
The source shape file
- * targetDir
+ * ``targetDir``
The directory where to store the generalized shape files
- * 15.0,30
+ * ``15.0,30``
A comma separated list of distances (integer or doubles, decimal separator is ".").
- This example would generate a sub directory "15.0" and a sub directory
- "30" in the target directory. The sub
+ This example would generate a sub-directory ``15.0`` and a sub directory
+ ``30`` in the target directory.
Background
^^^^^^^^^^
@@ -407,7 +409,7 @@ Background
Spatial features have a least one geometry, which mostly contains a large number of points.
As an example, the border of Austria (which is a small country) is a polygon constructed
- from 380000 points.
+ from 380,000 points.
Drawing this border on a screen with a resolution of 1280x1024 will draw each pixel many,many times.
The same holds true for printing on a sheet of paper.
@@ -419,44 +421,44 @@ Background
The idea is to have a data store / feature source / feature reader implementation which acts as wrapper
for the original features and their generalized geometries. Additionally there is a new
- Hint GEOMETRY_DISTANCE which has a value for the minimum distance between two points required.
+ ``Hint`` ``GEOMETRY_DISTANCE`` which has a value for the minimum distance between two points required.
- This Hint can be passed within the Query object.
+ This ``Hint`` can be passed within the ``Query`` object.
- The wrappers itself behave like the original objects, except returning geometries dependent on the
+ The wrapper itself behaves like the original object, except returning geometries dependent on the
new hint. If no hint is given, the original geometries are returned.
-* Relationship between GEOMETRY_DISTANCE and generalized geometries
+* Relationship between ``GEOMETRY_DISTANCE`` and generalized geometries
Assume the original geometries have an accuracy of 1 meter and we have generalizations for all
geometries with 5m, 10m, 20m and 50m.
- =========================== =====================================
- Requested Distance (dist) Returned geometry
- =========================== =====================================
- dist < 5 original geometry
- 5 <= dist < 10 geometry generalized to 5 m
- 10 <= dist < 20 geometry generalized to 10 m
- 20 <= dist < 50 geometry generalized to 20 m
- 50 <= dist geometry generalized to 50 m
- =========================== =====================================
+ =============================== =====================================
+ Requested Distance (``dist``) Returned geometry
+ =============================== =====================================
+ ``dist`` < 5 original geometry
+ 5 <= ``dist`` < 10 geometry generalized to 5 m
+ 10 <= ``dist`` < 20 geometry generalized to 10 m
+ 20 <= ``dist`` < 50 geometry generalized to 20 m
+ 50 <= ``dist`` geometry generalized to 50 m
+ =============================== =====================================
* Conclusion
The focus of this module is to support the transparent handling of generalized geometries.
- There is no restriction how the GeneralizationInfos object is build and how the needed data
+ There is no restriction how the ``GeneralizationInfos`` object is build and how the needed data
stores are found.
The two interfaces
- * org.geotools.data.Repository
- * org.geotools.data.gen.info.GeneralizationInfosProvider
+ * ``org.geotools.data.Repository``
+ * ``org.geotools.data.gen.info.GeneralizationInfosProvider``
- Allow special implementations to be plugged in. As an example, a GeneralizationInfosProvider
+ Allow special implementations to be plugged in. As an example, a ``GeneralizationInfosProvider``
implementation can build the configuration data from a jdbc database, getting as parameter a JNDI
name.
- Once again, modification of pregeneralized features is NOT possible.
+ Once again, modification of pregeneralized features is **NOT** possible.
DataStructure
^^^^^^^^^^^^^
@@ -468,38 +470,38 @@ Internally the following data structure is set up.
GeneralizationInfos
'''''''''''''''''''
-Each PreGeneralizedDataStore has exactly one object of type GeneralizationInfos.
+Each ``PreGeneralizedDataStore`` has exactly one object of type ``GeneralizationInfos``.
-**GeneralizationInfos** holds a collection of **GeneralizationInfo** objects. The
-size of this collection is equal to the number of PreGeneralizedFeatureSource objects
+``GeneralizationInfos`` holds a collection of ``GeneralizationInfo`` objects. The
+size of this collection is equal to the number of ``PreGeneralizedFeatureSource`` objects
contained in the data store.
-* infoMap - mapping from names of generalized features to the orresponding GeneralizationInfo objects
-* dataSourceName - Optional, default data source location for all GeneralizationInfo objects
-* dataSourceNameSpace - Optional, name space for the default data source location
+* ``infoMap`` - mapping from names of generalized features to the corresponding ``GeneralizationInfo`` objects
+* ``dataSourceName`` - Optional, default data source location for all ``GeneralizationInfo`` objects
+* ``dataSourceNameSpace`` - Optional, name space for the default data source location
GeneralizationInfo
'''''''''''''''''''
-A GeneralizationInfo holds the configuration information for one feature type and his generalized geometries.
+A ``GeneralizationInfo`` holds the configuration information for one feature type and his generalized geometries.
-* featureName - Name of the generalized feature ("GenStreams")
-* baseFeatureName - Name of the base feature ("streams")
-* geomPropertyName - Name of the geometry attribute in the base feature ("the_geom")
-* generalizations - Collection of org.geotools.data.gen.Generalization objects
-* dataSourceName - Location of the datasource for the base Feature (URL of shape file)
- If no location is given, use location from GeneralizationInfos parent object.
-* dataSourceNameSpace - Optional, name space for the dataSourceName
+* ``featureName`` - Name of the generalized feature (``GenStreams``)
+* ``baseFeatureName`` - Name of the base feature (``streams``)
+* ``geomPropertyName`` - Name of the geometry attribute in the base feature (``the_geom``)
+* ``generalizations`` - Collection of ``org.geotools.data.gen.Generalization`` objects
+* ``dataSourceName`` - Location of the data source for the base ``Feature`` (URL of shape file)
+ If no location is given, use location from ``GeneralizationInfos`` parent object.
+* ``dataSourceNameSpace`` - Optional, name space for the ``dataSourceName``
Generalization
''''''''''''''
-A Generalization object belongs to a GeneralizationInfo object and holds information for geometries
+A ``Generalization`` object belongs to a ``GeneralizationInfo`` object and holds information for geometries
generalized to a given distance.
-* distance - The generalization distance
-* featureName - The the name of the feature containing these geometries ("streams_5_10")
-* geomPropertyName - The name of the geometry property ("the_geom_5")
-* dataSourceName - Optional, if not specified, dataSoureName from the GeneralizationInfo parent object is used.
-* dataSourceNameSpace - Optional, name space for the dataSourceName
+* ``distance`` - The generalization distance
+* ``featureName`` - The name of the feature containing these geometries (``streams_5_10``)
+* ``geomPropertyName`` - The name of the geometry property (``the_geom_5``)
+* ``dataSourceName`` - Optional, if not specified, ``dataSoureName`` from the ``GeneralizationInfo`` parent object is used.
+* ``dataSourceNameSpace`` - Optional, name space for the ``dataSourceName``
Repository
^^^^^^^^^^
@@ -507,24 +509,24 @@ Repository
Prior to creating a pregeneralized data store an object implementing the interface
Repository is needed. This class is document in :doc:`gt-main repository <../main/repository>` page.
-For PregeneralizedDataStore this interface has one important method
+For ``PregeneralizedDataStore`` this interface has one important method
-* public DataStore dataStore(Name name)
+* ``public DataStore dataStore(Name name)``
A Name object has a local name and a namespace (which could be null).
-The local name corresponds to the dataSoureName property in the GeneralizationInfos,
-GeneralizationInfo and Generalization objects. The same holds true for the namespace parameter
-and the dataSourceNameSpace property.
+The local name corresponds to the ``dataSoureName`` property in the ``GeneralizationInfos``,
+``GeneralizationInfo`` and ``Generalization`` objects. The same holds true for the namespace parameter
+and the ``dataSourceNameSpace`` property.
-The content of the dataSourceName could be a registered name for a datastore (of course)
+The content of the ``dataSourceName`` could be a registered name for a datastore (of course)
or an URL to a shape file,an URL to a property file containing connect parameters for a
database or anything else. It depends on the implementation of the Repository interface.
-Included in this package is an implementation org.getotools.data.gen.DSFinderRepository,
-which interprets a dataSoureName ending with ".shp" or ".SHP" as location of a shape file
-and anything else as a property file. This implementation will use the geotools
-DataStoreFinder.getDataStore(Map params) method to find the needed data store.
+Included in this package is an implementation ``org.getotools.data.gen.DSFinderRepository``,
+which interprets a ``dataSoureName`` ending with ``.shp`` or ``.SHP`` as location of a shape file
+and anything else as a property file. This implementation will use the GeoTools
+``DataStoreFinder.getDataStore(Map params)`` method to find the needed data store.
-Another existing Implementation is org.geotools.data.DefaultRepository which is useful
-for creating the data stores in the application and registering them with the corresponding names.
\ No newline at end of file
+Another existing Implementation is ``org.geotools.data.DefaultRepository`` which is useful
+for creating the data stores in the application and registering them with the corresponding names.
diff --git a/docs/user/library/data/shape.rst b/docs/user/library/data/shape.rst
index 678b55dfe0f..18559456f8a 100644
--- a/docs/user/library/data/shape.rst
+++ b/docs/user/library/data/shape.rst
@@ -22,40 +22,42 @@ Connection Parameters
The following connection parameters are available:
-+-------------------------+----------------------------------------------------+
-| Param | Description |
-+=========================+====================================================+
-| "url" | A URL of the file ending in "shp" |
-+-------------------------+----------------------------------------------------+
-| "namespace" | Optional: URI to use for the FeatureType |
-+-------------------------+----------------------------------------------------+
-| "create spatial index" | Optional: Use Boolean.TRUE to create an index |
-+-------------------------+----------------------------------------------------+
-| "charset" | Optional: Charset used to decode strings in the |
-| | DBF file |
-+-------------------------+----------------------------------------------------+
-| "timezone" | Optional: Timezone used to parse dates in the |
-| | DBF file |
-+-------------------------+----------------------------------------------------+
-| "memory mapped buffer" | Optional: memory map the files (not recommended |
-| | for large files under windows, defaults to false) |
-+------------------------------------------------------------------------------+
-| "cache memory maps" | Optional: when memory mapping, cache and reuse |
-| | memory maps (defaults to true) |
-+------------------------------------------------------------------------------+
-| "create spatial index" | Optional: if false, won't try to create a spatial |
-| | index if missing (defaults to true) |
-+------------------------------------------------------------------------------+
-| "enable spatial index" | Optional: if false, the spatial index won't be used|
-| | even if available (and won't be created if missing |
-+-------------------------+----------------------------------------------------+
++--------------------------+---------------------------------------------------+
+| Parameter | Description |
++==========================+===================================================+
+| ``url`` | A URL of the file ending in ``shp`` |
++--------------------------+---------------------------------------------------+
+| ``namespace`` | Optional: URI to use for the ``FeatureType`` |
++--------------------------+---------------------------------------------------+
+| ``create spatial index`` | Optional: Use ``Boolean.TRUE`` to create an index |
++--------------------------+---------------------------------------------------+
+| ``charset`` | Optional: ``Charset`` used to decode strings in |
+| | the DBF file |
++--------------------------+---------------------------------------------------+
+| ``timezone`` | Optional: Timezone used to parse dates in the |
+| | DBF file |
++--------------------------+---------------------------------------------------+
+| ``memory mapped buffer`` | Optional: memory map the files (not recommended |
+| | for large files under windows, defaults to false) |
++--------------------------+---------------------------------------------------+
+| ``cache memory maps`` | Optional: when memory mapping, cache and reuse |
+| | memory maps (defaults to true) |
++--------------------------+---------------------------------------------------+
+| ``create spatial index`` | Optional: if false, won't try to create a spatial |
+| | index if missing (defaults to true) |
++--------------------------+---------------------------------------------------+
+| ``enable spatial index`` | Optional: if false, the spatial index won't be |
+| | used even if available (and won't be created if |
+| | missing. |
++--------------------------+---------------------------------------------------+
This information is also in the `javadocs `_ .
-Internally gt-shape provides a two implementations at this time; one for simple access and another that supports the use of an index. The factory will
-be able to sort out which one is appropriate when using DataStoreFinder or FileDataStoreFinder.
+Internally ``gt-shape`` provides a two implementations at this time; one for simple access and another that supports the use of an index. The factory will
+be able to sort out which one is appropriate when using ``DataStoreFinder`` or
+``FileDataStoreFinder``.
Shapefile
^^^^^^^^^
@@ -64,28 +66,28 @@ A Shapefile is a common file format which contains numerous features of the same
The classic three files:
-* filename.shp: shapes
-* filename.shx: shapes to attributes index
-* filename.dbf: attributes
+* ``filename.shp``: shapes
+* ``filename.shx``: shapes to attributes index
+* ``filename.dbf``: attributes
Basic metadata:
-* filename.prj: projection
+* ``filename.prj``: projection
Open source extensions:
-* filename.qix: quadtree spatial index
-* filename.fix: feature id index
-* filename.sld: style-layer-descriptor style xml object
+* ``filename.qix``: quadtree spatial index
+* ``filename.fix``: feature id index
+* ``filename.sld``: Styled Layer Descriptor style XML object
ESRI extensions:
-* filename.sbn: attribute index
-* filename.sbx: spatial index
-* filename.lyr: arcmap-only style object
-* filename.avl: arcview style object
-* filename.shp.xml: fgdc metadata
+* ``filename.sbn``: attribute index
+* ``filename.sbx``: spatial index
+* ``filename.lyr``: ArcMap-only style object
+* ``filename.avl``: ArcView style object
+* ``filename.shp.xml``: FGDC metadata
-This style of file format (from the dawn of time) is referred to as "sidecar" files, at a minimum filename.shp and its sidecar file filename.dbf are needed.
+This style of file format (from the dawn of time) is referred to as "sidecar" files, at a minimum file ``filename.shp`` and its sidecar file ``filename.dbf`` are needed.
Access
''''''
@@ -108,15 +110,15 @@ Here is a quick example:
:start-after: // start create
:end-before: // end create
-The featureType created above was just done quickly, in your application you may wish to use a DefaultFeatureTypeBuilder.
+The ``featureType`` created above was just done quickly, in your application you may wish to use a ``DefaultFeatureTypeBuilder``.
Supports:
* attribute names must be 15 characters or you will get a warning:
-* a single geometry column named "the_geom" (stored in the SHP file)
- * LineString, MultiLineString - Files occasionally contain invalid lines with one point
- * Polygon, MultiPolygon
- * Point, MultiPoint*
+* a single geometry column named ``the_geom`` (stored in the ``SHP`` file)
+ * ``LineString``, ``MultiLineString``
+ * ``Polygon``, ``MultiPolygon``
+ * ``Point``, ``MultiPoint``
* "simple" attributes (stored in the DBF file)
@@ -124,17 +126,17 @@ Supports:
* Integer
* Double
* Boolean
- * Date - TimeStamp interpretation that is just the date
+ * Date - ``TimeStamp`` interpretation that is just the date
Limitations:
-* only work with MultiLineStrings, MultiPolygon or MultiPoint. GIS data often travels
+* only work with ``MultiLineStrings``, ``MultiPolygon`` or ``MultiPoint``. GIS data often travels
in herds - so being restricted to the plural form is not a great limitation.
-* only work with fixed length strings (you will find the FeatureType
+* only work with fixed length strings (you will find the ``FeatureType``
has a restriction to help you check this, and warnings will be produced if
your content ends up trimmed).
-* Only supports a single GeometryAttribute
-* Shapefile does not support plain Geometry (i.e. mixed LineString, Point and Polygon all in the same file).
+* Only supports a single ``GeometryAttribute``
+* Shapefile does not support plain Geometry (i.e. mixed ``LineString``, Point and Polygon all in the same file).
* The shapefile maximum size is limited to 2GB (its sidecar DBF file often to 2GB, some system being able
to read 4GB or more)
* Dates do not support the storage of time by default. If you must store time
@@ -174,12 +176,12 @@ You can "force" the projection using the following code::
CoordinateReferenceSystem crs = CRS.decode("EPSG:4326");
shape.forceSchemaCRS( crs );
-This is only a problem if you did not specify the CoordinateReferenceSystem as part of your FeatureType's GeometryAttribute, or if a prj file has not been provided.
+This is only a problem if you did not specify the ``CoordinateReferenceSystem`` as part of your ``FeatureType``'s ``GeometryAttribute``, or if a ``prj`` file has not been provided.
Character Sets
''''''''''''''
-If you are working with Arabic, Chinese or Korean character sets you will need to make use of the "charset" connection parameter when setting up your shapefile. The codes used here are the same as documented/defined for the Java Charset class. Indeed you can provide a Charset or if you provide a String it will be converted to a Charset.
+If you are working with Arabic, Chinese or Korean character sets you will need to make use of the ``charset`` connection parameter when setting up your shapefile. The codes used here are the same as documented/defined for the Java ``Charset`` class. Indeed you can provide a ``Charset`` or if you provide a String it will be converted to a ``Charset``.
Thanks to the University of Seoul for providing and testing this functionality.
@@ -192,14 +194,14 @@ The store will build dates using the default timezone. If you need to work again
Reading PRJ
^^^^^^^^^^^
-You can use the CRS utility class to read the PRJ file if required. The contents of the file are in "well known text"::
+You can use the CRS utility class to read the ``PRJ`` file if required. The contents of the file are in "well known text"::
CoordinateReferenceSystem crs = CRS.parseWKT(wkt);
Reading DBF
^^^^^^^^^^^
-A shapefile is actually comprised of a core "shp" file and a number of "sidecar" files. One of the sidecar files is a "dbf" file used to record attributes. This is the original DBF file format provided by one of the original grandfather databases "DBase".
+A shapefile is actually comprised of a core ``shp`` file and a number of "sidecar" files. One of the sidecar files is a ``dbf`` file used to record attributes. This is the original DBF file format provided by one of the original grandfather databases "DBase III".
.. literalinclude:: /../src/main/java/org/geotools/data/ShapefileExample.java
:language: java
diff --git a/docs/user/library/data/solr.rst b/docs/user/library/data/solr.rst
index ad5381fca27..9a84c4a80ef 100644
--- a/docs/user/library/data/solr.rst
+++ b/docs/user/library/data/solr.rst
@@ -17,18 +17,18 @@ Connection Parameters
The following connection parameters are available:
+-------------------------+----------------------------------------------------+
-| Param | Description |
+| Parameter | Description |
+=========================+====================================================+
-| "solr_url" | Url to a SOLR server CORE |
+| ``solr_url`` | URL to a SOLR server CORE |
+-------------------------+----------------------------------------------------+
-| "layer_mapper" | Controls how documents are mapped to layers |
+| ``layer_mapper`` | Controls how documents are mapped to layers |
+-------------------------+----------------------------------------------------+
-| "layer_name_field" | Field used in SOLR that holds the layer names |
+| ``layer_name_field`` | Field used in SOLR that holds the layer names |
+-------------------------+----------------------------------------------------+
-| "namespace" | Namespace prefixs |
+| ``namespace`` | Namespace prefix |
+-------------------------+----------------------------------------------------+
-Notes: "layer_mapper" and "layer_name_field" are deprecated, a single layer is exposed now by default, use
+Notes: ``layer_mapper`` and ``layer_name_field`` are deprecated, a single layer is exposed now by default, use
the ``SolrLayerConfiguration`` class to configure more layers
Example use:
@@ -37,4 +37,4 @@ Example use:
Map map = new HashMap();
map.put("solr_url", new URL("http://localhost:8080/solr"));
- map.put(SolrDataStoreFactory.NAMESPACE.key, "namespace");
\ No newline at end of file
+ map.put(SolrDataStoreFactory.NAMESPACE.key, "namespace");
diff --git a/docs/user/library/data/wfs-ng.rst b/docs/user/library/data/wfs-ng.rst
index 4da419c70ac..702ae68edd0 100644
--- a/docs/user/library/data/wfs-ng.rst
+++ b/docs/user/library/data/wfs-ng.rst
@@ -18,88 +18,89 @@ Connection Parameters
The following connection parameters are defined for WFS.
-+--------------------------------------------+------------------------------------------------------------------+
-| Param | Description |
-+============================================+==================================================================+
-| "WFSDataStoreFactory:GET_CAPABILITIES_URL" | Link to capabilities document. |
-| | The implementation supports both WFS 1.0 (read/write) and |
-| | WFS 1.1 (read-only). |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:PROTOCOL" | Optional: True for Post, False for GET, null for auto |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:USERNAME" | Optional |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:PASSWORD" | Optional |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:ENCODING" | Optional with a default of UTF-8 |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:TIMEOUT" | Optional with a 3000ms default |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:BUFFER_SIZE" | Optional number of features to read in one gulp, defaults of 10 |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:TRY_GZIP" | Optional with a default of true, try compression if available |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:LENIENT" | Optional default of true. |
-| | WFS implementations are terrible for actually obeying their |
-| | DescribeFeatureType schema, setting this to true will try a few |
-| | tricks to support implementations that are mostly correct: |
-| | |
-| | * Accepting the data in any order |
-| | * Not getting too upset if the case of the attributes is wrong |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:MAXFEATURES" | Limit on the number of features |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:WFS_STRATEGY" | Optional used to engage specific work arounds for known servers. |
-| | |
-| | * "arcgis" |
-| | * "cuberx" |
-| | * "geoserver" |
-| | * "ionic" |
-| | * "mapserver" |
-| | * "nonstrict" |
-| | * "strict" |
-| | * null - automatic based GET_CAPABILITIES url |
-| | |
-| | You may need use this override if you are using mapserver |
-| | with a custom URL not recognised by auto detection. |
-| | WFS1.1 supports autodetection based on full capabilities doc for |
-| | greater accuracy. |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:FILTER_COMPLIANCE" | Optional used override how GetFeature operations encodes filters |
-| | |
-| | * 0 (low compliance) full range of geotools filters represented |
-| | * 1 (medium compliance) Id filters mixed with bbox only |
-| | * 2 (strict compliance) Id filters cannot be combined at all |
-| | |
-| | In general compliance levels stress the handling of Id filters |
-| | which are not allowed with other filters (AND / OR / NOT). |
-| | You may relax this constraint when working with some WFS |
-| | implementations such as GeoServer. |
-+--------------------------------------------+------------------------------------------------------------------+
-| "WFSDataStoreFactory:USEDEFAULTSRS" | Optional used override how GetFeature operations send srs to wfs |
-| | server |
-| | |
-| | * false use othersrs if query matches one of them |
-| | * true always use defaultsrs and reproject locally to query crs |
-| | |
-| | Choose if you prefer to always use DefaultSRS declared in |
-| | capabilities and reproject using GeoTools if necessary, or |
-| | use also OtherSRS if available. |
-| | The false value is currently supported in 1.1.0 protocol only. |
-+--------------------------------------------+------------------------------------------------------------------+
-
-Historical Note: We apologise for the long connection parameter keys, WFS was one of the first DataStores written and we were unsure at the
++----------------------------------------------+------------------------------------------------------------------+
+| Parameter | Description |
++==============================================+==================================================================+
+| ``WFSDataStoreFactory:GET_CAPABILITIES_URL`` | Link to capabilities document. |
+| | The implementation supports both WFS 1.0 (read/write) and |
+| | WFS 1.1 (read-only). |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:PROTOCOL`` | Optional: True for Post, False for GET, null for auto |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:USERNAME`` | Optional |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:PASSWORD`` | Optional |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:ENCODING`` | Optional with a default of UTF-8 |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:TIMEOUT`` | Optional with a 3000ms default |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:BUFFER_SIZE`` | Optional number of features to read in one gulp, defaults of 10 |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:TRY_GZIP`` | Optional with a default of true, try compression if available |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:LENIENT`` | Optional default of true. |
+| | WFS implementations are terrible for actually obeying their |
+| | ``DescribeFeatureType`` schema, setting this to true will try a |
+| | few tricks to support implementations that are mostly correct: |
+| | |
+| | * Accepting the data in any order |
+| | * Not getting too upset if the case of the attributes is wrong |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:MAXFEATURES`` | Limit on the number of features |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:WFS_STRATEGY`` | Optional used to engage specific workarounds for known servers. |
+| | |
+| | * ``arcgis`` |
+| | * ``cuberx`` |
+| | * ``geoserver`` |
+| | * ``ionic`` |
+| | * ``mapserver`` |
+| | * ``nonstrict`` |
+| | * ``strict`` |
+| | * ``null`` - automatic based GET_CAPABILITIES URL |
+| | |
+| | You may need use this override if you are using MapServer |
+| | with a custom URL not recognized by auto detection. |
+| | WFS 1.1 supports auto detection based on full capabilities doc |
+| | for greater accuracy. |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:FILTER_COMPLIANCE`` | Optional used override how ``GetFeature`` operations encodes |
+| | filters |
+| | * 0 (low compliance) full range of GeoTools filters represented |
+| | * 1 (medium compliance) Id filters mixed with ``bbox`` only |
+| | * 2 (strict compliance) Id filters cannot be combined at all |
+| | |
+| | In general compliance levels stress the handling of Id filters |
+| | which are not allowed with other filters (AND / OR / NOT). |
+| | You may relax this constraint when working with some WFS |
+| | implementations such as GeoServer. |
++----------------------------------------------+------------------------------------------------------------------+
+| ``WFSDataStoreFactory:USEDEFAULTSRS`` | Optional used override how ``GetFeature`` operations send CRS |
+| | to WFS server |
+| | |
+| | * false use ``OtherSRS`` if query matches one of them |
+| | * true always use ``DefaultSRS`` and reproject locally to |
+| | query CRS |
+| | |
+| | Choose if you prefer to always use ``DefaultSRS`` declared in |
+| | capabilities and reproject using GeoTools if necessary, or |
+| | use also ``OtherSRS`` if available. |
+| | The false value is currently supported in 1.1.0 protocol only. |
++----------------------------------------------+------------------------------------------------------------------+
+
+Historical Note: We apologize for the long connection parameter keys, WFS was one of the first ``DataStores`` written and we were unsure at the
time if they keys for each datastore would need to be unique or not. On the plus side you can see our devotion to stability.
Hints:
-* The WFSDataStoreFactory provides keys as static constants if you need to look up the key,
- definition or expected data type programatically
+* The ``WFSDataStoreFactory`` provides keys as static constants if you need to look up the key,
+ definition or expected data type programmatically
* The capabilities URL you provide is important:
* Q: Does it include "VERSION=1.0.0"?
- If so you are using well tested code parsing GML2, and if available WFS-T will be supported.
- * Q: does it include "VERSION=1.1.0" ? If so you are using newer code parsing GML3, and only WFS is implemented at this time.
+ If so you are using well tested code parsing GML-2, and if available WFS-T will be supported.
+ * Q: does it include "VERSION=1.1.0" ? If so you are using newer code parsing GML-3, and only WFS is implemented at this time.
* You really should spend some time adjusting these parameters for your data source and application;
in particular the performance is greatly effected by changing the BUFFER_SIZE.
@@ -115,7 +116,7 @@ Support for **Web Feature Server Example (WFS)** offers access to the raw featur
* You are advised that when using read/write access you will need to use a transaction - see the section of WFS-T for more details.
-The following is a quick example; only the connection parameter code is specific to the WFSDataStore.
+The following is a quick example; only the connection parameter code is specific to the ``WFSDataStore``.
You can connect to a Web Feature Server via the DataStore API; the connection parameters are as follows::
diff --git a/docs/user/library/index.rst b/docs/user/library/index.rst
index 0e1dde4d01c..6dd42f1d130 100644
--- a/docs/user/library/index.rst
+++ b/docs/user/library/index.rst
@@ -2,7 +2,7 @@
Library
*******
-The GeoTools library is organised into a series of jars. These jars form a software stack,
+The GeoTools library is organized into a series of jars. These jars form a software stack,
each building on the services of the others. Individual jars such as "data" are extended
with plugins in order to support additional capabilities. For data these plugins include
support for common spatial formats such as shapefiles.
@@ -20,4 +20,4 @@ support for common spatial formats such as shapefiles.
jdbc/index
cql/index
xml/index
- render/index
\ No newline at end of file
+ render/index
diff --git a/docs/user/library/jdbc/datastore.rst b/docs/user/library/jdbc/datastore.rst
index 934d9474fa9..585ef11c395 100644
--- a/docs/user/library/jdbc/datastore.rst
+++ b/docs/user/library/jdbc/datastore.rst
@@ -1,9 +1,9 @@
JDBCDataStore
-------------
-The gt-jdbc module is odd in that it provides a single implementation of a DataStore (JDBCDataStore actually) and you are forced to use the DataStoreFinder mechanism in order to access the different formats.
+The ``gt-jdbc`` module is odd in that it provides a single implementation of a ``DataStore`` ( ``JDBCDataStore`` actually) and you are forced to use the ``DataStoreFinder`` mechanism in order to access the different formats.
-In this case each format is implementing a custom SQLDialect as discussed in the :doc:`gt-jdbc internals ` page.
+In this case each format is implementing a custom ``SQLDialect`` as discussed in the :doc:`gt-jdbc internals ` page.
Creating a JDBCDataStore
^^^^^^^^^^^^^^^^^^^^^^^^
@@ -15,12 +15,12 @@ The process of creating a JDBC data store follows the regular steps of creating
:start-after: // postgisExample start
:end-before: // postgisExample end
-An important parameter is the **dbtype** parameter which specifies the type of database to connect to.
+An important parameter is the ``dbtype`` parameter which specifies the type of database to connect to.
Using JNDI
''''''''''
-The above example illustrates the case where a direct connection to a database is specified. A JNDI connection can also be specified using the JDBCJNDIDataStoreFactory class.::
+The above example illustrates the case where a direct connection to a database is specified. A JNDI connection can also be specified using the ``JDBCJNDIDataStoreFactory`` class.::
Map map = new HashMap();
map.put( "dbtype", "postgis");
@@ -47,30 +47,30 @@ If you want to get extra performance and you're sure the connections will never
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
-All the gt-jdbc formats have the option of using the following set of connection parameters. You will
+All the ``gt-jdbc`` formats have the option of using the following set of connection parameters. You will
need to consult the documentation for the plugin you are using; the following is provided to
help with consistency.
-Crucial to this is the agreement that they use a unique "dbtype" for each format.
+Crucial to this is the agreement that they use a unique ``dbtype`` for each format.
+--------------------------------+----------------------------------------------------+
| Parameter | Description |
+================================+====================================================+
-| "dbtype" | A URL of the file ending in "shp" |
+| ``dbtype`` | A unique database type identifier |
+--------------------------------+----------------------------------------------------+
-| "host" | Server to connect to |
+| ``host`` | Server to connect to |
+--------------------------------+----------------------------------------------------+
-| "port" | Port to connect to. |
+| ``port`` | Port to connect to. |
+--------------------------------+----------------------------------------------------+
-| "database" | database instance |
+| ``database`` | Database name |
+--------------------------------+----------------------------------------------------+
-| "schema" | database schema |
+| ``schema`` | Database schema |
+--------------------------------+----------------------------------------------------+
-| "user | username if required |
+| ``user`` | Username if required |
+--------------------------------+----------------------------------------------------+
-| "passwd" | password if required |
+| ``passwd`` | Password if required |
+--------------------------------+----------------------------------------------------+
-| "namespace" | namespace prefix to use for content |
+| ``namespace`` | Namespace prefix to use for content |
+--------------------------------+----------------------------------------------------+
**Advanced**
@@ -78,55 +78,55 @@ Crucial to this is the agreement that they use a unique "dbtype" for each format
+--------------------------------+----------------------------------------------------+
| Parameter | Description |
+================================+====================================================+
-| "Data Source" | Optional: DataSource instance to use. |
+| ``Data Source`` | Optional: DataSource instance to use. |
+--------------------------------+----------------------------------------------------+
**Connection Pooling**
-+--------------------------------+----------------------------------------------------+
-| Parameter | Description |
-+================================+====================================================+
-| "max connections" | Maximum number of connection the pool will hold at |
-| | any time, default is 10 |
-+--------------------------------+----------------------------------------------------+
-| "min connections" | Minimum number of connection the pool will hold at |
-| | any time, default is 1 |
-+--------------------------------+----------------------------------------------------+
-| "connection timeout" | Maximum number of second the pool will wait when |
-| | trying to obtain a connection, default is 20 |
-| | seconds |
-+--------------------------------+----------------------------------------------------+
-| "validate connections" | Flag controlling if the pool should validate |
-| | connections when a new connection is obtained |
-+--------------------------------+----------------------------------------------------+
-| "Max open prepared statements" | Maximum number of prepared statements kept open |
-| | and cached for each connection in the pool. |
-| | Set to 0 to have unbounded caching, -1 to disable |
-+--------------------------------+----------------------------------------------------+
-| "Test while idle" | Periodically test if the connections are still |
-| | valid also while idle in the pool |
-+--------------------------------+----------------------------------------------------+
-| "Time between evictor runs" | Number of seconds between idle object evictor runs.|
-| | The default value is 300 seconds. |
-+--------------------------------+----------------------------------------------------+
-| "Min evictable time" | Number of seconds a connection needs to stay idle |
-| | before the evictor starts to consider closing it |
-+--------------------------------+----------------------------------------------------+
-| "Evictor tests per run" | Number of connections checked by the idle |
-| | connection evictor for each of its runs. |
-| | The default value is 3 connections. |
-+--------------------------------+----------------------------------------------------+
++----------------------------------+----------------------------------------------------+
+| Parameter | Description |
++==================================+====================================================+
+| ``max connections`` | Maximum number of connection the pool will hold at |
+| | any time, default is 10 |
++----------------------------------+----------------------------------------------------+
+| ``min connections`` | Minimum number of connection the pool will hold at |
+| | any time, default is 1 |
++----------------------------------+----------------------------------------------------+
+| ``connection timeout`` | Maximum number of second the pool will wait when |
+| | trying to obtain a connection, default is 20 |
+| | seconds |
++----------------------------------+----------------------------------------------------+
+| ``validate connections`` | Flag controlling if the pool should validate |
+| | connections when a new connection is obtained |
++----------------------------------+----------------------------------------------------+
+| ``Max open prepared statements`` | Maximum number of prepared statements kept open |
+| | and cached for each connection in the pool. |
+| | Set to 0 to have unbounded caching, -1 to disable |
++----------------------------------+----------------------------------------------------+
+| ``Test while idle`` | Periodically test if the connections are still |
+| | valid also while idle in the pool |
++----------------------------------+----------------------------------------------------+
+| ``Time between evictor runs`` | Number of seconds between idle object evictor runs.|
+| | The default value is 300 seconds. |
++----------------------------------+----------------------------------------------------+
+| ``Min evictable time`` | Number of seconds a connection needs to stay idle |
+| | before the evictor starts to consider closing it |
++----------------------------------+----------------------------------------------------+
+| ``Evictor tests per run`` | Number of connections checked by the idle |
+| | connection evictor for each of its runs. |
+| | The default value is 3 connections. |
++----------------------------------+----------------------------------------------------+
**Tweaking and Performance**
+--------------------------------+----------------------------------------------------+
| Parameter | Description |
+================================+====================================================+
-| "fetch size" | Number of records to read |
+| ``fetch size`` | Number of records to read |
+--------------------------------+----------------------------------------------------+
-| "Primary key metadata table" | The optional table containing primary key |
+| ``Primary key metadata table`` | The optional table containing primary key |
| | structure and sequence associations. Either |
| | expressed as 'schema.name' or just 'name' |
+--------------------------------+----------------------------------------------------+
-| "Expose primary keys" | "Expose primary key columns as attributes |
+| ``Expose primary keys`` | Expose primary key columns as attributes |
+--------------------------------+----------------------------------------------------+
diff --git a/docs/user/library/jdbc/db2.rst b/docs/user/library/jdbc/db2.rst
index 82a65f8484a..3bd1f082dfb 100644
--- a/docs/user/library/jdbc/db2.rst
+++ b/docs/user/library/jdbc/db2.rst
@@ -11,7 +11,7 @@ A couple of really good things have happened for DB2 support recently. We have o
**Maven**
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
::
@@ -24,23 +24,23 @@ Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin mo
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
-+-------------+------------------------------------------+
-| Parameter | Description |
-+=============+==========================================+
-| "dbtype" | Must be the string "db2" |
-+-------------+------------------------------------------+
-| "host" | Machine name or IP address to connect to |
-+-------------+------------------------------------------+
-| "port" | Port number to connect to, default 50000 |
-+-------------+------------------------------------------+
-| "tabschema" | The database schema to access |
-+-------------+------------------------------------------+
-| "database" | The database to connect to |
-+-------------+------------------------------------------+
-| "user" | User name |
-+-------------+------------------------------------------+
-| "passwd" | Password |
-+-------------+------------------------------------------+
++---------------+------------------------------------------+
+| Parameter | Description |
++===============+==========================================+
+| ``dbtype`` | Must be the string ``db2`` |
++---------------+------------------------------------------+
+| ``host`` | Machine name or IP address to connect to |
++---------------+------------------------------------------+
+| ``port`` | Port number to connect to, default 50000 |
++---------------+------------------------------------------+
+| ``tabschema`` | The database schema to access |
++---------------+------------------------------------------+
+| ``database`` | The database to connect to |
++---------------+------------------------------------------+
+| ``user`` | User name |
++---------------+------------------------------------------+
+| ``passwd`` | Password |
++---------------+------------------------------------------+
Creating
^^^^^^^^
@@ -64,24 +64,24 @@ Advanced Connection Parameters
Additional connection parameters are available to configure connection pool use, or
to feed in your own DataSource.
-For more information check the java docs for:
+For more information check the Java docs for:
-* DB2NGJNDIDataStoreFactory
-* DB2NGDataStoreFactory
+* ``DB2NGJNDIDataStoreFactory``
+* ``DB2NGDataStoreFactory``
-Advanced Geotools Parameters
+Advanced GeoTools Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-+-------------------+------------------------------------------+
-| Parameter | Description |
-+===================+==========================================+
-| "loose bbox" | Flag controlling loose bbox comparisons, |
-| | default is true |
-+-------------------+------------------------------------------+
-| "use selectivity" | Flag to raise the priority of spatial |
-| | indices for the db2 optimizer, |
-| | default is false |
-+-------------------+------------------------------------------+
++---------------------+------------------------------------------+
+| Parameter | Description |
++=====================+==========================================+
+| ``loose bbox`` | Flag controlling loose ``bbox`` |
+| | comparisons, default is true |
++---------------------+------------------------------------------+
+| ``use selectivity`` | Flag to raise the priority of spatial |
+| | indices for the ``db2`` optimizer, |
+| | default is false |
++---------------------+------------------------------------------+
Example use::
@@ -121,15 +121,15 @@ Since DB2 Spatial Extender V10 it is possible to store the extent of a geometry
Paging Support
^^^^^^^^^^^^^^
-Paging support is necessary to retrieve only a subset of a query result. (e. g. rows numbered 100 - 200). Many databases support the SQL keywords
-LIMIT and OFFSET, Oracle uses a pseudo column called ROWNUM. This plugin uses a strategy depending on the DB2 compatibility mode.
+Paging support is necessary to retrieve only a subset of a query result. (e.g. rows numbered 100 - 200). Many databases support the SQL keywords
+LIMIT and OFFSET, Oracle uses a pseudo column called ``ROWNUM``. This plugin uses a strategy depending on the DB2 compatibility mode.
-* In MYSQL compatibility mode, LIMIT and OFFSET is used
+* In MYSQL compatibility mode, ``LIMIT`` and ``OFFSET`` is used
-* In Oracle compatibility mode, ROWNUM is used
+* In Oracle compatibility mode, ``ROWNUM`` is used
-* Fetch needed rows and ignore the unneeded rows (e. g fetch rows 1 - 200 and ignore rows from 1-100).
- This may result in very bad performance. Using a scrollable cursor would not help since BLOBs (vector data) are
+* Fetch needed rows and ignore the unneeded rows (e.g. fetch rows 1 - 200 and ignore rows from 1-100).
+ This may result in very bad performance. Using a scrollable cursor would not help since ``BLOBs`` (vector data) are
not supported for such cursors in DB2.
The strategy used can be found in the log file. If no paging support is enabled, the log file contains a warning::
@@ -152,4 +152,4 @@ or::
Using Oracle ROWNUM for paging support
-
\ No newline at end of file
+
diff --git a/docs/user/library/jdbc/faq.rst b/docs/user/library/jdbc/faq.rst
index 7fa7fafbb77..772f658dbd7 100644
--- a/docs/user/library/jdbc/faq.rst
+++ b/docs/user/library/jdbc/faq.rst
@@ -4,7 +4,7 @@ JDBC FAQ
Q: How to access a database from Java Enterprise Edition?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Depending on your application container (and organisational polices) you may be restricted to only using database connection pools under control of your administrator.
+Depending on your application container (and organizational polices) you may be restricted to only using database connection pools under control of your administrator.
Your administrator will register the database connection
pool with the application server and configure your application with the Java Naming and Directory Interface (JNDI) reference.
@@ -17,4 +17,4 @@ To use GeoTools with a JNDI name::
DataStore store = DataStoreFinder.getDataStore(map);
-The specific "dbtype" marks the plugin you will use to communicate with the database.
\ No newline at end of file
+The specific ``dbtype`` marks the plugin you will use to communicate with the database.
diff --git a/docs/user/library/jdbc/h2.rst b/docs/user/library/jdbc/h2.rst
index 26d15a672f7..ea71af77346 100644
--- a/docs/user/library/jdbc/h2.rst
+++ b/docs/user/library/jdbc/h2.rst
@@ -8,7 +8,7 @@ a true spatial database as it does not have any form of spatial indexing.
**Maven**
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
::
@@ -21,15 +21,15 @@ Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin mo
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
-+-------------+----------------------------------------------+
-| Parameter | Description |
-+=============+==============================================+
-| "dbtype" | Must be the string "h2" |
-+-------------+----------------------------------------------+
-| "database" | The database to connect to |
-+-------------+----------------------------------------------+
-| "user" | User name |
-+-------------+----------------------------------------------+
++---------------+----------------------------------------------+
+| Parameter | Description |
++===============+==============================================+
+| ``dbtype`` | Must be the string ``h2`` |
++---------------+----------------------------------------------+
+| ``database`` | The database to connect to |
++---------------+----------------------------------------------+
+| ``user`` | User name |
++---------------+----------------------------------------------+
Creating
^^^^^^^^
@@ -41,7 +41,7 @@ Here is a quick example:
:start-after: // h2Example start
:end-before: // h2Example end
-The above will reference a database file named "geotools" located in the current working directory.
+The above will reference a database file named ``geotools`` located in the current working directory.
A full path may also be specified:
.. literalinclude:: /../src/main/java/org/geotools/jdbc/JDBCExamples.java
@@ -49,8 +49,8 @@ A full path may also be specified:
:start-after: // h2AbsPathExample start
:end-before: // h2AbsPathExample end
-The above examples create a connection to H2 in "embedded" mode. One limitation to this approach is
-that it only allows for a single java process to access the database at any one time. H2 also offers
+The above examples create a connection to H2 in *embedded* mode. One limitation to this approach is
+that it only allows for a single Java process to access the database at any one time. H2 also offers
a `server mode `_ in which access
to the underlying database is made via traditional client-server TCP connection, and removes the embedded
single process restriction:
diff --git a/docs/user/library/jdbc/hana.rst b/docs/user/library/jdbc/hana.rst
index 24ae8ca8d13..cd2c151fc0b 100644
--- a/docs/user/library/jdbc/hana.rst
+++ b/docs/user/library/jdbc/hana.rst
@@ -14,7 +14,7 @@ You need HANA's JDBC driver ``ngdbc.jar`` to connect to HANA. Its license does n
**Maven**
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
::
@@ -30,15 +30,15 @@ Connection Parameters
============== ============================================
Parameter Description
============== ============================================
-"dbtype" Must be the string "hana"
-"host" Machine name or IP address to connect to
-"port" Port to connect to. If set and different from 0, parameters "instance" and "database" are ignored. If not set or 0, the "instance" parameter must be set.
-"instance" Instance of the database. Ignored if a port is set.
-"database" Database to connect to. Leave empty in case of single-container databases. Set to ``SYSTEMDB`` to connect to the system database of a multi-container database. Ignored if a port is set.
-"schema" The database schema to access
-"user" User name
-"passwd" Password
-"use ssl" Use SSL to connect
+``dbtype`` Must be the string ``hana``
+``host`` Machine name or IP address to connect to
+``port`` Port to connect to. If set and different from 0, parameters "instance" and "database" are ignored. If not set or 0, the "instance" parameter must be set.
+``instance`` Instance of the database
+``database`` Database to connect to. Leave empty in case of single-container databases. Set to ``SYSTEMDB`` to connect to the system database of a multi-container database.
+``schema`` The database schema to access
+``user`` User name
+``passwd`` Password
+``use ssl`` Use SSL to connect
============== ============================================
Creating
@@ -57,16 +57,16 @@ Here is an example of connecting::
DataStore datastore = DataStoreFinder.getDataStore(params);
-Advanced Geotools Parameters
+Advanced GeoTools Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-+--------------------+-------------------------------------------+
-| Parameter | Description |
-+====================+===========================================+
-| "encode functions" | Flag controlling if a set of filter |
-| | functions are translated directly in SQL. |
-| | Default is false. |
-+--------------------+-------------------------------------------+
++----------------------+-------------------------------------------+
+| Parameter | Description |
++======================+===========================================+
+| ``encode functions`` | Flag controlling if a set of filter |
+| | functions are translated directly in SQL. |
+| | Default is false. |
++----------------------+-------------------------------------------+
Importing spatial reference systems
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/docs/user/library/jdbc/ingres.rst b/docs/user/library/jdbc/ingres.rst
index 93eb92bd4e1..f2dd19d9f4a 100644
--- a/docs/user/library/jdbc/ingres.rst
+++ b/docs/user/library/jdbc/ingres.rst
@@ -1,12 +1,12 @@
Ingres Plugin
-------------
-Unsupported plugin currently under construction; ask on the geotools user list if you
+Unsupported plugin currently under construction; ask on the GeoTools user list if you
would like to help out.
**Maven**
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
::
diff --git a/docs/user/library/jdbc/internal.rst b/docs/user/library/jdbc/internal.rst
index a87ba95355b..528d9124246 100644
--- a/docs/user/library/jdbc/internal.rst
+++ b/docs/user/library/jdbc/internal.rst
@@ -1,7 +1,7 @@
Internals
---------
-The internals of gt-jdbc layout the code for JDBCDataStore and abstract classes that are extended for each new format.
+The internals of ``gt-jdbc`` layout the code for ``JDBCDataStore`` and abstract classes that are extended for each new format.
Related:
@@ -10,34 +10,34 @@ Related:
JDBCDataStore
^^^^^^^^^^^^^
-The JDBCDataStore class is an extension of ContentDataStore defined by gt-main.
+The ``JDBCDataStore`` class is an extension of ``ContentDataStore`` defined by ``gt-main``.
.. image:: /images/content2.PNG
-ContentDataStore is extended with a concrete JDBCDataStore that:
+``ContentDataStore`` is extended with a concrete ``JDBCDataStore`` that:
-* delegates out to a SQLDialect that is implemented for each format
+* delegates out to a ``SQLDialect`` that is implemented for each format
* makes use of custom extensions for:
- * JDBCState
- * JDBCFeatureSource supported by a feature reader that makes use of
+ * ``JDBCState``
+ * ``JDBCFeatureSource`` supported by a feature reader that makes use of
a light-weight feature implementation
- * JDBCFeatureStore supported by two feature writer implementations
+ * ``JDBCFeatureStore`` supported by two feature writer implementations
.. image:: /images/jdbcDataStore.PNG
-You will find a careful attention to details and steps taken to minimise any duplication of code. The FeatureStore implementation maintains an internal delegate JDBCFeatureSource in order to smoothly handle getFeature() requests without duplicating code.
+You will find a careful attention to details and steps taken to minimize any duplication of code. The ``FeatureStore`` implementation maintains an internal delegate ``JDBCFeatureSource`` in order to smoothly handle ``getFeature()`` requests without duplicating code.
SQLDialect
^^^^^^^^^^
-If you would like to implement support for an additional format please ask on the developers list. The clearest starting place is to review the *gt-jdbc-h2* code which serves as the reference implementation.
+If you would like to implement support for an additional format please ask on the developers list. The clearest starting place is to review the *``gt-jdbc-h2``* code which serves as the reference implementation.
To have your format accepted by GeoTools you will also need to extend the
-conformance test cases as shown in the *gt-jdbc-h2* module.
+conformance test cases as shown in the *``gt-jdbc-h2``* module.
-Here is a brief illustration of SQLDialect as implemented by the gt-jdbc-h2 plugin.
+Here is a brief illustration of ``SQLDialect`` as implemented by the ``gt-jdbc-h2`` plugin.
.. image:: /images/jdbcDataStoreH2.PNG
diff --git a/docs/user/library/jdbc/mysql.rst b/docs/user/library/jdbc/mysql.rst
index f01f80e601a..338196b6e62 100644
--- a/docs/user/library/jdbc/mysql.rst
+++ b/docs/user/library/jdbc/mysql.rst
@@ -13,37 +13,37 @@ Supports direct access to a MySQL database.
${geotools.version}
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
**Basic connection parameters**
-+-------------+----------------------------------------------+
-| Parameter | Description |
-+=============+==============================================+
-| "dbtype" | Must be the string "mysql" |
-+-------------+----------------------------------------------+
-| "host" | Machine name or IP address to connect to |
-+-------------+----------------------------------------------+
-| "port" | Port number to connect to, default 3309 |
-+-------------+----------------------------------------------+
-| "database" | The database to connect to |
-+-------------+----------------------------------------------+
-| "user" | User name |
-+-------------+----------------------------------------------+
-| "passwd" | Password |
-+-------------+----------------------------------------------+
++---------------+----------------------------------------------+
+| Parameter | Description |
++===============+==============================================+
+| ``dbtype`` | Must be the string ``mysql`` |
++---------------+----------------------------------------------+
+| ``host`` | Machine name or IP address to connect to |
++---------------+----------------------------------------------+
+| ``port`` | Port number to connect to, default 3309 |
++---------------+----------------------------------------------+
+| ``database`` | The database to connect to |
++---------------+----------------------------------------------+
+| ``user`` | User name |
++---------------+----------------------------------------------+
+| ``passwd`` | Password |
++---------------+----------------------------------------------+
**Advanced Connection Parameters**
-+------------------+----------------------------------------------+
-| Parameter | Description |
-+==================+==============================================+
-| "storage engine" | Storage engine to use for created tables, |
-| | default is "MyISAM". |
-+------------------+----------------------------------------------+
++--------------------+----------------------------------------------+
+| Parameter | Description |
++====================+==============================================+
+| ``storage engine`` | Storage engine to use for created tables, |
+| | default is ``MyISAM``. |
++--------------------+----------------------------------------------+
See additional notes below on storage engine.
@@ -65,7 +65,7 @@ Here is a quick example::
Storage Engine
^^^^^^^^^^^^^^
-The MySQL Datastore is capable of creating new tables via DataStore#createSchema(). The storage engine connection parameter controls what storange engine is used for the new table. The default is "MyISAM" which is the only engine that supports spatial indexing. However depending on the use of the able other engines may be appropriate. For instance "InnoDB" is fully transaction safe so is more suitable to tables that will be undergoing many concurrent edits.
+The MySQL Datastore is capable of creating new tables via ``DataStore.createSchema()``. The storage engine connection parameter controls what storage engine is used for the new table. The default is ``MyISAM`` which is the only engine that supports spatial indexing. However depending on the use of the able other engines may be appropriate. For instance ``InnoDB`` is fully transaction safe so is more suitable to tables that will be undergoing many concurrent edits.
Example::
diff --git a/docs/user/library/jdbc/oracle.rst b/docs/user/library/jdbc/oracle.rst
index f1bfd4be122..b278b65169c 100644
--- a/docs/user/library/jdbc/oracle.rst
+++ b/docs/user/library/jdbc/oracle.rst
@@ -13,7 +13,7 @@ Supports direct access to an Oracle database.
${geotools.version}
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
@@ -21,13 +21,13 @@ Connection Parameters
============== =============================
Parameter Description
============== =============================
-"dbtype" Must be the string "oracle"
-"host" Machine name or IP address to connect to
-"port" Port number to connect to, default 1521
-"schema" The database schema to access
-"database" The database to connect to
-"user" User name
-"passwd" Password
+``dbtype`` Must be the string ``oracle``
+``host`` Machine name or IP address to connect to
+``port`` Port number to connect to, default 1521
+``schema`` The database schema to access
+``database`` The database to connect to
+``user`` User name
+``passwd`` Password
============== =============================
Creation
@@ -49,26 +49,26 @@ Connect using DataStore finder::
Advanced
^^^^^^^^
-+---------------------+------------------------------------------------+
-| Parameter | Description |
-+=====================+================================================+
-| "loose bbox" | Flag controlling loose bbox comparisons, |
-| | default is true |
-+---------------------+------------------------------------------------+
-| "Estimated extends" | Use the spatial index information to quickly |
-| | get an estimate of the data bounds |
-+---------------------+------------------------------------------------+
-| "Geometry metadata | An alternative table where geometry |
-| table" | metadata information can be looked up |
-+---------------------+------------------------------------------------+
-| "Metadata bbox" | Flag controlling the use of |
-| | MDSYS.USER_SDO_GEOM_METADATA or |
-| | MDSYS.ALL_SDO_GEOM_METADATA table for bounding |
-| | box calculations, this brings a better |
-| | performance if the views access is fast and |
-| | the bounds are configured right in the tables |
-| | default is false |
-+---------------------+------------------------------------------------+
++-----------------------+------------------------------------------------+
+| Parameter | Description |
++=======================+================================================+
+| ``loose bbox`` | Flag controlling loose ``bbox`` comparisons, |
+| | default is true |
++-----------------------+------------------------------------------------+
+| ``Estimated extends`` | Use the spatial index information to quickly |
+| | get an estimate of the data bounds |
++-----------------------+------------------------------------------------+
+| ``Geometry metadata`` | An alternative table where geometry |
+| ``table`` | metadata information can be looked up |
++-----------------------+------------------------------------------------+
+| ``Metadata bbox`` | Flag controlling the use of |
+| | MDSYS.USER_SDO_GEOM_METADATA or |
+| | MDSYS.ALL_SDO_GEOM_METADATA table for bounding |
+| | box calculations, this brings a better |
+| | performance if the views access is fast and |
+| | the bounds are configured right in the tables |
+| | default is false |
++-----------------------+------------------------------------------------+
Example use::
@@ -86,7 +86,7 @@ user owns (for the ``MDSYS.USER_SDO*`` views) or can otherwise access (for the `
There are a few hiccups in this process:
* if the connection pool user cannot access the tables (because impersonation is being used)
- the MDSYS views will be empty, making it impossible to determine either the geometry type and the native SRID
+ the ``MDSYS`` views will be empty, making it impossible to determine either the geometry type and the native SRID
* the geometry type can be specified only while building the spatial indexes, as a index constraint, however
such information is often not included when creating the indexes
* the views are populated dynamically based on the current user, if the database has thousands of tables and users
@@ -108,7 +108,7 @@ The table has the following structure (the table name is free, just indicate the
CHECK(TYPE IN ('POINT','LINE', 'POLYGON', 'COLLECTION', 'MULTIPOINT', 'MULTILINE', 'MULTIPOLYGON', 'GEOMETRY') ));
When the table is present the store will first search it for information about each geometry column
-to be classified, and fall back on the MDSYS views only if such table does not contain any information.
+to be classified, and fall back on the ``MDSYS`` views only if such table does not contain any information.
Setup
^^^^^
@@ -120,6 +120,6 @@ Setup
* JDBC vs JDBC-NG
- The oracle support has been rewritten for GeoTools 2.6. This rewrite is
- called "jdbc-ng" and is easier to maintain. By in large the same
+ The Oracle support has been rewritten for GeoTools 2.6. This rewrite is
+ called ``jdbc-ng`` and is easier to maintain. By in large the same
connection parameters can be used.
diff --git a/docs/user/library/jdbc/postgis.rst b/docs/user/library/jdbc/postgis.rst
index d298dc76f41..6c1c7584ca2 100644
--- a/docs/user/library/jdbc/postgis.rst
+++ b/docs/user/library/jdbc/postgis.rst
@@ -19,7 +19,7 @@ Related
${geotools.version}
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
@@ -27,13 +27,13 @@ Connection Parameters
============== ============================================
Parameter Description
============== ============================================
-"dbtype" Must be the string "postgis"
-"host" Machine name or IP address to connect to
-"port" Port number to connect to, default 5432
-"schema" The database schema to access
-"database" The database to connect to
-"user" User name
-"passwd" Password
+``dbtype`` Must be the string ``postgis``
+``host`` Machine name or IP address to connect to
+``port`` Port number to connect to, default 5432
+``schema`` The database schema to access
+``database`` The database to connect to
+``user`` User name
+``passwd`` Password
============== ============================================
Creation
@@ -49,15 +49,15 @@ Connect using DataStore finder:
Advanced
^^^^^^^^
-+----------------------+------------------------------------------------+
-| Parameter | Description |
-+======================+================================================+
-| "loose bbox" | Flag controlling loose bbox comparisons, |
-| | default is true |
-+----------------------+------------------------------------------------+
-| "preparedStatements" | Flag controlling whether prepared statements |
-| | are used, default is false |
-+----------------------+------------------------------------------------+
++------------------------+------------------------------------------------+
+| Parameter | Description |
++========================+================================================+
+| ``loose bbox`` | Flag controlling loose ``bbox`` comparisons, |
+| | default is true |
++------------------------+------------------------------------------------+
+| ``preparedStatements`` | Flag controlling whether prepared statements |
+| | are used, default is false |
++------------------------+------------------------------------------------+
Example use::
@@ -67,7 +67,7 @@ Example use::
Configuration Flags
^^^^^^^^^^^^^^^^^^^
-An optimization on spatial queries can be applied, to avoid a bug with PostGIS query planner with big geometries and small bboxes, setting a system property.
+An optimization on spatial queries can be applied, to avoid a bug with PostGIS query planner with big geometries and small bounding boxes, setting a system property.
This optimization can be enabled using a system-wide default from the command line::
diff --git a/docs/user/library/jdbc/spatialite.rst b/docs/user/library/jdbc/spatialite.rst
index b9d6dbf8849..700f90d57a8 100644
--- a/docs/user/library/jdbc/spatialite.rst
+++ b/docs/user/library/jdbc/spatialite.rst
@@ -27,7 +27,7 @@ References:
${geotools.version}
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
@@ -35,9 +35,9 @@ Connection Parameters
============== ============================================
Parameter Description
============== ============================================
-"dbtype" Must be the string "spatialite"
-"database" The database to connect to
-"user" User name (optional)
+``dbtype`` Must be the string ``spatialite``
+``database`` The database to connect to
+``user`` User name (optional)
============== ============================================
Access
diff --git a/docs/user/library/jdbc/sqlserver.rst b/docs/user/library/jdbc/sqlserver.rst
index 8be1596f30e..b3673f091a8 100644
--- a/docs/user/library/jdbc/sqlserver.rst
+++ b/docs/user/library/jdbc/sqlserver.rst
@@ -18,7 +18,7 @@ References:
${geotools.version}
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
@@ -26,14 +26,14 @@ Connection Parameters
============== ============================================
Parameter Description
============== ============================================
-"dbtype" Must be the string "sqlserver" if using the Microsoft Driver, otherwise use "jtds-sqlserver"
-"host" Machine name or IP address to connect to
-"port" Port number to connect to
-"instance" Instance of Database to use (instead of port when multiple DB services are running)
-"schema" The database schema to access
-"database" The database to connect to
-"user" User name
-"passwd" Password
+``dbtype`` Must be the string ``sqlserver`` if using the Microsoft Driver, otherwise use ``jtds-sqlserver``
+``host`` Machine name or IP address to connect to
+``port`` Port number to connect to
+``instance`` Instance of Database to use (instead of port when multiple DB services are running)
+``schema`` The database schema to access
+``database`` The database to connect to
+``user`` User name
+``passwd`` Password
============== ============================================
Access
diff --git a/docs/user/library/jdbc/teradata.rst b/docs/user/library/jdbc/teradata.rst
index b5bf3c09698..e87166d75e5 100644
--- a/docs/user/library/jdbc/teradata.rst
+++ b/docs/user/library/jdbc/teradata.rst
@@ -17,7 +17,7 @@ Supports direct access to a Teradata database.
${geotools.version}
-Note that the groupId is **org.geotools.jdbc** for this and other JDBC plugin modules.
+Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
@@ -25,12 +25,12 @@ Connection Parameters
============== ============================================
Parameter Description
============== ============================================
-"dbtype" Must be the string "teradata"
-"host" Machine name or IP address to connect to
-"port" Port number to connect to, default is 1025
-"database" The database to connect to, usually same as "user"
-"user" User name
-"passwd" Password
+``dbtype`` Must be the string ``teradata``
+``host`` Machine name or IP address to connect to
+``port`` Port number to connect to, default is 1025
+``database`` The database to connect to, usually same as ``user``
+``user`` User name
+``passwd`` Password
============== ============================================
Access
diff --git a/docs/user/library/jts/dim9.rst b/docs/user/library/jts/dim9.rst
index 71c42912d1b..f93a1530cc5 100644
--- a/docs/user/library/jts/dim9.rst
+++ b/docs/user/library/jts/dim9.rst
@@ -3,7 +3,7 @@ Point Set Theory and the DE-9IM Matrix
This page covers some of what the JTS Topology is made up of, and how you can use this information to increase the performance of your queries.
-This page has as little math as possible, quickly moving on to a normal String which we can do regular expression on. This page gives you enough information to optimise your own spatial relationship tests.
+This page has as little math as possible, quickly moving on to a normal String which we can do regular expression on. This page gives you enough information to optimize your own spatial relationship tests.
Related:
@@ -40,7 +40,7 @@ A Line l |l0| |dl| |-l|
.. |-p| replace:: -p
We have an intuitive idea of what a dimension is, for point set theory it is going to act as a
-number summarising the shape of a geometry.
+number summarizing the shape of a geometry.
========= ======================= =======================================
Shape Dimension Non-empty
@@ -243,7 +243,7 @@ Overlaps T*T***T** true x overlaps y
The only one that is not really intuitive here is "touches", yes x and y touch in the English sense of the word; but since x and y overlap they are not considered to be only touching. The relationship touches only works when the contact between geometries is limited to the border.
-Optimisation
+Optimization
^^^^^^^^^^^^
Combining Relationship Tests
diff --git a/docs/user/library/jts/equals.rst b/docs/user/library/jts/equals.rst
index 4ae6d2e890e..b80397172b4 100644
--- a/docs/user/library/jts/equals.rst
+++ b/docs/user/library/jts/equals.rst
@@ -9,9 +9,9 @@ between these methods to get the best runtime performance in your application.
.. Hint::
If this page looks long and scary, the important bit is to always avoid using
- Geometry.equals(\ |nbsp|\ Geometry\ |nbsp|\ g\ |nbsp|\ ) in your code. Use equalsExact or equalsTopo instead.
+ ``Geometry.equals(Geometry g)`` in your code. Use ``equalsExact`` or ``equalsTopo`` instead.
-Geometry.equalsExact( Geometry g )
+``Geometry.equalsExact( Geometry g )``
This method tests for **structural equality** of Geometry objects. In simple terms, this means
that they must have the same number of vertices, in the same locations, and in the same order.
The latter condition is the tricky one. If two Polygons have matching vertices, but one is
@@ -19,13 +19,13 @@ Geometry.equalsExact( Geometry g )
**false**. It's important to know this because vertex order can change when objects are being
stored in, and later retrieved from, data stores.
-Geometry.equalsExact( Geometry g, double tolerance )
+``Geometry.equalsExact( Geometry g, double tolerance )``
This is just like the previous method but lets you specify a tolerance for the comparison of
vertex coordinates.
-Geometry.equalsNorm( Geometry g )
+``Geometry.equalsNorm( Geometry g )``
This method frees you from the vertex order problem mentioned above by *normalizing* the
- Geometry objects (ie. putting each into a standard or *canonical* form), before comparison. It
+ Geometry objects (i.e. putting each into a standard or *canonical* form), before comparison. It
is equivalent to::
geomA.normalize();
@@ -35,17 +35,17 @@ Geometry.equalsNorm( Geometry g )
Vertex order will is guaranteed to be the same, but the price is additional computation which,
for complex Geometry objects, can be expensive.
-Geometry.equalsTopo( Geometry g )
+``Geometry.equalsTopo( Geometry g )``
This method tests for **topological equality** which is equivalent to drawing the two Geometry
objects and seeing if all of their component edges overlap. It is the most robust kind of
comparison but also the most computationally expensive.
-Geometry.equals( Object o )
- This method is a synonym for Geometry.equalsExact and lets you use Geometry objects in
+``Geometry.equals( Object o )``
+ This method is a synonym for ``Geometry.equalsExact`` and lets you use Geometry objects in
Java Collections.
-Geometry.equals( Geometry g )
- This method is a synonym for Geometry.equalsTopo. It should really come with a health warning
+``Geometry.equals( Geometry g )``
+ This method is a synonym for ``Geometry.equalsTopo``. It should really come with a health warning
because its presence means that you can unknowingly be doing computationally expensive
comparisons when quick cheap ones are all you need. For example::
@@ -59,5 +59,5 @@ Geometry.equals( Geometry g )
// this instead:
result = geomA.equalsExact( geomB );
- The best thing approach you can take with this method is vow never to use it.
+ The best thing approach you can take with this method is to vow never to use it.
diff --git a/docs/user/library/jts/faq.rst b/docs/user/library/jts/faq.rst
index f36aee037b9..6c11b4dc121 100644
--- a/docs/user/library/jts/faq.rst
+++ b/docs/user/library/jts/faq.rst
@@ -6,13 +6,17 @@ Q: What is the relationship between JTS and GeoTools?
We make use of the Java Topology Suite to represent "Simple" Geometry, and the OpenGIS interfaces to represent everything else. We have been forced to define an API module of our own in a few cases, like data access, where something "standard" is not available.
-You will be using JTS a lot as it literally is the "shape" of GeoTools. It captures shapes using constructs like Coordinate, Point, Polygon and LineString.
+You will be using JTS a lot as it literally is the "shape" of GeoTools. It captures shapes using constructs like ``Coordinate`` ``Point`` ``Polygon`` and ``LineString``
-* Do keep in mind that JTS is pure topology and the Geometry objects are pure shapes with no meaning. For the meaning, placing that shape on the earth, you will need to consult a CoordinateReferenceSystem.
-* JTS topologic operations work in a two dimensional Cartesian plane. With this in mind three dimensional shapes can be represented, but not calculated with.
-* JTS focuses on *linear* topology, you will need to represent curves as a LineString with many little segments.
+* Do keep in mind that JTS is pure topology and the Geometry objects are pure shapes with no meaning. For the meaning, placing that shape on the earth, you will need to consult a ``CoordinateReferenceSystem`` .
+* JTS topological operations work in a two dimensional Cartesian plane. With this in mind three dimensional shapes can be represented, but not calculated with.
+* JTS focuses on *linear* topology, you will need to represent curves as a ``LineString`` with many little segments.
-With those notes it may sound like JTS is limited; it is instead focused on the task at hand - Geographic Information Systems. While 3D and curves may be common in CAD systems we will need a lot of funding and raw science to make it work for GIS. Some of that work is happening in GeoTools with ISO Geometry.
+With those notes it may sound like JTS is limited; it is instead focused
+on the task at hand - Geographic Information Systems. While 3D and
+curves may be common in CAD systems we will need a lot of funding and
+raw science to make it work for GIS. Some of that work is happening in
+GeoTools with ISO Geometry.
Q: What Geometry Specifications?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -23,7 +27,7 @@ JTS is an implementation of the OGC Simple Features for SQL Specification (i.e.
Specification Supports Implementation
======================== ============ ===============================
Simple Features for SQL 2.5D, linear Java Topology Suite
-ISO Geometry 3D, curves OpenGIS ISO Geoemtry interfaces
+ISO Geometry 3D, curves OpenGIS ISO Geometry interfaces
======================== ============ ===============================
-GeoTools makes a point of working with both implementations, but frankly the ISO Geometry implementations are not ready yet.
\ No newline at end of file
+GeoTools makes a point of working with both implementations, but frankly the ISO Geometry implementations are not ready yet.
diff --git a/docs/user/library/jts/geometry.rst b/docs/user/library/jts/geometry.rst
index 3940647e8b7..fea8be4ce87 100644
--- a/docs/user/library/jts/geometry.rst
+++ b/docs/user/library/jts/geometry.rst
@@ -1,7 +1,7 @@
Geometry
--------
-To create a Geometry object we make use of the GeometryFactory provided by JTS. GeometryFactory has a bunch of create methods that take Coordinate instances (and arrays) and wrap them up in the appropriate instance of Geometry.
+To create a Geometry object we make use of the ``GeometryFactory`` provided by JTS. ``GeometryFactory`` has a bunch of create methods that take Coordinate instances (and arrays) and wrap them up in the appropriate instance of Geometry.
The OGC Simple Features for SQL specification implemented by JTS works with *Point*, *LineString* and *Polygon*.
@@ -9,11 +9,11 @@ The OGC Simple Features for SQL specification implemented by JTS works with *Poi
Each *Geometry* can be contained in an *Envelope* (acting as a bounding box that contains all the geometry coordinates).
-The OGC Simple Feature for SQL specification also provides support for GeometryCollections. GeometryCollections are themselves considered a Geometry.
+The OGC Simple Feature for SQL specification also provides support for ``GeometryCollections``. ``GeometryCollections`` are themselves considered a Geometry.
.. image:: /images/geometry_collection.png
-You can create your own GeometryFactory with a specific PrecisionModel and CoordinateSequenceFactory.
+You can create your own ``GeometryFactory`` with a specific ``PrecisionModel`` and ``CoordinateSequenceFactory``.
.. image:: /images/geometry_factory.png
@@ -25,12 +25,12 @@ GeoTools extends these core Geometry classes to allow support for curves. These
.. image:: /images/geometry2.png
-The linearization process used to generate coordinates makes use of the control points defining the curve and a tolerance provided by a CurvedGeometryFactory.
+The linearization process used to generate coordinates makes use of the control points defining the curve and a tolerance provided by a ``CurvedGeometryFactory``.
Creating a Point
^^^^^^^^^^^^^^^^
-This time we are using a JTS GeometryFactory, although you can create one yourself (if you want to fiddle with Precision}} there is a global one available using the FactoryFinder.:
+This time we are using a JTS ``GeometryFactory``, although you can create one yourself (if you want to fiddle with Precision}} there is a global one available using the ``FactoryFinder``.:
.. literalinclude:: /../src/main/java/org/geotools/geometry/GeometryExamples.java
:language: java
@@ -44,7 +44,7 @@ This time we are using a JTS GeometryFactory, although you can create one yourse
:start-after: // createPointWKT start
:end-before: // createPointWKT end
-If you need to represent many points (perhaps fence posts forming a fence) you can use use a MultiPoint.
+If you need to represent many points (perhaps fence posts forming a fence) you can use use a ``MultiPoint``.
Creating a LineString
^^^^^^^^^^^^^^^^^^^^^
@@ -61,14 +61,14 @@ The following makes a line string in the shape of a check mark::
LineString line = geometryFactory.createLineString(coordinates);
-Alternative - Reading a LineString from WKT::
+Alternative - Reading a ``LineString`` from WKT::
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
WKTReader reader = new WKTReader( geometryFactory );
LineString line = (LineString) reader.read("LINESTRING(0 2, 2 0, 8 6)");
-If you need to represent a line with gaps in it you can use a MultiLineString.
+If you need to represent a line with gaps in it you can use a ``MultiLineString``.
Creating a Polygon
^^^^^^^^^^^^^^^^^^
@@ -94,19 +94,19 @@ Alternative - Reading a Polygon from WKT::
WKTReader reader = new WKTReader( geometryFactory );
Polygon polygon = (Polygon) reader.read("POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))");
-You can also create a Polygon will holes in it. And once again use a MultiPolygon to represent a single geometry made up of distinct shapes.
+You can also create a Polygon will holes in it. And once again use a ``MultiPolygon`` to represent a single geometry made up of distinct shapes.
Creating CircularString
^^^^^^^^^^^^^^^^^^^^^^^
-To create a CircularString (or a CircularRing) use the GeoTools CurvedGeometryFactory. When setting up a CurvedGeometryFactory the provided tolerance will be used during linearization:
+To create a ``CircularString`` (or a ``CircularRing``) use the GeoTools ``CurvedGeometryFactory``. When setting up a ``CurvedGeometryFactory`` the provided tolerance will be used during linearization:
.. literalinclude:: /../src/main/java/org/geotools/geometry/GeometryExamples.java
:language: java
:start-after: // createCurve start
:end-before: // createCurve end
-The circle arc is defined between coordinates 10,14 and 14, 10 passing through point 6,10. The example uses a PackedCoordinateSequence allowing an array of doubles to be used directly. Curve support is limited to 2D coordinates. A CircularLineString is returned in this case, a CircularRing would be produced if two or more curves were provided form a closed ring.
+The circle arc is defined between coordinates 10,14 and 14, 10 passing through point 6,10. The example uses a ``PackedCoordinateSequence`` allowing an array of doubles to be used directly. Curve support is limited to 2D coordinates. A ``CircularLineString`` is returned in this case, a ``CircularRing`` would be produced if two or more curves were provided form a closed ring.
Reading a circular arc from WKT:
@@ -115,7 +115,7 @@ Reading a circular arc from WKT:
:start-after: // wktCurve start
:end-before: // wktCurve end
-A CompoundCurve (or closed CompoundRing) consists mix of CircularString and/or plain LineString components.
+A ``CompoundCurve`` (or closed ``CompoundRing``) consists mix of ``CircularString`` and/or plain ``LineString`` components.
Custom Curves
^^^^^^^^^^^^^
@@ -136,12 +136,12 @@ Creating a Circle::
return shapeFactory.createCircle();
}
-Even though "GeometricShapeFactory" is provided out of the box from JTS; there is nothing fancy
+Even though ``GeometricShapeFactory`` is provided out of the box from JTS; there is nothing fancy
about the code. It creates a series of coordinates in a circle.
Another approach is to create a curve or shape object with one of Java's handy Shape classes and then extract the coordinates from that object to create your geometry.
-Arcs without the maths::
+Arcs without the math::
private static Geometry createBezierCurve(Coordinate start,
Coordinate end,
@@ -178,7 +178,7 @@ Here's an example of some randomly orientated and shaped curves generated in thi
.. image:: /images/geometry_curve.gif
-Sometimes you need to generate a smooth curve that is guaranteed to pass through a specified set of points. The tried and true approach here is to use a spline function. This generates a set of polynomial (cubic) curves, each of which fits a part of the data and joins smoothly to its neighbouring curves.
+Sometimes you need to generate a smooth curve that is guaranteed to pass through a specified set of points. The tried and true approach here is to use a spline function. This generates a set of polynomial (cubic) curves, each of which fits a part of the data and joins smoothly to its neighboring curves.
Splines::
@@ -231,62 +231,62 @@ Using Geometry is pretty straight forward, although a little intimidating when s
Some summary information is available:
-* getArea() - area returned in the same units as the coordinates (be careful of lat/lon data!)
-* getCentroid() - the centre of the geometry
-* getEnvelope() - returns a geometry which is probably not what you wanted
-* getEnvelopeInternal() - this returns a useful Envelope
-* getInteriorPoint() - the centre of the geometry (that is actually on the geometry)
-* getDimension()
+* ``getArea()`` - area returned in the same units as the coordinates (be careful of latitude/longitude data!)
+* ``getCentroid()`` - the center of the geometry
+* ``getEnvelope()`` - returns a geometry which is probably not what you wanted
+* ``getEnvelopeInternal()`` - this returns a useful Envelope
+* ``getInteriorPoint()`` - the center of the geometry (that is actually on the geometry)
+* ``getDimension()``
Geometry relationships are represented by the following functions returning true or false:
-* disjoint(Geometry) - same as "not" intersects
-* touches(Geometry) - geometry have to just touch, crossing or overlap will not work
-* intersects(Geometry)
-* crosses(Geometry)
-* within(Geometry) - geometry has to be full inside
-* contains(Geometry)
-* overlaps(Geometry) - has to actually overlap the edge, being within or touching will not work
-* covers(Geometry)
-* coveredBy(Geometry)
-* relate(Geometry, String) - allows general check of relationship see dim9 page
-* relate(Geometry)
+* ``disjoint(Geometry)`` - same as "not" intersects
+* ``touches(Geometry)`` - geometry have to just touch, crossing or overlap will not work
+* ``intersects(Geometry)``
+* ``crosses(Geometry)``
+* ``within(Geometry)`` - geometry has to be full inside
+* ``contains(Geometry)``
+* ``overlaps(Geometry)`` - has to actually overlap the edge, being within or touching will not work
+* ``covers(Geometry)``
+* ``coveredBy(Geometry)``
+* ``relate(Geometry, String)`` - allows general check of relationship see :doc:`dim9 page`
+* ``relate(Geometry)``
To actually determine a shape based on two geometry:
-* intersection(Geometry)
-* union(Geometry)
-* difference(Geometry)
-* symDifference(Geometry)
+* ``intersection(Geometry)``
+* ``union(Geometry)``
+* ``difference(Geometry)``
+* ``symDifference(Geometry)``
Some of the most helpful functions are:
-* distance( Geometry )
-* buffer(double) - used to buffer the edge of a geometry to produce a polygon
-* union() - used on a geometry collection to produce a single geometry
+* ``distance(Geometry)``
+* ``buffer(double)`` - used to buffer the edge of a geometry to produce a polygon
+* ``union()`` - used on a geometry collection to produce a single geometry
The three most difficult methods are here (they will be discussed in detail):
-* equals( Object ) - normal Java equals which checks that the two objects are the same instance
-* equals( Geometry ) - checks if the geometry is the same shape
-* equalsExact( Geometry ) - check if the data structure is the same
+* ``equals(Object)`` - normal Java equals which checks that the two objects are the same instance
+* ``equals(Geometry)`` - checks if the geometry is the same shape
+* ``equalsExact(Geometry)`` - check if the data structure is the same
There are some book keeping methods to help discovery how the geometry was constructed:
-* getGeometryFactory()
-* getPreceisionModel()
-* toText() - the WKT representation of the Geometry
-* getGeoemtryType() - factory method called (i.e. "point", "linestring", etc..)
+* ``getGeometryFactory()``
+* ``getPreceisionModel()``
+* ``toText()`` - the WKT representation of the Geometry
+* ``getGeoemtryType()`` - factory method called (i.e. ``point``, ``linestring``, etc..)
A couple of methods are there to store your developer information:
-* getSRID() - stores the "spatial reference id", used as an external key when working with databases
-* getUserData() - intended to be used by developers, a best practice is to store a java.util.Map. GeoTools will occasionally use this field to store a "srsName" or full CoordinateReferenceSystem.
+* ``getSRID()`` - stores the "spatial reference id", used as an external key when working with databases
+* ``getUserData()`` - intended to be used by developers, a best practice is to store a ``java.util.Map``. GeoTools will occasionally use this field to store a ``srsName`` or full ``CoordinateReferenceSystem``.
-Geometries Enum
-^^^^^^^^^^^^^^^
+Geometries Enumeration
+^^^^^^^^^^^^^^^^^^^^^^
-Code that makes use of Geometry ends up doing a fair amount of "instanceof" testing in order to determine what kind of Geometry is being used (to take appropriate action).
+Code that makes use of Geometry ends up doing a fair amount of ``instanceof`` testing in order to determine what kind of ``Geometry`` is being used (to take appropriate action).
We have an enumeration defined to help out in this case:
@@ -298,29 +298,29 @@ We have an enumeration defined to help out in this case:
PrecisionModel
^^^^^^^^^^^^^^
-Out of the box JTS works with a default double precision model. Configuring your GeometryFactory with a PrecisionModel allows you to work at a different resolution than this default.
+Out of the box JTS works with a default double precision model. Configuring your ``GeometryFactory`` with a ``PrecisionModel`` allows you to work at a different resolution than this default.
-PrecisionModel forms the heart of "numerical stability" when working with Geometry. When working with large values the mathematics built into Java are not very accurate. By explicitly capturing the "round-off" process in a PrecisionModel JTS allows to manage these sorts of errors and make an appropriate tradeoff of speed vs accuracy for your work.
+``PrecisionModel`` forms the heart of "numerical stability" when working with Geometry. When working with large values the mathematics built into Java are not very accurate. By explicitly capturing the "round-off" process in a ``PrecisionModel`` JTS allows to manage these sorts of errors and make an appropriate trade off of speed vs accuracy for your work.
* Round-off often occur, even when working in double precision.
Especially if you are working in a coordinate system with big
numbers and you're a long way from the origin.
-* The other reason to look at PrecisionModel is to ensure it matches
+* The other reason to look at ``PrecisionModel`` is to ensure it matches
your final use for your data. If you know you are only going to
display an answer on the screen, you may be able to get by with
reduced precision.
- By matching the PrecisionModel with your expected use, certain long
+ By matching the ``PrecisionModel`` with your expected use, certain long
running operations (that need to converge on an answer) can stop
when they have reached the level of detail you expect. No sense
doing extra work for more significant digits if the result is going
to be rounded off at the end of the day.
-The following code example takes into account that the location being passed in was only supplied as a floating point value x/y. We handle this by creating this test point with a GeometryFactory that takes a PrecisionModel argument. The test point will be flagged as having a certain limited precision and all JTS operations will take this into account.
+The following code example takes into account that the location being passed in was only supplied as a floating point value x/y. We handle this by creating this test point with a ``GeometryFactory`` that takes a ``PrecisionModel`` argument. The test point will be flagged as having a certain limited precision and all JTS operations will take this into account.
-There are various ways of specifying a PrecisionModel but here we base it on the number of decimal places to use for coordinate comparisons.::
+There are various ways of specifying a ``PrecisionModel`` but here we base it on the number of decimal places to use for coordinate comparisons.::
private boolean polyContains(Polygon poly, float x, float y, int numDecPlaces) {
double scale = Math.pow(10, numDecPlaces);
@@ -331,7 +331,7 @@ There are various ways of specifying a PrecisionModel but here we base it on the
return poly.contains(testPoint);
}
-You can also define the PrecisionModel using a couple of constants::
+You can also define the ``PrecisionModel`` using a couple of constants::
pm = new PrecisionModel( PrecisionModel.Type.FIXED ); // fixed decimal point
pm = new PrecisionModel( PrecisionModel.Type.FLOATING ); // for Java double
@@ -340,16 +340,16 @@ You can also define the PrecisionModel using a couple of constants::
This is an advanced feature that is not often used.
-CoordinateSequence
-^^^^^^^^^^^^^^^^^^
+``CoordinateSequence``
+^^^^^^^^^^^^^^^^^^^^^^
-You may wish to provide a custom CoordinateSequenceFactory for reasons of efficiency and/or reducing memory use.
+You may wish to provide a custom ``CoordinateSequenceFactory`` for reasons of efficiency and/or reducing memory use.
-Internally Geometry often works with Coordinate[]. However many of the spatial formats used for JTS will store values as a flat double[] or float[] for efficiency. By implementing a CoordinateSequenceFactory GeoTools can teach JTS how to handle the values directly out of a shapefile for example.
+Internally Geometry often works with Coordinate[]. However many of the spatial formats used for JTS will store values as a flat double[] or float[] for efficiency. By implementing a ``CoordinateSequenceFactory`` GeoTools can teach JTS how to handle the values directly out of a shapefile for example.
This is an advanced feature that is not often used.
JTS
^^^
-Some of the code examples used above reference the *JTS* utility class. This class is provided by **gt-main** module; and contains many helpful methods for working with Geometry.
+Some of the code examples used above reference the *JTS* utility class. This class is provided by ``gt-main`` module; and contains many helpful methods for working with Geometry.
diff --git a/docs/user/library/jts/operation.rst b/docs/user/library/jts/operation.rst
index 846fad7a386..87430566541 100644
--- a/docs/user/library/jts/operation.rst
+++ b/docs/user/library/jts/operation.rst
@@ -11,16 +11,16 @@ JTS Geometry operations are used to perform a range of spatial calculations; fro
* Difference
* SymDifference
-The JTS Geometry operations closely follow the simple features for sql specification; so if you have any questions on exactly what is going on please review the related specification.
+The JTS Geometry operations closely follow the simple features for SQL specification; so if you have any questions on exactly what is going on please review the related specification.
Buffer
^^^^^^
-Creates a polygon or multi polygon containing all points within a set distance:
+Creates a polygon or multi polygon containing all points within a set distance::
Geometry buffer = geometry.buffer( 2.0 ); // note distance is in same units as geometry
-Please keep in mind that the buffer is defined using the same distance units as used for your coordinates and is calculated in 2D only. You may wish to transform your geometry, buffer it, and then transform the result back when working in real world units such as DefaultGeographicCRS.WGS84.
+Please keep in mind that the buffer is defined using the same distance units as used for your coordinates and is calculated in 2D only. You may wish to transform your geometry, buffer it, and then transform the result back when working in real world units such as ``DefaultGeographicCRS.WGS84``.
Intersection
^^^^^^^^^^^^
diff --git a/docs/user/library/jts/relate.rst b/docs/user/library/jts/relate.rst
index 519df9ce836..e0c87b99e19 100644
--- a/docs/user/library/jts/relate.rst
+++ b/docs/user/library/jts/relate.rst
@@ -38,10 +38,10 @@ This method will fail if called on an invalid geometry.
return geometry.equalsExact( (Geometry) geometry2 );
- This method is faster than equals( geometry ) and is closer to what normal Java programs assume for a data
+ This method is faster than ``equals(geometry)`` and is closer to what normal Java programs assume for a data
object equals method implementation. We are checking the internal structure; rather than the meaning.
- The equalsExact method is able to function on invalid geometries.
+ The ``equalsExact`` method is able to function on invalid geometries.
* Alternative - Identity Operator
@@ -82,7 +82,7 @@ The geometries only touch edges and do not overlap in any way::
Crosses
^^^^^^^^
-The geometries do more than touch, they actually overlap edges:
+The geometries do more than touch, they actually overlap edges::
return geometryA.crosses( geometry2 );
@@ -112,8 +112,8 @@ The definition of the overlaps relationship is a little bit different than that
Relates
^^^^^^^
-Computes the "DE-9IM Matrix" for two Geometries allowing you to study exactly how they interact with each other.::
+Computes the "DE-9IM Matrix" for two ``Geometries`` allowing you to study exactly how they interact with each other.::
IntersectionMatrix m = a.relate(b);
-The IntersectionMatrix allows you to separately test how the interior, exterior and edges of two geometries interact. All the above operations can be viewed as a summary of this IntersectionMatrix.
+The ``IntersectionMatrix`` allows you to separately test how the interior, exterior and edges of two geometries interact. All the above operations can be viewed as a summary of this ``IntersectionMatrix``.
diff --git a/docs/user/library/jts/snap.rst b/docs/user/library/jts/snap.rst
index 7db2b5750fc..5a6884c8496 100644
--- a/docs/user/library/jts/snap.rst
+++ b/docs/user/library/jts/snap.rst
@@ -22,9 +22,8 @@ To begin, we prompt the user for a shapefile containing line features and connec
:start-after: package org.geotools
:end-before: // load shapefile end
-You might be used to working with shapefiles as a streaming data source, ie. reading features from
-disk as required. Here we optimize things by extracting the line geometries from the features and
-caching them in a JTS SpatialIndex object. This gives us speed in two ways: we have the lines in
+You might be used to working with shapefiles as a streaming data source, i.e. reading features from disk as required. Here we optimize things by extracting the line geometries from the features and
+caching them in a JTS ``SpatialIndex`` object. This gives us speed in two ways: we have the lines in
memory and can search for them efficiently by location:
.. literalinclude:: /../src/main/java/org/geotools/jts/SnapToLine.java
@@ -32,10 +31,7 @@ memory and can search for them efficiently by location:
:start-after: // load shapefile end
:end-before: // cache features end
-Notice that we wrapped each feature's line geometry in a JTS **LocationIndexedLine** object which
-we will use to find the point on a line closest to a reference point. We could have loaded the lines
-directly into the spatial index, but this way we will avoid wrapping each line every time it is
-tested against a point.
+Notice that we wrapped each feature's line geometry in a JTS ``LocationIndexedLine`` object which we will use to find the point on a line closest to a reference point. We could have loaded the lines directly into the spatial index, but this way we will avoid wrapping each line every time it is tested against a point.
Now let's make some pretend point data:
@@ -44,8 +40,7 @@ Now let's make some pretend point data:
:start-after: // cache features end
:end-before: // generate points end
-At last we are ready to snap points. We create a search envelope of fixed size around each point and
-use this to query the lines in the spatial index.
+At last we are ready to snap points. We create a search envelope of fixed size around each point and use this to query the lines in the spatial index.
In case your shapefile is large, we'll set a time limit on how long snapping continues:
@@ -56,7 +51,9 @@ In case your shapefile is large, we'll set a time limit on how long snapping con
You can experiment with this code:
* try some actual roads - using real data makes a difference
-* try using a QuadTree - it is often much slower (but you can add and remove things from a QuadTree at runtime)
-* are you getting whacky results? Check if your geometry.isValid() prior to using it
-* try simplifying the lines prior to creating the LocationIndexedLine - it should be much faster
-* If you are unsure how to do activities listed above consult the "Secrets of JTS" link provided at the top of the page.
+* try using a ``QuadTree`` - it is often much slower (but you can add and remove things from a ``QuadTree`` at runtime)
+* are you getting wacky results? Check if your ``geometry.isValid()`` prior to using it
+* try simplifying the lines prior to creating the ``LocationIndexedLine`` - it should be much faster
+* If you are unsure how to do activities listed above consult the `Secrets of JTS `_ link provided at the top of the page.
+
+
diff --git a/docs/user/library/main/collection.rst b/docs/user/library/main/collection.rst
index 13f81707d4a..5f2916da1cd 100644
--- a/docs/user/library/main/collection.rst
+++ b/docs/user/library/main/collection.rst
@@ -1,22 +1,22 @@
-FeatureCollection
------------------
+``FeatureCollection``
+---------------------
-A **FeatureCollection** is a collection of Features similar to a JDBC **ResultSet**.
+A ``FeatureCollection`` is a collection of Features similar to a JDBC ``ResultSet``.
Overview
^^^^^^^^
-FeatureCollection is similar to a Java Collection. The crucial difference is the
-requirement to close each FeatureIterator after use in order to prevent memory and connection
+``FeatureCollection`` is similar to a Java ``Collection``. The crucial difference is the
+requirement to close each ``FeatureIterator`` after use in order to prevent memory and connection
leaks.
-In addition to the above key requirement, FeatureCollection provides methods to review the
-FeatureType of the members, ask for the bounds (rather than just the size) and so on.
+In addition to the above key requirement, ``FeatureCollection`` provides methods to review the
+``FeatureType`` of the members, ask for the bounds (rather than just the size) and so on.
With this in mind:
-* FeatureCollection is method compatible with java.util.Collection where possible
-* **Iterator** need to be closed.
+* ``FeatureCollection`` is method compatible with ``java.util.Collection`` where possible
+* ``Iterator`` need to be closed.
As provided:
@@ -25,11 +25,11 @@ With this in mind:
:start-after: // exampleIterator start
:end-before: // exampleIterator end
-* All the content is of the same FeatureType as indicated by indicated by::
+* All the content is of the same ``FeatureType`` as indicated by indicated by::
FeatureType type = featureCollection.getSchema();
-* We cannot support the Java 'for each' loop syntax; as we need to be sure to close our iterator().
+* We cannot support the Java 'for each' loop syntax; as we need to be sure to close our ``iterator()``.
* We can support the Java try-with-resource syntax::
@@ -40,7 +40,8 @@ With this in mind:
}
}
-**FeatureCollection**
+``FeatureCollection``
+"""""""""""""""""""""
The interface provides the following methods::
@@ -72,13 +73,14 @@ The interface provides the following methods::
O[] toArray(O[])
}
-**Streaming Results**
+Streaming Results
+'''''''''''''''''
-A FeatureCollection is not an in-memory snapshot of your data (as you might expect), we work with the assumption that GIS data is larger than you can fit into memory.
+A ``FeatureCollection`` is not an in-memory snapshot of your data (as you might expect), we work with the assumption that GIS data is larger than you can fit into memory.
-Most implementations of FeatureCollection provide a memory footprint close to zero and each time you access the data will be loaded as you use it.
+Most implementations of ``FeatureCollection`` provide a memory footprint close to zero and each time you access the data will be loaded as you use it.
-Please note that you should not treat a FeatureCollection as a normal in-memory Java collection - these are heavyweight objects and we must ask you to close any iterators you open.::
+Please note that you should not treat a ``FeatureCollection`` as a normal in-memory Java collection - these are heavyweight objects and we must ask you to close any iterators you open.::
FeatureIterator iterator = featureCollection.features();
try {
@@ -91,7 +93,7 @@ Please note that you should not treat a FeatureCollection as a normal in-memory
iterator.close();
}
-We ask that you treat interaction with FeatureCollection as a ResultSet carefully closing each object
+We ask that you treat interaction with ``FeatureCollection`` as a ``ResultSet`` carefully closing each object
when you are done with it.
In Java 7 this becomes easier with the try-with-resource syntax::
@@ -103,10 +105,10 @@ In Java 7 this becomes easier with the try-with-resource syntax::
}
}
-SimpleFeatureCollection
-^^^^^^^^^^^^^^^^^^^^^^^
+``SimpleFeatureCollection``
+'''''''''''''''''''''''''''
-Because Java Generics (ie and ) are a little hard to read we introduced SimpleFeatureCollection to cover the common case::
+Because Java Generics (i.e. ```` and ````) are a little hard to read we introduced ``SimpleFeatureCollection`` to cover the common case::
public interface SimpleFeatureCollection extends FeatureCollection {
// feature access - close when done!
@@ -136,17 +138,17 @@ Because Java Generics (ie and ) are a little hard to read we introduced S
}
This SimpleFeatureCollection interface is just syntactic sugar to avoid typing in
-FeatureCollection all the time. If you need to
-safely convert you can use the DataUtilities.simple method::
+``FeatureCollection`` all the time. If you need to
+safely convert you can use the ``DataUtilities.simple`` method::
SimpleFeatureCollection simpleCollection = DataUtilities.simple(collection);
-Creating a FeatureCollection is usually done for you as a result of a query, although we do have a number of implementations you can work with directly.
+Creating a ``FeatureCollection`` is usually done for you as a result of a query, although we do have a number of implementations you can work with directly.
From DataStore
''''''''''''''
-The most common thing to do is grab a FeatureCollection from a file or service.::
+The most common thing to do is grab a ``FeatureCollection`` from a file or service.::
File file = new File("example.shp");
Map map = new HashMap();
@@ -157,22 +159,22 @@ The most common thing to do is grab a FeatureCollection from a file or service.:
SimpleFeatureCollection collection = featureSource.getFeatures();
Please be aware that this is not a copy - the SimpleFeatureCollection above should be
-considered to be the same thing as the "example.shp". Changes made to the collection
+considered to be the same thing as the ``example.shp``. Changes made to the collection
will be written out to the shapefile.
* Using a Query to order your Attributes
Occasionally you will want to specify the exact order in which your attributes are
- presented to you, or even leave some attributes out altogether.
+ presented to you, or even leave some attributes out altogether.::
Query query = new Query( typeName, filter);
query.setPropertyNames( "geom", "name" );
SimpleFeatureCollection sorted = source.getFeatures(query);
- Please note that the resulting SimpleFeatureCollection.getSchema() will not match
- SimpleFeatureSource.getFeatureType(), since the attributes will now be limited to (and in the order) specified.
+ Please note that the resulting ``SimpleFeatureCollection.getSchema()`` will not match
+ ``SimpleFeatureSource.getFeatureType()``, since the attributes will now be limited to (and in the order) specified.
-* Using a Query to Sort a SimpleFeatureCollection
+* Using a ``Query`` to Sort a ``SimpleFeatureCollection``
Sorting is available::
@@ -189,8 +191,7 @@ will be written out to the shapefile.
SimpleFeatureCollection collection = myFeatureSource.getFeatures();
SimpleFeatureCollection memory = DataUtilities.collection( collection );
- However as mentioned above this will be using the default TreeSet based feature collection implementation
- and will not be fast. How not fast? Well your shapefile access on disk may be faster (since it has a spatial index).
+ However as mentioned above this will be using the default ``TreeSet`` based feature collection implementation and will not be fast. How not fast? Well your shapefile access on disk may be faster (since it has a spatial index).
DefaultFeatureCollection
@@ -198,9 +199,9 @@ DefaultFeatureCollection
GeoTools provides a default implementation of feature collection that can be used to gather up your features in memory; prior to writing them out to a DataStore.
-This default implementation of SimpleFeatureCollection uses a TreeMap sorted by FeatureId; so it does not offer very fast performance.
+This default implementation of ``SimpleFeatureCollection`` uses a ``TreeMap`` sorted by ``FeatureId``; so it does not offer very fast performance.
-To create a new DefaultFeatureCollection::
+To create a new ``DefaultFeatureCollection``::
DefaultFeatureCollection featureCollection = new DefaultFeatureCollection();
@@ -208,7 +209,7 @@ You can also create your collection with an "id", which will can be used as a ha
DefaultFeatureCollection featureCollection = new DefaultFeatureCollection("internal");
-You can create new features and add them to this FeatureCollection as needed::
+You can create new features and add them to this ``FeatureCollection`` as needed::
SimpleFeatureType TYPE = DataUtilities.createType("location","geom:Point,name:String");
@@ -221,32 +222,32 @@ You can create new features and add them to this FeatureCollection as needed::
To FeatureSource
''''''''''''''''
-You often need to "wrap" up your FeatureCollection as a feature source in order to make effective use of it (SimpleFeatureSource supports the ability to query the contents, and can be used in a MapLayer for rendering).::
+You often need to "wrap" up your ``FeatureCollection`` as a feature source in order to make effective use of it (``SimpleFeatureSource`` supports the ability to query the contents, and can be used in a ``MapLayer`` for rendering).::
SimpleFeatureSource source = DataUtilities.source( collection );
Existing Content
''''''''''''''''
-The DataUtilities class has methods to create a feature collection from a range of sources:
+The ``DataUtilities`` class has methods to create a feature collection from a range of sources:
-* DataUtilities.collection(FeatureCollection)
-* DataUtilities.collection(FeatureReader)
-* DataUtilities.collection(List)
-* DataUtilities.collection(SimpleFeature)
-* DataUtilities.collection(SimpleFeature[])
-* DataUtilities.collection(SimpleFeatureIterator)
+* ``DataUtilities.collection(FeatureCollection)``
+* ``DataUtilities.collection(FeatureReader)``
+* ``DataUtilities.collection(List)``
+* ``DataUtilities.collection(SimpleFeature)``
+* ``DataUtilities.collection(SimpleFeature[])``
+* ``DataUtilities.collection(SimpleFeatureIterator)``
For more information see :doc:`data`.
Performance Options
'''''''''''''''''''
-For GeoTools 2.7 we are making available a couple new implementations of FeatureCollection.
+For GeoTools 2.7 we are making available a couple new implementations of ``FeatureCollection``.
These implementations of SimpleFeatureCollection will each offer different performance characteristics:
-* TreeSetFeatureCollection: the traditional TreeSet implementation used
+* ``TreeSetFeatureCollection``: the traditional ``TreeSet`` implementation used
by default.
Note this does not perform well with spatial queries as the contents are
@@ -256,22 +257,22 @@ These implementations of SimpleFeatureCollection will each offer different perfo
content on disk (even down to duplicating the content it gives you in
order to prevent any trouble if another thread makes a modification).
- DataUtilities.source( featureCollection ) will wrap
- TreeSetFeatureCollection in a CollectionFeatureSource.
+ ``DataUtilities.source(featureCollection)`` will wrap
+ ``TreeSetFeatureCollection`` in a ``CollectionFeatureSource``.
-* ListFeatureCollection: uses a list to hold contents; please be sure
+* ``ListFeatureCollection``: uses a list to hold contents; please be sure
not to have more then one feature with the same id.
The benefit here is being able to wrap a List you already have up as
- a FeatureCollection without copying the contents over one at a time.
+ a ``FeatureCollection`` without copying the contents over one at a time.
The result does not perform well as the contents are not indexed in anyway
(either by a spatial index, or by feature id).
- DataUtilities.source( featureCollection ) will wrap
- ListFeatureCollection in a CollectionFeatureSource.
+ ``DataUtilities.source(featureCollection)`` will wrap
+ ``ListFeatureCollection`` in a ``CollectionFeatureSource``.
- Here is an example using the ListFeatureCollection::
+ Here is an example using the ``ListFeatureCollection``::
SimpleFeatureType TYPE = DataUtilities.createType("location","geom:Point,name:String");
WKTReader2 wkt = new WKTReader2();
@@ -287,20 +288,20 @@ These implementations of SimpleFeatureCollection will each offer different perfo
SimpleFeatureCollection features = source.getFeatures( filter );
Please keep in mind that the original list is being used by the
- ListFeatureCollection; so the contents will not be copied making
+ ``ListFeatureCollection``; so the contents will not be copied making
this a lean solution for getting your features bundled up. The flip
- side is that you should use the FeatureCollection methods to modify the
+ side is that you should use the ``FeatureCollection`` methods to modify the
contents after creation (so it can update the bounds).
-* SpatialIndexFeatureCollection: uses a spatial index to hold on to
- contents for fast visual display in a MapLayer; you cannot add more
+* ``SpatialIndexFeatureCollection``: uses a spatial index to hold on to
+ contents for fast visual display in a ``MapLayer``; you cannot add more
content to this feature collection once it is used
- DataUtilities.source( featureCollection ) will wrap
- SpatialIndexFeatureCollection in a SpatialIndexFeatureSource
+ ``DataUtilities.source(featureCollection)`` will wrap
+ ``SpatialIndexFeatureCollection`` in a ``SpatialIndexFeatureSource``
that is able to take advantage of the spatial index.
- Here is an example using the SpatialIndexFeatureCollection::
+ Here is an example using the ``SpatialIndexFeatureCollection``::
final SimpleFeatureType TYPE = DataUtilities.createType("location","geom:Point,name:String");
WKTReader2 wkt = new WKTReader2();
@@ -313,25 +314,25 @@ These implementations of SimpleFeatureCollection will each offer different perfo
SimpleFeatureSource source = DataUtilities.source( collection );
SimpleFeatureCollection features = source.getFeatures( filter );
- The SpatialIndexFeatureCollection is fast, but tricky to use. It will store the
- features itself, using a JTS STRtree spatial index. This means the contents of
+ The ``SpatialIndexFeatureCollection`` is fast, but tricky to use. It will store the
+ features itself, using a JTS ``STRtree`` spatial index. This means the contents of
the feature collection cannot be modified after the index set up, and the index
is set up the first time you query the collection (asking for size, bounds, or
pretty much anything other then add ).
- To get the full benefit you need to use SimpleFeatureSource as shown above; it
+ To get the full benefit you need to use ``SimpleFeatureSource`` as shown above; it
will make use of the spatial index when performing a filter.
Contents
^^^^^^^^
-A SimpleFeatureCollection method compatible with Java Collection; this
+A ``SimpleFeatureCollection`` method compatible with Java ``Collection``; this
means that an Iterator is available for you to to access the contents.
However you will need to close your iterator after use; so that any resources (such as database connections) are returned.
Direct
-''''''
+^^^^^^
The following lists several ways of reading data so you can choose the approach that suites you your needs. You may
find the use of **Iterator** comfortable (but a bit troubling with try/catch code needed to close the iterator).
@@ -339,7 +340,7 @@ find the use of **Iterator** comfortable (but a bit troubling with try/catch cod
extreme **FeatureReader** makes all the error messages visible requiring a lot of try/catch code. Finally we
have **FeatureIterator** when working on Java 1.4 code before generics were available.
-* Using FeatureIterator
+* Using ``FeatureIterator``
Use of iterator is straight forward; with the addition of a try/finally statement to
ensure the iterator is closed after use.::
@@ -361,9 +362,9 @@ have **FeatureIterator** when working on Java 1.4 code before generics were avai
* Invalid Data
Currently GeoTools follows a "fail first" policy; that is if the data does not exactly
- meet the requirements of the SimpleFeatureType a RuntimeException will be thrown.
+ meet the requirements of the ``SimpleFeatureType`` a ``RuntimeException`` will be thrown.
- However often you may in want to just "skip" the troubled Feature and carry on; very few datasets are perfect.::
+ However often you may in want to just "skip" the troubled Feature and carry on; very few data sets are perfect.::
SimpleFeatureCollection featureCollection = featureSource.getFeatures(filter);
FeatureIterator iterator = null;
@@ -390,11 +391,11 @@ have **FeatureIterator** when working on Java 1.4 code before generics were avai
System.out.println("Read "+count + "features, with "+problems+" failures");
}
- Individual DataStores may be able to work with your data as it exists (invalid or not).
+ Individual ``DataStores`` may be able to work with your data as it exists (invalid or not).
-* Use of FeatureVisitor
+* Use of ``FeatureVisitor``
- FeatureVisitor lets you traverse a FeatureCollection with less try/catch/finally boilerplate code.::
+ ``FeatureVisitor`` lets you traverse a ``FeatureCollection`` with less try/catch/finally boilerplate code.::
CoordinateReferenceSystem crs = features.getMemberType().getCRS();
final BoundingBox bounds = new ReferencedEnvelope( crs );
@@ -407,9 +408,9 @@ have **FeatureIterator** when working on Java 1.4 code before generics were avai
You do not have to worry about exceptions, open or closing iterators and as an added bonus this may even be faster (depending on the number of cores you have available).
-* Comparison with SimpleFeatureReader
+* Comparison with ``SimpleFeatureReader``
- SimpleFeatureReader is a "low level" version of Iterator that is willing to throw IOExceptions,
+ ``SimpleFeatureReader`` is a "low level" version of Iterator that is willing to throw ``IOExceptions``,
it is a little bit more difficult to use but you may find the extra level of detail worth it.::
SimpleFeatureReader reader = null;
@@ -436,36 +437,35 @@ have **FeatureIterator** when working on Java 1.4 code before generics were avai
}
Aggregate Functions
-'''''''''''''''''''
+^^^^^^^^^^^^^^^^^^^
-One step up from direct access is the use of an "aggregate" function that works on the entire FeatureCollection
-to build you a summary.
+One step up from direct access is the use of an "aggregate" function that works on the entire ``FeatureCollection`` to build you a summary.
Traditionally functions that work on a collection are called "aggregate functions".
-In the world of databases and SQL these functions include "min", "max", "average" and "count". GeoTools supports
+In the world of databases and SQL these functions include ``min``, ``max``, ``average`` and ``count``. GeoTools supports
these basic concepts, and a few additions such as bounding box or unique values.
-Internally these functions are implemented as a FeatureVisitor; and are often optimised into raw SQL on supporting DataStores.
+Internally these functions are implemented as a ``FeatureVisitor``; and are often optimized into raw SQL on supporting ``DataStores``.
Here are the aggregate functions that ship with GeoTools at the time of writing. For the authoritative list check javadocs.
====================== ========================== ============================================
Function Visitor Notes
====================== ========================== ============================================
-Collection_Average AverageVisitor
-Collection_Bounds BoundsVisitor Should be the same as getBounds()
-Collection_Count CountVisitor Should be the same as size()
-Collection_Max MaxVisitor With respect to comparable sort order
-Collection_Median MedianVisitor With respect to comparable sort order
-Collection_Min MinVisitor With respect to comparable sort order
-Collection_Nearest NearestVisitor Nearest value to the provided one
-Collection_Sum SumVisitor Restricted to Numeric content
-Collection_Unique UniqueVisitor Set