Для этого я использую свой pom.xml
Код: Выделить всё
org.gdal
gdal
3.8.0
Код: Выделить всё
FROM osgeo/gdal:ubuntu-full-3.6.3
Однако похоже, что org.gdal ссылается на константу, которой не существует. Я опишу это позже. Но сначала приведем важнейшие части исходного кода:
Dockerfile:
Код: Выделить всё
FROM maven:3.9.5-amazoncorretto-21 as build
WORKDIR /app
COPY target/converter-service-1.0.0-SNAPSHOT.jar app.jar
RUN mkdir -p target/extracted
RUN java -Djarmode=layertools -jar app.jar extract --destination target/extracted
FROM osgeo/gdal:ubuntu-full-3.6.3
ENV GDAL_DATA="/usr/share/gdal"
ENV GDAL_DRIVER_PATH="/usr/lib/x86_64-linux-gnu/gdalplugins"
ENV PROJ_LIB="/usr/share/proj"
ENV PATH="/usr/share/gdal:${PATH}"
WORKDIR app
RUN apt update && apt install -y openjdk-21-jre-headless
ARG EXTRACTED=/app/target/extracted
COPY --from=build ${EXTRACTED}/dependencies/ ./
COPY --from=build ${EXTRACTED}/spring-boot-loader/ ./
COPY --from=build ${EXTRACTED}/snapshot-dependencies/ ./
COPY --from=build ${EXTRACTED}/application/ ./
ENTRYPOINT ["java", "-Djava.library.path=/usr/share/java/", "org.springframework.boot.loader.launch.JarLauncher" ]
Код: Выделить всё
package my;
import org.springframework.stereotype.Service;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;
...
@Service
public class Grib2ToGeoTiffService {
static {
gdal.AllRegister();
}
@PostConstruct
private void postConstruct() {
convert(
ResourceUtils.getFile("classpath:file.grib2"),
new File("/tmp/output")
);
}
public boolean convert(File gribFile, File geotiffOutputDir) throws Exception {
if (!gribFile.exists()) {
log.error("File does not exist: '{}'", gribFile.getAbsolutePath());
return false;
}
var gribType = getGribType(gribFile.getName());
log.info("Grib type '{}' for '{}'", gribType, gribFile.getName());
Dataset dataset = gdal.Open(gribFile.getAbsolutePath(), gdalconstConstants.GA_ReadOnly);
if (dataset == null) {
log.warn("Unable to open file: " + gribFile.getAbsolutePath());
return false;
}
int bandCount = dataset.getRasterCount();
Map settingsMap = getSettingsMap(gribType);
for (int bandId = 1; bandId = 3.5)*/ GDT_UInt64 = 12,
/*! 64 bit signed integer (GDAL >= 3.5)*/ GDT_Int64 = 13,
/*! Thirty two bit floating point */ GDT_Float32 = 6,
/*! Sixty four bit floating point */ GDT_Float64 = 7,
/*! Complex Int16 */ GDT_CInt16 = 8,
/*! Complex Int32 */ GDT_CInt32 = 9,
/* TODO?(#6879): GDT_CInt64 */
/*! Complex Float32 */ GDT_CFloat32 = 10,
/*! Complex Float64 */ GDT_CFloat64 = 11,
GDT_TypeCount = 14 /* maximum type # + 1 */
} GDALDataType;
...
Код: Выделить всё
org.gdal
gdal
3.8.0
Код: Выделить всё
FROM osgeo/gdal:ubuntu-full-3.6.3
Подробнее здесь: https://stackoverflow.com/questions/791 ... dt-int8-ge