Skip to content

Instantly share code, notes, and snippets.

@rgwozdz
Forked from echeipesh/layerThumbnail.scala
Created July 6, 2017 17:21
Show Gist options
  • Save rgwozdz/2894c5d8e3b3bf87d1001c190fe9a3ec to your computer and use it in GitHub Desktop.
Save rgwozdz/2894c5d8e3b3bf87d1001c190fe9a3ec to your computer and use it in GitHub Desktop.
GeoTrellis Samples
s3 > test:console
[info] Starting scala interpreter...
[info]
Welcome to Scala 2.11.11 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131).
Type in expressions for evaluation. Or try :help.
scala> import geotrellis.raster._
import geotrellis.vector._
import geotrellis.proj4._
import geotrellis.spark._
import geotrellis.spark.util._
import geotrellis.spark.tiling._
scala> implicit val sc = geotrellis.spark.util.SparkUtils.createLocalSparkContext("local[*]", "test")
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
17/07/05 13:54:15 INFO SparkContext: Running Spark version 2.1.1
sc: org.apache.spark.SparkContext = org.apache.spark.SparkContext@8ba4bdc
scala> import geotrellis.spark.io.s3._
import geotrellis.spark.io.s3._
scala> val store = S3AttributeStore("azavea-datahub", "catalog")
store: geotrellis.spark.io.s3.S3AttributeStore = geotrellis.spark.io.s3.S3AttributeStore@3c8aadeb
scala> val reader = S3LayerReader(store)
reader: geotrellis.spark.io.s3.S3LayerReader = geotrellis.spark.io.s3.S3LayerReader@5436da24
scala> import geotrellis.spark._
import geotrellis.spark._
scala> import geotrellis.spark.io._
import geotrellis.spark.io._
scala> val layer = reader.query[SpatialKey, Tile, TileLayerMetadata[SpatialKey]](LayerId("nlcd-tms-epsg3857", 5)).result
layer: org.apache.spark.rdd.RDD[(geotrellis.spark.SpatialKey, geotrellis.raster.Tile)] with geotrellis.spark.Metadata[geotrellis.spark.TileLayerMetadata[geotrellis.spark.SpatialKey]] = ContextRDD[2] at RDD at ContextRDD.scala:35
scala> val raster = layer.stitch()
17/07/05 13:57:20 INFO SparkContext: Starting job: collect at StitchRDDMethods.scala:58
raster: geotrellis.raster.Raster[geotrellis.raster.Tile] = Raster(ByteUserDefinedNoDataArrayTile([B@73038b25,3584,2560,int8ud0),Extent(-1.5028131257091932E7, 1252344.271424327, -6261721.357121639, 7514065.628545966))
scala> val thumb = raster.resample(256,256)
thumb: geotrellis.raster.SinglebandRaster = Raster(ByteUserDefinedNoDataArrayTile([B@30adb7ec,256,256,int8ud0),Extent(-1.5028131257091932E7, 1252344.271424327, -6261721.357121639, 7514065.628545966))
scala> :paste
// Entering paste mode (ctrl-D to finish)
val nlcdBreaks = Array(
(0 , 0x00000000),
(11 , 0x526095FF),
(12 , 0xFFFFFFFF),
(21 , 0xD28170FF),
(22 , 0xEE0006FF),
(23 , 0x990009FF),
(31 , 0xBFB8B1FF),
(32 , 0x969798FF),
(33 , 0x382959FF),
(41 , 0x579D57FF),
(42 , 0x2A6B3DFF),
(43 , 0xA6BF7BFF),
(51 , 0xBAA65CFF),
(61 , 0x45511FFF),
(71 , 0xD0CFAAFF),
(81 , 0xCCC82FFF),
(82 , 0x9D5D1DFF),
(83 , 0xCD9747FF),
(84 , 0xA7AB9FFF),
(85 , 0xE68A2AFF),
(91 , 0xB6D8F5FF),
(92 , 0xB6D8F5FF))
// Exiting paste mode, now interpreting.
nlcdBreaks: Array[(Int, Int)] = Array((0,0), (11,1382061567), (12,-1), (21,-763268865), (22,-301988097), (23,-1728050689), (31,-1078414849), (32,-1768449793), (33,942234111), (41,1469929471), (42,711671295), (43,-1497400321), (51,-1163502337), (61,1162944511), (71,-791696641), (81,-859295745), (82,-1654841857), (83,-845723649), (84,-1481924609), (85,-427152641), (91,-1227295233), (92,-1227295233))
scala> import geotrellis.raster.render._
import geotrellis.raster.render._
scala> val nlcdColorMap = ColorMap(nlcdBreaks:_*)
nlcdColorMap: geotrellis.raster.render.ColorMap = geotrellis.raster.render.IntColorMap@27d70385
scala> val png = thumb.tile.renderPng(nlcdColorMap)
png: geotrellis.raster.render.Png = Png([B@73ac46b9)
scala> import java.nio.file.Files
import java.nio.file.Files
scala> import java.nio.file.Paths
import java.nio.file.Paths
scala> Files.write(Paths.get("/tmp/thumbnail.png"), png.bytes)
res0: java.nio.file.Path = /tmp/thumbnail.png
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment