This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new e76f36ff59 Avoid a NullPointerException when a GeoTIFF file has
incomplete georeferencing information.
e76f36ff59 is described below
commit e76f36ff5998ebb23c9b54762ed180ba64169597
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Fri Dec 6 17:37:20 2024 +0100
Avoid a NullPointerException when a GeoTIFF file has incomplete
georeferencing information.
---
.../main/org/apache/sis/storage/geotiff/ImageFileDirectory.java | 6 +++---
.../org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java | 6 ++++--
.../main/org/apache/sis/storage/geotiff/reader/Localization.java | 1 +
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/ImageFileDirectory.java
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/ImageFileDirectory.java
index 887ce92d68..181e8c3aa8 100644
---
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/ImageFileDirectory.java
+++
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/ImageFileDirectory.java
@@ -1350,11 +1350,11 @@ final class ImageFileDirectory extends DataCube {
filename(), expectedCount, actualCount));
}
/*
- * If a "grid to CRS" conversion has been specified with only the
scale factor, we need to compute
- * the translation terms now.
+ * If a "grid to CRS" conversion has been specified with only the
scale factor,
+ * we need to compute the translation terms now.
*/
if (referencing != null && !referencing.validateMandatoryTags()) {
- throw missingTag((short) TAG_MODEL_TIE_POINT);
+ listeners.warning(missingTag((short) TAG_MODEL_TIE_POINT));
}
isValidated = true;
return true;
diff --git
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
index e8713e69d7..56e3e3835d 100644
---
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
+++
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/GridGeometryBuilder.java
@@ -194,10 +194,12 @@ public final class GridGeometryBuilder extends
GeoKeysLoader {
* @see ImageFileDirectory#validateMandatoryTags()
*/
public boolean validateMandatoryTags() {
+ @SuppressWarnings("LocalVariableHidesMemberVariable")
final MatrixSIS affine = this.affine;
if (affine == null || completeMatrixSpecified) {
return true;
}
+ @SuppressWarnings("LocalVariableHidesMemberVariable")
final Vector modelTiePoints = this.modelTiePoints;
if (modelTiePoints != null) {
/*
@@ -296,10 +298,10 @@ public final class GridGeometryBuilder extends
GeoKeysLoader {
final MathTransformFactory factory =
DefaultMathTransformFactory.provider();
GridGeometry gridGeometry;
try {
- MathTransform gridToCRS;
+ MathTransform gridToCRS = null;
if (affine != null) {
gridToCRS =
factory.createAffineTransform(Matrices.resizeAffine(affine, ++n, n));
- } else {
+ } else if (modelTiePoints != null) {
pixelIsPoint = true;
gridToCRS = Localization.nonLinear(modelTiePoints);
gridToCRS = factory.createPassThroughTransform(0, gridToCRS, n
- 2);
diff --git
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/Localization.java
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/Localization.java
index 4d8cbffd0b..605771cb00 100644
---
a/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/Localization.java
+++
b/endorsed/src/org.apache.sis.storage.geotiff/main/org/apache/sis/storage/geotiff/reader/Localization.java
@@ -77,6 +77,7 @@ final class Localization {
*
* @param modelTiePoints the model tie points read from GeoTIFF file.
* @param addTo if non-null, add the transform result to this
map.
+ * @return the "grid to CRS" transform backed by the localization grid.
*/
private static MathTransform localizationGrid(final Vector modelTiePoints,
final Map<Envelope,MathTransform> addTo)
throws FactoryException, TransformException