in spark/common/src/main/scala/org/apache/sedona/sql/datasources/geopackage/model/GeoPackageField.scala [30:60]
def toStructField(tableType: TableType): StructField = {
dataType match {
case startsWith: String if startsWith.startsWith(GeoPackageType.TEXT) =>
StructField(name, StringType)
case startsWith: String if startsWith.startsWith(GeoPackageType.BLOB) => {
if (tableType == TableType.TILES) {
return StructField(name, RasterUDT)
}
StructField(name, BinaryType)
}
case GeoPackageType.INTEGER | GeoPackageType.INT | GeoPackageType.SMALLINT |
GeoPackageType.TINY_INT | GeoPackageType.MEDIUMINT =>
StructField(name, IntegerType)
case GeoPackageType.POINT => StructField(name, GeometryUDT)
case GeoPackageType.LINESTRING => StructField(name, GeometryUDT)
case GeoPackageType.POLYGON => StructField(name, GeometryUDT)
case GeoPackageType.GEOMETRY => StructField(name, GeometryUDT)
case GeoPackageType.MULTIPOINT => StructField(name, GeometryUDT)
case GeoPackageType.MULTILINESTRING => StructField(name, GeometryUDT)
case GeoPackageType.MULTIPOLYGON => StructField(name, GeometryUDT)
case GeoPackageType.GEOMETRYCOLLECTION => StructField(name, GeometryUDT)
case GeoPackageType.REAL => StructField(name, DoubleType)
case GeoPackageType.BOOLEAN => StructField(name, BooleanType)
case GeoPackageType.DATE => StructField(name, DateType)
case GeoPackageType.DATETIME => StructField(name, TimestampType)
case GeoPackageType.FLOAT => StructField(name, FloatType)
case GeoPackageType.DOUBLE => StructField(name, DoubleType)
case _ => StructField(name, StringType)
}
}