目录
③osgb存放路径有特殊中文字符,报错error 999999
①BIM数据如何入到arcgis平台,移动到真实的位置,并且发布成三维场景服务,以及前端调用
本篇博客记录如何使用arcgispro将各种类型的三维数据(传统建模(3ds、obj、dae、skp、wrl等)、倾斜摄影、bim、点云)导入到arcgis平台中,方便后期发布场景服务和应用开发调用。
1、传统建模数据
①obj、dae、3ds等模型纹理颜色或者贴图不显示
使用import 3d file将数据导入到arcgispro,模型是白模。
回答:
-
dae等数据使用import 3d files生成multipatch,生成的multipatch必须得存储在gdb中,因为存放在shp中纹理会丢失;
-
如果是贴图不显示的话,请使用相对路径;模型贴图不要有中文字符,
-
贴图格式。纹理贴图不显示,多半是由于透明纹理,而且采用的格式是tga格式;如果有透明纹理,建议使用png格式,而不用tga格式,multipatch不支持tga,但是tga格式在3dmax中用的较多;可以将tga转为png格式。另外,贴图的分辨率二倍关系
-
可以在导入到arcgispro之前,使用3dmax加载这个模型,例如:obj模型,查看模型的颜色是否有,如果没有的话,请确保模型的颜色在3dmax中是没有问题的,然后再导入到arcgispro。
如果obj模型在3dmax中模型纹理颜色都在,那就先用下述工具进行处理,再导入到arcgispro中。
工具:
链接:https://pan.baidu.com/s/1QW2QHUYIc5xhfH31ROv9Dg
提取码:183t
②加载wrl数据贴图丢失
wrl文件结构如下:
回答:
图示中纹理的存放位置../是上一级目录的意思,应该把纹理图片存放在上一级maps的目录,把wrl文件存放在其它名称的文件夹里,例如:下图中的wrl文件夹。
然后再使用import 3d files将其导入到arcgispro。
③将obj模型导入到arcgispro出现异常情况
问题:
ArcGISPro的import 3d files加载obj,转完后纹理没有丢失,但是数据不显示,缩放至图层和属性表定位都不显示,使用“edit”——“Verticles”能够显示,但是又很快消失;
使用Pro的数据互操作模块,数据转完后纹理没有丢失,但是顶部变侧面;
使用arcscene加载Pro的import 3d files转完后的multipatch数据,数据呈线条状。
解决办法:
在3dmax中将obj转为dae,同时将dae和纹理放在同一存放路径下解决问题,然后使用Pro的import 3d files工具转换后,纹理没有丢失,顶部也没有变侧面,模型正常显示。
④zoom to layer选项失效导致三维数据不显示
将三维数据通过import 3d files工具转为multipatch,转完的数据通过zoom to layer选项不能显示在场景视图,只有通过点击属性表中的要素记录才能够显示模型
回答:
这是由extent偏大导致的,通过“recalculate feature class extent”工具重新计算multipatch的范围即可。如果使用arcgispro2.5的这个工具,范围还是没变化,可以使用arcmap中的这个工具。
⑤multipatch转slpk模型贴图有细缝
使用pro2.3/2.4/2.5.0-beta.1中的工具将multipatch转slpk模型贴图有细缝,贴图格式为png或者jpg
原因:
multipatch是gdb中的数据集,slpk是i3s标准下的数据集,slpk存和取贴图的方式和multipatch不同。
解决方法:
由于multipatch转slpk使用create 3d object工具存在细缝是个已知的bug。
在这里推荐一个绕行方案:
使用cityengine2019将multipatch导入转为slpk,转完的slpk在pro中显示没有出现纹理贴图缝隙的问题。
cityengine2019支持直接import multipatch而无需以脚本的形式导入,导入后直接导出为slpk,cityengine2019采用的是i3s 1.7版本。
但是这时候可能会出现模型有黑线的情况,如上图:
其实不是模型的问题,是因为arcgispro默认打开了光照。
只需将“enable lighting”选项不选中就能去除黑色。
2、倾斜摄影
①模型有白块
使用arcgispro2.5的集成网格图层包(create integreted mesh layer scene package)工具转完,发现生成的slpk会有白块的情况
解决方法:
使用这个脚本工具进行处理即可解决。
链接:https://pan.baidu.com/s/1Ff2aJNJhjQPH4SuNo3PyPg
提取码:vmfj
②压平工具
使用压平工具,现在支持对地理坐标系和投影坐标系的工具进行压平处理:
链接:https://pan.baidu.com/s/1D7KaxUy-u2FsM3rhEXylEA
提取码:w8vl
效果图:
③osgb存放路径有特殊中文字符,报错error 999999
例如:路径为C:\Asiya\特\Data,报错报error999999,说存储路径有特殊字符,如果路径为纯英文路径就不报错。
回答:
osgb的存放路径不要有中文字符
④Osgb转为slpk,停靠点和转完的slpk之间有偏移?
回答:
是因为转时如果只取osgb的部分数据就会有偏移,如果取全部数据就不会有偏移,同时停靠点必须是元数据中的坐标值来指定。
全部数据是指,从Tile+0+0+0开始,而不是例如:Tile+3+3+3开始。
⑤osgb转slpk软件崩溃
原因:
很可能和某个tile文件夹下osgb跨级有关。可以在转换时去定位在哪个level报错,然后去对应的文件夹查看数据是否跨级。
⑥arcgispro支持单体化吗?
不支持。单体化是指生成的倾斜数据中每个建筑物但是单个模型,点击任意一个模型能够弹出该模型对应的属性信息。
绕行方案,生成多面体,将多面体改成透明,在前端js开发中将多面体的场景服务叠加在倾斜摄影的场景服务上,进行点击查询属性。
⑦3d tile转slpk
方法一:FME官方说新版本的FME可以将3d tile转为slpk,
方法二:可以使用pro的数据互操作模块将3d tile转为obj,再将obj转为multipatch;
方法三:现在的思路是先把数据转成obj之类的模型再转成slpk;FME可以建一个流程去处理;
方法四:pro在未来会直接支持将3dtile转为slpk,但是目前不行。
⑧osgb转slpk工具
方法一:可以使用arcgispro自带的create integreted mesh scene layer package工具来转。
如果报错,可以使用下述链接的工具来转:
方法二:https://github.com/xinying180/slpkTools_1.7
方法三:https://github.com/giserHacter/osgb-slpk
方法四:原始航拍照片通过smart3D结合链接中提供的转换文档(https://github.com/giserHacter/-ContextCapture-SLPK-)转成slpk,对smart3d生成的slpk进行处理的工具集,
https://github.com/giserHacter/esrichina-i3s-opmesh-tools
3、BIM
①BIM数据如何入到arcgis平台,移动到真实的位置,并且发布成三维场景服务,以及前端调用
参考链接:http://zhihu.esrichina.com.cn/article/4000
②revit数据加载到arcgispro纹理贴图不显示
答案写在最前面:arcgispro2.6支持贴图和材质。
revit中的效果:
Pro2.5中的效果:
arcgispro2.5读取revit数据,官网(https://pro.arcgis.com/en/pro-app/help/data/revit/adding-revit-data-to-arcgis-pro.htm )有这样的一句话
其中material表示纹理贴图的意思。
Pro2.5不支持读取revit数据的颜色贴图和图片贴图,但是如果属性带颜色的是可以有颜色渲染的,Pro可以自动读取带颜色的属性字段,做模型的时候材质属性有的话可以带过来。而用户那个revit数据就是图片贴图,所以Pro2.5读取不了。
下述效果,绿色的树应该是带颜色的属性。
③arcgis对pdms的支持情况
易智瑞与国内合作伙伴一起实现了对主流BIM软件的支持如Bentley、CATIA、Tekla、PDMS等,同时支持中间交流格式IFC(并支持IFC 4.x标准)、STEP等。
目前pdms的数据格式需要使用飞渡科技的插件才能转为arcgis支持的slpk格式,飞渡科技是易智瑞的合作伙伴。
arcgis目前不能直接将pdms的数据转为自身的三维格式。如果您想使用飞渡科技的插件需要联系易智瑞的销售。
https://m.sohu.com/a/313989775_609577
技术路线:那个PDMS模型应该都是保存成IFC格式以后,飞渡的软件转换成OSGB再转成SLPK的,也就是飞渡其实做的就是将IFC转为OSGB,同时飞渡也可以将生成的OSGB转为slpk。
4、点云
可以参考易智瑞公开课《点云数据在arcgis平台中应用》https://www.bilibili.com/video/av80340641/