基本信息
以下是所在類或對象的基本信息。
AMD:
require(["esri/layers/BuildingSceneLayer"], (BuildingSceneLayer) => { /* code goes here */ });
ESM:
import BuildingSceneLayer from "@arcgis/core/layers/BuildingSceneLayer";
類:
esri/layers/BuildingSceneLayer
繼承: BuildingSceneLayer > Layer > Accessor
自從:用於 JavaScript 4.10 的 ArcGIS API
用法說明
- Overview
- BuildingSceneLayer 的結構
- 發布BuildingSceneLayer
- Visualization
- Filtering
- Popups
- Querying
- 獲取BuildingSceneLayer 中的要素範圍
概述
BuildingSceneLayer 設計用於在 SceneView 中可視化具有詳細內部結構的建築物。這些建築模型通常是從建築信息模型 (BIM) 項目中導出的。 BuildingSceneLayer 中的數據可以表示牆壁、照明設備、機械係統、家具等。
BuildingSceneLayer 的結構
BuildingSceneLayers 可視化建築物的複雜數字模型,並允許您與建築物的所有組件進行交互。由於高度複雜,BuildingSceneLayer 中的數據被組織在 BuildingGroupSublayers 中,其中包含 BuildingComponentSublayers 。
通常,BuildingSceneLayer 包含一個概覽 BuildingComponentSublayer,可以加載該概覽以顯示建築物的 shell 。
這有助於在不加載所有內部特征的情況下更快地預覽整個建築:
BuildingSceneLayer 還包含一個完整模型BuildingGroupSublayer,其中包含按學科分組的建築物中的所有函數:建築、結構、電氣和機械。每個學科都是一個BuildingGroupSublayer,其中包含BuildingComponentSublayers,具有屋頂、牆壁、門、空調裝置、照明設備、柱子或地基等特征。
您可以在BuildingSceneLayer with Slice widget 示例的LayerList 中看到此層結構:
發布BuildingSceneLayer
來自Revit 文件的建築數據可以使用ArcGIS Pro 2.3 版導入和發布為Scene Service。
場景服務由 ArcGIS 服務器 REST 資源的 URL 或 PortalItem 標識:
const buildingLayer = new BuildingSceneLayer({
url: "https://tiles.arcgis.com/tiles/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Esri_Admin_Building/SceneServer",
title: "Administration Building, Redlands - Building Scene Layer"
});
可視化
能夠在其空間環境和景觀中可視化詳細的建築信息是一項有用的能力。要從可視化中提取更多信息,可以將屬性驅動的渲染器和可視變量分配給 BuildingComponentSublayer.renderer 。例如,Doors 子層可以使用 UniqueValueRenderer 來渲染所有需要替換為紅色的室內門:
過濾數據
通常,BuildingSceneLayer 中的特征可能會相互遮擋。基於屬性的過濾可用於僅顯示滿足特定 SQL 表達式的函數。要根據屬性過濾要素,請使用過濾器集合。 Filter BuildingScenelayer 示例展示了如何過濾 BuildingSceneLayer 中的樓層。
BuildingSceneLayers 也可以通過應用客戶端過濾器進行過濾。使用BuildingComponentSublayerView 上的filter 屬性應用基於空間或屬性的過濾器。
彈出窗口
BuildingSceneLayer 中的子圖層可以使用 BuildingComponentSublayer.popupTemplate 屬性自定義彈出內容。還支持popupTemplate 中的街機表達式。
查詢
BuildingSceneLayer的component sublayers和它們的sublayer views可以查詢,但是返回的結果不同。 BuildingComponentSublayer 上的查詢返回子圖層中所有要素的結果,而 BuildingComponentSublayerView 上的查詢返回視圖中當前加載的要素的結果。
查詢 BuildingComponentSublayer 將從關聯要素圖層中的屬性中檢索結果。如果圖層沒有關聯的要素圖層,則查詢將被拒絕並出現錯誤。組件子層上的查詢函數強大,因為它們是針對組件子層中的所有函數進行的。
為了在 BuildingComponentSublayerView 上進行基於屬性的查詢,需要在 BuildingSceneLayer 的 outFields 屬性中指定必填字段,以確保客戶端上的屬性值可用於查詢。您可以使用 availableFields 檢查客戶端上可用的字段。在BuildingComponentSublayerView 上,可以通過設置查詢的geometry 和spatialRelationship 來進行空間查詢。請注意,對於這種類型的圖層,空間關係的評估基於Extent,而不是要素的足跡。僅當 spatialRelationship 設置為 intersects
、 contains
或 disjoint
時才支持空間查詢。
查詢方式 | BuildingComponentSubLayer(僅當 BuildingSceneLayer 具有關聯要素圖層時才有效) | BuildingComponentSublayerView(適用於所有 BuildingSceneLayers) |
---|---|---|
queryExtent | 返回二維程度全部子層中滿足查詢的特征 | 返回3D程度當前加載子層中滿足查詢的特征 |
queryFeatureCount | 返回數量全部子層中滿足查詢的特征 | 返回數量當前加載子層中滿足查詢的特征 |
queryFeatures | 返回全部子層中滿足查詢的特征 | 返回當前加載子層中滿足查詢的特征 |
queryObjectIds | 返回 objectIds 的全部子層中滿足查詢的特征 | 返回的 objectIds當前加載子層中滿足查詢的特征 |
已知限製
- 空間查詢與 projection engine 文檔中列出的限製相同。
- 在計算與 query geometry 的空間關係時,空間查詢使用要素的 Extent 而不是足跡。這意味著可能會從查詢中返回一個要素,即使它的足跡與幾何圖形沒有空間關係。
- 目前在空間 queries 上僅支持
intersects
、contains
和disjoint
spatialRelationships 。 - 如果BuildingSceneLayer 具有以下任何一項,則當前不支持空間查詢SpatialReference:
- GDM 2000 (4742) - 馬來西亞
- Gsterberg (Ferro) (8042) - 奧地利/捷克共和國
- ISN2016 (8086) - 冰島
- SVY21 (4757) - 新加坡
獲取BuildingSceneLayer 中的要素範圍
BuildingSceneLayers 不返回原始幾何,因為這是二進製格式。要獲取空間信息,您可以在 component sublayer 中查詢要素的 2D 範圍或 3D 範圍。可以使用 BuildingComponentSublayer 上的 queryExtent() 方法檢索所有要素(甚至是尚未加載的要素)的 2D 範圍。僅當 BuildingSceneLayer 具有關聯的要素圖層時,此方法才會成功。隻能使用 BuildingComponentSublayerView 上的 queryExtent() 方法查詢已加載的要素的 3D 範圍。
相關用法
- JavaScript ArcGIS BuildingSceneLayer.url用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.minScale用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.loadAll用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.maxScale用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.summaryStatistics用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.filters用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.apiKey用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayerView.sublayerViews用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayerView.highlight用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayerView.when用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.on用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.when用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.outFields用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer layerview-create-error事件用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.visible用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.opacity用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.layerId用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.fullExtent用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.portalItem用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.allSublayers用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer.version用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayer layerview-create事件用法及代碼示例
- JavaScript ArcGIS BuildingSceneLayerView用法及代碼示例
- JavaScript ArcGIS BuildingSublayer.modelName用法及代碼示例
- JavaScript ArcGIS BuildingSummaryStatistics用法及代碼示例
注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 BuildingSceneLayer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。