Example #1
0
        private void DrawEnvelope(IEnvelope env, ISpatialCRS crs, out ArrayList rPolylineList)
        {
            rPolylineList = new ArrayList();

            IPolyline polyline = new GeometryFactory().CreateGeometry(gviGeometryType.gviGeometryPolyline, gviVertexAttribute.gviVertexAttributeZ) as IPolyline;

            polyline.SpatialCRS = crs;
            IPoint point = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ);

            point.SpatialCRS = crs;

            ISimplePointSymbol psy = new SimplePointSymbol();

            psy.FillColor = System.Drawing.Color.Yellow;
            psy.Size      = 10;
            ICurveSymbol cSymbol = new CurveSymbol();

            cSymbol.Color = System.Drawing.Color.Yellow;
            cSymbol.Width = 2;

            point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0);  //0
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 1);  //1
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 2);   //2
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 3);   //3
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 4); //0
            polyline.AppendPoint(point);                         //close
            rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

            polyline.SetEmpty();
            point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0);  //4
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0);  //5
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0);  //6
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0);  //7
            //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
            polyline.AppendPoint(point);

            point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4
            polyline.AppendPoint(point);                         //close
            rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

            polyline.SetEmpty();
            point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0);  //0
            polyline.AppendPoint(point);
            point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0);  //7
            polyline.AppendPoint(point);
            rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

            polyline.SetEmpty();
            point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 0);  //1
            polyline.AppendPoint(point);
            point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0);  //6
            polyline.AppendPoint(point);
            rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

            polyline.SetEmpty();
            point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 0);  //2
            polyline.AppendPoint(point);
            point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0);  //5
            polyline.AppendPoint(point);
            rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

            polyline.SetEmpty();
            point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 0);  //3
            polyline.AppendPoint(point);
            point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0);  //4
            polyline.AppendPoint(point);
            rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));
        }
Example #2
0
        private void DrawEnvelope(int fid, IFeatureClass fc, out ArrayList rPolylineList)
        {
            rPolylineList = new ArrayList();

            string       filterString = string.Format("oid={0}", fid);
            IQueryFilter filter       = new QueryFilter();

            filter.WhereClause = filterString;
            IFdeCursor cursor = null;

            try
            {
                cursor = fc.Search(filter, true);
                if (cursor != null)
                {
                    IRowBuffer fdeRow = null;
                    while ((fdeRow = cursor.NextRow()) != null)
                    {
                        IFieldInfoCollection col = fdeRow.Fields;
                        for (int i = 0; i < col.Count; ++i)
                        {
                            IFieldInfo info = col.Get(i);
                            if (info.GeometryDef != null &&
                                info.GeometryDef.GeometryColumnType == gviGeometryColumnType.gviGeometryColumnModelPoint)
                            {
                                int         nPos = fdeRow.FieldIndex(info.Name);
                                IModelPoint mp   = fdeRow.GetValue(nPos) as IModelPoint;
                                IEnvelope   env  = mp.Envelope;

                                IPolyline polyline = new GeometryFactory().CreateGeometry(gviGeometryType.gviGeometryPolyline, gviVertexAttribute.gviVertexAttributeZ) as IPolyline;
                                polyline.SpatialCRS = fc.FeatureDataSet.SpatialReference;
                                IPoint point = new GeometryFactory().CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                                point.SpatialCRS = fc.FeatureDataSet.SpatialReference;

                                ISimplePointSymbol psy = new SimplePointSymbol();
                                psy.FillColor = System.Drawing.Color.Yellow;
                                psy.Size      = 10;
                                ICurveSymbol cSymbol = new CurveSymbol();
                                cSymbol.Color = System.Drawing.Color.Yellow;
                                cSymbol.Width = 2;

                                point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0);  //0
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 1);  //1
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 2);   //2
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 3);   //3
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 4); //0
                                polyline.AppendPoint(point);                         //close
                                rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

                                polyline.SetEmpty();
                                point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0);  //4
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0);  //5
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0);  //6
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0);  //7
                                //this.axRenderControl1.ObjectManager.CreateRenderPoint(point, psy);
                                polyline.AppendPoint(point);

                                point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0); //4
                                polyline.AppendPoint(point);                         //close
                                rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

                                polyline.SetEmpty();
                                point.SetCoords(env.MinX, env.MinY, env.MinZ, 0, 0);  //0
                                polyline.AppendPoint(point);
                                point.SetCoords(env.MinX, env.MinY, env.MaxZ, 0, 0);  //7
                                polyline.AppendPoint(point);
                                rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

                                polyline.SetEmpty();
                                point.SetCoords(env.MaxX, env.MinY, env.MinZ, 0, 0);  //1
                                polyline.AppendPoint(point);
                                point.SetCoords(env.MaxX, env.MinY, env.MaxZ, 0, 0);  //6
                                polyline.AppendPoint(point);
                                rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

                                polyline.SetEmpty();
                                point.SetCoords(env.MaxX, env.MaxY, env.MinZ, 0, 0);  //2
                                polyline.AppendPoint(point);
                                point.SetCoords(env.MaxX, env.MaxY, env.MaxZ, 0, 0);  //5
                                polyline.AppendPoint(point);
                                rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));

                                polyline.SetEmpty();
                                point.SetCoords(env.MinX, env.MaxY, env.MinZ, 0, 0);  //3
                                polyline.AppendPoint(point);
                                point.SetCoords(env.MinX, env.MaxY, env.MaxZ, 0, 0);  //4
                                polyline.AppendPoint(point);
                                rPolylineList.Add(this.axRenderControl1.ObjectManager.CreateRenderPolyline(polyline, cSymbol, rootId));
                            }
                        }
                    }
                }
            }
            catch (COMException ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.Message);
            }
            finally
            {
                if (cursor != null)
                {
                    //Marshal.ReleaseComObject(cursor);
                    cursor = null;
                }
            }
        }