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

问题描述 投票:0回答:1

我遇到了一个问题,我不太了解他们关于空间过滤器的 C# API。

链接到 C# API

这是我在论坛中想到并找到的:

    void CreatePolygons()
    {
        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;

        // Create a list to hold polygons
        ArcGISCollection<ArcGISPolygon> polygons = new ArcGISCollection<ArcGISPolygon>();
        polygons.Add(polygon);

        ArcGISSpatialFeatureFilter filter = new ArcGISSpatialFeatureFilter(polygons, ArcGISSpatialFeatureFilterSpatialRelationship.Disjoint);

        //buildingLayer.FeatureFilter = filter;

        Debug.Log("Drawed");
    }

我不知道如何分配给图层。因为我使用他们的 UI 制作地图,而不是使用代码。

unity-game-engine gis arcgis esri
1个回答
0
投票

我设法找到了对我有用的答案。

    void CreateSpatialFilter(ArcGIS3DObjectSceneLayer layer)
{
    ArcGISPolygonBuilder pb = new ArcGISPolygonBuilder(ArcGISSpatialReference.WGS84());
    ArcGISPoint point1 = new ArcGISPoint(-73.99980079704791, 40.70807170346215, ArcGISSpatialReference.WGS84());
    ArcGISPoint point2 = new ArcGISPoint(-74.0133251342158, 40.70044995342926, ArcGISSpatialReference.WGS84());
    ArcGISPoint point3 = new ArcGISPoint(-74.01934729189811, 40.705750450644196, ArcGISSpatialReference.WGS84());
    ArcGISPoint point4 = new ArcGISPoint(-74.01291685233905, 40.71700777141413, ArcGISSpatialReference.WGS84());

    pb.AddPoint(point1);
    pb.AddPoint(point2);
    pb.AddPoint(point3);
    pb.AddPoint(point4);

    ArcGISPolygon polygon = (ArcGISPolygon)pb.ToGeometry();
    ArcGISCollection<ArcGISPolygon> polygons = new ArcGISCollection<ArcGISPolygon>();
    polygons.Add(polygon);

    ArcGISSpatialFeatureFilter filter = new ArcGISSpatialFeatureFilter(polygons, ArcGISSpatialFeatureFilterSpatialRelationship.Disjoint);
    layer.FeatureFilter = filter;
}
© www.soinside.com 2019 - 2024. All rights reserved.