首页 / 浏览问题 / 组件GIS / 问题详情
.net组件坐标转换时报错
yzz
13EXP 2024年07月04日
使用.net组件对数据集进行坐标转换。数据集坐标系3Degree GK Zone 114,转换为CGCS2000

代码:

  PrjCoordSys prj4490 = new PrjCoordSys();
            prj4490.FromEPSGCode(4490);
            try {
                CoordSysTranslator.Convert(dset, prj4490, new CoordSysTransParameter(), CoordSysTransMethod.GeocentricTranslation);
            }

报错信息:

   在 SuperMap.Data.Conversion.DataImport.get_ImportSettings()
   在 ImportSteppedCallBack(Void* pParam, Char* pchTitle, Char* pchMessage, Int32 nPercent, Char* pchRemainTime, Byte* bCancel, UInt32 nRemainTime)
   在 UGC.UGDatasetVector.PJConvert(UGDatasetVector* , UGRefTranslator* )
   在 SuperMap.Data.CoordSysTranslator.Convert(Dataset dataset, PrjCoordSys targetPrjCoordSys, CoordSysTransParameter coordSysTransParameter, CoordSysTransMethod coordSysTransMethod)

1个回答

您好,

根据您的代码查看到您使用的是CoordSysTranslator.Convert 方法 (Dataset, PrjCoordSys, CoordSysTransParameter, CoordSysTransMethod),根据目标投影坐标系对数据集进行投影转换,结果将直接改变源数据集的投影。

PrjCoordSys.FromEPSGCode方法是根据 EPSG 代码修改对象的内容,而此处的PrjCoordSys参数是投影坐标系类型。

此外,在进行投影转换时,如果源投影和目标投影的地理坐标系不同,则需要进行参照系转换。具体可参考帮助文档有关于CoordSysTransParameter类的说明。

以下代码为指定数据集从原有 EPSG 4547投影坐标系转换到 EPSG 4490地理坐标系,可参考:

Dataset dataset = workspace.Datasources[0].Datasets[0];
bool test = CoordSysTranslator.Convert(dataset, new PrjCoordSys(4490),  null, CoordSysTransMethod.GeocentricTranslation);

希望能够帮助到您!

945EXP 2024年07月05日
...