这是确定一个几何体是否包含在另一个几何体中的准确方法吗?

Is this an accurate way to decide if one geometry is contained in another?

我有 C# ArcGis 应用程序,我在里面使用图形图层。 我想决定图层的哪些图形包含在多边形内。 这是 correct/accurate 的方法吗?

var identifiedGraphics = new List<Graphic>();
var polygonExtent = (drawnGeometry as Polygon).Extent;

if (layer.Graphics != null)
{
   foreach (var graphic in layer.Graphics)
   {
      if (polygonExtent.Intersects(graphic.Geometry.Extent))
      {
          identifiedGraphics.Add(graphic);
      }
   }
}

编辑 - 这不准确'它让我的图形接近多边形。有任何想法吗?我正在使用 ESRI.ArcGIS.Client

var graphicsToReturn = new List<Graphic>();
var geometryService = new GeometryService();
geometryService.InitializeWithLocalService();

foreach (var currentGraphic in layer.Graphics)
{
    var intersectSection = geometryService.Intersect(new List<Graphic> { currentGraphic }, polygonGeometry);

    if (intersectSection != null)
    {
        foreach (var intersectionGraphic in intersectSection)
        {
              if (intersectionGraphic != null )
              {
                  var polygon = intersectionGraphic.Geometry as Polygon;
                  var point = intersectionGraphic.Geometry as MapPoint;
                  var line = intersectionGraphic.Geometry as Polyline;

                  if (polygon != null && polygon.Rings.Count > 0)
                  {
                     graphicsToReturn.Add(currentGraphic);
                  }
                  else if (point != null && !double.IsNaN(point.X) && !double.IsNaN(point.Y))
                  {                                     
                     graphicsToReturn.Add(currentGraphic);
                  }
                  else if (line != null && line.Paths.Count > 0)
                  {
                     graphicsToReturn.Add(currentGraphic);
                  }
               }
          }
      }
 }

说明:GeometryService 是一种具有各种方法的服务,但需要 URL 我们正在处理的给定服务。如果没有服务,它必须用 "InitializeWithLocalService" 初始化,这会创建一个本地服务。 Intersect 方法不 return 相交的图形,它所做的是 returns 一个几何图形,表示它接收的 2 个参数之间的相交部分。因此,要检查某些东西是否相交,您可以调用此方法并检查 return 参数是否基本上不是上述代码中的 "empty" 几何体。 (在这种情况下,returned 的几何类型与发送到 Intersect 方法的第一个参数相同。)