ArcEngine 切换要素类的空间坐标系

本文介绍了如何通过ArcGIS API来切换要素类的空间坐标系,包括使用内置工具和编程实现。首先,展示了使用IGeoDatasetSchemaEdit接口修改空间参考的代码,然后详细解释了如何通过矢量数据坐标转换方法调整图形位置,确保坐标转换后的正确性。这两个步骤对于处理GIS数据的坐标转换至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

切换要素类空间坐标系的集中方式

1.使用arcgis自带的工具箱也就是GP工具去切换要素类的空间坐标系

评价:稳定,方便,但是对于正在使用IFeatureClass对象不友好

2.使用AE带的常用类去切换要素类的空间坐标系

评价:需要多写代码去做功能,但是对于IFeatureClass的修改及时不用重新获取对象

实现第2种方式:

第一步:修改要素类的空间坐标系

/// <summary>
/// 修改要素类的空间坐标系
/// </summary>
/// <param name="fc"></param>
/// <param name="spatialRef10">新坐标系</param>
/// <returns></returns>
public static bool AlterSpatialRef(IFeatureClass fc, ISpatialReference newSpatialRef)
        {
            IGeoDataset pGeoDataset = fc as IGeoDataset;
            IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;
            if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)
            {
                pGeoDatasetSchemaEdit.AlterSpatialReference(newSpatialRef);
                return false;
            }
            return true;
        }

第二步:对要素类的矢量图形进行坐标转换,必须要有第二步,不然图形位置不对

/// <summary>
/// 矢量数据坐标转换
/// </summary>
/// <param name="featureClass"></param>
/// <param name="oldSpatil">featureClass转换之前的坐标系</param>
/// <param name="newSpatil">featureClass当前的坐标系</param>
private void featureClassTransSpatialRef(IFeatureClass featureClass, ISpatialReference oldSpatil, ISpatialReference newSpatil)
        {

            IFeatureCursor cursor = featureClass.Search(null, false);
            IFeature feature = null;
            while ((feature = cursor.NextFeature()) != null)
            {
                IGeometry2 pGeometry = null;
                pGeometry = feature.Shape as IGeometry2;
                pGeometry.SpatialReference = oldSpatil;
                pGeometry.Project(newSpatil);
                feature.Shape = pGeometry;
                //feature.Store(); 
                feature.Store();
            }
            cursor.Flush();
            if (feature != null)
            { ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(feature); }
            if (cursor != null)
            { ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(cursor); }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值