GPKG无法识别为受支持的文件格式

时间:2019-04-04 12:07:33

标签: c++ gdal

我尝试读取gpkg文件以提取街道和建筑物等地理信息。

因此,我从以下代码开始:

#include "gdal_priv.h"
#include <iostream>

int main() {
    GDALDataset* poDataset;
    GDALAllRegister();

    std::cout << "driver# " << GetGDALDriverManager()->GetDriverCount()
              << std::endl;

    for (int i = 0; i < GetGDALDriverManager()->GetDriverCount(); i++) {
        auto driver = GetGDALDriverManager()->GetDriver(i);
        auto info = driver->GetDescription();
        std::cout << "driver " << i << ": " << info << std::endl;
    }

    auto driver = GetGDALDriverManager()->GetDriverByName("GPKG");

    poDataset = (GDALDataset*)GDALOpen("Building_LoD1.gpkg", GA_ReadOnly);

    if (poDataset == NULL) {
        //  ...;
    }

    return 0;
}

驱动程序列表包含GPKG,但读取失败,并出现错误,该文件未被识别为受支持的文件格式。

执行gdalinfo Building_LoD1.gpkg会在控制台中导致相同的错误。但是我可以在QGIS中打开文件。

还有一个gdalsrsinfo Building_LoD1.gpk报告:

PROJ.4 : +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs 

OGC WKT :
PROJCS["CH1903+ / LV95",
    GEOGCS["CH1903+",
        DATUM["CH1903+",
            SPHEROID["Bessel 1841",6377397.155,299.1528128,
                AUTHORITY["EPSG","7004"]],
            TOWGS84[674.374,15.056,405.346,0,0,0,0],
            AUTHORITY["EPSG","6150"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4150"]],
    PROJECTION["Hotine_Oblique_Mercator_Azimuth_Center"],
    PARAMETER["latitude_of_center",46.95240555555556],
    PARAMETER["longitude_of_center",7.439583333333333],
    PARAMETER["azimuth",90],
    PARAMETER["rectified_grid_angle",90],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",2600000],
    PARAMETER["false_northing",1200000],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","2056"]]

有人知道为什么gpkg文件可能被报告为不受支持吗?

gdal版本为2.3.2

1 个答案:

答案 0 :(得分:0)

我发现了问题所在。出现此消息的原因不是gdal不支持该文件格式,而是我使用了错误的函数来打开文件。

如果我要读取包含矢量信息的文件,则需要使用:

GDALDataset* poDS;
poDS = (GDALDataset*)GDALOpenEx( "Building_LoD1.gpkg", GDAL_OF_VECTOR, NULL, NULL, NULL);