OSG 读取OSGB倾斜数据

article/2025/11/6 8:50:07

OSG 读取OSGB倾斜数据

OSGB数据是一个四叉树结构,本文测试使用OSG加载OSGB倾斜摄影测量数据。

示例数据

在这里插入图片描述

Code

1、遍历所有osgb数据文件生成空间索引
2、通过建立的空间索引加载数据

#include <iostream>
#include <string>
#include <filesystem>#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>using namespace std;static void findDir(const string& dir, vector<string>& subDirs)
{//subDirs.clear();for (auto& i : filesystem::directory_iterator(dir)) {if (i.path().string() == "." || i.path().string() == "..")continue;if (i.is_directory()) {subDirs.push_back(i.path().string());}}
}static std::string DirOrPathGetName(std::string filePath)
{size_t m = filePath.find_last_of('\\');if (m == string::npos){return filePath;}size_t p = filePath.find_last_of('.');if (p != string::npos && p > m)		{filePath.erase(p);}std::string dirPath = filePath;dirPath.erase(0, m + 1);return dirPath;
}void createObliqueIndexes(std::string fileDir)
{string dataDir = fileDir + "/Data";osg::ref_ptr<osg::Group> group = new osg::Group();vector<string> subDirs;findDir(dataDir, subDirs);for (size_t i = 0; i < subDirs.size(); i++){string name = DirOrPathGetName(subDirs[i]);string path = subDirs[i] + "/" + name + ".osgb";if (!filesystem::exists(path))continue;osg::ref_ptr<osg::Node> node = osgDB::readNodeFile(path);osg::ref_ptr<osg::PagedLOD> lod = new osg::PagedLOD();if (!node.valid())continue;//auto bs=node->computeBound();auto bs = node->getBound();auto c = bs.center();auto r = bs.radius();lod->setCenter(c);lod->setRadius(r);lod->setRangeMode(osg::LOD::RangeMode::PIXEL_SIZE_ON_SCREEN);osg::ref_ptr<osg::Geode> geode = new osg::Geode;geode->getOrCreateStateSet();lod->addChild(geode.get());std::string relativeFilePath = "./Data/" + name + "/" + name + ".osgb";lod->setFileName(0, "");lod->setFileName(1, relativeFilePath);lod->setRange(0, 0, 1.0);																							//第一层不可见lod->setRange(1, 1.0, FLT_MAX);lod->setDatabasePath("");group->addChild(lod);}std::string outputLodFile = fileDir + "/Data.osgb";osgDB::writeNodeFile(*group, outputLodFile);
}int main(int argc, char *argv[])
{if (argc < 2)return -1;if (!filesystem::exists(argv[1]))return -1;std::string fileDir = argv[1];std::string outputLodFile = fileDir + "/Data.osgb";createObliqueIndexes(fileDir);osgViewer::Viewer viewer;osg::Node * node = new osg::Node;node = osgDB::readNodeFile(outputLodFile);viewer.setSceneData(node);viewer.setUpViewInWindow(50, 50, 800, 600);return viewer.run();
}

构建

添加 C++17支持。

cmake_minimum_required(VERSION 3.15)
project(osgDemo)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)find_package(OpenSceneGraph REQUIRED osgDB osgViewer)
include_directories(${OPENSCENEGRAPH_INCLUDE_DIR})
add_executable (osgDemo "main.cpp")
target_link_libraries(${PROJECT_NAME} ${OPENSCENEGRAPH_LIBRARIES})

OSG 库使用vcpkg编译安装。
在这里插入图片描述

测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

参考

  1. 倾斜摄影OSGB转换为3DTiles
  2. OSG加载倾斜摄影数据

http://chatgpt.dhexx.cn/article/WJehxY41.shtml

相关文章

osgb加载

背景 三维引擎 本文要介绍的three.js和cesium.js是web端三维引擎&#xff0c;基于WebGL开发的&#xff0c;WebGL又是OpenGL ES的B端API封装集&#xff0c;openGL ES是 openGL的一个子集&#xff0c;OpenGL是 Open Graphics Library 是个定义了一个跨编程语言、跨平台的编程接口…

实景三维的基石-osgb

前言 2022年2月24号&#xff0c;自然资源部办公厅印发《关于全面推进实景三维中国建设的通知》。 其中我们可以发现在城市级实景三维建设中提出了倾斜摄影影像&#xff0c;描述如下&#xff1a; 《二是城市级实景三维建设。国家层面将整合省级行政区域基础地理实体数据&#xf…

倾斜摄影三维模型OSGB格式简化(压缩、优化)

倾斜摄影三维模型OSGB格式简化&#xff08;压缩、优化&#xff09; 文章目录 倾斜摄影三维模型OSGB格式简化&#xff08;压缩、优化&#xff09;前言一、OSGB格式二、当前osgb简化/压缩的主要方式1.第一种 输出osgb格式2.第二种 输出其他格式 三、我的理解**有兴趣的同学可以加…

倾斜摄影测量数据osgb格式加载优化(以supermap为例)

一、OSGB格式介绍 1. osgb osgb全称为Open Scene Gragh Binary,是OSG引擎的一种支持三维数据的二进制存储格式。 2. cc软件生成osgb数据目录结构 其中metadata.xml为元数据文件&#xff0c;含倾斜摄影测量数据的坐标及原点等信息。Data为倾斜摄影测量数据的存储文件夹&…

OSGB格式解析

主要介绍倾斜摄影数据OSGB二进制数据的解析&#xff0c;首先简单介绍一下OpenSceneGraph相关技术&#xff0c;并介绍倾斜摄影数据的组织结构&#xff0c;着重分析OSGB格式的相关字段&#xff0c;最后逐字节对OSGB数据进行解析并通过OpenSceneGraph对数据进行可视化&#xff0c;…

