Revit BIM模型在ArcGIS Pro中的数据组织及转换成SLPK后的图层结构解析
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")
- ...等等
- Structural(结构图层组:"layerType": "group","modelName": "Structural")
“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
Revit BIM模型在ArcGIS Pro中的数据组织及转换成SLPK后的图层结构解析的更多相关文章
- ArcGIS Pro 中不可用的工具
有些可用于 ArcMap 之类的其他 ArcGIS Desktop 应用程序的地理处理工具在 ArcGIS Pro 中不可用.用于处理 ArcGIS Pro 所不支持的数据格式的地理处理工具已被移除, ...
- ArcGIS Pro 中的布局
ArcGIS Pro 中的布局 页面布局(通常简称为布局)是在虚拟页面上组织的地图元素的集合,旨在用于地图打印.常见的地图元素包括一个或多个地图框(每个地图框都含有一组有序的地图图层).比例尺.指北针 ...
- C# 中怎么将string转换成int型
int intA = 0;1.intA =int.Parse(str);2.int.TryParse(str, out intA);3.intA = Convert.ToInt32(str);以上都可 ...
- Linux c字符串中不可打印字符转换成16进制
本文由 www.169it.com 搜集整理 如果一个C字符串中同时包含可打印和不可打印的字符,如果想将这个字符串写入文件,同时方便打开文件查看或者在控制台中打印出来不会出现乱码,那么可以将字符串中的 ...
- Python3 将configparser从ini文件中读取的内容转换成字典格式
因为写脚本的用到了,所以研究了下怎么将configparser从ini文件中读取的内容转换成字典格式. 整理一下,希望能对大家有帮助. 从http://stackoverflow.com/questi ...
- 获取listboxitem在ListBox中的index并转换成abcd
原文 获取listboxitem在ListBox中的index并转换成abcd 截图如下: 1.实现Converter 获取到listbox,并得到listitem在listbox中的index p ...
- java中如何把图片转换成二进制流的代码
在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...
- shell中把大写字母转换成小写字母
shell中把大写字母转换成小写字母 参考:http://www.jb51.net/article/40257.htm echo "AABBCC" | tr "[:upp ...
- WPF中实现图片文件转换成Visual对象,Viewport3D对象转换成图片
原文:WPF中实现图片文件转换成Visual对象,Viewport3D对象转换成图片 1.图片文件转换成Visual对象 private Visual CreateVisual(string imag ...
- python 练习题:将列表中的大写字母转换成小写
将列表中的大写字母转换成小写如果list中既包含字符串,又包含整数,由于非字符串类型没有lower()方法,L1 = ['Hello', 'World', 18, 'Apple', None]请修改列 ...
随机推荐
- 【逆向】x64dbg设置条件断点 比较内存字符串是否相等
前言 在OD中可以设置条件断点,通过表达式对字符串数据进行比较,比如在CreateFile打开某个特定文件的时候让调试器中断.但是在x32dbg.x64dbg中因为表达式只支持整数,不支持字符串和其它 ...
- vue+element el-table有关Checkbox的一些功能
在做项目的时候会碰到一些表格操作的问题其中我归整了一下有关于多选功能的一些记录 一:默认选中其中一行 <el-table class="editTable" :data=&q ...
- 【Appium_python】多进程启动时,没有设置间隔导致连接关闭,以及等待时间,导致用例未执行完成,服务提早关闭。
多进程启动多设备时,没有设置间隔时间,appium服务器以为受到远程攻击,就自动关闭连接,导致服务启动失败, 解决方法:用time.sleep设置时间间隔 也需要增加等待时间,等待其他设备用例都执行完 ...
- 消息队列 RocketMQ4.x介绍和新概念讲解
消息队列 RocketMQ4.x介绍和新概念讲解 Apache RocketMQ作为阿里开源的一款高性能.高吞吐量的分布式消息中间件 RocketMQ4.x特点 支持Broker和Consumer端消 ...
- Latex基础
文档类 latex提供的基础文档类 article report book proc slides minimal 特殊符号 空格 命令后边空格 1. 字母形式的latex命令忽略其后的所有连续空格, ...
- 纯css实现卡券式半圆及阴影(整理)
<!-- html部分 --> <div class="a"> <!-- a这个大卡片里边分上下两个卡片,对应上边灰色和下边白色部分 --> & ...
- Linux下 Jdk版本切换
安装: 甲骨文官网下jdk 上传到云服务器 解压: tar -zxvf jdk-7u79-linux-x64.tar.gz 设置环境变量 vim /etc/profile 末尾加上 export JA ...
- cpu的调度
什么是cpu的调度 所谓 CPU 调度,就是确定把哪个处于淮备就绪状态的进程移入运行状态.也就是说,CPU调度算法将决定把 CPU 给予哪个进程,以便它能够运行. 两种调度方式 CPU 调度可以是在一 ...
- 排序方法-c语言
在接触过得排序算法中中,较为常见的有冒泡排序.选择排序.归并排序.快速排序法,他们的区别在于稳定性.时间复杂度.空间复杂度等: 现简单复习一下冒泡排序: 思路非常简单,逐个比较相邻的两个元素,前一个元 ...
- org.xml.sax.SAXNotRecognizedException: SAX feature 'http://apache.org/xml/features/allow-java-encodings' not recognized.
tomcat启动服务后,解析xml等文件会报错org.xml.sax.SAXNotRecognizedException: SAX feature 'http://apache.org/xml/fea ...