1.现状及问题
一般情况下,将矢量数据、栅格数据存入postgresql sde数据库,能实现数据空间数据统一集中管理。但是在读取SDE数据时,发现空间参考ST_SRID为300001、300002、300005等奇怪值,而不是常见的空间参考WKID(4521、4522、4523、4490等),如下图。
2.原因
原因在于该数据修改了坐标系的默认精度或者范围,导致重新创建ST_SRID记录。经过数据测试,不影响数据相交处理,就是ST_SRID看起来奇怪。如果要改正此问题,数据存储到SDE时,创建数据集的时候,用坐标系wkid创建坐标系参考,即可解决。
3.解决办法
//ISpatialReference reference = ((IGeoDataset)pFec).SpatialReference; //注释从igeodataset中获取空间参考对象,直接用于数据集创建
ISpatialReferenceFactory3 spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
ISpatialReference reference = spatialReferenceFactory.CreateSpatialReference(FactoryCode);//采用从igeodataset中获取空间参考对象的FactoryCode,创建空间参考对象
ISpatialReferenceResolution spatialReferenceResolution = reference as ISpatialReferenceResolution;
spatialReferenceResolution.ConstructFromHorizon();
spatialReferenceResolution.SetDefaultXYResolution();
ISpatialReferenceTolerance spatialReferenceTolerance = spatialReferenceResolution as ISpatialReferenceTolerance;
spatialReferenceTolerance.SetDefaultXYTolerance();
newDataSet = YJDGISFuncLib.FeatureClass.CreateFeatureDataset(m_SDEWorkSpace, reference, dataSetName);
4.结果