zoukankan      html  css  js  c++  java
  • 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) 

  • 相关阅读:
    喵哈哈村的魔法考试 Round #1 (Div.2) 题解
    Codeforces Round #398 (Div. 2) A. Snacktower 模拟
    Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) F. Souvenirs 线段树套set
    视频人脸检测——Dlib版(六)
    pip/pip3更换国内源
    OpenCV添加中文(五)
    图片人脸检测——Dlib版(四)
    视频人脸检测——OpenCV版(三)
    Tesseract Ocr文字识别
    图片人脸检测——OpenCV版(二)
  • 原文地址:https://www.cnblogs.com/leiyu1980/p/1091855.html
Copyright © 2011-2022 走看看