上次说了将一个多边形的点集合保存入数据库,
见此文:
将图元包含的点集合(IPointCollection)序列化为二进制保存到数据库
这次有需要,把数据读取出来然后再生成一个多边形,在ArcEngine中生成多边形还蛮曲折的,
可能是考虑到环和岛的状况。
具体的需求是使用点集生成多边形,然后进行定位,闪烁啊什么的
//..... //..... //..... if (coordData != null) { int ptCount = System.BitConverter.ToInt32(coordData, 0);//点数 Ring ring1 = new RingClass(); object missing = Type.Missing; for (int i = 0; i < ptCount; i ++) { double ptX = System.BitConverter.ToDouble(coordData,4+16*i); double ptY = System.BitConverter.ToDouble(coordData,4+16*i+8); IPoint pt = new PointClass(); pt.PutCoords(ptX,ptY); ring1.AddPoint(pt,ref missing,ref missing); } IGeometryCollection pointPolygon = new PolygonClass(); pointPolygon.AddGeometry(ring1 as IGeometry,ref missing,ref missing); IPolygon polyGonGeo = pointPolygon as IPolygon; polyGonGeo.SimplifyPreserveFromTo(); //..... //..... //..... envelope.Expand(1.2, 1.2, true);//扩大边界 this.mapCtrlEx.Extent = envelope;//缩放到图元 Application.DoEvents();//使地图先定位然后再闪烁 this.mapCtrl.FlashShape(polyGonGeo, 3, 300, polygonSymbol); }
速度还凑合,没有感觉到有明显延迟。