Визуализация буфера для 3D-объектов

#3d #buffer #visualization #arcgis

#3D #буфер #визуализация #arcgis

Вопрос:

У меня есть шейп-файл зданий (мультипатч) в 3D. У меня также есть файл точек. Я хочу запустить буфер в файле точек, чтобы увидеть, до какой точки буфер взаимодействует со зданиями. По сути, я хочу визуализировать на определенном расстоянии то, что можно увидеть из точки. если я сделаю это в 2D с файлом зданий (полигона), вот что я получу. Кажется, не могу найти способ сделать это в 3D. Есть идеи???

2D пример

Попытка 3D

Ответ №1:

Один из подходов заключается в использовании ArcGIS API для JavaScript и визуализации каждой точки в виде нескольких прозрачных цилиндров. Это можно сделать, используя a PointSymbol3D с a ObjectSymbol3DLayer для каждого расстояния буфера:

 pointsLayer.renderer = new SimpleRenderer({
  symbol: new PointSymbol3D({
    symbolLayers: [
      new ObjectSymbol3DLayer({
        anchor: "center",
        width: 120, // 120m buffer distance
        depth: 120, // 120m buffer distance
        height: 70,
        resource: { primitive: "cylinder" },
        material: { color: [237, 248, 177, 0.6] },
        castShadows: false
      }),
      new ObjectSymbol3DLayer({
        anchor: "center",
        width: 70, // 70m buffer distance
        depth: 70, // 70m buffer distance
        height: 68,
        resource: { primitive: "cylinder" },
        material: { color: [127, 205, 187, 0.6] },
        castShadows: false
      }),
      new ObjectSymbol3DLayer({
        anchor: "center",
        width: 20, // 20m buffer distance
        depth: 20, // 20m buffer distance
        height: 66,
        resource: { primitive: "cylinder" },
        material: { color: [44, 127, 184, 0.7] },
        castShadows: false
      })
    ]
  })
});
 

Вот живой пример использования случайных точек случайные точки внутри 3D-зданий: https://codepen.io/arnofiva/pen/d228b8e28614d4b48fd1d57d68d17418?editors=0010

3D-здания с буферами

В зависимости от количества точек, вы также можете предоставить интерактивный интерфейс, скрывающий здания на выбранном расстоянии буфера. Проверьте этот пример, используя фильтры на стороне клиента: https://developers.arcgis.com/javascript/latest/sample-code/layers-scenelayer-feature-masking/index.html