revit数据加载到arcgis并实现前端调用

2
分享 2020-03-02
参考资料:
GeoScene BIM解决方案介绍
https://pan.baidu.com/s/1Z5hjgzQX-7yxHC8YLbgPrA    
提取码:gh2n
 
BIM技术浅析及其如何进入ArcGIS平台
https://pan.baidu.com/share/init?surl=Hlv1avtbpF7-sxbuND0k1w  
提取码:j2tm 
————————————————————
Revit是Autodesk公司一套系列软件的名称,可帮助建筑设计师设计、建造和维护质量更好、能效更高的建筑。Revit是我国建筑业BIM体系中使用最广泛的软件之一。本篇文章整理了如何将revit软件制作的rvt数据导入到arcgispro,将其移动到真实位置,发成场景服务以及在前端调用。

软件环境:arcgis pro2.5
案例数据:
链接:https://pan.baidu.com/s/1gE5Z95ylLDuouI3RiRp6ow    
提取码:ecn0   


1、rvt数据导入到arcgispro​
①方法一:使用arcgispro直接加载.rvt数据
从ArcGISPro2.2开始支持直接读取Revit格式(*.rvt)的数据。 
1.png

2.png

加载完成后,rvt会自动生成一个和场景视图空间参考一致的投影文件,例如:3857 
3.png

方法二:arcgispro2.5可以使用BIM File to Geodatbase工具将.rvt转到File Geodatabase 
4.png

需要说明的是该工具不会保留模型的符号色彩,可以接着使用“Make Building Layer”工具来显示模型的符号色彩。
5.png

 整个演示过程可以参考链接:
 https://esri.zoom.us/rec/share/9c1sALTJrEVLeKvA9UHAUPN7P7jbeaa8gyJP_vIJmUmC-UNMRYNeITSelEvaQG1f   
②.rvt数据移动到真实位置
参考链接:https://pro.arcgis.com/zh-cn/pro-app/help/data/revit/3d-georeferencing-revit-or-cad-data.htm 
使用Go To XY工具,输入rvt坐标位置,然后点击“Pan to Location”按钮。其中(117,40)是模型在场景视图中的显示坐标。 
6.png

这时发现模型消失在当前的场景视图中,在内容列表选中rvt数据,菜单栏点击“manage”——“Georeference”按钮 
7.png

点击“Move to display”选项发现模型在场景视图中显示,如果发现模型位置有细小偏差,可以使用地理配准下的“move”、“scale”、“rotate”等进行微调。 
8.png

保存移动后的效果。其中点击save会对原始的rvt的位置进行更改,saveas new会生成一个新的wld3文件,原始的rvt在重新打开arcgispro后不会改变。
9.png

 移除当前内容列表中的模型,重新将模型进行添加,发现模型此时的位置是移动后的位置。
10.png

③.rvt数据转为slpk
使用“创建建筑物场景图层包”工具来实现,其中输入数据集支持的数据类型为Building Layer,可以将内容列表中的rvt模型另存为图层文件,
11.png

也可以直接在“创建建筑物场景图层包”工具中直接使用内容列表中的rvt图层文件,另外输出坐标系统与图层文件的空间参考保持一致。 
12.png

生成的slpk文件如下图:
13.png

 2、发布场景服务

①如果场景图层包中的文件大小小于 1 GB,则可在浏览器中直接将其上传至 ArcGIS Online 或 Portal for ArcGIS。如果大于 1 GB,请使用共享包工具将其直接上传至 ArcGIS Online 或 Portal for ArcGIS。

②create building scene layer package工具生成的slpk只能发布到10.7.1及更高版本的Portal for ArcGIS上


例如:使用“共享包”工具将slpk共享到arcgisonline,然后在arcgisonline将其发成场景服务,需要在arcgispro中预先登录arcgisonline。 
14.png

发布完成之后的效果: 
15.png

16.png

3、前端调用场景服务
参考示例:https://developers.arcgis.com/javascript/latest/sample-code/building-scene-layer-slice/index.html
基于参考示例将代码进行了更改,更改后的代码如下:
<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<title>BuildingSceneLayer with Slice widget - 4.14</title>

<style>
html,
body,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}

#menu {
padding: 0.8em;
}
</style>

<link href="[url]https://js.arcgis.com/4.14/esr ... n.css[/url]" rel="stylesheet" type="text/css" />
<script src="[url]https://js.arcgis.com/4.14/[/url]"></script>

<script>
require(["esri/Map",
"esri/views/SceneView",
"esri/layers/BuildingSceneLayer"
], function (
Map,
SceneView,
BuildingSceneLayer
) {

const map = new Map({
basemap: "osm"
});
const view = new SceneView({
container: "viewDiv",
map: map
});

const buildingLayer = new BuildingSceneLayer({
url:
"[url]https://tiles.arcgis.com/tiles ... erver[/url]",
title: "Administration Building, Redlands - Building Scene Layer"
});
map.layers.add(buildingLayer);
view.goTo({
center: [116.9999377, 39.9998607],
heading: 10,
zoom: 20,
tilt: 45
})


});
</script>
</head>

<body></body>

</html>

加载场景服务.gif

至此,实现了revit数据入到arcgis库以及前端调用整个流程。 
 
原文地址:https://blog.csdn.net/gislaozhang/article/details/104613247  
 
 

0 个评论

要回复文章请先登录注册