如何介绍自己测试过的项目

测试人员在找工作的过程中&#xff0c;通常有一个问题是很难绕开的。就是要如何向别人介绍自己之前做过的项目。下面我们就这个问题简单的做一些分析。 要解决这个问题&#xff0c;大体上可以分为如下几个步骤&#xff1a; 1、对项目进行基本介绍 2、说明自己负责测试的模块…

分享一份接口测试项目(非常值得练手)

之前跟大家分享了一份适合练手的接口测试实战项目&#xff0c;算是一份接口测试的入门级项目。但这个项目有诸多局限&#xff0c;比如部署不便&#xff0c;接口有限&#xff0c;没有鉴权等等。 因此&#xff0c;趁着周末&#xff0c;小编又给大家找了一个接口测试项目&#xf…

1.性能测试项目实战

怎么开展性能测试 什么时候开始性能测试 1.先确定需不需要做 客户有明确的性能需求当没有明确需求时 如果市场用户访问量不大&#xff0c;时间允许就做一个基准测试&#xff0c;时间不允许就不做市场用户量比较大&#xff0c;需要先跟产品&#xff0c;需求人员确定好性能需求…

金融外包测试项目经验分享

金融项目外包 测试管理 经验 软件测试 首先确定项目外包测试的核心问题—对项目外包测试的定位。 项目外包测试是一种服务性工作&#xff0c;所以把服务放在第一位是做任何事情的出发点。作为项目经理&#xff0c;一定要把这种思想告诉给我们的测试团队成员&#xff0c;树立服务…

测试项目中的风险管理

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

测试人员如何在项目中开展测试

项目中角色分为&#xff1a;项目经理&#xff08;PM&#xff09;、QA、产品、UI、开发、测试&#xff0c;本文以测试人员视角展开谈谈如何开展测试。 目录 一、尽早介入测试 二、积极与产品人员核对需求 三、提前准备测试用例 四、交叉执行用例 五、提交缺陷注意要点 六…

项目如何提测?

如何提测? 今天是10月24日,一个只有互联网从业者才知道的节日,祝各位苦逼的程序猿节日快乐! 我们处在一个互联网爆发时代, 这个时代需要我们, 我们充满了责任感, 使命感, 我们为之努力奋斗一生的事业. 项目提测对测试工程师来说是再普通不过了. 开发在Dev环境联调, 功能开发…

WEB测试项目实战——1.WEB项目测试备战

项目介绍&#xff1a;B/S架构的web项目 #WEB项目测试备战 目录 文章目录 [toc] ##一、实战路线图 ###(一&#xff09;研发模型——瀑布模型 ###(二&#xff09;测试遵循的原则——W原则 ###(三&#xff09;项目实战课程路线图 ####前期准备-需求评审-设计评审-测试计划-测试架…

缺项目经验的看过来,真实的软件测试实战项目来了

1.web自动化项目 这是一个电商项目&#xff0c;你可以在网站上购买各种宠物。 常见的电商网站操作在这个项目中都可以找到&#xff0c;比如注册&#xff0c;登录&#xff0c;查找商品&#xff0c;选择商品&#xff0c;添加购物车&#xff0c;下单&#xff0c;查看定位&#xf…

一文7个步骤教你搭建测试web测试项目实战环境,

今天小编&#xff0c;给大家总结下web 测试实战的相关内容&#xff0c;一起来学习下吧&#xff01; web项目实战可按顺序依次为&#xff1a;【搭建测试环境】、【需求评审】、【编写测试计划】、【分析测试点.编写测试用例】、【用例评审】、【执行用例提bug】、【测试报告】七…

分享一份软件测试项目(Python项目)

在之前小编分享的众多项目中&#xff0c;以Java项目或PHP项目居多&#xff0c;Python项目很少&#xff0c;但有的小伙伴又想要找Python项目练手。 为了满足小伙伴们的需求&#xff0c;凭实力宠粉&#xff0c;小编这次免费跟大家分享一个Python项目&#xff0c;并附带完整的搭建…

我是如何做软件测试项目的?

最近公司刚完成了一个比较大的项目-单品页模块化&#xff0c;即使用现在比较流行的Twitter Bootstrap进行前端开发。说其大是因为工作量大&#xff0c;开发前期投入约80人日&#xff0c;包括前端开发及PHP开发&#xff0c;且不包括修复bug的时间&#xff0c;测试投入约48人日&a…

我的项目测试

我的项目测试 文章目录 我的项目测试前言一、单元测试二、功能测试1.界面测试2.功能测试&#xff08;1&#xff09;已发布专辑列表功能&#xff08;2&#xff09;播放功能&#xff08;3&#xff09;用户管理功能&#xff08;4&#xff09;音频管理功能&#xff08;5&#xff09…

性能测试项目案例

一、项目介绍与部署 1.1微商城功能介绍 轻商城是一个电商项目&#xff0c;需要综合评估各个项目各个接口的功能&#xff0c;给出优化建议&#xff1b; 功能框架 前台&#xff1a;首页、商品页详情、加入购物车、订单、支付、团购、优惠券&#xff1b;后台&#xff1a;商品管…

项目测试报告

图书管理系统测试报告 一、测试概述 1.编写目的 本报告为图书管理系统阶段测试的总结,目的在于考察软件的功能和缺陷&#xff0c;尽可能多的发现软件的缺陷和漏洞。 2.项目介绍 为了方便学校师生管理或借阅图书而开发出的一个图书管理系统&#xff0c;在Windows环境下创建…