ArcEngine生成矩形缓冲区

这里生成缓冲区肯定是根据点进行生成的,说是生成缓冲区其实是根据点生成面。具体思路如下:
首先根据点获取要生成矩形缓冲区的四个顶点的坐标,然后将这四个点生成面即可得到所谓的矩形缓冲区。

              //首先获取要生成缓冲区的点
                IPoint pPoint = new PointClass();
                pPoint.X = cPointList[i].point.X;
                pPoint.Y = cPointList[i].point.Y;
                //获取生成的缓冲区的四个顶点的坐标
                IPointCollection pPC = new MultipointClass();
                for (int j = 0; j < 4; j++)
                {
                    IPoint pPoint1 = new PointClass();
                    if (j == 0)
                    {
                        pPoint1.X = pPoint.X - 2.55;
                        pPoint1.Y = pPoint.Y - 2.55;
                    }
                    if (j == 1)
                    {
                        pPoint1.X = pPoint.X - 2.55;
                        pPoint1.Y = pPoint.Y + 2.55;
                    } if (j == 2)
                    {
                        pPoint1.X = pPoint.X + 2.55;
                        pPoint1.Y = pPoint.Y + 2.55;
                    } if (j == 3)
                    {
                        pPoint1.X = pPoint.X + 2.55;
                        pPoint1.Y = pPoint.Y - 2.55;
                    }
                    pPC.AddPoint(pPoint1);
                }
              IGeometryCollection pGeometryCollection = new PolygonClass();
              Ring ring = new RingClass();
              object missing = Type.Missing;
              ring.AddPointCollection(Points);
              pGeometryCollection.AddGeometry(ring as IGeometry, ref missing, ref missing);
              IPolygon polyGonGeo = pGeometryCollection as IPolygon;
              polyGonGeo.Close();
              polyGonGeo.SimplifyPreserveFromTo();
              pGeo =polyGonGeo as IGeometry;
              //创建要素
              pFeatureBuffer = pFeaClaPolygon.CreateFeatureBuffer();
              pFeatureBuffer.Shape = pGeo;

结果图:下图为点生成矩形缓冲区的最终成果。
ArcEngine生成矩形缓冲区_第1张图片
这个是融合之后的图形。
ArcEngine生成矩形缓冲区_第2张图片

当然在进行顶点坐标输入的时候需要按照顺序,不然就会出现下边这种情况:
ArcEngine生成矩形缓冲区_第3张图片

你可能感兴趣的:(ArcGIS,Engine,C#)