Есть ли способ добавить набор 2D-полигональных объектов из GeoJSON в 3D-слой в SceneView в ArcGIS JS API 4.11?

Мне нужно загрузить набор 2D-полигональных объектов в SceneView в ArgGIS JS API 4.11 из одного из следующих типов файлов: GeoJSON, KML или ShapeFile.

В настоящее время я могу получить данные как geojson, KML или ShapeFile. Я смог использовать GeoJSONLayer, чтобы поместить его в свой SceneView, и фактический слой отрисовывается с помощью SimpleRenderer с простой заливкой. Однако мне нужно спроецировать эти полигоны в 3D, возможно, используя PolygonSymbol3D и ExtrudeSymbol3DLayer в рендерере. Проблема в том, что GeoJSONLayer не поддерживает ExtrudeSymbol3DLayer в ArcGIS API 4.11. Итак, я думаю, мне нужно найти другой способ загрузки функций, который поддерживал бы использование ExtrudeSymbol3DLayer.

Я хотел иметь возможность использовать KMLLayer, но поддержка KMLLayer для SceneView также недоступна для ArcGIS API 4.11.

Есть ли способ получить набор 2D-полигональных объектов, определенных как GeoJSON, в качестве 3D-полигонального слоя в ArcGIS JS API 4.11?

Вот моя текущая реализация слоя для 2D-слоя в SceneView:


let layer = new GeoJSONLayer({
        title: "My Layer",
        url: "http://localhost/data/layer.geojson",
        renderer: {
            type: "simple",
            symbolLayers: [{
                type: "simple-fill", 
                material: { color: "orange" }
            }]
        }
        minScale: 0,
        opacity: 0.40,
        geometryType: "polygon"
    });

А вот представление о том, как выглядит мой GeoJSON:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type":"Feature",
      "properties":{
        "name":"Feature 1",
        ...
      },
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [[[...]]]
      }
    },
    ...
  ],
}

person Andrew Fink    schedule 28.05.2019    source источник


Ответы (1)


Вы можете использовать ExtrudeSymbol3DLayer с GeoJSONLayer. Используйте средство визуализации, которое выглядит примерно так:

var renderer = {
  type: "simple", // autocasts as new SimpleRenderer()
  symbol: {
    type: "polygon-3d", // autocasts as new PolygonSymbol3D()
    symbolLayers: [
      {
        type: "extrude", // autocasts as new ExtrudeSymbol3DLayer()
        material: { color: "red" },
        edges: {
          type: "solid", // autocasts as new SolidEdges3D()
          color: [50, 50, 50, 0.5]
        }
      }
    ]
  },
  label: "Population Density per County",

  // these visual variables are the key to "Extruding" the polygons
  visualVariables: [
    {
      type: "size",
      axis: "height",

      field: "pop_2000",
      normalizationField: "sq_miles",
    }
  ]
};

Полная демонстрация здесь.

person GavinR    schedule 29.05.2019