ArcGIS Pro处理发布并在前端调用bim数据全过程-rvt转slpk
记录ArcGIS处理三维bim模型全纪录,从原始的rvt格式开始,到最后web前端js api调用的整个过程,并记录部分中间操作过程中出现的问题和解决办法。
本文示例使用:
软件:ArcGIS Pro3.0.1(破解版),
GeoScene Portal2.1
ArcGIS Maps SDK for JavaScript 4.23(原ArcGIS JS API)
bim数据格式:rvt
注:
- ArcGIS Pro/Portal和GeoScene Pro/Portal实际上是相同的东西,他们之间的操作是互通的;
- ArcGIS Maps SDK for JavaScript在示例中用的是4.23版本,建议尽量使用越新的版本;
- ArcGIS Pro 3.0 只支持将来自工业基础类 (IFC) 格式化文件和 Autodesk Revit (RVT) 的 BIM 设计文件;
- ArcGIS Pro3.0 支持 Revit 文件版本 2016–2022,若版本较低可以先升级,或使用Pro右键rvt格式数据,更新为最新版本。
参考:https://pro.arcgis.com/zh-cn/pro-app/latest/help/data/revit/what-is-bim-data-.htm
本文操作流程:
1、将bim数据加载到ArcGIS Pro,进行地理配准,并调整bim数据的位置和旋转等。
2、使用BIM File To Geodatabase(BIM 文件至地理数据库)将rvt格式先转到地理数据库
3、使用Make Building Layer(创建建筑图层),将bim数据加载到地图
4、使用Create Building Scene Layer Content(创建建筑场景图层包)选择第2步在图层树上生成的bim数据转换成slpk格式
5、使用Share Package(共享包),将slpk发布成rest服务
6、使用ArcGIS Maps SDK for JavaScript的BuildingSceneLayer加载数据并在浏览器端展示
详细操作步骤:
1、将bim数据加载到ArcGIS Pro,进行地理配准,并调整bim数据的位置和旋转等
ArcGIS Pro可以直接打开rvt格式添加到场景中查看bim数据(需要先新建局部场景,然后通过Catalog中添加或者通过Map下Add Data的Data添加rvt数据)

添加后会显示两个图层分组,一个与文件同名,一个在文件名后添加后缀_Floorplan:

通常rvt格式数据加载到arcgis pro中并没有坐标系,在加载的过程中会提示:

此时就需要进行地理配准,移动到指定位置。
先使用 Map菜单下的GO TO XY,确定bim数据要移动到的位置:

输入经纬度,点击手型图标Pan To Location,将视图移动到指定位置

然后选择一个图层(要选到具体图层,可以随便选择一个,不能选择图层组),然后在BIM Data菜单下,选择Georeference(地理配准):

如果bim数据没有坐标系(没有配准过),则会弹出一个提示,点击确定,会将当前地图的坐标作为bim数据的坐标系:

此时会生成一个bim数据同名的.prj格式数据:

同时会打开一个Georeference(地理配准)菜单,选择菜单下的Move to display(移至显示),会将指定图层移动到指定位置,另外可通过Move、Scale、Rotate进行微调

调整完后点击Save(保存)按钮,这是会生成另外一个与bim数据同名的.wld3格式数据

注:CAD 和 BIM 文件需要具有有效的 Esri 坐标系 (.prj),并且可能需要可选的坐标变换信息文件 (.wld),
以确定应在地球表面上定位 CAD 或 BIM 数据中的坐标的方式。
参考:https://pro.arcgis.com/zh-cn/pro-app/latest/help/data/revit/geospatial-position-of-cad-and-bim-data.htm
选择Close Georeference(关闭地理配准),会发现rvt 所有图层都到新位置了:

只需调整一个图层,其他图层都会跟着变化,此时若还需要对模型位置进行微调,还可以再打开地理配准进行操作,同样只要选中其中一个图层即可。
特别说明:ArcGIS可以直接使用Create Building Scene Layer Content将rvt格式数据转换成slpk(可省去2、3步骤)。
通过下拉选择同名的数据集,设置输出slpk文件的路径和名称,以及坐标系(只有将数据添加到图层上输入数据集才可以使用下拉选择到对应数据):

因所使用的测试数据在使用该方法转换的时候会导致ArcGIS Pro奔溃(以前有直接转过是成功的,不知道是不是此次数据的问题还是软件的问题导致),故本次处理过程是先将rvt数据转到地理数据库再进行转换发布(测试成功)。
实际上如果rvt可以直接转成slpk的话,可以省去2、3步骤。
2、使用BIM File To Geodatabase将rvt格式先转到地理数据库中

输入的bim文件使用rvt格式,选择坐标系后运行,将bim数据存储到地理数据库中:

3、使用Make Building Layer,将bim数据加载到地图上

效果:

