REST区域关系分析方法

来源:互联网 发布:mac ssh 免密码登录 编辑:程序博客网 时间:2024/04/28 03:58

注意,所有层都需要坐标polyline2.SpatialReference   = new SpatialReference(102113);

 

对两个图元求交:

 

 (1)  private void insertGeometryService()

        { 

            MyMap.MinimumResolution = double.Epsilon;

            geometryService = new GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");

            //geometryService.SimplifyCompleted += new EventHandler<GraphicsEventArgs>(geometryService_SimplifyCompleted);

            geometryService.Failed += new EventHandler<TaskFailedEventArgs>(geometryService_Failed);

            query.IntersectLayer("18");//取得截取的面区域,用来做截取

        }

 

(2)    

 

        public void drawInnerYLX()

        {

            try

            {

                if ((query.IntersectGraphicsLayer != null) && (graphicList != null))//graphicList 是很的的线,比如等值线

                {//query.IntersectGraphicsLayer即刚取到的截取的面区域

                    query.IntersectGraphicsLayer.Geometry.SpatialReference     = new SpatialReference(102113);

                    geometryService.IntersectCompleted += new EventHandler<GraphicsEventArgs>(geometryService_IntersectCompleted);

                    geometryService.IntersectAsync(graphicList, query.IntersectGraphicsLayer.Geometry);

                }

            }

            catch (Exception ex) { MessageBox.Show(ex.ToString()); }

        }

 

(3)    void geometryService_IntersectCompleted(object sender, GraphicsEventArgs e)

        {

            GraphicsLayer intersectGraphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;

            intersectGraphicsLayer.ClearGraphics();

 

            foreach (Graphic g in e.Results)

            {

 

                g.Symbol = LayoutRoot.Resources["DefaultLineSymbol"] as Symbol;

                intersectGraphicsLayer.Graphics.Add(g);

            }       

 

        }

 

 

求关系类型:

 

 (1)添加需要加入分析的图层。。。

 geometryService =
    new GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
            geometryService.RelationCompleted += new EventHandler<RelationEventArgs>(geometryService_RelationCompleted);
            geometryService.SimplifyCompleted += new EventHandler<GraphicsEventArgs>(geometryService_SimplifyCompleted);
            geometryService.Failed += new EventHandler<TaskFailedEventArgs>(geometryService_Failed);
            GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;            geometryService.SimplifyAsync(graphicsLayer.graphics);

 

(2)增加二级图层:

    void geometryService_SimplifyCompleted(object sender, GraphicsEventArgs e)
        {
            GraphicsLayer pointLayer = MyMap.Layers["MyGraphicsLayer2"] as GraphicsLayer;
            geometryService.RelationAsync(
            pointLayer.Graphics,
            e.Results,
            GeometryRelation.esriGeometryRelationWithin, null);//这里还有个参数是关于图层关系的,这里是求包括在范围内

        }

(3)求得关系:

      
        void geometryService_RelationCompleted(object sender, RelationEventArgs e)
        {
            List<GeometryRelationPair> results = e.Results;
            GraphicsLayer pointLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
            foreach (GeometryRelationPair pair in results)
            {
                if (pointLayer.Graphics[pair.Graphic1Index].Attributes["Relation"] == null)
                {
                    pointLayer.Graphics[pair.Graphic1Index].Attributes["Relation"] =
                    string.Format("Within Polygon {0}", pair.Graphic2Index);
                }
                else
                {
                    pointLayer.Graphics[pair.Graphic1Index].Attributes["Relation"] +=
                    "," + pair.Graphic2Index.ToString();
                }

                //if (polygonLayer.Graphics[pair.Graphic2Index].Attributes["Relation"] == null)
                //{
                //    polygonLayer.Graphics[pair.Graphic2Index].Attributes["Relation"] =
                //    string.Format("Contains Point {0}", pair.Graphic1Index);
                //}
                //else
                //{
                //    polygonLayer.Graphics[pair.Graphic2Index].Attributes["Relation"] +=
                //    "," + pair.Graphic1Index.ToString();
                //}
            }

 

        }

原创粉丝点击