ArcGIS 9.0 绘制扇形

我不多写了。。网上现有的代码算法有问题。把代码放上来,需要的同志可以参考。


 IFeatureClass featureClass 
= GetLayerByName( " 摄像头 " ).FeatureClass;
                    IFeature featureForDraw;
                       
                    IFeatureCursor tmpcur 
= Base.QueryElement(featureClass, "" );
                                   
                    
while ( true )
                    {
                        featureForDraw 
=  tmpcur.NextFeature();   // 得到对象

                        
if (featureForDraw != null )
                        {
                            ISimpleFillSymbol  pointSymbol 
=   new  SimpleFillSymbolClass();
                            pointSymbol.Style 
=  ESRI.ArcGIS.Display.esriSimpleFillStyle.esriSFSNull;
                       
   
                            pointSymbol.Color 
=  Base.GetRGBColor( 255 , 0 , 0 );
                           
                            ILineSymbol linesymbol
= new  SimpleLineSymbolClass();
                        
                            linesymbol.Width
= 1.1 ;
                            linesymbol.Color
= Base.GetRGBColor( 255 , 0 , 0 );
                   
                           
                       

                            pointSymbol.Outline
= linesymbol;

                           

                            IPoint p
= featureForDraw.ShapeCopy  as  IPoint;
                            
// 这里用了属性查询,用到前面得到的对象的主字段值。
                            
// IRubberBand pRubberBand=new  RubberCircleClass();
                            ESRI.ArcGIS.Geometry.IConstructCircularArc con = new  CircularArcClass();

                          
                            
double  FW = 40.0 ;
                            
double   zj = 0.01 // 直径
                             double   jd = 1.414 ;
                   
                            
string  _fw = featureForDraw.get_Value(featureForDraw.Fields.FindField( " SP_ANGLE " )).ToString().Trim();
                            
if (_fw != string .Empty)
                            {
                                FW
= double .Parse(_fw);
                            }
                   
                            
string   _zj = featureForDraw.get_Value(featureForDraw.Fields.FindField( " BOUND " )).ToString().Trim();
                            
if (_zj != string .Empty)
                            {
                                zj
= double .Parse(_zj);
                            }

                            
try
                            {
                              
                                
// con.ConstructCircle(p,System.Convert.ToDouble(bound_str)/2000,false);
                           
                                ESRI.ArcGIS.Geometry.ICircularArc cir
= new  CircularArcClass();
                                cir
= con  as  ICircularArc;
                               
                             
                            
// 重点
                                 cir.PutCoordsByAngle(p,FW * Math.PI / 180 , 40 * Math.PI / 180 ,zj);

                                IPoint 起始点
= cir.FromPoint;
                                IPoint 结束点
= cir.ToPoint;

                                ILine line
= new  LineClass();
                                ILine line1
= new  LineClass();
                                line.PutCoords(p,起始点);
                                line1.PutCoords(结束点,p);

   
                                ISegmentCollection  polygon   
=   new  PolygonClass();

                                
object  Missing   =  Type.Missing;

                                polygon.AddSegment(line 
as  ISegment, ref  Missing, ref  Missing);
                                polygon.AddSegment(cir 
as  ISegment, ref  Missing, ref  Missing);
                                polygon.AddSegment(line1 
as  ISegment, ref  Missing, ref  Missing);

                                IGeometry geometry   
= polygon  as  IGeometry;
                               
                                       
                                
object  tmpSymbol = ( object )pointSymbol;
                                axMapControl1.DrawShape (geometry,
ref  tmpSymbol);
                               
                            }
                            
catch
                            {
                           
                            }
                           
                        }
                        
else
                        {
                            
break ;
                        }
                    }
                }
                
catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                }



  程序猿们,我也跟风开了网店,主要经营土特产,云南核桃,四川正宗土鸡蛋鸡蛋。有需要的就支持一下小店哈  七彩山川美食(http://qcsc.taobao.com) 

 

你可能感兴趣的:(arcgis)