Skip to content

Commit

Permalink
Merge pull request #163 from jbouffard/tiled-layer
Browse files Browse the repository at this point in the history
to_tiled_layer Method
  • Loading branch information
echeipesh committed May 3, 2017
2 parents d1c3fbd + 8e57898 commit d6289b6
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
26 changes: 26 additions & 0 deletions geopyspark/geotrellis/rdd.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,32 @@ def to_numpy_rdd(self):
ser = self.geopysc.create_tuple_serializer(result._2(), value_type=TILE)
return self.geopysc.create_python_rdd(result._1(), ser)

def to_tiled_layer(self, extent=None, layout=None, crs=None, tile_size=256,
resample_method=NEARESTNEIGHBOR):
"""Converts this ``RasterRDD`` to a ``TiledRasterRDD``.
This method combines :meth:`~geopyspark.geotrellis.rdd.RasterRDD.collect_metadata` and
:meth:`~geopyspark.geotrellis.rdd.RasterRDD.tile_to_layout` into one step.
Args:
extent (:ref:`extent`, optional): Specify layout extent, must also specify layout.
layout (:ref:`tile_layout`, optional): Specify tile layout, must also specify extent.
crs (str, int, optional): Ignore CRS from records and use given one instead.
tile_size (int, optional): Pixel dimensions of each tile, if not using layout.
resample_method (str, optional): The resample method to use for the reprojection.
This is represented by a constant. If none is specified, then ``NEARESTNEIGHBOR``
is used.
Note:
``extent`` and ``layout`` must both be defined if they are to be used.
Returns:
:class:`~geopyspark.geotrellis.rdd.TiledRasterRDD`
"""

return self.tile_to_layout(self.collect_metadata(extent, layout, crs, tile_size),
resample_method)

def collect_metadata(self, extent=None, layout=None, crs=None, tile_size=256):
"""Iterate over RDD records and generates layer metadata desribing the contained rasters.
Expand Down
7 changes: 7 additions & 0 deletions geopyspark/tests/geotiff_raster_rdd_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,13 @@ def test_reproject(self, options=None):
md = tiles.collect_metadata()
self.assertTrue('+proj=merc' in md['crs'])

def test_to_tiled_raster(self):
md = self.result.collect_metadata()
tiled = self.result.tile_to_layout(md)
converted = self.result.to_tiled_layer()

self.assertDictEqual(tiled.layer_metadata, converted.layer_metadata)


if __name__ == "__main__":
unittest.main()

0 comments on commit d6289b6

Please sign in to comment.