我已在我的系统上安装了 GDAL 和 TileDB 以及所有必要的依赖项。但是,当我尝试运行使用 lukeroth/gdal 和 TileDB-Go 绑定的 Go 项目时,遇到以下错误:
../../../go/pkg/mod/github.com/lukeroth/[email protected]/algorithms.go:325:3:
CPLErr(func() _Ctype_CPLErr {…}()).Err undefined (type CPLErr has no field or method Err)
GDAL Go 绑定中的 CPLErr 类型似乎没有 Err 字段或方法。我不确定这是否是 GDAL 库和 Go 绑定之间的版本不匹配,或者是否有其他问题导致此错误。
此外,我在使用 TileDB-Go 时还收到有关已弃用函数的警告:
warning: 'tiledb_array_schema_dump' is deprecated [-Wdeprecated-declarations]
版本:
GDAL 3.8.4, released 2024/02/08
Libtiledb.so.2.27
github.com/lukeroth/gdal v0.0.0-20240301124940-d4ff2229365e
github.com/TileDB-Inc/TileDB-Go v0.32.0
请参阅 https://github.com/lukeroth/gdal/pull/102 获取解决方案。
您可以自行修改本地的“algorithms.go”即可。
return CPLErr(C.GDALContourGenerate(
src.cval,
C.double(interval),
C.double(base),
C.int(len(fixedLevels)),
fixedLevels_p,
C.int(useNoDataValue),
C.double(noDataValue),
unsafe.Pointer(layer.cval),
C.int(idFieldIndex),
C.int(elevationFieldIndex),
C.goGDALProgressFuncProxyB(),
unsafe.Pointer(arg),
)).Err()
到
cErr := C.GDALContourGenerate(
src.cval,
C.double(interval),
C.double(base),
C.int(len(fixedLevels)),
fixedLevels_p,
C.int(useNoDataValue),
C.double(noDataValue),
unsafe.Pointer(layer.cval),
C.int(idFieldIndex),
C.int(elevationFieldIndex),
C.goGDALProgressFuncProxyB(),
unsafe.Pointer(arg),
)
return CPLErrContainer{ErrVal: cErr}.Err()