GPKG не распознается как поддерживаемый формат файла - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь прочитать файл 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 голосов
/ 04 апреля 2019

Я разобрался в проблеме.Причина сообщения не в том, что формат файла не поддерживается gdal, а в том, что я использовал неправильную функцию для открытия файла.

Если я хочу прочитать в файле, который содержит векторную информацию, тогда мне нужноиспользовать:

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