提问人:Deivydas 提问时间:11/14/2023 更新时间:11/20/2023 访问量:21
如何使用 ArcGIS Maps SDK for Unity 在 Unity 中对 3D 对象区域进行空间过滤?
How to Spatial filter 3D object areas in Unity using ArcGIS Maps SDK for Unity?
问:
我遇到了一个问题,我不太了解他们关于空间过滤器的 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 而不是代码制作了我的地图。
答:
0赞
Deivydas
11/20/2023
#1
我设法找到了适合我的答案。
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;
}
评论