热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ArcEngine画Polygon小问题,未解。。。

小米是用pointCollection来创建polygon的,程序编译通过无误,但小米想更换了pointCollection。Add()的顺序后成一新的polygon,就通不过了,弱弱的想不明白。
小米是用pointCollection 来创建polygon的,程序编译通过无误,但小米想更换了pointCollection。Add ()的顺序后成一新的polygon,就通不过了,弱弱的想不明白。
上部分代码:
               IWorkspaceEdit workspaceEdit = workspace as IWorkspaceEdit;
                workspaceEdit.StartEditing(true);
                workspaceEdit.StartEditOperation();

                IPoint point = new PointClass();
                point.X = 155.00;                                                   //点的坐标传入。
                point.Y = 39.00;

                IPoint point2 = new PointClass();
                point2.X = 155.00;                                                   //点的坐标传入。
                point2.Y = 40.00;
                IPoint point3 = new PointClass();
                point3.X = 156.00;                                                   //点的坐标传入。
                point3.Y = 41.00;

                IPoint point4 = new PointClass();
                point4.X = 154.50;                                                   //点的坐标传入。
                point4.Y = 39.00;

                IPointCollection4 pointCollection = new PolylineClass();
                object miss = Type.Missing;

                pointCollection.AddPoint(point, ref miss, ref miss);
                pointCollection.AddPoint(point2, ref miss, ref miss);
                pointCollection.AddPoint(point3, ref miss, ref miss);
                 pointCollection.AddPoint(point4, ref miss, ref miss);  //少了这一点通过
                pointCollection.AddPoint(point, ref miss, ref miss);// end点一定要和以前某点闭合
                
                IGeometryCollection pGeoColl = pointCollection as IGeometryCollection;
                ISegmentCollection pRing = new RingClass();
                pRing.AddSegmentCollection(pGeoColl as ISegmentCollection);

                IGeometryCollection pPolygon = new PolygonClass();
                pPolygon.AddGeometry(pRing as IGeometry, ref miss, ref miss);

                IFeature feature = feaPointClass.CreateFeature();
                feature.Shape = (IGeometry)pPolygon;
                //feature.set_Value(feature.Fields.FindField("Traj_projection_name"), "sagfre");
                //feature.set_Value(feature.Fields.FindField("bbb"), "safas");
                feature.Store();

                workspaceEdit.StopEditOperation();
                workspaceEdit.StopEditing(true);

4 个解决方案

#1


解决了,要做拓扑处理,加一句
                     ITopologicalOperator topologicalOperator = pPolygon as ITopologicalOperator;
                     topologicalOperator.Simplify();

                     IFeature feature = feaPointClass.CreateFeature();
                     feature.Shape = (IGeometry)pPolygon;

#2


该回复于2011-02-18 08:37:22被版主删除

#3


该回复于2011-02-18 08:51:11被版主删除

#4


不用拓扑也可以呀,我试过了

推荐阅读
author-avatar
小賑賑_533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有