@@ -7,11 +7,12 @@ import geotrellis.raster.{CellSize, MultibandTile, Raster, RasterExtent, Tile, T
7
7
import geotrellis .raster .gdal .{DefaultDomain , GDALException , GDALRasterSource , MalformedProjectionException }
8
8
import geotrellis .spark .{ContextRDD , MultibandTileLayerRDD , withTilerMethods }
9
9
import geotrellis .spark ._
10
+ import geotrellis .spark .partition .SpacePartitioner
10
11
import geotrellis .vector .{Extent , ProjectedExtent }
11
- import org .apache .spark .SparkContext
12
+ import org .apache .spark .{ Partitioner , SparkContext }
12
13
import org .apache .spark .rdd .RDD
13
14
import org .openeo .geotrellis .ProjectedPolygons
14
- import org .openeo .geotrelliscommon .DataCubeParameters
15
+ import org .openeo .geotrelliscommon .{ ByTileSpacetimePartitioner , ByTileSpatialPartitioner , DataCubeParameters }
15
16
import org .openeo .opensearch .OpenSearchClient
16
17
17
18
import java .time .{LocalDate , ZoneId , ZonedDateTime }
@@ -45,7 +46,7 @@ object NetCDFCollection {
45
46
val bboxWGS84 : Extent = items.map(_.bbox).reduce((a, b)=> (a.combine(b)))
46
47
47
48
48
- val features : RDD [(TemporalProjectedExtent , MultibandTile )] = items.flatMap(f=> {
49
+ val features : RDD [(TemporalProjectedExtent , MultibandTile )] = items.repartition(stacItems.length). flatMap(f=> {
49
50
val allTiles = f.links.flatMap(l=> {
50
51
l.bandNames.get.flatMap(b=> {
51
52
var gdalNetCDFLink = s " ${l.href.toString.replace(" file:" , " NETCDF:" )}: ${b}"
@@ -106,8 +107,10 @@ object NetCDFCollection {
106
107
val spatialBounds = KeyBounds (layout.mapTransform(extent))
107
108
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" )))))
108
109
110
+ val partitioner : Partitioner = new SpacePartitioner (temporalBounds)(implicitly, implicitly, ByTileSpacetimePartitioner )
111
+
109
112
val metadata = TileLayerMetadata [SpaceTimeKey ](cellType, layout, extent, crs(0 ), temporalBounds)
110
- val retiled : RDD [(SpaceTimeKey , MultibandTile )] = features.tileToLayout(metadata)
113
+ val retiled : RDD [(SpaceTimeKey , MultibandTile )] = features.tileToLayout(metadata).partitionBy(partitioner)
111
114
ContextRDD (retiled,metadata)
112
115
113
116
0 commit comments