geopackage-sdk/src/main/java/mil/nga/geopackage/extension/coverage/CoverageData.java
public static CoverageData<?> createTileTableWithMetadata(
            GeoPackage geoPackage, String tableName,
            BoundingBox contentsBoundingBox, long contentsSrsId,
            BoundingBox tileMatrixSetBoundingBox, long tileMatrixSetSrsId,
            GriddedCoverageDataType dataType) {

        TileMatrixSet tileMatrixSet = CoverageDataCore
                .createTileTableWithMetadata(geoPackage, tableName,
                        contentsBoundingBox, contentsSrsId,
                        tileMatrixSetBoundingBox, tileMatrixSetSrsId);
        TileDao tileDao = geoPackage.getTileDao(tileMatrixSet);

        CoverageData<?> coverageData = null;
        switch (dataType) {
            case INTEGER:
                coverageData = new CoverageDataPng(geoPackage, tileDao);
                break;
            case FLOAT:
                coverageData = new CoverageDataTiff(geoPackage, tileDao);
                break;
            default:
                throw new GeoPackageException(
                        "Unsupported Gridded Coverage Data Type: " + dataType);
        }

        coverageData.getOrCreate();

        return coverageData;
    }
public static CoverageData<?> createTileTableWithMetadata(
            GeoPackage geoPackage, String tableName,
            BoundingBox contentsBoundingBox, long contentsSrsId,
            BoundingBox tileMatrixSetBoundingBox, long tileMatrixSetSrsId,
            GriddedCoverageDataType dataType) {

        TileMatrixSet tileMatrixSet = CoverageDataCore
                .createTileTableWithMetadata(geoPackage, tableName,
                        contentsBoundingBox, contentsSrsId,
                        tileMatrixSetBoundingBox, tileMatrixSetSrsId);
        TileDao tileDao = geoPackage.getTileDao(tileMatrixSet);

        CoverageData<?> coverageData = null;
        switch (dataType) {
            case INTEGER:
                coverageData = new CoverageDataPng(geoPackage, tileDao);
                break;
            case FLOAT:
                coverageData = new CoverageDataTiff(geoPackage, tileDao);
                break;
            default:
                throw new GeoPackageException(
                        "Unsupported Gridded Coverage Data Type: " + dataType);
        }

        coverageData.getOrCreate();

        return coverageData;
    }
Create the coverage data tile table with metadata and extension

@param geoPackage               GeoPackage
@param tableName                table name
@param contentsBoundingBox      contents bounding box
@param contentsSrsId            contents srs id
@param tileMatrixSetBoundingBox tile matrix set bounding box
@param tileMatrixSetSrsId       tile matrix set srs id
@param dataType                 gridded coverage data type
@return coverage data