Read and Write a Sequence File

This notebook shows how to create a sequence file, append (K, V) and then store it. Then the same file is openned and the structures are read back.

Dependencies


In [1]:
import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream}

import geotrellis.proj4.CRS
import geotrellis.spark.io.hadoop._
import geotrellis.vector.{Extent, ProjectedExtent}
import org.apache.hadoop.io.SequenceFile.Writer
import org.apache.hadoop.io._
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

Functions to (de)serialize any structure into Array[Byte]


In [2]:
def serialize(value: Any): Array[Byte] = {
    val out_stream: ByteArrayOutputStream = new ByteArrayOutputStream()
    val obj_out_stream = new ObjectOutputStream(out_stream)
    obj_out_stream.writeObject(value)
    obj_out_stream.close
    out_stream.toByteArray
}

def deserialize(bytes: Array[Byte]): Any = {
    val obj_in_stream = new ObjectInputStream(new ByteArrayInputStream(bytes))
    val value = obj_in_stream.readObject
    obj_in_stream.close
    value
}


serialize: (value: Any)Array[Byte]
deserialize: (bytes: Array[Byte])Any

Create sequence file


In [3]:
var conf = sc.hadoopConfiguration
var fs = org.apache.hadoop.fs.FileSystem.get(conf)

var metadata_path = "hdfs:///user/pheno/spring-index/LastFreeze/sequence_file"
var projected_extent = new ProjectedExtent(new Extent(10,110,10,110), CRS.fromName("EPSG:3857"))
var num_cols_rows :(Int, Int) = (100, 8000000)

val writer: SequenceFile.Writer = SequenceFile.createWriter(conf,
    Writer.file(metadata_path),
    Writer.keyClass(classOf[IntWritable]),
    Writer.valueClass(classOf[BytesWritable])
)

writer.append(new IntWritable(1), new BytesWritable(serialize(projected_extent)))
writer.append(new IntWritable(2), new BytesWritable(serialize(num_cols_rows._1)))
writer.append(new IntWritable(3), new BytesWritable(serialize(num_cols_rows._2)))
writer.hflush()
writer.close()


Waiting for a Spark session to start...
conf = Configuration: core-default.xml, core-site.xml, mapred-default.xml, mapred-site.xml, yarn-default.xml, yarn-site.xml, hdfs-default.xml, hdfs-site.xml, file:/usr/lib/spark-2.1.1-bin-without-hadoop/conf/hive-site.xml
fs = DFS[DFSClient[clientName=DFSClient_NONMAPREDUCE_-1280313744_36, ugi=pheno (auth:SIMPLE)]]
metadata_path = hdfs:///user/pheno/spring-index/LastFreeze/sequence_file
projected_extent = ProjectedExtent(Extent(10.0, 110.0, 10.0, 110.0),geotrellis.proj4.CRS$$anon$3@a942e1e1)
num_cols_rows = (100,8000000)
writer = org.apache.hadoop.io.SequenceFile$RecordCompressWriter@1dc9de7f
Out[3]:
org.apache.hadoop.io.SequenceFile$RecordCompressWriter@1dc9de7f

Read sequence file


In [8]:
val metadata = sc.sequenceFile(metadata_path, classOf[IntWritable], classOf[BytesWritable]).map(_._2.copyBytes()).collect()
val projected_extent_out :ProjectedExtent = deserialize(metadata(0)).asInstanceOf[ProjectedExtent]
val num_cols_rows_out = (deserialize(metadata(1)), deserialize(metadata(2)))

println(metadata.size)


