大数据点云可视化

当前使用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可视化相关推荐

  1. postgresql点云las_基于PostgreSQL数据库的大数据点云存储技术应用研究

    基于 PostgreSQL 数据库的大数据点云存储技术应用研究 徐新 [期刊名称] <信息与电脑> [年 ( 卷 ), 期] 2017(000)013 [摘要] 三维激光扫描是一种较为先进 ...

  2. 数字中国城市巡礼之济宁:以信立本,大数据点亮城市信用招牌

    济宁市政府将社会诚信与大数据相结合,通过大数据实现城市信用管理,以信立本的同时,也使城市发展走向了一条数字化发展之路. 运河之都,孔孟之乡:华夏文明,儒家传承--提到济宁,似乎有一连串数不尽的历史名衔 ...

  3. Matlab点云处理及可视化第1期—基于KD树的邻域点搜索(柱状邻域、球状邻域及KNN)

    目录 1 概述 2 代码实现 3 可视化验证 数据及完整代码获取方式: 观前提示:本文文字内容请勿直接用于论文写作,否则后果自负. 特别提示:<Matlab点云处理及可视化>系列文章旨在为 ...

  4. 【PBL项目实战】户外智慧农场项目实战系列之4——Mind+Mixly双平台ESP32数据上云及云端可视化实时展示

    [PBL项目实战]户外智慧农场项目实战系列之4--Mind+Mixly双平台ESP32数据上云及云端可视化实时展示 原文链接  https://mp.weixin.qq.com/s/r_NeJdPoi ...

  5. 【PBL项目实战】户外智慧农场项目实战系列——7.Mind+Mixly双平台工业级多合一空气质量传感器数据上云及云端可视化展示

    [PBL项目实战]户外智慧农场项目实战系列--7.Mind+Mixly双平台工业级多合一空气质量传感器数据上云及云端可视化展示 原文链接  https://mp.weixin.qq.com/s/ZEU ...

  6. Python 获取旅游景点信息及评论并作词云、数据可视化

    正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢? 今天将手把手教你使用线程池爬取 ...

  7. 送书|获取旅游景点信息及评论并作词云、数据可视化

    大家好,我是啃书君! 正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢? 今天将手 ...

  8. Matlab基于主成分分析(PCA)的平面拟合—点云处理及可视化第2期

    目录 1 概述 2 代码实现 3 可视化验证 完整代码: PCA平面拟合结果: 特别提示:<Matlab点云处理及可视化>系列文章整理自作者博士期间的部分成果,旨在为初入点云处理领域的朋友 ...

  9. R语言可视化散点图、使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置nudge_y参数和direction参数显示部分数据点的标签在可视化图像的顶部)

    R语言ggplot2可视化:可视化散点图并为散点图中的部分数据点添加文本标签.使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置nudge_y参数和direct ...

最新文章

  1. iOS超全开源框架、项目和学习资料汇总(1)UI篇
  2. 【APP接口开发】chrome浏览器DHC工具安装使用(亲测有效)
  3. python面向对象编程的优点-Python 基础知识----面向对象编程
  4. 3.5 Facade(外观)
  5. 13点建议顺利通过JAVA面试【转载】
  6. PAT乙级(1001 害死⼈不偿命的(3n+1)猜想)
  7. C语言 显示器键盘io
  8. 【学术技巧】论文答辩,老师会仔细看论文内容吗?
  9. vscode连接夜神模拟器
  10. html img 拉伸,图片因img标签拉伸的处理办法
  11. 芭比之长发公主 Barbie as Rapunzel 高清720P
  12. 【无标题】种草推广如何精准引流 KOL达人与内容要用好
  13. JAVA实现Excel模板填充
  14. 【附源码】Python计算机毕业设计人脸识别考勤系统
  15. python中shutil是什么意思_python之shutil模块详解
  16. 802.11无线权威指南读书笔记(12)直接序列物理层DSSS与HR/DSSS(802.11b)
  17. 区块链前后端交互过程
  18. 井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来
  19. 超融合为什么是“绿色的”?
  20. (更新时间)2021年3月26日 python基础知识(自定义异常)

热门文章

  1. 软件开发 签合同问题 需要注意什么
  2. Java 使用EasyExcel读取Excel中多个sheet方法及示例代码
  3. 马斯克卸任推特CEO?谁赞成谁反对!
  4. 在html中使用ajax
  5. (1-2)Unity3D/2D:Sprite Renderer组件详解
  6. STM32系列(HAL库)——F103C8T6 通过GY906/MLX90614红外测温模块实现温度测量
  7. DCGAN---生成动漫头像
  8. 大数据分析-Excel导入及筛选数据
  9. 机器学习 - 预测心脏病
  10. 浙江工业大学计算机科学与技术研究生院,浙江工业大学计算机科学与技术研究生专业排名...