我正在尝试使用下面的代码获取地理数据库定义。但是,它没能得到它。我不确定下面的代码出了什么问题:
这是我在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);
它设法打开地理数据库,但在检索定义时,它会失败。
目前我的输出是一个字符串:
“地理数据库已打开;尝试从root获取childDatasets时出错
我不确定是不是因为我提供了根路径错误但我假设当我分配变量'geodatabase'时,它应该保留gdb路径的位置。 L“//”root我将它解释为geodb文件夹,但我可能错了。
gdb目录还包含“gdbtable”,“gdbtablx”,“freelist”,“gdbindexes”,“FDO_UUID”。由于我得到了二进制文件,我不知道这个二进制文件的内容结构,我不确定它是否有特征数据集,表和什么不是。
如果可能的话,请指导我做错的地方。
谢谢。 :)
我正在浏览网页以找到解决此问题的方法,并遇到以下代码:https://svn.osgeo.org/postgis/spike/pramsey/postgis2fgdb/fgdbtest.cpp
我相信我无法打开它的原因是因为有一个类型的层次结构可以打开它,我需要循环它以获取所需的信息。希望这将有助于未来的任何人。