3
metadata = Array(Array(-84, -19, 0, 5, 115, 114, 0, 33, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 46, 118, 101, 99, 116, 111, 114, 46, 80, 114, 111, 106, 101, 99, 116, 101, 100, 69, 120, 116, 101, 110, 116, 18, -8, -17, -14, 105, 64, -105, -86, 2, 0, 2, 76, 0, 3, 99, 114, 115, 116, 0, 22, 76, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 47, 112, 114, 111, 106, 52, 47, 67, 82, 83, 59, 76, 0, 6, 101, 120, 116, 101, 110, 116, 116, 0, 26, 76, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 47, 118, 101, 99, 116, 111, 114, 47, 69, 120, 116, 101, 110, 116, 59, 120, 112, 115, 114, 0, 28, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 46, 112, 114, 111, 106, 52, 46, 67, 82, 83, 36, 36, 97, 110, 111, 110, 36, 51, 80, 95, -10, 36, -66, 65, 91, -28, 2, 0, 2, 6...
Out[8]:
[[-84, -19, 0, 5, 115, 114, 0, 33, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 46, 118, 101, 99, 116, 111, 114, 46, 80, 114, 111, 106, 101, 99, 116, 101, 100, 69, 120, 116, 101, 110, 116, 18, -8, -17, -14, 105, 64, -105, -86, 2, 0, 2, 76, 0, 3, 99, 114, 115, 116, 0, 22, 76, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 47, 112, 114, 111, 106, 52, 47, 67, 82, 83, 59, 76, 0, 6, 101, 120, 116, 101, 110, 116, 116, 0, 26, 76, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 47, 118, 101, 99, 116, 111, 114, 47, 69, 120, 116, 101, 110, 116, 59, 120, 112, 115, 114, 0, 28, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 46, 112, 114, 111, 106, 52, 46, 67, 82, 83, 36, 36, 97, 110, 111, 110, 36, 51, 80, 95, -10, 36, -66, 65, 91, -28, 2, 0, 2, 68, 0, 7, 69, 112, 115, 105, 108, 111, 110, 76, 0, 9, 112, 114, 111, 106, 52, 106, 67, 114, 115, 116, 0, 44, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 67, 111, 111, 114, 100, 105, 110, 97, 116, 101, 82, 101, 102, 101, 114, 101, 110, 99, 101, 83, 121, 115, 116, 101, 109, 59, 120, 112, 62, 69, 121, -114, -30, 48, -116, 58, 115, 114, 0, 42, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 67, 111, 111, 114, 100, 105, 110, 97, 116, 101, 82, 101, 102, 101, 114, 101, 110, 99, 101, 83, 121, 115, 116, 101, 109, 86, -113, -29, 20, -24, -27, -91, -59, 2, 0, 4, 76, 0, 5, 100, 97, 116, 117, 109, 116, 0, 30, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 100, 97, 116, 117, 109, 47, 68, 97, 116, 117, 109, 59, 76, 0, 4, 110, 97, 109, 101, 116, 0, 18, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114, 105, 110, 103, 59, 91, 0, 6, 112, 97, 114, 97, 109, 115, 116, 0, 19, 91, 76, 106, 97, 118, 97, 47, 108, 97, 110, 103, 47, 83, 116, 114, 105, 110, 103, 59, 76, 0, 4, 112, 114, 111, 106, 116, 0, 34, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 112, 114, 111, 106, 47, 80, 114, 111, 106, 101, 99, 116, 105, 111, 110, 59, 120, 112, 115, 114, 0, 28, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 100, 97, 116, 117, 109, 46, 68, 97, 116, 117, 109, 60, -9, 14, 125, -112, 32, -42, 71, 2, 0, 5, 76, 0, 4, 99, 111, 100, 101, 113, 0, 126, 0, 9, 76, 0, 9, 101, 108, 108, 105, 112, 115, 111, 105, 100, 116, 0, 34, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 100, 97, 116, 117, 109, 47, 69, 108, 108, 105, 112, 115, 111, 105, 100, 59, 76, 0, 5, 103, 114, 105, 100, 115, 116, 0, 16, 76, 106, 97, 118, 97, 47, 117, 116, 105, 108, 47, 76, 105, 115, 116, 59, 76, 0, 4, 110, 97, 109, 101, 113, 0, 126, 0, 9, 91, 0, 9, 116, 114, 97, 110, 115, 102, 111, 114, 109, 116, 0, 2, 91, 68, 120, 112, 116, 0, 4, 85, 115, 101, 114, 115, 114, 0, 32, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 100, 97, 116, 117, 109, 46, 69, 108, 108, 105, 112, 115, 111, 105, 100, -95, -30, 34, -79, 120, -122, 7, 2, 2, 0, 6, 68, 0, 12, 101, 99, 99, 101, 110, 116, 114, 105, 99, 105, 116, 121, 68, 0, 13, 101, 99, 99, 101, 110, 116, 114, 105, 99, 105, 116, 121, 50, 68, 0, 13, 101, 113, 117, 97, 116, 111, 114, 82, 97, 100, 105, 117, 115, 68, 0, 10, 112, 111, 108, 101, 82, 97, 100, 105, 117, 115, 76, 0, 4, 110, 97, 109, 101, 113, 0, 126, 0, 9, 76, 0, 9, 115, 104, 111, 114, 116, 78, 97, 109, 101, 113, 0, 126, 0, 9, 120, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 88, 84, -90, 64, 0, 0, 0, 65, 88, 84, -90, 64, 0, 0, 0, 116, 0, 12, 85, 115, 101, 114, 45, 100, 101, 102, 105, 110, 101, 100, 116, 0, 4, 117, 115, 101, 114, 115, 114, 0, 19, 106, 97, 118, 97, 46, 117, 116, 105, 108, 46, 65, 114, 114, 97, 121, 76, 105, 115, 116, 120, -127, -46, 29, -103, -57, 97, -99, 3, 0, 1, 73, 0, 4, 115, 105, 122, 101, 120, 112, 0, 0, 0, 0, 119, 4, 0, 0, 0, 0, 120, 113, 0, 126, 0, 21, 112, 116, 0, 9, 69, 80, 83, 71, 58, 51, 56, 53, 55, 117, 114, 0, 19, 91, 76, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 83, 116, 114, 105, 110, 103, 59, -83, -46, 86, -25, -23, 29, 123, 71, 2, 0, 0, 120, 112, 0, 0, 0, 12, 116, 0, 10, 43, 112, 114, 111, 106, 61, 109, 101, 114, 99, 116, 0, 10, 43, 97, 61, 54, 51, 55, 56, 49, 51, 55, 116, 0, 10, 43, 98, 61, 54, 51, 55, 56, 49, 51, 55, 116, 0, 11, 43, 108, 97, 116, 95, 116, 115, 61, 48, 46, 48, 116, 0, 10, 43, 108, 111, 110, 95, 48, 61, 48, 46, 48, 116, 0, 8, 43, 120, 95, 48, 61, 48, 46, 48, 116, 0, 6, 43, 121, 95, 48, 61, 48, 116, 0, 6, 43, 107, 61, 49, 46, 48, 116, 0, 8, 43, 117, 110, 105, 116, 115, 61, 109, 116, 0, 15, 43, 110, 97, 100, 103, 114, 105, 100, 115, 61, 64, 110, 117, 108, 108, 116, 0, 7, 43, 119, 107, 116, 101, 120, 116, 116, 0, 8, 43, 110, 111, 95, 100, 101, 102, 115, 115, 114, 0, 40, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 112, 114, 111, 106, 46, 77, 101, 114, 99, 97, 116, 111, 114, 80, 114, 111, 106, 101, 99, 116, 105, 111, 110, -15, -65, 53, 15, 21, -110, 104, -92, 2, 0, 0, 120, 114, 0, 43, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 112, 114, 111, 106, 46, 67, 121, 108, 105, 110, 100, 114, 105, 99, 97, 108, 80, 114, 111, 106, 101, 99, 116, 105, 111, 110, 103, 1, 20, 21, -48, -114, -86, 77, 2, 0, 0, 120, 114, 0, 32, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 112, 114, 111, 106, 46, 80, 114, 111, 106, 101, 99, 116, 105, 111, 110, 106, 33, -93, -21, 88, 118, 59, 7, 2, 0, 31, 68, 0, 1, 97, 68, 0, 5, 97, 108, 112, 104, 97, 68, 0, 1, 101, 68, 0, 2, 101, 115, 68, 0, 12, 102, 97, 108, 115, 101, 69, 97, 115, 116, 105, 110, 103, 68, 0, 13, 102, 97, 108, 115, 101, 78, 111, 114, 116, 104, 105, 110, 103, 68, 0, 10, 102, 114, 111, 109, 77, 101, 116, 114, 101, 115, 90, 0, 10, 103, 101, 111, 99, 101, 110, 116, 114, 105, 99, 90, 0, 7, 105, 115, 83, 111, 117, 116, 104, 68, 0, 4, 108, 111, 110, 99, 68, 0, 11, 109, 97, 120, 76, 97, 116, 105, 116, 117, 100, 101, 68, 0, 12, 109, 97, 120, 76, 111, 110, 103, 105, 116, 117, 100, 101, 68, 0, 11, 109, 105, 110, 76, 97, 116, 105, 116, 117, 100, 101, 68, 0, 12, 109, 105, 110, 76, 111, 110, 103, 105, 116, 117, 100, 101, 68, 0, 6, 111, 110, 101, 95, 101, 115, 68, 0, 18, 112, 114, 111, 106, 101, 99, 116, 105, 111, 110, 76, 97, 116, 105, 116, 117, 100, 101, 68, 0, 19, 112, 114, 111, 106, 101, 99, 116, 105, 111, 110, 76, 97, 116, 105, 116, 117, 100, 101, 49, 68, 0, 19, 112, 114, 111, 106, 101, 99, 116, 105, 111, 110, 76, 97, 116, 105, 116, 117, 100, 101, 50, 68, 0, 19, 112, 114, 111, 106, 101, 99, 116, 105, 111, 110, 76, 111, 110, 103, 105, 116, 117, 100, 101, 68, 0, 7, 114, 111, 110, 101, 95, 101, 115, 68, 0, 11, 115, 99, 97, 108, 101, 70, 97, 99, 116, 111, 114, 90, 0, 9, 115, 112, 104, 101, 114, 105, 99, 97, 108, 68, 0, 17, 116, 111, 116, 97, 108, 70, 97, 108, 115, 101, 69, 97, 115, 116, 105, 110, 103, 68, 0, 18, 116, 111, 116, 97, 108, 70, 97, 108, 115, 101, 78, 111, 114, 116, 104, 105, 110, 103, 68, 0, 10, 116, 111, 116, 97, 108, 83, 99, 97, 108, 101, 68, 0, 17, 116, 114, 117, 101, 83, 99, 97, 108, 101, 76, 97, 116, 105, 116, 117, 100, 101, 76, 0, 4, 97, 120, 101, 115, 116, 0, 34, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 100, 97, 116, 117, 109, 47, 65, 120, 105, 115, 79, 114, 100, 101, 114, 59, 76, 0, 9, 101, 108, 108, 105, 112, 115, 111, 105, 100, 113, 0, 126, 0, 14, 76, 0, 4, 110, 97, 109, 101, 113, 0, 126, 0, 9, 76, 0, 13, 112, 114, 105, 109, 101, 77, 101, 114, 105, 100, 105, 97, 110, 116, 0, 38, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 100, 97, 116, 117, 109, 47, 80, 114, 105, 109, 101, 77, 101, 114, 105, 100, 105, 97, 110, 59, 76, 0, 4, 117, 110, 105, 116, 116, 0, 29, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 117, 110, 105, 116, 115, 47, 85, 110, 105, 116, 59, 120, 112, 65, 88, 84, -90, 64, 0, 0, 0, 127, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, -16, 0, 0, 0, 0, 0, 0, 0, 0, 127, -8, 0, 0, 0, 0, 0, 0, 63, -9, -68, -119, -49, -107, -72, -48, 64, 9, 33, -5, 84, 68, 45, 24, -65, -9, -68, -119, -49, -107, -72, -48, -64, 9, 33, -5, 84, 68, 45, 24, 63, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, -16, 0, 0, 0, 0, 0, 0, 63, -16, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 88, 84, -90, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 114, 0, 32, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 100, 97, 116, 117, 109, 46, 65, 120, 105, 115, 79, 114, 100, 101, 114, 107, 50, 55, 113, -10, -102, 12, -29, 2, 0, 3, 76, 0, 1, 120, 116, 0, 39, 76, 111, 114, 103, 47, 111, 115, 103, 101, 111, 47, 112, 114, 111, 106, 52, 106, 47, 100, 97, 116, 117, 109, 47, 65, 120, 105, 115, 79, 114, 100, 101, 114, 36, 65, 120, 105, 115, 59, 76, 0, 1, 121, 113, 0, 126, 0, 48, 76, 0, 1, 122, 113, 0, 126, 0, 48, 120, 112, 126, 114, 0, 37, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 100, 97, 116, 117, 109, 46, 65, 120, 105, 115, 79, 114, 100, 101, 114, 36, 65, 120, 105, 115, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 120, 114, 0, 14, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 69, 110, 117, 109, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 120, 112, 116, 0, 7, 69, 97, 115, 116, 105, 110, 103, 126, 113, 0, 126, 0, 50, 116, 0, 8, 78, 111, 114, 116, 104, 105, 110, 103, 126, 113, 0, 126, 0, 50, 116, 0, 2, 85, 112, 113, 0, 126, 0, 20, 116, 0, 4, 109, 101, 114, 99, 115, 114, 0, 36, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 100, 97, 116, 117, 109, 46, 80, 114, 105, 109, 101, 77, 101, 114, 105, 100, 105, 97, 110, -117, 124, -107, 112, -99, 88, -2, -55, 2, 0, 2, 68, 0, 19, 111, 102, 102, 115, 101, 116, 70, 114, 111, 109, 71, 114, 101, 101, 110, 119, 105, 99, 104, 76, 0, 4, 110, 97, 109, 101, 113, 0, 126, 0, 9, 120, 112, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 9, 103, 114, 101, 101, 110, 119, 105, 99, 104, 115, 114, 0, 27, 111, 114, 103, 46, 111, 115, 103, 101, 111, 46, 112, 114, 111, 106, 52, 106, 46, 117, 110, 105, 116, 115, 46, 85, 110, 105, 116, -94, -13, 55, 5, -127, -10, -41, 28, 2, 0, 4, 68, 0, 5, 118, 97, 108, 117, 101, 76, 0, 12, 97, 98, 98, 114, 101, 118, 105, 97, 116, 105, 111, 110, 113, 0, 126, 0, 9, 76, 0, 4, 110, 97, 109, 101, 113, 0, 126, 0, 9, 76, 0, 6, 112, 108, 117, 114, 97, 108, 113, 0, 126, 0, 9, 120, 112, 63, -16, 0, 0, 0, 0, 0, 0, 116, 0, 1, 109, 116, 0, 5, 109, 101, 116, 114, 101, 116, 0, 6, 109, 101, 116, 114, 101, 115, 115, 114, 0, 24, 103, 101, 111, 116, 114, 101, 108, 108, 105, 115, 46, 118, 101, 99, 116, 111, 114, 46, 69, 120, 116, 101, 110, 116, 103, -92, 80, 93, -2, 11, 86, -8, 2, 0, 6, 68, 0, 6, 104, 101, 105, 103, 104, 116, 68, 0, 5, 119, 105, 100, 116, 104, 68, 0, 4, 120, 109, 97, 120, 68, 0, 4, 120, 109, 105, 110, 68, 0, 4, 121, 109, 97, 120, 68, 0, 4, 121, 109, 105, 110, 120, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 36, 0, 0, 0, 0, 0, 0, 64, 36, 0, 0, 0, 0, 0, 0, 64, 91, -128, 0, 0, 0, 0, 0, 64, 91, -128, 0, 0, 0, 0, 0], [-84, -19, 0, 5, 115, 114, 0, 17, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 73, 110, 116, 101, 103, 101, 114, 18, -30, -96, -92, -9, -127, -121, 56, 2, 0, 1, 73, 0, 5, 118, 97, 108, 117, 101, 120, 114, 0, 16, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 78, 117, 109, 98, 101, 114, -122, -84, -107, 29, 11, -108, -32, -117, 2, 0, 0, 120, 112, 0, 0, 0, 100], [-84, -19, 0, 5, 115, 114, 0, 17, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 73, 110, 116, 101, 103, 101, 114, 18, -30, -96, -92, -9, -127, -121, 56, 2, 0, 1, 73, 0, 5, 118, 97, 108, 117, 101, 120, 114, 0, 16, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 78, 117, 109, 98, 101, 114, -122, -84, -107, 29, 11, -108, -32, -117, 2, 0, 0, 120, 112, 0, 122, 18, 0]]

Compare outputs


In [9]:
println(projected_extent)
println(projected_extent_out)

println(num_cols_rows)
println(num_cols_rows_out)


ProjectedExtent(Extent(10.0, 110.0, 10.0, 110.0),geotrellis.proj4.CRS$$anon$3@a942e1e1)
ProjectedExtent(Extent(10.0, 110.0, 10.0, 110.0),geotrellis.proj4.CRS$$anon$3@a942e1e1)
(100,8000000)
(100,8000000)

In [ ]: