首页 > 其他分享 >Revit BIM模型在ArcGIS Pro中的数据组织及转换成SLPK后的图层结构解析

Revit BIM模型在ArcGIS Pro中的数据组织及转换成SLPK后的图层结构解析

时间:2023-03-23 19:12:58浏览次数:54  
标签:SLPK BIM false 3DObject alias modelName 多面体 layerType 数据组织

ArcGIS Pro对Revit 数据有自己的一套分层方式。

在ArcGIS Pro中打开bim文件会发现都是按照相同的方式组织数据:

 将rvt格式数据转换成SLPK格式后的数据结构(将slpk数据直接拖动到ArcGIS Pro中加载):

 ArcGIS 生成的SLPK格式数据将数据分为两个图层组,概览层(OverView)和完整模型层(Full Model),在完整模型层会按照ArcGIS自己的组织方式组织数据,对于没有数据的层,在转换成slpk后并不存在。

将SLPK数据发布成服务后,组织方式和在ArcGIS Pro中看到的是一样的(查看元数据:rest/services/Hosted/服务名称/SceneServer)。

{
    "serviceName": "szbuilding2019",
    "serviceVersion": "1.8",
    "supportedBindings": ["REST"],
    "layers": [{
        "id": 0,
        "layerType": "Building",
        "alias": "SHYbuilding2019_BIMFileToGeo",
        "spatialReference": {
            "wkid": 4490,
            "latestWkid": 4490,
            "vcsWkid": 5773,
            "latestVcsWkid": 5773
        },
        "fullExtent": {
            "xmin": 3.055264709000028,
            "ymin": 0.5679210710000575,
            "xmax": 3.056218136000041,
            "ymax": 0.5693978290000246,
            "spatialReference": {
                "wkid": 4490,
                "latestWkid": 4490,
                "vcsWkid": 5773,
                "latestVcsWkid": 5773
            },
            "zmin": 0,
            "zmax": 44.779999999998836
        },
        "activeFilterID": "",
        "statisticsHRef": "./statistics/summary",
        "sublayers": [{
            "id": 200,
            "layerType": "group",
            "name": "Full Model",
            "alias": "Full Model",
            "modelName": "FullModel",
            "visibility": false,
            "sublayers": [{
                "id": 210,
                "layerType": "group",
                "name": "Structural",
                "alias": "Structural",
                "modelName": "Structural",
                "visibility": true,
                "sublayers": [{
                    "id": 13,
                    "layerType": "3DObject",
                    "name": "StructuralFraming",
                    "alias": "StructuralFraming",
                    "modelName": "StructuralFraming",
                    "discipline": "Structural",
                    "visibility": true,
                    "isEmpty": false
                }],
                "isEmpty": false
            },
            {
                "id": 220,
                "layerType": "group",
                "name": "Architectural",
                "alias": "Architectural",
                "modelName": "Architectural",
                "visibility": true,
                "sublayers": [{
                    "id": 12,
                    "layerType": "3DObject",
                    "name": "Windows",
                    "alias": "Windows",
                    "modelName": "Windows",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 11,
                    "layerType": "3DObject",
                    "name": "Walls",
                    "alias": "Walls",
                    "modelName": "Walls",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 10,
                    "layerType": "3DObject",
                    "name": "StairsRailing",
                    "alias": "StairsRailing",
                    "modelName": "StairsRailing",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 9,
                    "layerType": "3DObject",
                    "name": "Stairs",
                    "alias": "Stairs",
                    "modelName": "Stairs",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 8,
                    "layerType": "3DObject",
                    "name": "SpecialtyEquipment",
                    "alias": "SpecialtyEquipment",
                    "modelName": "SpecialtyEquipment",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 7,
                    "layerType": "3DObject",
                    "name": "Roofs",
                    "alias": "Roofs",
                    "modelName": "Roofs",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 6,
                    "layerType": "3DObject",
                    "name": "GenericModel",
                    "alias": "GenericModel",
                    "modelName": "GenericModel",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 5,
                    "layerType": "3DObject",
                    "name": "Furniture",
                    "alias": "Furniture",
                    "modelName": "Furniture",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 4,
                    "layerType": "3DObject",
                    "name": "Floors",
                    "alias": "Floors",
                    "modelName": "Floors",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 3,
                    "layerType": "3DObject",
                    "name": "Doors",
                    "alias": "Doors",
                    "modelName": "Doors",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 2,
                    "layerType": "3DObject",
                    "name": "CurtainWallPanels",
                    "alias": "CurtainWallPanels",
                    "modelName": "CurtainWallPanels",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                },
                {
                    "id": 1,
                    "layerType": "3DObject",
                    "name": "CurtainWallMullions",
                    "alias": "CurtainWallMullions",
                    "modelName": "CurtainWallMullions",
                    "discipline": "Architectural",
                    "visibility": true,
                    "isEmpty": false
                }],
                "isEmpty": false
            }]
        },
        {
            "id": 0,
            "layerType": "3DObject",
            "name": "Overview",
            "alias": "Overview",
            "modelName": "Overview",
            "visibility": true,
            "isEmpty": false
        }],
        "version": "1.8",
        "name": "szbuilding2019"
    }],
    "serviceItemId": "8f3a01991d304e44a417f1a31a4d52f0"
}

