ArcEngine点集构三维面

由于普通图层的featureClass不允许要素具有Z值,所以新建的三维面需要保存到mdb或gdb中。

步骤:1 在Arccatalog中建立一个mdb和一个空要素类testPolygon,注意勾选Z值,设置好投影。

步骤2:打开这个空要素类,插入点集转成的三维面:

//加载数据
            IWorkspaceFactory pWorkspaceFactory=null;
            pWorkspaceFactory = new AccessWorkspaceFactoryClass();
            IWorkspace pWorkSpace = pWorkspaceFactory.OpenFromFile(@"C:\Users\Administrator\Desktop\test.mdb", 0);
            IFeatureWorkspace pFeatureWorkSpace;
            IFeatureClass pFeatureClass=null;
            IFeatureLayer pFeatureLayer;
            pFeatureWorkSpace = pWorkSpace as IFeatureWorkspace;
     
            pFeatureClass = pFeatureWorkSpace.OpenFeatureClass("testpolygon");
            pFeatureLayer = new FeatureLayerClass();
            pFeatureLayer.FeatureClass = pFeatureClass;
            axSceneControl1.Scene.AddLayer(pFeatureLayer);


            IPoint p1 = new PointClass(); //第一组
            IPoint p2 = new PointClass(); //第一组
            p1.X = 502225.693493928; p1.Y = 401985.666916852;
            IZAware pAware = p1 as IZAware;
            pAware.ZAware = true;
            p1.Z = 20;
            p2.X = 502185.696188842; p2.Y = 401985.202822681;
            IZAware pAware1 = p2 as IZAware;
            pAware1.ZAware = true;
            p2.Z = 20;

            IPoint p3 = new PointClass();
            IPoint p4 = new PointClass();
            p3.X = 502226.273604096; p3.Y = 401935.67106726;
            IZAware pAware2 = p3 as IZAware;
            pAware2.ZAware = true;
            p3.Z = 20;
            p4.X = 502186.276295959; p4.Y = 401935.206973054;
            IZAware pAware3 = p4 as IZAware;
            pAware3.ZAware = true;
            p4.Z = 20;


            IPointCollection pPtC = new PolygonClass();
            IZAware pPtCZAware= pPtC as IZAware;
            pPtCZAware.ZAware = true;

            pPtC.AddPoint(p2);
            pPtC.AddPoint(p1);
            pPtC.AddPoint(p3);
            pPtC.AddPoint(p4);
            Ring ring = new RingClass();
            for (int i = 0; i < 4; i++)
            {
                ring.AddPoint(pPtC.Point[i], Type.Missing, Type.Missing);
            }
            ring.AddPoint(pPtC.Point[0], Type.Missing, Type.Missing);//必须补充起点,作为终点
            IGeometryCollection pointPolygon = new PolygonClass();
            pointPolygon.AddGeometry(ring as IGeometry, Type.Missing, Type.Missing);

            IPolygon polygonGeo = pointPolygon as IPolygon;
            IZAware pPolyZAware = polygonGeo as IZAware;
            pPolyZAware.ZAware = true;     

            IWorkspaceEdit pWorkSpaceEdit;
  
            pWorkSpaceEdit = pWorkSpace as IWorkspaceEdit;
            pWorkSpaceEdit.StartEditing(true);
            pWorkSpaceEdit.StartEditOperation();

            IFeature pFeature =pFeatureClass.CreateFeature();
            pFeature.Shape = polygonGeo as IGeometry;
            pFeature.Store();
            pWorkSpaceEdit.StopEditOperation();
            pWorkSpaceEdit.StopEditing(true);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值