postgresql sde存储图层st_srid(shape)为300001

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.结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在关系型数据库中,可以使用SQL命令查询sde库的表别名。具体来说,可以使用以下步骤在数据库中找到sde库的表别名: 1. 登录到数据库,使用具有查询元数据权限的用户。 2. 切换到sde库,使用以下命令(针对不同的数据库系统,可能有所不同):`USE sde;` 或 `USE database_name;`,其中database_name是包含sde库的数据库名称。 3. 查询表别名,可以使用以下命令(针对不同的数据库系统,可能有所不同): - 对于SQL Server:`SELECT name AS table_name, object_name(object_id) AS table_alias FROM sys.tables WHERE name LIKE '%sde%';` - 对于Oracle:`SELECT table_name, table_alias FROM all_tables WHERE owner = 'SDE' AND table_name LIKE '%SDE%';` - 对于MySQL:`SELECT table_name, table_alias FROM information_schema.tables WHERE table_schema = 'sde' AND table_name LIKE '%sde%';` - 对于PostgreSQL:`SELECT table_name, table_alias FROM pg_catalog.pg_tables WHERE schemaname = 'sde' AND table_name LIKE '%sde%';` 4. 在输出结果中,您可以看到表名和其别名(如果有)。如果别名为空,则表名就是其默认别名。 请注意,SDE库是Esri ArcSDE数据库,它使用了一些特殊的表和视图来管理空间数据。因此,如果您正在查找SDE库中的空间表别名,可以尝试使用以下命令(针对不同的数据库系统,可能有所不同): - 对于SQL Server:`SELECT name AS table_name, object_name(object_id) AS table_alias FROM sys.tables WHERE name LIKE 'st_%';` - 对于Oracle:`SELECT table_name, table_alias FROM all_tables WHERE owner = 'SDE' AND table_name LIKE 'ST_%';` - 对于MySQL:`SELECT table_name, table_alias FROM information_schema.tables WHERE table_schema = 'sde' AND table_name LIKE 'st_%';` - 对于PostgreSQL:`SELECT table_name, table_alias FROM pg_catalog.pg_tables WHERE schemaname = 'sde' AND table_name LIKE 'st_%';`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值