You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unity中使用ArcGIS Maps SDK对3D对象区域做空间过滤?

在ArcGIS Maps SDK for Unity中为UI创建的图层分配空间过滤器

1. 获取UI创建的目标图层

由于你是通过UI创建的地图图层,无法直接在代码中引用图层变量,可通过ArcGISMap组件查找目标图层:

// 获取场景中已加载的ArcGISMap组件
ArcGISMap arcGISMap = FindObjectOfType<ArcGISMap>();

// 根据图层名称查找FeatureLayer(替换为你的图层实际名称)
FeatureLayer buildingLayer = arcGISMap.FindLayerByName("建筑图层") as FeatureLayer;

也可以通过图层ID查找:

FeatureLayer buildingLayer = arcGISMap.FindLayerById("你的图层ID") as FeatureLayer;

2. 修正空间过滤代码的关键细节

注意:空间参考不一致会导致过滤完全失效,需确保过滤器使用的几何对象与目标图层的空间参考匹配:

void CreatePolygonsAndApplyFilter()
{
    // 1. 创建过滤多边形
    ArcGISPolygonBuilder pb = new ArcGISPolygonBuilder(ArcGISSpatialReference.WGS84());
    pb.AddPoint(21.130116, 55.663546, 1000);
    pb.AddPoint(21.148544, 55.664257, 1000);
    pb.AddPoint(21.180174, 55.645800, 1000);
    pb.AddPoint(21.131820, 55.639522, 1000);
    ArcGISPolygon polygon = pb.ToGeometry() as ArcGISPolygon;

    // 2. 获取目标图层并检查有效性
    ArcGISMap arcGISMap = FindObjectOfType<ArcGISMap>();
    FeatureLayer buildingLayer = arcGISMap.FindLayerByName("建筑图层") as FeatureLayer;
    if (buildingLayer == null)
    {
        Debug.LogError("未找到目标图层,请检查图层名称是否正确");
        return;
    }

    // 3. 将多边形转换为图层的空间参考
    ArcGISSpatialReference layerSpatialRef = buildingLayer.SpatialReference;
    ArcGISPolygon polygonInLayerSR = GeometryEngine.Project(polygon, layerSpatialRef) as ArcGISPolygon;
    if (polygonInLayerSR == null)
    {
        Debug.LogError("多边形空间参考转换失败");
        return;
    }

    // 4. 创建并应用空间过滤器
    ArcGISCollection<ArcGISPolygon> polygons = new ArcGISCollection<ArcGISPolygon>();
    polygons.Add(polygonInLayerSR);
    ArcGISSpatialFeatureFilter filter = new ArcGISSpatialFeatureFilter(polygons, ArcGISSpatialFeatureFilterSpatialRelationship.Disjoint);
    
    buildingLayer.FeatureFilter = filter;
    Debug.Log("空间过滤器已成功应用到图层");
}

3. 验证过滤效果

应用过滤器后,可通过以下方式验证:

  • 检查场景中目标图层的要素是否按照Disjoint(不相交)的规则显示/隐藏
  • 调用buildingLayer.GetFeaturesAsync()获取过滤后的要素列表,确认结果符合预期

内容的提问来源于stack exchange,提问作者Deivydas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 11:01:15