记录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目录下找不到发布好的服务):

  

  注:

在实际测试过程中,因刚开始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的更多相关文章

  1. ArcGIS Pro 简明教程(1)Pro简介

    ArcGIS Pro 简明教程(1)Pro简介 ArcGIS Pro已经发布了相当的一段时间了,截至笔者写这系列文章的时候已经是1.3版本了,已经是相当完善的一个版本,基本上已经完成了原来ArcGIS ...

  2. ArcGIS pro 发布地图服务(一)动态地图服务

    1.软件:arcgis pro 2.4  数据:.mxd文档. 2.导入mxd文档. 3.登录portal账号 4.分析—发布 5.在server中的地图服务 JavaScript api 查看 6. ...

  3. 如何使用ArcGIS Pro发布自定义打印服务

    我们知道可以通过ArcGIS Map来发布自定义打印服务.从ArcGIS Enterprise 10.6.1版本起,打印服务的功能更加完善了,改进点包括: 支持打印矢量切片服务 改进了智能制图和颜色透 ...

  4. 使用Arcgis Pro 发布矢量切片

    ArcGIS Pro 中的任何地图或底图都可以创建矢量切片,但是有一些局限性和特殊注意事项.为创建矢量切片制作地图的重点是构建一个有效的地图,以快速绘制生成的切片. 软件环境 操作系统:Windows ...

  5. ArcGIS Pro 简明教程(4)工具和模型构建器

    ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...

  6. ArcGIS Pro 简明教程(3)数据编辑

    ArcGIS Pro 简明教程(3)数据编辑 by 李远祥 数据编辑是GIS中最常用的功能之一,ArcGIS Pro在GIS数据编辑上使用习惯有一定的改变,因此,本章可以重点看看一些编辑工具的使用和使 ...

  7. ArcGIS Pro开发Web3D应用(1)——环境搭建与初始实例

    1.搭建环境 1.1 ArcGIS Web3D软件环境 ArcGIS Pro 2.0(必须) ArcGIS for Enterprise 10.5.1 (从10.5开始称呼为Enterprise)包括 ...

  8. ArcMap和ArcGIS Pro加载百度地图

    前面发布了两篇我用ArcBruTile开发用于ArcMap加载百度地图的插件ArcBruTileBaidu,放在网上后评论和反响还不错,还有两位大学同学通过百度搜索居然搜到我本人!文章和技术介绍也被网 ...

  9. ArcGIS Pro 简明教程(2)基础操作和简单制图

    ArcGIS Pro 简明教程(2)基础操作和简单制图 By 李远祥 本章主要介绍ArcGIS Pro如何加载数据并进行简单的地图制作,以基本的操作为主. 上一章节介绍过,ArcGIS Pro是可以直 ...

  10. ArcGIS Pro开发Web3D应用(3)——Server/Portal授权服务开发

    1.整体环境搭建完成 WebAdaptor.DataStore.Portal for arcgis.arcgis server.arcgis pro都成功部署安装,不管是同服务器还是不同服务器,最好做 ...

随机推荐

  1. 攻防(一)tomcat CVE-2020-1938,ftp 21端口

    TOMCAT kali自带POE msf6 > use auxiliary/admin/http/tomcat_ghostcat set RHOST 10.98.xx.xx msf6 auxil ...

  2. Java中double保留2位小数(精度丢失)的两种方式

    Java中double保留2位小数(精度丢失)的两种方式 在我们日常开发中,使用double数据类型进行计算,偶尔会出现精度丢失的情况,例如实际结果是0.75,就可能出现0.7500000000000 ...

  3. 高并发解决方案之 redis原子操作(适用于秒杀场景)

    秒杀活动: 秒杀场景一般会在电商网站或(APP/小程序)举行一些活动或者节假日在12306网站上抢票时遇到.对于一些稀缺或者特价商品,一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大 ...

  4. pytorch卷积模块

    nn.Conv2d() 常用的参数有in_channels,out_channels,kernel_size,stride,padding; 除此之外还有参数dilation,groups,bias ...

  5. 数据库自动备份,crontab定时任务

    查看crontab运行状态service crond status 查看当前用户的crontab,输入 crontab -l: 编辑crontab,输入 crontab -e: 删除crontab,输 ...

  6. LeetCode 之 108. 将有序数组转换为二叉搜索树

    原题链接 思路: 二叉搜索树的定义: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于它的 ...

  7. Maven-高级

    Mvaen 高级 1 导入其他工程 资源文件 先install到仓库里 然后根据组织名项目名版本号写在dependence里正常导入 <dependence> <groupId> ...

  8. LeetCode刷题4:寻找两个正序数组的中位数

    题目: 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 算法的时间复杂度应该为 O(log (m+n)) . 来源:力扣 ...

  9. 多级路由,重定向之后,刷新页面报错问题:报错Unexpected token '<'

    使用脚手架:vue-cli3.0vue版本:vue3.0vue-router版本:vue-router4.0 配置多级路由,首次访问,到重定向页面没有问题,然后在当前页面刷新控制台报错:Unexpec ...

  10. NET Core 部署IIS 碰到得问题解决(内托管模式超时、不允许得请求谓词、直接请求无响应、拒绝服务405)

    web.config 配置说明 典型的web.confg 配置. 注意其中hostingModel模式和requestTimeout 进程内托管需要注意使用单独的应用程序池: 请求超时默认5分钟,出错 ...