PostGIS在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力。DLA Ganos兼容PostGIS数据访问接口,可直接加载PostGIS中的矢量数据。本文以全球船舶轨迹AIS数据集为例,展示如何利用DLA Ganos加载PostGIS中的矢量数据。

操作步骤

  1. 初始化SparkSession:
    //初始化SparkSession
    val spark = SparkSession.builder
        .appName("Simple Application")
        .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
        .config("spark.sql.crossJoin.enabled", "true")
        .config("spark.kryo.registrator", classOf[GanosSparkKryoRegistrator].getName)
        .getOrCreate()
    import spark.implicits._
    
    //SparkSession加载JTS包用于处理时空数据
    spark.withJTS 
    val sc = spark.sparkContext
  2. 加载数据:
    //配置链接参数
      val dsParams: JMap[String, String] = Map(
        "host" -> "PostgreSQL URL地址",
        "polardb.ganos" -> "true",
        "dbtype"->"postgis", 
        "port"->"PostgreSQL接口",
        "schema"->"public",
        "database"->"数据库名称",
        "user"->"用户名",
        "passwd"->"密码")
    
    //加载AIS数据源
    df = spark.read.format("ganos-geometry")
          .options(dsParams)
          .option("ganos.feature", "AIS")
          .load()
    df.show
  3. 输出结果:1