如果直接从gdb中拖到地图里,效果比较差,图层比较多,渲染的颜色与原始数据不一致,所以要想在图层树上展示,先通过工具Make Building Layer,将地理数据库中的bim模型放到图层书上 :

4、根据第二步加载到图层树上的bim模型,使用Create Building Scene Layer Content转换成slpk数据:

输入数据集使用下拉选择左侧图层树上的数据,输出为slpk格式,根据实际情况设置坐标系,运行成功后即可生成slpk数据。
5、使用Share Package,对slpk数据进行发布
发布前需要在右上角登录用于发布数据的portal:

然后使用Share Package工具

选择需要发布的slpk数据,注意Publish web layer需要勾上,否则只上传数据包,并没有发布数据,发布成功后,在Portal上有两条记录:

如果在发布的时候没有勾选共享给所有人,则需要在ArcGIS Portal选择Scene Layer,将服务设置成共享,然后可以通过Server访问rest服务(如果没有共享,在Hosted目录下找不到发布好的服务):

注:
- 对于数据小于1G的slpk数据可以在浏览器将其上传到ArcGIS Portal上,再进行发布,无需使用ArcGIS Pro,当数据量大于1G才使用ArcGIS Pro的Share Package工具上传至ArcGIS Portal并发布。
- Create Building Scene Layer Content工具生成的slpk数据,只能发布到10.7.1及以上版本,参考:https://pro.arcgis.com/en/pro-app/latest/help/mapping/layer-properties/building-scene-layer-in-arcgis-pro.htm
在实际测试过程中,因刚开始ArcGIS Pro连的是10.5的Portal,数据在生成slpk后,在向Portal10.5上发布的时候不成功,报 Invalid scene package错误。后面拷贝数据到GeoScene Pro2.1中去发布测试成功。

6、使用ArcGIS Maps SDK for JavaScript(原ArcGIS JS API)的BuildingSceneLayer加载bim服务在前端浏览器展示:
参考示例:https://developers.arcgis.com/javascript/latest/sample-code/building-scene-layer-slice
const buildingLayer = new BuildingSceneLayer({
url: "http://10.0.4.4/tcloud/rest/services/szbuilding2019/SceneServer"
});
map.add(buildingLayer);
buildingLayer.loadAll()
.then(function() {
buildingLayer.allSublayers.forEach((layer) => {
switch (layer.modelName) {
case "FullModel":
layer.visible = true;
break;
case "Overview":
layer.visible = false;
break;
}
});
})
.catch(function(error) {
console.log("Error: one or more sublayer failed to load");
});
通常在将BuildingSceneLayer添加到WebScene或Map时,只有概览层可见。在示例中,我们希望从头开始查看完整模型。所以我们隐藏概览层并显示完整模型层:
“FullModel”和“Overview”是BuildingSceneLayer的直接子层。如果您想在BuildingSceneLayer的子组中搜索,可以使用BuildingSceneLayer.allSublayers,它是子图层的平面数组。要识别子图层,最好使用BuildingSceneLayer.modelName,因为这是基于I3S 规范的标准名称,无法更改。
注:ArcGIS发布的bim数据分为概览层(OverView)和完整模型(Full Model),
默认情况下使用BuildingSceneLayer加载图层是只加载概览层,要想将全部模型都能展示出来,需要将完整模型更改为可视。
通过ArcGIS Pro中拖入slpk数据,可以查看ArcGIS bim模型数据的组织结构:

