Я пытаюсь получить определение базы геоданных, используя код ниже. Однако, это не в состоянии получить это. Я не уверен, что пошло не так в коде ниже:
Это то, что я написал в функции c ++:
fgdbError hr;
wstring errorText;
Geodatabase geodatabase;
string message;
if ((hr = OpenGeodatabase(L"D:/User/GEO/GlobalNationDB.gdb", geodatabase)) != S_OK)
{
message = "An error occurred while opening the geodatabase";
ErrorInfo::GetErrorDescription(hr, errorText);
}
message = "The geodatabase has been opened";
string Datasetdefs;
hr = geodatabase.GetDatasetDefinition(L"//", L"Feature Dataset", Datasetdefs);
if (S_OK != hr) {
message = message + "; Error occured when trying to get childDatasets from root";
}
else {
message = message + "; Successfully get Child Datasets";
}
CloseGeodatabase(geodatabase);
Ему удается открыть базу геоданных, но когда происходит поиск определения, происходит сбой.
В настоящее время мой вывод - строка:
"База геоданных открыта; при попытке получить childDatasets из корня произошла ошибка"
Я не уверен, что это так, потому что я неверно указываю корневой путь, но я предположил, что когда я назначил переменную 'базу геоданных', он должен был сохранить местоположение для пути GDB. L "//" root Я интерпретировал это как папку geodb, но могу ошибаться.
Каталог gdb также содержит «gdbtable», «gdbtablx», «freelist», «gdbindexes», «FDO_UUID». Поскольку мне дают двоичные файлы, которые я понятия не имею о структуре содержимого этого двоичного файла, я не уверен, есть ли у него наборы классов данных, таблицы и что нет.
Если возможно, сообщите мне, где я поступил неправильно.
Спасибо. :)