Skip to content

Commit a1da3fb

Browse files
committed
correct crs to determine spatial keys
Open-EO/openeo-geopyspark-driver#1146
1 parent 5d2f356 commit a1da3fb

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

openeo-geotrellis/src/main/scala/org/openeo/geotrellis/layers/NetCDFCollection.scala

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ package org.openeo.geotrellis.layers
33
import com.azavea.gdal.GDALWarp
44
import geotrellis.layer.{KeyBounds, LayoutDefinition, Metadata, SpaceTimeKey, SpatialKey, TemporalKey, TemporalProjectedExtent, TileBounds, TileLayerMetadata}
55
import geotrellis.proj4.LatLng
6-
import geotrellis.raster.{CellSize, MultibandTile, Raster, RasterExtent, Tile, TileLayout}
6+
import geotrellis.raster.{CellSize, IntCellType, MultibandTile, Raster, RasterExtent, Tile, TileLayout}
77
import geotrellis.raster.gdal.{DefaultDomain, GDALException, GDALRasterSource, MalformedProjectionException}
88
import geotrellis.spark.{ContextRDD, MultibandTileLayerRDD, withTilerMethods}
99
import geotrellis.spark._
1010
import geotrellis.spark.partition.SpacePartitioner
11-
import geotrellis.vector.{Extent, ProjectedExtent}
11+
import geotrellis.vector._
1212
import org.apache.spark.{Partitioner, SparkContext}
1313
import org.apache.spark.rdd.RDD
1414
import org.openeo.geotrellis.ProjectedPolygons
@@ -107,7 +107,7 @@ object NetCDFCollection {
107107
val spatialBounds = KeyBounds(layout.mapTransform(extent))
108108
val temporalBounds = KeyBounds(SpaceTimeKey(spatialBounds.minKey,TemporalKey(LocalDate.of(1990,1,1).atStartOfDay(ZoneId.of("UTC")))),SpaceTimeKey(spatialBounds.maxKey,TemporalKey(LocalDate.now().atStartOfDay(ZoneId.of("UTC")))))
109109

110-
val keys: Array[SpatialKey] = items.map(i => i.geometry.getOrElse(i.bbox.toPolygon())).clipToGrid(layout).map(_._1).distinct().collect()
110+
val keys: Array[SpatialKey] = items.map(i => i.geometry.getOrElse(i.bbox.toPolygon())).map(_.reproject(LatLng,crs(0))).clipToGrid(layout).map(_._1).distinct().collect()
111111
val partitioner: Partitioner = new SpacePartitioner(temporalBounds)(implicitly, implicitly, new ByTileSpacetimePartitioner(Some(keys)))
112112

113113
val metadata = TileLayerMetadata[SpaceTimeKey](cellType, layout, extent, crs(0), temporalBounds)

openeo-geotrellis/src/test/scala/org/openeo/geotrellis/layers/NetCDFCollectionTest.scala

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package org.openeo.geotrellis.layers
22

33
import com.azavea.gdal.GDALWarp
4+
import geotrellis.layer.SpaceTimeKey
45
import geotrellis.proj4.{CRS, LatLng}
56
import geotrellis.raster.{CellSize, RasterExtent, ShortConstantNoDataCellType, ShortUserDefinedNoDataCellType}
7+
import geotrellis.spark.partition.{SpacePartitioner, SpatialPartitioner}
68
import geotrellis.spark.util.SparkUtils
79
import geotrellis.vector.Extent
8-
import org.junit.jupiter.api.Assertions.assertEquals
10+
import org.junit.jupiter.api.Assertions.{assertEquals, assertTrue}
911
import org.junit.jupiter.api.{AfterAll, Disabled, Test}
1012
import org.openeo.geotrellis.file.FixedFeaturesOpenSearchClient
13+
import org.openeo.geotrelliscommon.{ByTileSpacetimePartitioner, SpatialKeysProvider}
1114
import org.openeo.opensearch.OpenSearchResponses.{Feature, Link}
1215

1316
import java.time.ZonedDateTime
@@ -52,6 +55,10 @@ class NetCDFCollectionTest {
5255
)
5356

5457
val cube = NetCDFCollection.loadCollection(osClient, sc)
58+
59+
val index = cube.partitioner.get.asInstanceOf[SpacePartitioner[SpaceTimeKey]].index
60+
assert(index.asInstanceOf[SpatialKeysProvider].spatialKeys.get.length > 100)
61+
5562
assertEquals(2331,cube.count())
5663
assertEquals(Extent(603901.4819578232, 5656508.552285681, 653638.1910088382, 5687527.3439567955),cube.metadata.extent)
5764
assertEquals(crs,cube.metadata.crs)

0 commit comments

Comments
 (0)