通过分析元数据,可以看出数据结构,分为预览层和完整层,完整层再按照ArcGIS BIM模型的数据组织方式进行组织。

  • Overview (预览图层:"layerType": "3DObject","modelName": "Overview")
  • Full Model(完整模型图层组:"layerType": "group","modelName": "FullModel")
    • Structural(结构图层组:"layerType": "group","modelName": "Structural") 
      • StructuralFraming(结构框架:"layerType": "3DObject","modelName": "StructuralFraming")
    • Architectural(架构图层组)
      • Windows(窗户:"layerType": "3DObject","modelName": "Windows"
      • Walls(墙壁:"layerType": "3DObject","modelName": "Windows"
      • ...等等

“FullModel”和“Overview”是BuildingSceneLayer的直接子层。在使用ArcGIS Maps SDK for JavaScript(原ArcGIS JS API)的BuildingSceneLayer加载bim服务时,如果您想在BuildingSceneLayer的子组中搜索,可以使用BuildingSceneLayer.allSublayers,它是子图层的平面数组。要识别子图层,最好使用BuildingSceneLayer.modelName,因为这是基于I3S 规范的标准名称,无法更改。

参考:https://pro.arcgis.com/en/pro-app/latest/help/data/revit/adding-revit-data-to-arcgis-pro.htm

ArcGIS Maps SDK for JavaScript加载bim服务数据,控制bim服务图层的显示和隐藏代码示例:

 buildingLayer.when(() => {
          // Iterate through the flat array of sublayers and extract the ones
          // that should be excluded from the slice widget
          buildingLayer.allSublayers.forEach((layer) => {
            // modelName is standard accross all BuildingSceneLayer,
            // use it to identify a certain layer
            switch (layer.modelName) {
              // Because of performance reasons, the Full Model view is
              // by default set to false. In this scene the Full Model should be visible.
              case "FullModel":
                layer.visible = true;
                break;
              case "Overview":
              case "Rooms":
                layer.visible = false;
                break;
              // Extract the layers that should not be hidden by the slice widget
              case "Doors":
                doorsLayer = layer;
                excludedLayers.push(layer);
                break;
              default:
                layer.visible = true;
            }
          });
        });

参考示例:https://developers.arcgis.com/javascript/latest/sample-code/building-scene-layer-slice

 

为了能够更好的分辨BIM数据中的各类数据,以下列出了 BIM 文件工作空间支持的要素类及其数据集组织、示例内容以及几何类型:

  • Architectural 架构
    • Casework(架子、橱柜、台面):多面体
    • Ceiling(天花板):多面体
    • Column(建筑和结构柱):多面体
    • CurtainWallMullions(玻璃板、窗户、门之间的框):多面体
    • CurtainWalls(玻璃墙板、木制墙板):多面体
    • Doors(门):多面体
    • Entourage(人、汽车、植物):多面体
    • ExteriorShell(用于通过结构类型和内容所决定的各种类别对结构外部进行描绘的几何):多面体
    • Floors(地板):多面体
    • Furniture(家具):多面体
    • FurnitureSystems(家具组):多面体
    • GenericModel(其他或未分类的元素,导入的 CAD 和 3D 图形模型几何):多面体
    • LocationPoints(测量点、工程点):点
    • Mass(概念形状、庞大体积):多面体
    • Parking(停车表面):多面体
    • Planting(树木、草丛、灌木、草):多面体
    • PlumbingFixtures(厕所、水槽、饮水机):多面体
    • Ramps(坡道):多面体
    • Roofs(屋顶):多面体
    • Rooms(房间):多面体、面
    • Site(种植机、垃圾箱、脚手架):多面体
    • SpecialtyEquipment(自行车停放架、太阳能面板、机械):多面体
    • Stairs(楼梯):多面体
    • StairRailing(楼梯扶手):多面体
    • Topography(地点地形):多面体
    • Walls(墙壁、IFC 桥台):多面体
    • Windows(窗户):多面体
  • Structural 结构
    • StructuralColumns(结构柱、墩):多面体
    • StructuralFoundations(混凝土板、地基、IFC 桥台):多面体
    • StructuralFraming(结构框架):多面体
  • Electrial 电气
    • CableTray(电缆桥架、刚性梯子、通道):多面体
    • CableTrayFitting(电缆桥架配件、弯头、三通、Y 形、十字形、接头):多面体
    • CommDevices(通信设备):多面体
    • Conduit(导管):多面体
    • ConduitFittings(管道配件):多面体
    • DataDevices(数据设备、WiFi):多面体
    • ElectricalEquipment(照明、电器面板、以太网交换机):多面体
    • ElectricalFixtures(接地故障断路器、紧急开关):多面体
    • FireAlarmDevices(火灾警报装置):多面体
    • LightingDevices(照明控制器、调光器):多面体
    • LightingFixtures(照明灯具、灯):多面体
    • NurseCallDevices(护士呼叫装置):多面体
    • SecurityDevices(安全设备):多面体
    • TelephoneDevices(电话设备):多面体
  • Floorplan 楼层平面图
    • Floorplan_Polygon(2.5D 房间、地板):面
    • Floorplan_Polyline(2.5D 墙壁,平开门、幕墙、楼梯、坡道、竖井和电梯):折线
    • Footprint(所有楼层的 2.5D 融合并集且位于地面高程):面
    • PointsOfInterest(2.5D 家具、家具系统、专用设备、机械设备、火灾警报装置、安全设备、护士呼叫装置、通信设备、电气设备):点
  • Mechanical 机械
    • AirTerminal(排气格栅、回流扩散器):多面体
    • DuctAccessories(平衡风门、防火挡板、滤筒):多面体
    • DuctFitting(管道配件):多面体
    • Ducts(管道):多面体
    • FlexDucts(柔性导管):多面体
    • MechanicalEquipment(冷却装置、锅炉,AWWA 泵):多面体
  • Piping 管道系统
    • FlexPipe(挠性管):多面体
    • PipeAccessory(三通阀、蝶阀、闸阀):多面体
    • PipeFittings(管道配件):多面体
    • Pipes(管道):多面体
    • Sprinkler(洒水装置):多面体
  • Infrastructure 基础设施
    • Abutments(RVT:桥端地基):多面体
    • Beams(RVT:结构桥梁、主梁):多面体
    • Bearings(RVT/ IFC:桥梁支座):多面体
    • Courses(IFC:道路/铁路路线,廊道):多面体
    • Decks(RVT:桥面表面):多面体
    • Framing(RVT:各种结构桥梁元素:多面体)
    • Kerbs(IFC:道路路缘):多面体
    • Pavement(IFC:硬路面):多面体
    • Piers(RVT:桥支撑柱):多面体
    • Rails(IFC:铁路路轨):多面体
    • Signals(IFC:铁路信号灯):多面体
    • Tendons(RVT:桥梁受拉杆件,缆索):多面体
    • TrackElements(IFC:铁路轨道):多面体

Revit 文件 (RVT) 包含根据对象分组(称为类别)的不同列表进行分类的对象。 这些 Revit 类别名称由 ArcGIS Pro 用作要素类名称。 这些类别将分组到建筑领域。 ArcGIS Pro 将这些建筑领域用作由此生成的 BIM 文件工作空间的数据集分组。 包含一个名为 Floorplan 的BIM文件工作空间数据集,用于从 BIM 文件内容派生的其他要素类。

参考:https://pro.arcgis.com/zh-cn/pro-app/latest/help/data/revit/supported-bim-geometry.htm

标签:SLPK,BIM,false,3DObject,alias,modelName,多面体,layerType,数据组织
From: https://www.cnblogs.com/kk8085/p/17248414.html

相关文章

  • 4.2-主存中的数据组织
     存储字长主存的一个存储单元所包含的二进制位数目前大多数计算机的主存按字节编址,存储字长也不断加大,如16位字长,32位字长ISA设计时要考虑的两个问题如何根据字......
  • webim 实现实时通讯的 4 种方式
    本文前半段主要节选自:WebSocket,后半段总结和概括自沈剑大佬的两篇文章和文章评论http如何像tcp一样实时的收消息?、网页端收消息,究竟是推还是拉?,完整参考见文末。webim是......
  • MacOS Ventura13安装libimobiledevice踩坑记
    背景:Mac环境搭建iOS自动化环境,Mac系统:MacOSVentura13.2(手残党更新了一把)。问题一:brewinstalllibimobiledevice--HEAD报错提示:UpdatingHomebrew...Warning:Y......
  • 基于BIM区块链的施工过程结算解决方案
    在建筑建材行业中,通过利用区块链技术,毕链科技提出基于BIM区块链的施工过程结算解决方案,可以解决当前行业存在的诸多问题。在这个解决方案中,BIM模型将被视为项目甲方、施工......
  • 最新版SDWebImage的使用
    我之前写过一篇博客,介绍缓存处理的三种方式,其中最难,最麻烦,最占内存资源的还是图片缓存,最近做的项目有大量的图片处理,还是采用了SDWebImage来处理,但是发现之前封装好的代码报......
  • Guava学习笔记:Guava新增集合类型-Bimap
    @TestpublicvoidBimapTest(){BiMap<Integer,String>logfileMap=HashBiMap.create();logfileMap.put(1,"a.log");logfileMap.pu......
  • iOS开发讲解SDWebImage,你真的会用吗?
    SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率很高。但是你真的会用吗?本文接下来将通过例子分析如何合理使用SDWebImage。使用场景:自定义的UITableViewCell上有图......
  • webgl(three.js)实现室内三维定位,3D定位,3D楼宇bim、实时定位三维可视化解决方案——
    使用three.js(webgl)搭建智慧楼宇、3D定位、三维室内定位、设备检测、数字孪生、物联网3D、物业3D监控、物业基础设施可视化运维、3d建筑,3d消防,消防演......
  • SDWebImage的block使用
    SDWebImageManager*sSDWebImageManagersharedManager];UIImage*cachedImage=[sdManagerimageWithUrl:url];//将需要缓存的图片加载进来//如果缓存中有图片......
  • 能跟CAD、BIM软件联合使用的地图软件,比奥维地图还方便!
     是的,今天王工推荐的跟之前的地图工具不一样,百度、谷歌、MAPBOX那些称之为地图工具,这个简直就是地图的浏览器!而且它还可以与CAD、BIM软件联合使用!实在是比奥维地图“香......