osg+pdal大数据点云的LOD可视化
大数据点云可视化
当前使用entwin和potreeConverter转换的ept格式文件,后续增加copc格式及ArcGIS i3s格式,这几个格式都可是直接使用pdal进行读取,有时间的话写详细教程。
核心类接口 :
/// @class PointCloudEptGeometry
/// @brief 点云数据模型
/// @note
class DATA_EXPORT PointCloudEptGeometry :public lxCore::IReadable, public IPointCloudGeometry
{
META_INHERIT_CLASS(PointCloudEptGeometry, lxCore::IReadable)
public:
using Vec3 = lxCore::vec3;
using Ptr = lxCore::ref_ptr<PointCloudEptGeometry>;
enum AccessType
{
Local,
Remote,
};
/// @brief -
/// @param[in] -
/// @param[out] -
/// @return
PointCloudEptGeometry();
/// @brief -
/// @param[in] -
/// @param[out] -
/// @return
~PointCloudEptGeometry();
/// @brief -
/// @param[in] -
/// @param[out] -
/// @return
virtual void load();
/// @brief -
/// @param[in] -
/// @param[out] -
/// @return
bool isLoaded();
virtual PointBlock* loadNode(const VoxelKey& key);
VoxelKey root() { return VoxelKey(0, 0, 0, 0); }
std::list<VoxelKey> children(const VoxelKey& voxel)const;
bool hasNode(const VoxelKey& key) const;
Bounds computeBounds(VoxelKey& key)const;
const std::map<VoxelKey, int>& hierarchy()const;
public:
int maxLeavel()const;
int startLeavel()const;
float spacing()const;
void setScale(const Vec3& scale);
Vec3 scale()const;
void setOffset(const Vec3& offset);
Vec3 offset()const;
int span()const;
void setSpan(int span);
void setBounds(const Bounds& bounds);
Bounds bounds()const;
Bounds tightBounds()const;
void setPointCount(int count);
int64_t pointCount()const;
void print();
private:
bool loadSchema(const QByteArray& dataJson);
bool loadManifest(const QByteArray& manifestJson);
bool loadHierarchy();
void setAttributes(const PointAttributes& attributes);
private:
bool _loaded;
std::string _directory;
mutable std::mutex _hierarchyMutex;
mutable std::map<VoxelKey, int> _hierarchy;
std::string _dataType; ///<
std::string _wkt;
int _maxLeveal;
Bounds _bounds;
Bounds _boundsConforming;
Vec3 _scale;
Vec3 _offset;
int _span;
int64_t _pointCount;
PointAttributes _attributes;
struct AttributeStatistics
{
int count = -1;
double minimum;
double maximum;
double mean = std::numeric_limits< double >::quiet_NaN();
double stDev = std::numeric_limits< double >::quiet_NaN();
double variance = std::numeric_limits< double >::quiet_NaN();
};
std::unordered_map<std::string, AttributeStatistics> _metadataStats;
std::unordered_map<std::string, std::unordered_map< int, int > > _attributeClasses;
QVariantMap _originalMetadata;
};
/// @class PointCloudLodNode
/// @brief 绘制节点
/// @note
class GRAPHICS_EXPORT PointCloudLodNode :public osg::Geode
{
public:
using Vec3 = lxData::PointCloudEptGeometry::Vec3;
PointCloudLodNode();
PointCloudLodNode(lxCore::ref_ptr<lxData::PointCloudEptGeometry> cloud);
~PointCloudLodNode();
virtual lxCore::ref_ptr<lxData::PointCloudEptGeometry> pcoGeometry();
virtual void setPCOGeometry(lxCore::ref_ptr<lxData::PointCloudEptGeometry> pco);
virtual bool addVoxel(osg::ref_ptr<VoxelGeometry> voxel);
virtual osg::ref_ptr<VoxelGeometry> addVoxel(const VoxelGeometry::VoxelKey& key);
virtual bool removeVoxel(osg::ref_ptr<VoxelGeometry> voxel);
virtual bool removeVoxel(const VoxelGeometry::VoxelKey& key);
virtual void clearVoxels();
public:
void setElevationRange(float minz, float maxz);
protected:
void inilize();
protected:
lxCore::ref_ptr<lxData::PointCloudEptGeometry> _pcoGeometry;
bool _showBoundingBox;
typedef std::vector<osg::ref_ptr<VoxelGeometry>> VoxelGeometrys;
VoxelGeometrys _voxels;
osg::ref_ptr<lxGraphic::BoxGeometry> _boxGeometry;
osg::ref_ptr<osg::StateSet> _stateset;
osg::ref_ptr<osg::Program> _shaderProgram;
osg::ref_ptr<osg::Texture2D> _gradientTex;
std::string _currentColorDef;
};
osg+pdal大数据点云的LOD可视化相关推荐
- postgresql点云las_基于PostgreSQL数据库的大数据点云存储技术应用研究
基于 PostgreSQL 数据库的大数据点云存储技术应用研究 徐新 [期刊名称] <信息与电脑> [年 ( 卷 ), 期] 2017(000)013 [摘要] 三维激光扫描是一种较为先进 ...
- 数字中国城市巡礼之济宁:以信立本,大数据点亮城市信用招牌
济宁市政府将社会诚信与大数据相结合,通过大数据实现城市信用管理,以信立本的同时,也使城市发展走向了一条数字化发展之路. 运河之都,孔孟之乡:华夏文明,儒家传承--提到济宁,似乎有一连串数不尽的历史名衔 ...
- Matlab点云处理及可视化第1期—基于KD树的邻域点搜索(柱状邻域、球状邻域及KNN)
目录 1 概述 2 代码实现 3 可视化验证 数据及完整代码获取方式: 观前提示:本文文字内容请勿直接用于论文写作,否则后果自负. 特别提示:<Matlab点云处理及可视化>系列文章旨在为 ...
- 【PBL项目实战】户外智慧农场项目实战系列之4——Mind+Mixly双平台ESP32数据上云及云端可视化实时展示
[PBL项目实战]户外智慧农场项目实战系列之4--Mind+Mixly双平台ESP32数据上云及云端可视化实时展示 原文链接 https://mp.weixin.qq.com/s/r_NeJdPoi ...
- 【PBL项目实战】户外智慧农场项目实战系列——7.Mind+Mixly双平台工业级多合一空气质量传感器数据上云及云端可视化展示
[PBL项目实战]户外智慧农场项目实战系列--7.Mind+Mixly双平台工业级多合一空气质量传感器数据上云及云端可视化展示 原文链接 https://mp.weixin.qq.com/s/ZEU ...
- Python 获取旅游景点信息及评论并作词云、数据可视化
正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢? 今天将手把手教你使用线程池爬取 ...
- 送书|获取旅游景点信息及评论并作词云、数据可视化
大家好,我是啃书君! 正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢? 今天将手 ...
- Matlab基于主成分分析(PCA)的平面拟合—点云处理及可视化第2期
目录 1 概述 2 代码实现 3 可视化验证 完整代码: PCA平面拟合结果: 特别提示:<Matlab点云处理及可视化>系列文章整理自作者博士期间的部分成果,旨在为初入点云处理领域的朋友 ...
- R语言可视化散点图、使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置nudge_y参数和direction参数显示部分数据点的标签在可视化图像的顶部)
R语言ggplot2可视化:可视化散点图并为散点图中的部分数据点添加文本标签.使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置nudge_y参数和direct ...
最新文章
- iOS超全开源框架、项目和学习资料汇总(1)UI篇
- 【APP接口开发】chrome浏览器DHC工具安装使用(亲测有效)
- python面向对象编程的优点-Python 基础知识----面向对象编程
- 3.5 Facade(外观)
- 13点建议顺利通过JAVA面试【转载】
- PAT乙级(1001 害死⼈不偿命的(3n+1)猜想)
- C语言 显示器键盘io
- 【学术技巧】论文答辩,老师会仔细看论文内容吗?
- vscode连接夜神模拟器
- html img 拉伸,图片因img标签拉伸的处理办法
- 芭比之长发公主 Barbie as Rapunzel 高清720P
- 【无标题】种草推广如何精准引流 KOL达人与内容要用好
- JAVA实现Excel模板填充
- 【附源码】Python计算机毕业设计人脸识别考勤系统
- python中shutil是什么意思_python之shutil模块详解
- 802.11无线权威指南读书笔记(12)直接序列物理层DSSS与HR/DSSS(802.11b)
- 区块链前后端交互过程
- 井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来
- 超融合为什么是“绿色的”?
- (更新时间)2021年3月26日 python基础知识(自定义异常)
热门文章
- 软件开发 签合同问题 需要注意什么
- Java 使用EasyExcel读取Excel中多个sheet方法及示例代码
- 马斯克卸任推特CEO?谁赞成谁反对!
- 在html中使用ajax
- (1-2)Unity3D/2D:Sprite Renderer组件详解
- STM32系列(HAL库)——F103C8T6 通过GY906/MLX90614红外测温模块实现温度测量
- DCGAN---生成动漫头像
- 大数据分析-Excel导入及筛选数据
- 机器学习 - 预测心脏病
- 浙江工业大学计算机科学与技术研究生院,浙江工业大学计算机科学与技术研究生专业排名...