处理过程中遇到的问题汇总:
1、直接使用Create Building Scene Layer Content将rvt格式数据转换成slpk,系统闪退
解决方案:先将rvt转如地理数据库中,再进行转换
2、生成的slpk发布到ArcGIS Portal10.5中报错
解决方案:ArcGIS Portal10.5不支持bim类型图层
3、多个rvt格式,在按照本文的操作步骤处理完后,处理第二个rvt数据,在地理配准Move to display时候报无法移动
解决方案:关闭ArcGIS Pro,重新打开,新建局部场景重新按本文步骤操作,可以解决该问题。
本文参考资料:
https://pro.arcgis.com/en/pro-app/latest/help/data/revit/adding-revit-data-to-arcgis-pro.htm
https://www.cnblogs.com/yansc/p/14960126.html
https://blog.csdn.net/gislaozhang/article/details/104613247
ArcGIS Pro处理发布并在前端调用bim数据全过程-rvt转slpk的更多相关文章
- ArcGIS Pro 简明教程(1)Pro简介
ArcGIS Pro 简明教程(1)Pro简介 ArcGIS Pro已经发布了相当的一段时间了,截至笔者写这系列文章的时候已经是1.3版本了,已经是相当完善的一个版本,基本上已经完成了原来ArcGIS ...
- ArcGIS pro 发布地图服务(一)动态地图服务
1.软件:arcgis pro 2.4 数据:.mxd文档. 2.导入mxd文档. 3.登录portal账号 4.分析—发布 5.在server中的地图服务 JavaScript api 查看 6. ...
- 如何使用ArcGIS Pro发布自定义打印服务
我们知道可以通过ArcGIS Map来发布自定义打印服务.从ArcGIS Enterprise 10.6.1版本起,打印服务的功能更加完善了,改进点包括: 支持打印矢量切片服务 改进了智能制图和颜色透 ...
- 使用Arcgis Pro 发布矢量切片
ArcGIS Pro 中的任何地图或底图都可以创建矢量切片,但是有一些局限性和特殊注意事项.为创建矢量切片制作地图的重点是构建一个有效的地图,以快速绘制生成的切片. 软件环境 操作系统:Windows ...
- ArcGIS Pro 简明教程(4)工具和模型构建器
ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...
- ArcGIS Pro 简明教程(3)数据编辑
ArcGIS Pro 简明教程(3)数据编辑 by 李远祥 数据编辑是GIS中最常用的功能之一,ArcGIS Pro在GIS数据编辑上使用习惯有一定的改变,因此,本章可以重点看看一些编辑工具的使用和使 ...
- ArcGIS Pro开发Web3D应用(1)——环境搭建与初始实例
1.搭建环境 1.1 ArcGIS Web3D软件环境 ArcGIS Pro 2.0(必须) ArcGIS for Enterprise 10.5.1 (从10.5开始称呼为Enterprise)包括 ...
- ArcMap和ArcGIS Pro加载百度地图
前面发布了两篇我用ArcBruTile开发用于ArcMap加载百度地图的插件ArcBruTileBaidu,放在网上后评论和反响还不错,还有两位大学同学通过百度搜索居然搜到我本人!文章和技术介绍也被网 ...
- ArcGIS Pro 简明教程(2)基础操作和简单制图
ArcGIS Pro 简明教程(2)基础操作和简单制图 By 李远祥 本章主要介绍ArcGIS Pro如何加载数据并进行简单的地图制作,以基本的操作为主. 上一章节介绍过,ArcGIS Pro是可以直 ...
- ArcGIS Pro开发Web3D应用(3)——Server/Portal授权服务开发
1.整体环境搭建完成 WebAdaptor.DataStore.Portal for arcgis.arcgis server.arcgis pro都成功部署安装,不管是同服务器还是不同服务器,最好做 ...
随机推荐
- 使用python脚本批量造数据
本篇将采用 Python 脚本的方式进行批量给mysql造数据. 为了使 Python 可以连上数据库(MySQL),并且可以与数据库交互(增删改查等操作),则需要安装 MySQL 客户端操作库. ...
- windows根据文件名找到进程,并杀死进程。
背景:最近因为工作原因,装了360杀毒引擎,完了就卸载了.发现一直提示文件正在使用无法删除.文件无法访问等等.经过一系列操作,安全模式下都无法删除,恶心死了... 1.shirt + del 按文件夹 ...
- python之变量
什么是变量? 用来记录事务的变化状态,计算机模拟人,就需要具备人类某一个功能.你通过记录我的名字年龄等一系列的身份信息,以此和我进行匹配,确定我就是phoebe这个人. 为什么有变量? 游戏里的英雄角 ...
- 为什么你需要升级 pip
更新软件版本可以修复bug,增加新功能和提升性能.例如,NumPy 1.20 添加了类型注释,并在可能的情况下通过使用SIMD来提高性能.如果您要安装NumPy,则可能要安装最新版本. 相反,如果您使 ...
- C语言初级阶段5——函数1
C语言初级阶段5--函数1 函数的基本概念 1.函数:理解为封装功能的容器. 主函数是函数的入口 2.函数定义的基本格式: 返回值类型:常用的基本数据类型,执行完以后,函数会得到一个什么类型的值,如果 ...
- git的基础指令练习
#版本回退 git reset commitId --hard
- 与用户交互 Scanner
与用户交互 Scanner Scanner对象 Java提供了一个工具类,可以用以获取用户的输入.java.util.Scanner 是Java5的新特征 基本语法 Scanner s = new S ...
- tensorflow的断点续训
tensorflow的断点续训 2019-09-07 顾名思义,断点续训的意思是因为某些原因模型还没有训练完成就被中断,下一次训练可以在上一次训练的基础上继续训练而不用从头开始:这种方式对于你那些训练 ...
- Linux子系统之【内存管理】
1.内存管理的意义? 内存是进程运行的地方,相当于是战场.完善的机制能让进程多快好省地运行. 2.原始内存管理是怎么样的? 简陋(直接运行在物理内存上).不安全(无隔离,无权限) 缺点:容易出错,进程 ...
- This will upgrade your R installation.
sudo add-apt-repository ppa:marutter/rrutter sudo apt update sudo apt full-upgrade