Есть ли способ добавить набор 2D-объектов полигона из GeoJSON в 3D-слой в SceneView в ArcGIS JS API 4.11? - PullRequest
1 голос
/ 28 мая 2019

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

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

Я хотел иметь возможность использовать KMLLayer, но поддержка Kcellayer для 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": [[[...]]]
      }
    },
    ...
  ],
}

1 Ответ

1 голос
/ 29 мая 2019

Вы можете использовать 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",
    }
  ]
};

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

...