ARCGIS PRO3 三维模型OSGB转SLPK场景数据集

2024-04-27 09:20

本文主要是介绍ARCGIS PRO3 三维模型OSGB转SLPK场景数据集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.前言

因项目工作,需要将三维模型发布到arcgisserver上,但arcgisserver只支持slpk格式的模型,于是我开启了漫长的三维模型格式转换之旅,在这里记录下本人踩过的坑。

2.三维模型数据情况

2.1 模型大小:在20GB以上;
2.2 格式:osgb格式;
2.3 坐标系:cgcs2000平面

3.曾试过的转换方法

3.1在网格大师转换

初始在arcgispro转slpk一直不成功、且转换效率很低,尝试利用网格大师转换,转换效率比较高,在arcgispro中也能加载显示,但是有一个致命缺点,网格大师转换出来的slpk在arcgispro转坐标时,无法识别出坐标,无法进行转换坐标,只能放弃用这个软件转换。
在这里插入图片描述

3.2 在arcgispro转换

利用arcgispro里的工具“创建集成网格场景图层内容”直接转换,设置输入数据集(可以是与metadata文件同目录下的Data文件夹,或者是下一层的tile文件夹)、输出的slpk路径、选择metadata文件路径、输出坐标系等等。(在这里埋个坑,我的路径用的是中文路径…)

在这里插入图片描述
最后当然是失败告终啦,跑着跑着直接整个arcgispro崩了,啥原因崩的都记录不下来。
**记录1:**初始设置的数据路径为中文路径,目标坐标系为模型坐标系cgcs2000,整个模型直接转换,进度条很快提示为98%,但过一段时间后arcgispro自动关闭,根据转换时观察到的内存占用情况,往往随着转换时间推移,内存占用越来越大,我的内存是16gb,所以一开始我怀疑是我的内存不够大,我增加至64gb的内存再尝试转换,发现也是一段时间后自动崩溃。期间发现转换约2gb的模型需要用到差不多2小时,效率非常低。
**记录2:**其后我尝试只采用很小一部分的模型(大概几百M)做转换测试,全部设置英文路径的情况下,目标坐标系为模型坐标系cgcs2000,转换较为迅速,但发布后无法正常加载,提示底图与图层的空间参考不一致,空间坐标设置有问题。
在这里插入图片描述
**记录3:**数据设置英文路径下,尝试设置其他坐标系(又是一个漫长之旅),尝试了很多坐标系,例如国家2000大地坐标和国家2000垂直坐标、国家2000平面坐标和默认垂直坐标,wgs84和对应的垂直坐标系等等。真的尝试了超级多,最后都以失败告终,无法运行工具、发布后加载时提示错误、直接啥也不提示只弹出一个地球但模型又加载不出来:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
**记录4:**最后发现坐标系一定要设置XY坐标为4326、垂直坐标系为5773!!!过来人告诉你一定要是这两个代码,错一个都不行。最后发布后能成功展示!

**记录5:**设置英文路径、坐标系也设置正确的情况下,对模型进行分块转换,但过程中还是提示了警告,根据观察,应该还是模型文件太大arcgispro识别错误导致的,出现这个提示的话,转换效率超级低,一个1个多GB的模型文件转换后的slpk是原文件大小的10倍…而且转换出来的slpk加载后会出现空洞的情况…继而的想法是将模型继续分更小的块进行转换,避免出现这个情况,但考虑到要转换的模型很多,细分转换工作效率超级低,而且有时候细分后还是会出现这个提示,没有搞懂这个提示的逻辑是啥。
在这里插入图片描述

**记录6:**既然细分模型大小后转换正常,想到不如利用批处理对每个tile文件直接转换,于是就是这样成功了!!!直接右键该工具选择批处理,所有设置和之前一样,选择多个tile文件,名称那里可以自己修改,这个批处理最后转换出来之后是一个slpk但包含了所选择的tile文件模型(这个批处理就是这么奇葩),而且效率比直接运行工具高非常多!!!注意模型文件太多了也还是会出现记录5的问题,但此时模型文件可以接近10个或几十个GB同时处理,也算解决大问题了。
在这里插入图片描述

在这里插入图片描述

4 总结

要想在arcgispro中实现效率较高地完成osgb转slpk,需注意如下事项:
(1)数据路径需为英文路径;
(2)模型文件不能过大,超过10GB的模型建议分块处理;
(3)模型输出坐标系设置,XY坐标系为4326、垂直坐标系为5337,错一不可;
(4)使用“创建集成网格场景图层内容”的批处理进行转换,效率高,支持较大的模型文件转换。

这篇关于ARCGIS PRO3 三维模型OSGB转SLPK场景数据集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940113

相关文章

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核