首页 / 浏览问题 / 组件GIS / 问题详情
ImportResult.FailedSettings无法得知导入失败的具体原因
17EXP 2020年04月01日

使用ImportSettingSHP类导入shp文件,大部分shp文件导入成功,部分shp文件导入失败。

在返回的结果ImportResult中,FailedSettings没有给出导入失败的具体原因,只有一个失败的个数,导致无法排除错误。

如图所示,第一个数据源使用ImportSettingSHP导入失败,下面两个可以导入

第一个数据源在idesktop软件中可以正常打开,只是没有数据集

我使用的版本是iobjectsdotnet-10.0.1-18027-76100

希望你们:

1.解决sdk导入数据源,数据源没有数据集则导入失败的问题(猜测是这个)

2.导入失败,给出友好、明确的提示

谢谢

如果对这个问题的细节还有疑问,请邮件联系我

2 个回答

请问您使用的产品是.net组件还是java组件
1,063EXP 2020年04月01日
你好,是.net组件
你好,可以先看下idesktop是否能正常导入
2,432EXP 2020年04月01日
使用idesktop可以导入,使用.net的sdk不能导入

我希望可以获得失败原因,才能排查错误
??????
你好,可以发一份导入失败的数据到我的邮箱wuyuankai@supermap.com,我这边看一下 ,顺便把你导入的代码贴上来我看一下
代码是:

DatasourceConnectionInfo tempInfo = new DatasourceConnectionInfo();
//设置数据源连接的引擎类型
tempInfo.EngineType = EngineType.UDB;
tempInfo.Alias = "alias";

tempInfo.Server = filePath;
// 创建/打开数据库数据源
Datasource tempDatasource = workspace.Datasources.Create(tempInfo);

ImportResult result = ImportShpToTemp(shapeFieldName, tempDatasource, tableName);

private ImportResult ImportShpToTemp(string filePath, Datasource memDatasource,string targetTableName)
{
    ImportSettingSHP importSettingSHP = new ImportSettingSHP();
    importSettingSHP.IsAttributeIgnored = false;
    importSettingSHP.IsImportAs3D = false;
    //设置当同名数据集存在时导入的模式,如果存在名字冲突,则覆盖(Overwrite)
    importSettingSHP.ImportMode = ImportMode.Overwrite;
    //设置需要导入的数据路径信息
    importSettingSHP.SourceFilePath = filePath;
    //设置需要导入的数据编码类型,因为有中文字段,所以用ASCII编码
    importSettingSHP.SourceFileCharset = Charset.ANSI;
    //设置要导入的目标数据源
    //importSettingSHP.TargetDatasource = udbDatasource;
    //importSettingSHP.TargetDatasource = memDatasource;
    importSettingSHP.TargetDatasource = memDatasource;
    //importSettingSHP.TargetDatasource = scvDatasource;
    //importSettingSHP.TargetDatasourceConnectionInfo = info;
    //设置目标数据集名称
    importSettingSHP.TargetDatasetName = targetTableName;
    importSettingSHP.TargetEncodeType = EncodeType.None;
    DataImport importer = new DataImport();
    importer.ImportSettings.Add(importSettingSHP);
    //数据导入mysql数据库
    ImportResult result = importer.Run();
    return result;
}
你好,你这个是一个空的表数据(不管导入到idekstop或者是arcgis平台  都是空表),所以会导入失败,需要设置IsimportEmptyDataset=true,导入为空数据集才行。
谢谢,明白你的意思了

希望你们可以在FailedSettings下添加友好的报错提示
...