This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/sis-site.git
The following commit(s) were added to refs/heads/main by this push:
new 3c3a649b Review the web site for SIS 1.5 release.
3c3a649b is described below
commit 3c3a649b09b2d81d86d06f0faaa2ec1bb0ce466c
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Sun Sep 28 16:53:40 2025 +0200
Review the web site for SIS 1.5 release.
---
content/_index.md | 14 +-
content/code-patterns.md | 88 +---------
content/coding-conventions.md | 193 ++++++++++++++-------
.../developer-guide/introduction/Installation.html | 2 +-
content/documentation.md | 10 +-
content/downloads.md | 15 +-
content/formats.md | 21 ++-
content/howto/crs_equality.md | 15 +-
content/howto/instantiate_utm_projection.md | 5 +-
content/javafx.md | 9 +-
content/standards.md | 9 +-
static/sis.css | 2 +-
12 files changed, 188 insertions(+), 195 deletions(-)
diff --git a/content/_index.md b/content/_index.md
index f2d09a3f..b26555be 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -9,8 +9,10 @@ The library is provided under [Apache 2
license](https://www.apache.org/licenses
The SIS metadata module enables the creation of metadata objects
which comply with the model of {{% OGC %}}/{{% ISO %}} international standards.
-The SIS referencing module enables the construction of data structures for
coordinate reference system definitions,
-along with the associated operations which enable the transformation of
coordinates between different systems of reference.
+The SIS referencing module enables the construction of data structures for
+[coordinate reference system
definitions](tables/CoordinateReferenceSystems.html),
+along with the [associated operations](tables/CoordinateOperationMethods.html)
+which enable the transformation of coordinates between different systems of
reference.
The SIS storage modules provide a common approach to the reading and writing
of metadata, features and coverages
applicable to simple imagery as to many dimensional data structures.
SIS provides processing functions such as multi-threaded rasters reprojection
and isolines computation from raster data.
@@ -44,7 +46,7 @@ The API and the data encodings follow [international
standards](standards.html)
* Read and write Well Known Text (WKT) version 1 and 2 (ISO 19162).
* Read and write [Geographic Markup Language][GML] (GML) version 3.2 (ISO
19136).
* Use [EPSG geodetic dataset](epsg.html) for geodetic definitions and for
coordinate operations.
- * More than 6000 [supported coordinate reference
systems](tables/CoordinateReferenceSystems.html).
+ * More than 8000 [supported coordinate reference
systems](tables/CoordinateReferenceSystems.html).
* Mercator, Transverse Mercator, Lambert Conic Conformal, stereographic
and more [supported operation
methods](tables/CoordinateOperationMethods.html).
* Referencing by identifiers (ISO 19112):
@@ -60,12 +62,12 @@ The API and the data encodings follow [international
standards](standards.html)
# Using Apache SIS {#using}
-The latest SIS release is {{% version %}}, released in October 2023,
+The latest SIS release is {{% version %}}, released in October 2025,
and can be [downloaded](downloads.html) as a `zip` files or as Maven
dependencies.
The EPSG geodetic dataset is optional for licensing reasons, but recommended.
EPSG database installation is [described in a separated page](epsg.html).
This Apache SIS version requires Java 11 or later and uses the Java Platform
Module System (JPMS).
-Consequently applications should declare SIS JAR files on their module-path
rather than their class-path,
+Applications should declare SIS JAR files on their module-path rather than
their class-path,
but a compatibility mechanism makes possible to nevertheless use SIS on the
class-path.
Note that this class-path compatibility may be removed in future versions.
@@ -73,7 +75,7 @@ Apache {{% SIS %}} is a Java library for use by other
applications.
Leveraging the full SIS capabilities or getting the best performance require
that users write their own applications on top of SIS.
The [developer guide](book/en/developer-guide.html), [online
Javadoc](apidocs/index.html) and [recommended code
patterns](code-patterns.html) page
provide instructions about developing with SIS.
-However a [command-line tool](command-line.html) and a [JavaFX
application](javafx.html)
+A [command-line tool](command-line.html) and a [JavaFX
application](javafx.html)
are also provided for allowing users to experiment some SIS functionalities
before writing code.
diff --git a/content/code-patterns.md b/content/code-patterns.md
index d6d168e6..df61e025 100644
--- a/content/code-patterns.md
+++ b/content/code-patterns.md
@@ -1,8 +1,9 @@
---
-title: Recommended code patterns
+title: Recommended code patterns for SIS users
---
-This page lists some recommended code pattern for developing or using Apache
{{% SIS %}}.
+This page lists some recommended code pattern for using Apache {{% SIS %}}.
+Coding conventions for {{% SIS %}} developers are in [a separated
page](coding-conventions.html).
{{< toc >}}
@@ -11,8 +12,6 @@ This page lists some recommended code pattern for developing
or using Apache {{%
# Referencing {#referencing}
-This section lists recommended code pattern when using or developing the
`sis-referencing` module.
-
## Never explicitly swap coordinates for axis order {#axisOrder}
The [axis order issue](faq.html#axisOrder) causes lot of confusion,
@@ -29,8 +28,6 @@ and let the referencing engine performs the conversion from
the source to the ta
# Rasters and coverages {#coverage}
-This section lists recommended code pattern when using or developing the
`sis-coverage` module.
-
## Georeference images with affine transforms, _not_ bounding boxes
{#gridToCRS}
Many users define the geographic extent of an image by its corner locations.
@@ -53,8 +50,6 @@ Furthermore changes in pixel values may be lost if {@code
releaseWritableTile(
# International {#international}
-This section lists recommended code pattern for internationalization.
-
## Specify timezone {#timezone}
Geospatial data often cover a wide geographic area, spanning many time zones.
@@ -64,8 +59,8 @@ Some Apache {{% SIS %}} objects have `Locale` and `TimeZone`
information.
Such locale and timezone are given to `java.text.DateFormat` or
`java.util.Calendar` constructors among others.
When reading dates or timestamps from a {{% JDBC %}} database,
-always use the `ResultSet` method accepting a `Calendar` argument, when such
method is available.
-For example prefer the `getTimestamp(int, Calendar)` method instead of
`getTimestamp(int)`.
+consider using a `ResultSet` method accepting a `Calendar` argument when such
method is available.
+For example, prefer the `getTimestamp(int, Calendar)` method instead of
`getTimestamp(int)`.
The `Calendar` object should has been created with the appropriate timezone.
## Replace underscores by spaces before sorting {#sort}
@@ -91,76 +86,3 @@ for (int i=0; i<string.length();) {
i += Character.charCount(c);
}
```
-
-
-
-
-# Logging {#logging}
-
-Apache {{% SIS %}} uses the `java.util.logging` framework.
-It does not necessarily mean that all SIS users are forced to use this
framework,
-as it is possible to use `java.util.logging` as an API and have logging
redirected to another system.
-For example, the logging can be redirect to SLF4J by adding the `jul-to-slf4j`
dependency to a project.
-
-The logger names are usually the package name of the class emitting log
messages, but not necessarily.
-In particular, we do not follow this convention if the class is located in an
internal package
-(`org.apache.sis.internal.*`) since those packages are considered private.
-In such cases, the logger name should be the package name of the public class
invoking the internal method.
-The reason for that rule is that logger names are considered part of the
public API,
-since developers use them for configuring their logging (verbosity,
destination, <i>etc.</i>).
-
-All logging at `Level.INFO` or above shall be targeted to users or
administrators, not to developers.
-In particular `Level.SEVERE` shall be reserved for critical errors that
compromise the application stability —
-it shall not be used for exceptions thrown while parsing user data (file or
database).
-
-
-
-
-# Compiler warnings {#warnings}
-
-When a local variable in a method has the same name as a field in the
enclosing class,
-some compilers emit a _"Local variable hides a field"_ warning.
-This warning can be disabled with a
`@SuppressWarnings("LocalVariableHidesMemberVariable")` annotation.
-However, by convention Apache SIS applies this annotation only when the local
variable should have the same value as the field.
-Otherwise, the warning should be resolved by renaming a variable.
-When a code hides a field, it should be a statement such as
-`final Foo foo = this.foo;` or `final Foo foo = getFoo();` and may exist for
the following reasons:
-
-* `this.foo` is non-final and the developer wants to make sure that the field
is not modified by accident in the method.
-* `this.foo` is a volatile field, therefore should be read only once and
cached in the method for performance reasons.
-* `getFoo()` computes the value of `this.foo` lazily.
-
-
-
-
-# Imports order {#imports}
-
-There is currently no strict rule about the order of `import` statements in
Apache SIS code base, except one:
-if a class is different in the `main`, `geoapi-3.1` and `geoapi-4.0` branches,
and if those differences imply
-different import statements, then the imports that are different should be
grouped last with a comment.
-Example:
-
-```java
-// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.filter.Filter;
-import org.opengis.filter.Expression;
-```
-
-The purpose is to reduce the number of conflicts during the merges between
branches.
-
-
-
-
-# Javadoc {#javadoc}
-
-Javadoc comments are written in HTML, not Markdown, both for historical
reasons and because HTML allows richer semantic.
-For example, for formatting a text in italic, the Javadoc should choose the
most appropriate of the following tags:
-
-* `<em>` for emphasis. A screen reader may pronounce the words using verbal
stress.
-* `<var>` for a variable to show like a mathematical symbol.
-* `<dfn>` for introducing a word defined by the nearby sentences.
-* `<cite>` for the title of a document, in particular an OGC/ISO standard.
- Apache SIS uses also this tag for the name of a geodetic object in the EPSG
geodetic database,
- in which case the object definition is considered as a document.
- This tag can also be used for section titles.
-* `<i>` for rendering in italic for any reason other than the above reasons.
diff --git a/content/coding-conventions.md b/content/coding-conventions.md
index 69001368..9cd9b3c3 100644
--- a/content/coding-conventions.md
+++ b/content/coding-conventions.md
@@ -1,11 +1,15 @@
---
-title: Coding conventions
+title: Coding conventions for SIS developers
---
This page describes some coding conventions applied in Apache {{% SIS %}}
development.
+Note that the [recommended code patterns for SIS users](code-patterns.html)
apply also to {{% SIS %}} development.
{{< toc >}}
+
+
+
# License header {#license}
All Java source files (`*.java`) shall begin with the current ASF license
header as described in [ASF Source Header][srcheaders].
@@ -18,9 +22,30 @@ as below:
# Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.
```
+
+
+
+# Public API {#public-api}
+
+The public API is made of all public types in all exported packages,
+i.e. packages declared in non-qualified `exports` statements in the
`module-info.java` file.
+All other classes are for SIS usage only and may change without warning in any
future release.
+Those classes are excluded from Javadoc and normally not accessible to users.
+Contrarily to previous SIS versions, there is no longer any particular naming
convention for internal package.
+They may or may not have `internal` in their name.
+
+## Substitution for non-available JDK classes {#substitutions}
+
+When using a JDK 12+ class that does not exist on JDK 11, define a class such
as `JDK12` in
+the `org.apache.sis.pending.jdk` package with the minimal amount of needed
functionalities,
+provided that it can be done with reasonable effort.
+This packages is internal (non-exported).
+
+
+
+
# Naming convention {#naming}
-Classes that do not implement an interface are usually not prefixed, even if
abstract.
Classes implementing GeoAPI interfaces usually (but not always) begin with
`Abstract`, `Default`, `Simple` or `General` prefix.
* The `Abstract` prefix is used when a class is abstract according {{% ISO %}}
specifications — it may or may not be be abstract in the Java sense.
@@ -31,28 +56,17 @@ Classes implementing GeoAPI interfaces usually (but not
always) begin with `Abst
Example: the `GeneralEnvelope` class is an implementation of `Envelope`
interface for the multi-dimensional case.
The `Envelope2D` class is another implementation of the same interface
specialized for the two-dimensional case.
-## Internal packages {#internal}
+Member fields do not have any particular prefix (no `m_` prefix).
-The public API is made of all public classes in all exported packages,
-i.e. packages declared in non-qualified `exports` statements in the
`module-info.java` file.
-All other classes are for SIS usage only and may change without warning in any
future release.
-Those classes are excluded from Javadoc and normally not accessible to users.
-Contrarily to previous SIS versions, there is no longer any particular
convention for internal package names.
-They may or may not have `internal` in their name.
-### Substitution for non-existent classes {#substitutions}
-When using a JDK 12+ class that does not exist on JDK 11, define a class of
the same name in a
-`org.apache.sis.pending.jdk` sub-package with the minimal amount of needed
functionalities,
-provided that it can be done with reasonable effort.
-Those packages are internal (non-exported).
# Code formatting {#formatting}
-Apache {{% SIS %}} uses the standard Java conventions, except for the 80
characters line length restriction.
-The conventions listed below are guidelines. Some exceptions to those
conventions can occur but should
-be rare (see [exceptions to coding conventions](#tabular-formatting)).
-
+Apache {{% SIS %}} uses the standard Java conventions,
+except the 80 characters line length restriction which is relaxed.
+The conventions listed below are guidelines.
+Some [exceptions to coding conventions](#tabular-formatting) can occur but
should be rare.
For making merges between branches easier, refrain from doing massive code
reformatting unless:
* the modified files do not yet exist on the other branches;
@@ -61,9 +75,10 @@ For making merges between branches easier, refrain from
doing massive code refor
## Import statements {#imports}
-Isolate at the end of the imports section any import statements that are
specific to a platform.
-This separation allows any branch to re-arrange the common import statements
without generating
-conflicts with the platform-dependent import statements. Example:
+There is currently no strict rule about the order of `import` statements in
Apache SIS code base, except one:
+if a class is different in the `main`, `geoapi-3.1` and `geoapi-4.0` branches,
and if those differences imply
+different import statements, then the imports that are different should be
grouped last with a comment.
+Example:
```java
import java.io.File;
@@ -71,40 +86,37 @@ import java.util.List;
import org.opengis.metadata.Metadata;
// Specific to the geoapi-3.1 and geoapi-4.0 branches:
-import org.opengis.feature.Feature;
+import org.opengis.filter.Filter;
+import org.opengis.filter.Expression;
```
+The purpose is to reduce the number of conflicts during the merges between
branches.
The import statements can be rearranged automatically by the
`ReorganizeImports` class in `buildSrc`.
This tool requires checkouts of all three branches (`main`, `geoapi-3.1` and
`geoapi-4.0`) in order
to identify which imports are branch-specific.
-## Spaces and line length {#spaces}
+## Spaces, brackets and keywords {#spaces}
-* **Indentation:** Use a consistent space indents and never use tabs.
- + Use 4 space indents for Java files.
+* **Indentation:**
+ + Use 4 space indents (not tab) for Java files.
+ Use 2 space indents for XML files, because {{% ISO %}}/{{% OGC %}} {{% XML
%}} schemas tend to have a very deep structure.
-* **Space after keyword:** Put a space after `if`, `else`, `for`, `try`,
`catch` and similar keywords
- (not after method names).
-* **Trailing Whitespaces:** Remove all trailing whitespaces.
- + Eclipse users can use the _Source_ - _Cleanup_ option to accomplish this.
- + NetBeans users can use the use the _Source_ - _Remove trailing spaces_ on
a file-by-file basis,
- or set the _Preferences_ - _Editor_ - _On Save_ - _Remove trailing
whitespaces_ option.
-* **Line wrapping:** Use 120-column line width for Java code and Javadoc.
- Some exceptions to this rule may exist for preserving tabular structures,
but should be rare.
-
-## Brackets {#brackets}
-
-* **Curly brackets:** The `{` and `}` brackets are mandatory for `if`, `else`,
`while` and other blocks,
- except if the instruction after the keyword is on the same line (e.g. `else
if`).
-
-## Member declarations {#declarations}
-
-* Class, method and field declarations shall use the keywords in the following
order.
- This is known as the "customary order" in the [Java Language
Specification][JLS-order]:
- + `public`, `protected` or `private`,
- + `abstract` or `static`,
- + `final`.
-* Member fields do not have any particular prefix (no `m_` prefix).
+* **Spaces:**
+ * Put a space after `if`, `else`, `for`, `try`, `catch` and similar keywords
(not after method names).
+ * Remove all trailing whitespaces at the end of lines.
+ + Eclipse users can use the _Source_ - _Cleanup_ option to accomplish this.
+ + NetBeans users can use the use the _Source_ - _Remove trailing spaces_
on a file-by-file basis,
+ or set the _Preferences_ - _Editor_ - _On Save_ - _Remove trailing
whitespaces_ option.
+* **Line wrapping:**
+ * Use 120-column line width for Java code and Javadoc.
+ * Some exceptions to above rule may exist for preserving tabular structures,
but should be rare.
+* **Curly brackets:**
+ * The `{` and `}` brackets are mandatory for `if`, `else`, `while` and other
blocks,
+ except if the instruction after the keyword is on the same line (e.g.
`else if`).
+* **Member declarations:**
+ * Keywords should appear in the "customary order" of the [Java Language
Specification][JLS-order]:
+ `public`, `protected` or `private`, then `abstract` or `static`, finally
`final`.
+ * The `var` keyword should be used only if the type is obvious on the same
line,
+ e.g. before a `new` statement or a cast.
## Exceptions to coding conventions {#tabular-formatting}
@@ -120,14 +132,22 @@ if (y < ymin) ymin = y;
if (y > ymax) ymax = y;
```
+The `var` keyword may also be used aven when the type is not obvious if doing
so simplify merges between branches.
+For example, a method returning `Feature` on the GeoAPI 3.1 branch may return
`AbstractFeature` on the GeoAPI 3.0 branch.
The decision to use standard or tabular format is made on a case-by-case basis.
Of course, tabular format shall not be abused.
+
+
+
# Documentation formatting {#javadoc}
-Apache {{% SIS %}} uses the standard Javadoc conventions, except for the 80
characters line length restriction.
-Javadoc lines should not exceed 120 characters, but exceptions to this rule
may exist for preserving the
-structure of `<table>` elements.
+Javadoc comments are written in HTML, not Markdown,
+both for historical reasons and because HTML allows richer semantic.
+Apache {{% SIS %}} uses the standard Javadoc conventions,
+except for the 80 characters line length restriction which is relaxed.
+Javadoc lines should not exceed 120 characters,
+but exceptions to this rule may exist for preserving the structure of
`<table>` elements.
## Javadoc annotations {#javadoc-tags}
@@ -139,14 +159,6 @@ SIS uses standard javadoc annotations. The meaning of some
tags are refined as b
A separated `@author` tag is added for each developer.
The intent is to allow other developers to know to who to ask questions if
needed.
-In addition, the Java code in `buildSrc` provides the following custom javadoc
taglets:
-
-Javadoc tag | Description
--------------- |
-------------------------------------------------------------------------------------------
-`{@include}` | Include the content of a given HTML file below a `<h2>`
section having the given title.
-
-### Where to use @since and @version tags {#since-tag}
-
The `@since` and `@version` Javadoc tags should be used only on classes,
interfaces, enumerations, methods or fields
that are part of public API. They should not be put on package-private classes
or classes in non-exported packages.
The reason is that non-public classes can be moved, splitted or merged without
warning,
@@ -154,6 +166,12 @@ which gives confusing meaning to the `@since` tag.
Furthermore, restricting the use of those tags to public API is also a way to
remind developers
that the class that they are editing is part of public API, so
backward-compatibility concerns apply.
+In addition, the Java code in `buildSrc` provides the following custom javadoc
taglets:
+
+Javadoc tag | Description
+-------------- |
-------------------------------------------------------------------------------------------
+`{@include}` | Include the content of a given HTML file below a `<h2>`
section having the given title.
+
## HTML elements {#html}
HTML tags and entities shall be used only when there is no equivalent Javadoc
tag.
@@ -163,6 +181,18 @@ For example:
* Instead of "`a < b < c`", use "`{@literal a < b < c}`".
* Instead of "`<pre>Foo</pre>`" for a Java listing, use "`{@snippet lang=java
: Foo}`".
+When many HTML tags produce the same visual effect, choose the one with proper
semantic.
+For example, for formatting a text in italic, choose the most appropriate of
the following tags:
+
+* `<em>` for emphasis. A screen reader may pronounce the words using verbal
stress.
+* `<var>` for a variable to show like a mathematical symbol.
+* `<dfn>` for introducing a word defined by the nearby sentences.
+* `<cite>` for the title of a document, in particular an OGC/ISO standard.
+ Apache SIS uses also this tag for the name of a geodetic object in the EPSG
geodetic database,
+ in which case the object definition is considered as a document.
+ This tag can also be used for section titles.
+* `<i>` for rendering in italic for any reason other than the above reasons.
+
### Paragraphs {#paragraph}
Usages of the `<p>` tag should be relatively rare, since we use CSS styles
(see below)
@@ -206,6 +236,53 @@ Internet Explorer users need to [install a
plugin][mathml-plugin-ie].
Firefox users can optionally install the [fonts for Mozilla's MathML
engine][mathml-fonts] for better results.
Note that a [JavaScript display engine][mathml-mathjax] is available for all
browsers, but not yet used by SIS.
+
+
+
+# Compiler warnings {#warnings}
+
+When a local variable in a method has the same name as a field in the
enclosing class,
+some compilers emit a _"Local variable hides a field"_ warning.
+This warning can be disabled with a `@SuppressWarnings` annotation.
+However, by convention Apache SIS applies this annotation only when the local
variable should have the same value as the field.
+Otherwise, the warning should be resolved by renaming a variable.
+When a code hides a field, it should be a statement such as:
+
+```java
+@SuppressWarnings("LocalVariableHidesMemberVariable")
+final Foo foo = this.foo; // May also be `getFoo()`
+```
+
+Those statements may exist for the following reasons:
+
+* `this.foo` is non-final and the developer wants to make sure that the field
is not modified by accident in the method.
+* `this.foo` is a volatile field, therefore should be read only once and
cached in the method for performance reasons.
+* `getFoo()` computes the value of `this.foo` lazily.
+
+
+
+
+# Logging {#logging}
+
+Apache {{% SIS %}} uses the `java.util.logging` framework.
+It does not necessarily mean that all SIS users are forced to use this
framework,
+as it is possible to use `java.util.logging` as an API and have logging
redirected to another system.
+For example, the logging can be redirect to SLF4J by adding the `jul-to-slf4j`
dependency to a project.
+
+The logger names are usually the package name of the class emitting log
messages, but not necessarily.
+In particular, we do not follow this convention if the class is located in an
internal package
+(`org.apache.sis.internal.*`) since those packages are considered private.
+In such cases, the logger name should be the package name of the public class
invoking the internal method.
+The reason for that rule is that logger names are considered part of the
public API,
+since developers use them for configuring their logging (verbosity,
destination, <i>etc.</i>).
+
+All logging at `Level.INFO` or above shall be targeted to users or
administrators, not to developers.
+In particular `Level.SEVERE` shall be reserved for critical errors that
compromise the application stability —
+it shall not be used for exceptions thrown while parsing user data (file or
database).
+
+
+
+
[srcheaders]: https://www.apache.org/legal/src-headers.html
[JLS-order]:
https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.1
[mathml-W3C]: https://www.w3.org/Math/
diff --git a/content/developer-guide/introduction/Installation.html
b/content/developer-guide/introduction/Installation.html
index ac0d3e3d..d969ed73 100644
--- a/content/developer-guide/introduction/Installation.html
+++ b/content/developer-guide/introduction/Installation.html
@@ -47,7 +47,7 @@
see <a href="../../epsg.html">How to use EPSG geodetic dataset</a>
page for more information.
</p>
<pre><properties>
- <sis.version>1.4</sis.version>
+ <sis.version>1.5</sis.version>
</properties>
<dependencies>
<dependency>
diff --git a/content/documentation.md b/content/documentation.md
index 93aa575f..460e433e 100644
--- a/content/documentation.md
+++ b/content/documentation.md
@@ -14,13 +14,13 @@ For library users:
* [How to…](howto.html)
* [Online Javadoc](apidocs/index.html)
-* [Developer Guide](book/en/developer-guide.html)
-* [Code patterns](code-patterns.html)
-* [FAQ](faq.html)
+* [Developer guide](book/en/developer-guide.html)
+* [Recommended code patterns](code-patterns.html)
+* [Frequently Asked Questions](faq.html)
For library developers:
-* [Coding Conventions](coding-conventions.html)
+* [Coding conventions](coding-conventions.html)
* [Release management](release-management.html)
-* [Issue Tracker](https://issues.apache.org/jira/browse/SIS)
+* [Issues tracker](https://issues.apache.org/jira/browse/SIS)
* [Wiki](https://cwiki.apache.org/confluence/display/SIS)
diff --git a/content/downloads.md b/content/downloads.md
index 709799c1..de788068 100644
--- a/content/downloads.md
+++ b/content/downloads.md
@@ -13,7 +13,7 @@ See the `NOTICE` file contained in each release artifact for
applicable copyrigh
# Download ZIP files {#bundles}
-Apache {{% SIS %}} is distributed in the form of Java source code in a
multi-modules Apache Maven project.
+Apache {{% SIS %}} is distributed in the form of Java source code in a Gradle
project (to be migrated to Maven 4 later).
For convenience, Javadoc and pre-compiled JAR files are available as separated
downloads.
The precompiled JAR files contain most modules and mandatory dependencies.
Optional dependencies (JAXB implementation, UCAR netCDF library, Amazon SDK)
are not included.
@@ -56,7 +56,7 @@ pgpv apache-sis-{{% version %}}-src.zip.asc
## Build from the sources {#build}
If the source files were donwloaded instead of the binaries, the sources will
need to be built by Gradle.
-It requires Java 18 or higher for building, but the compilation result can be
executed on Java 11 or higher.
+It requires Java 22 or higher for building, but the compilation result can be
executed on Java 11 or higher.
For installing the JAR files in the local Maven repository, execute the
following command
from the SIS project root:
@@ -110,22 +110,18 @@ dependency management tool to automatically obtain the
required Java Archives (J
Below are examples of declarations in a `pom.xml` file for building a project
with a SIS core module.
```xml
-<properties>
- <sis.version>{{% version %}}</sis.version>
-</properties>
-
<dependencies>
<dependency>
<groupId>org.apache.sis.core</groupId>
<artifactId>sis-referencing</artifactId>
- <version>${sis.version}</version>
+ <version>{{% version %}}</version>
</dependency>
<!-- The following dependency can be omitted if XML support is not desired.
-->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
- <version>4.0.4</version>
+ <version>4.0.5</version>
<scope>runtime</scope>
</dependency>
</dependencies>
@@ -144,6 +140,7 @@ The `sis-referencing` module in above example can be
replaced by one or many of
<tr><td>Features and rasters from NetCDF</td>
<td><code>org.apache.sis.storage.netcdf</code></td>
<td><code>org.apache.sis.storage</code></td>
<td><code>sis-netcdf</code></td></tr>
<tr><td>Raster data from GeoTIFF</td>
<td><code>org.apache.sis.storage.geotiff</code></td>
<td><code>org.apache.sis.storage</code></td>
<td><code>sis-geotiff</code></td></tr>
<tr><td>Raster data from Landsat</td>
<td><code>org.apache.sis.storage.earthobservation</code></td>
<td><code>org.apache.sis.storage</code></td>
<td><code>sis-earth-observation</code></td></tr>
+ <tr><td>Raster data from GDAL library</td>
<td><code>org.apache.sis.storage.gdal</code></td>
<td><code>org.apache.sis.storage</code></td>
<td><code>sis-gdal</code></td></tr>
<tr><td>Raster data from GCOM (JAXA)</td>
<td><code>org.apache.sis.profile.japan</code></td>
<td><code>org.apache.sis.profile</code></td>
<td><code>sis-japan-profile</code></td></tr>
<tr><td>Connection to storages on cloud</td>
<td><code>org.apache.sis.cloud.aws</code></td>
<td><code>org.apache.sis.cloud</code></td>
<td><code>sis-cloud-aws</code></td></tr>
<tr><td>Console application</td>
<td><code>org.apache.sis.console</code></td>
<td><code>org.apache.sis.application</code></td>
<td><code>sis-console</code></td></tr>
@@ -165,7 +162,7 @@ If you accept those terms of use, then the following
dependency can be added:
<dependency>
<groupId>org.apache.sis.non-free</groupId>
<artifactId>sis-embedded-data</artifactId>
- <version>${sis.version}</version>
+ <version>{{% version %}}</version>
<scope>runtime</scope>
</dependency>
</dependencies>
diff --git a/content/formats.md b/content/formats.md
index 72eddaf0..99c5add8 100644
--- a/content/formats.md
+++ b/content/formats.md
@@ -36,13 +36,18 @@ in which case the root resource will be `Aggregate`.
<td><code>org.apache.sis.storage</code></td>
<td><code>Aggregate</code>, <code>FeatureSet</code>,
<code>GridCoverageResource</code></td>
</tr><tr>
- <td>(Big) GeoTIFF</td>
+ <td>GDAL⁽¹⁾</td>
<td>Read</td>
+ <td><code>org.apache.sis.storage.gdal</code></td>
+ <td><code>Aggregate</code></td>
+ </tr><tr>
+ <td>GeoTIFF⁽²⁾</td>
+ <td>Read/Write</td>
<td><code>org.apache.sis.storage.geotiff</code></td>
<td><code>Aggregate</code>, <code>GridCoverageResource</code></td>
</tr><tr>
<td>{{% GML %}} ({{% CRS %}} only)</td>
- <td>Read/write⁽¹⁾</td>
+ <td>Read/write⁽³⁾</td>
<td><code>org.apache.sis.referencing</code></td>
<td><code>Resource</code></td>
</tr><tr>
@@ -52,7 +57,7 @@ in which case the root resource will be `Aggregate`.
<td><code>FeatureSet</code></td>
</tr><tr>
<td>{{% ISO %}} 19115 {{% XML %}}</td>
- <td>Read/write⁽¹⁾</td>
+ <td>Read/write⁽³⁾</td>
<td><code>org.apache.sis.metadata</code></td>
<td><code>Resource</code></td>
</tr><tr>
@@ -66,13 +71,13 @@ in which case the root resource will be `Aggregate`.
<td><code>org.apache.sis.storage.netcdf</code></td>
<td><code>Aggregate</code>, <code>FeatureSet</code>,
<code>GridCoverageResource</code></td>
</tr><tr>
- <td>{{% SQL %}}⁽²⁾</td>
+ <td>{{% SQL %}}⁽¹⁾</td>
<td>Read</td>
<td><code>org.apache.sis.storage.sql</code></td>
<td><code>Aggregate</code>, <code>FeatureSet</code></td>
</tr><tr>
<td>{{% WKT %}} ({{% CRS %}} only)</td>
- <td>Read/write⁽¹⁾</td>
+ <td>Read/write⁽³⁾</td>
<td><code>org.apache.sis.referencing</code></td>
<td><code>Resource</code></td>
</tr><tr>
@@ -84,9 +89,11 @@ in which case the root resource will be `Aggregate`.
</table>
**Notes:**
-1. {{% GML %}}, {{% WKT %}} and {{% ISO %}} 19115 cannot yet be written
+1. GDAL and {{% SQL %}} are not file formats but rather connections to
+ a library through Panama or to a database throught {{% JDBC %}} driver.
+2. Includes the Big GeoTIFF (read/write) and Cloud Optimized GeoTIFF
(read-only) variants.
+3. {{% GML %}}, {{% WKT %}} and {{% ISO %}} 19115 cannot yet be written
throught the `DataStore` API. They require the use of specific API.
-2. {{% SQL %}} is not a file format but rather a connection to a database
throught {{% JDBC %}} driver.
# How to read
diff --git a/content/howto/crs_equality.md b/content/howto/crs_equality.md
index a37d1b47..16843b24 100644
--- a/content/howto/crs_equality.md
+++ b/content/howto/crs_equality.md
@@ -5,9 +5,9 @@ title: Determine if two CRS are functionally equal
Two Coordinate Reference Systems may not be considered equal if they are
associated to different metadata
(name, identifiers, scope, domain of validity, remarks), even though they
represent the same logical {{% CRS %}}.
In order to test if two {{% CRS %}} are functionally equivalent,
-`Utilities.equalsIgnoreMetadata(myFirstCRS, mySecondCRS)` can be used.
+`CRS.equivalent(crs1, crs2)` can be used.
-In some cases, `equalsIgnoreMetadata(…)` may fail to see that two reference
systems are equal.
+In some cases, `equivalent(…)` may fail to see that two reference systems are
equal.
It may happen for example when two map projections are defined with different
parameters,
but are mathematically equivalent.
A more reliable but more costly way to check if two {{% CRS %}} are
functionally equivalent
@@ -28,7 +28,6 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.util.FactoryException;
import org.apache.sis.referencing.CRS;
import org.apache.sis.referencing.CommonCRS;
-import org.apache.sis.util.Utilities;
public class CrsEquality {
/**
@@ -51,12 +50,8 @@ public class CrsEquality {
Unit["degree", 0.017453292519943295]]
""");
- System.out.println("equals: "
- + crs1.equals(crs2));
-
- System.out.println("equalsIgnoreMetadata: "
- + Utilities.equalsIgnoreMetadata(crs1, crs2));
-
+ System.out.println("equals: " + crs1.equals(crs2));
+ System.out.println("equivalent: " + CRS.equivalent(crs1, crs2));
System.out.println("Identity transform: "
+ CRS.findOperation(crs2, crs2,
null).getMathTransform().isIdentity());
}
@@ -68,6 +63,6 @@ public class CrsEquality {
```
equals: false
-equalsIgnoreMetadata: true
+equivalent: true
Identity transform: true
```
diff --git a/content/howto/instantiate_utm_projection.md
b/content/howto/instantiate_utm_projection.md
index baa7e498..f8fd07c0 100644
--- a/content/howto/instantiate_utm_projection.md
+++ b/content/howto/instantiate_utm_projection.md
@@ -48,7 +48,6 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.util.FactoryException;
import org.apache.sis.referencing.CRS;
import org.apache.sis.referencing.CommonCRS;
-import org.apache.sis.util.Utilities;
public class InstantiateUTM {
/**
@@ -75,8 +74,8 @@ public class InstantiateUTM {
* Compare the results.
*/
System.out.println("Are the CRS equivalent?");
- System.out.println("AUTO2: " +
Utilities.equalsIgnoreMetadata(crsFromPoint, crsFromAUTO2));
- System.out.println("EPSG: " +
Utilities.equalsIgnoreMetadata(crsFromPoint, crsFromCode));
+ System.out.println("AUTO2: " + CRS.equivalent(crsFromPoint,
crsFromAUTO2));
+ System.out.println("EPSG: " + CRS.equivalent(crsFromPoint,
crsFromCode));
}
}
```
diff --git a/content/javafx.md b/content/javafx.md
index 699a5e2e..00af2748 100644
--- a/content/javafx.md
+++ b/content/javafx.md
@@ -5,10 +5,9 @@ title: JavaFX application
Apache {{% SIS %}} provides an optional JavaFX application for testing SIS
capability to read,
transform and visualize data files.
(note: a [command line interface](command-line.html) is also available).
-The graphical application is in early development stage and very far from
providing
-all services that we can expect from a Geographic Information System (GIS).
-Furthermore this application covers a very small subset of Apache {{% SIS %}}
capabilities.
-But it can give an idea of what is available there.
+The graphical application does not provide all services that we can expect
from a Geographic Information System (GIS)
+and covers a subset of Apache {{% SIS %}} capabilities.
+But it can give an idea of what is available.
{{< toc >}}
@@ -40,7 +39,7 @@ For example users on Intel platforms need to choose `x64`
(not `aarch64`) on the
## First look
After those two steps are completed, user can see an application like below
-(click on an image to expand):
+(hover on an image to expand):
<table class="images">
<tr>
diff --git a/content/standards.md b/content/standards.md
index 738fdc8b..15da6e8b 100644
--- a/content/standards.md
+++ b/content/standards.md
@@ -21,7 +21,7 @@ Some standards are implemented partially, others almost fully.
</tr><tr>
<td>ISO 19103:2015</td>
<td></td>
- <td></td>
+ <td>ISO 19103:2024</td>
<td>Conceptual schema language</td>
</tr><tr>
<td>ISO 19115-1:2014/Amd 1:2018</td>
@@ -46,18 +46,13 @@ Some standards are implemented partially, others almost
fully.
</tr><tr>
<td>ISO 19157:2013/Amd 1:2018</td>
<td></td>
- <td></td>
+ <td>ISO 19157-1:2023</td>
<td>Data quality</td>
</tr><tr>
<td>ISO 19111:2019</td>
<td><a href="https://docs.ogc.org/as/18-005r8/18-005r8.pdf">OGC Topic
2</a></td>
<td></td>
<td>Spatial referencing by coordinates</td>
- </tr><tr>
- <td>ISO 19111-2:2009</td>
- <td></td>
- <td>ISO 19111:2019</td>
- <td>Referencing — extension for parametric values</td>
</tr><tr>
<td>ISO 19112:2003</td>
<td></td>
diff --git a/static/sis.css b/static/sis.css
index 52496bfc..32755dfe 100644
--- a/static/sis.css
+++ b/static/sis.css
@@ -272,6 +272,6 @@ table.images tr td img {
transition: transform 0.3s;
cursor: pointer;
}
-table.images tr td img:active {
+table.images tr td img:hover {
transform: scale(3);
}