This is an automated email from the ASF dual-hosted git repository.
jsorel 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 2f1112858c Implement getFileSet() on landsat resources
2f1112858c is described below
commit 2f1112858c45f0a8aa600f53dfdfee1ac004d705
Author: jsorel <[email protected]>
AuthorDate: Wed Apr 30 09:45:44 2025 +0200
Implement getFileSet() on landsat resources
---
.../main/org/apache/sis/storage/landsat/Band.java | 27 ++++++++++++++++------
.../org/apache/sis/storage/landsat/BandGroup.java | 15 ++++++++++++
.../apache/sis/storage/landsat/LandsatStore.java | 17 ++++++++++++++
3 files changed, 52 insertions(+), 7 deletions(-)
diff --git
a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java
b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java
index a5c222f2ac..40fe5d7143 100644
---
a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java
+++
b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/Band.java
@@ -115,13 +115,7 @@ final class Band extends GridResourceWrapper implements
CoverageModifier {
*/
@Override
protected GridCoverageResource createSource() throws DataStoreException {
- final Path file;
- if (parent.directory != null) {
- file = parent.directory.resolve(filename);
- } else {
- file = Path.of(filename);
- }
- final StorageConnector connector = new StorageConnector(file);
+ final StorageConnector connector = new StorageConnector(getDataPath());
connector.setOption(DataOptionKey.COVERAGE_MODIFIER, this);
return new GeoTiffStore(parent, parent.getProvider(), connector,
true).components().get(0);
}
@@ -224,4 +218,23 @@ final class Band extends GridResourceWrapper implements
CoverageModifier {
public boolean isElectromagneticMeasurement(final Source source) {
return isMain(source) && band.wavelength != 0;
}
+
+ /**
+ * Returns the path to the file containing this band.
+ */
+ @Override
+ public Optional<FileSet> getFileSet() throws DataStoreException {
+ return Optional.of(new FileSet(getDataPath()));
+ }
+
+ /**
+ * Resolve Path to image file.
+ */
+ private Path getDataPath() {
+ if (parent.directory != null) {
+ return parent.directory.resolve(filename);
+ } else {
+ return Path.of(filename);
+ }
+ }
}
diff --git
a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java
b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java
index de51932a48..3f7d3106c2 100644
---
a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java
+++
b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/BandGroup.java
@@ -16,11 +16,14 @@
*/
package org.apache.sis.storage.landsat;
+import java.nio.file.Path;
import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Optional;
+import java.util.Set;
import org.opengis.util.GenericName;
import org.opengis.metadata.Metadata;
import org.apache.sis.storage.Resource;
@@ -133,6 +136,18 @@ final class BandGroup extends AbstractResource implements
Aggregate, StoreResour
return UnmodifiableArrayList.wrap(components);
}
+ /**
+ * Returns the paths to the files containing each band.
+ */
+ @Override
+ public Optional<FileSet> getFileSet() throws DataStoreException {
+ final Set<Path> paths = new HashSet<>();
+ for (Band b : components) {
+ b.getFileSet().map(FileSet::getPaths).ifPresent(paths::addAll);
+ }
+ return Optional.of(new FileSet(paths));
+ }
+
/**
* Returns all bands in the given array of aggregates.
*/
diff --git
a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java
b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java
index 6dab2cb236..f6adab64fe 100644
---
a/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java
+++
b/endorsed/src/org.apache.sis.storage.earthobservation/main/org/apache/sis/storage/landsat/LandsatStore.java
@@ -28,7 +28,10 @@ import java.net.URI;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.nio.file.Files;
+import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
+import java.util.HashSet;
+import java.util.Set;
import org.opengis.util.NameSpace;
import org.opengis.util.GenericName;
import org.opengis.util.NameFactory;
@@ -298,6 +301,20 @@ public class LandsatStore extends DataStore implements
Aggregate {
}
}
+ /**
+ * Returns the list of band files and the *_MTL.txt file.
+ */
+ @Override
+ public Optional<FileSet> getFileSet() throws DataStoreException {
+ components(); //force loading bands
+ final Set<Path> paths = new HashSet<>();
+ paths.add(Paths.get(location));
+ for (BandGroup b : components) {
+ b.getFileSet().map(FileSet::getPaths).ifPresent(paths::addAll);
+ }
+ return Optional.of(new FileSet(paths));
+ }
+
/**
* Closes this Landsat store and releases any underlying resources.
* This method can be invoked asynchronously for interrupting a long
reading process.