本文主要介绍DLA Ganos如何基于GeoTrellis对Lindorm(HBase)中的栅格数据进行查询和计算。

GeoTrellis是一个基于Spark开发的高性能程序的地理数据处理引擎。GeoTrellis 能够非常快的读/写/操作栅格数据,同时也支持大量的几何操作。有关GeoTrellis的详细介绍请参见:https://geotrellis.readthedocs.io/en/latest/

读取栅格数据

  1. 初始化Spark Session:
     val spark: SparkSession = {
        val session = SparkSession.builder
          .master("local[*]")
          .withKryoSerialization
          .config(additionalConf)
          .getOrCreate()
        session
      }
    
     //加载DLA Ganos Raster驱动
     spark.withGanosRaster
  2. 通过geotrellisCatalog加载Catalog表:
    val inputUri = "hbase://hb-proxy-pub-hbase实例id-001.hbase.rds.aliyuncs.com:2181?master=localhost&attributes=GF1C"
    val cat=spark.read.ganos.geotrellisCatalog(URI.create(inputUri))
    cat.show
    11
    Catalog中包含各个图层的layer和其他元数据信息,支持属时空查询:
    val layer = cat.where($"layer.id.zoom" === "2").select(raster_layer).collect
    • 您可以通过catalog得到图层Layer并加载数据:
       val lots = layer.map(spark.read.ganos.geotrellis.loadLayer).map(_.toDF).reduce(_ union _)
      lots.show
      2
    • 也可以通过loadLayers接口批量加载图层:
      val df = spark.read.ganos.geotrellis.loadLayers(layers)

输出栅格数据

您可以将DF模型输出到Lindorm表中:
lazy val layer = Layer(scratchDir.toUri, LayerId("test-layer", 4))
df.write.ganos.geotrellis.asLayer(layer).save()