PDAL:OSGeo4W安装配置测试PDAL

libLAS是一款非常好的点云数据处理库,但是,As of 2018, libLAS has been replaced by the PDAL project and it is in hibernation or maintenance mode. 

笔者为了编译CloudCompare需要用到PDAL;曾经用Conda编译过PDAL,但是一直报错。

因此,利用OSGeo4W配置PDAL,很开心。

一、下载OSGeo4W

下载地址:https://trac.osgeo.org/osgeo4w/

二、安装

2.1 选择“Advanced Install”;接下来默认即可(听说安装路径变了后很麻烦)

2.2 搜索pdal,单击skip,变成(选择)1.8.0。(我安装过了,所以是keep)。

PDAL的依赖库会一同安装。

然后一直下一步或同意即可。

2.3 安装完成后,C:\OSGeo4W64会有很多文件(包括其它依赖库)。

三、配置环境变量

右击电脑属性—高级系统设置—高级—环境变量—系统变量—Path

添加路径:(不知道对不对,哈哈;欢迎大佬批评指正)

C:\OSGeo4W64\bin

重启电脑。 

 

四、安装过程中出现的问题:

4.1 时间较长;(PDAL的依赖库较多,网速需要稳定且快)

4.2 出错一次,显示安装不完整,重新安装后可以了;(可能是网络问题)

4.3 笔者编译CloudCompare需要配置PDAL。

编译CloudCompare2.10后,运行CloudCompare.exe时显示缺少gdal203.dll。

因此,重新运行OSGeo4W,搜索gdal,发现gdal203.dll(下图箭头)并没有安装;(下图是安装后的)

于是,笔者安装 gdal203.dll

重新编译CloudCompare,运行CloudCompare.exe时就不报错了。(同类错误可以以此类推)

五、测试

5.1 新建项目Windows控制台应用程序

5.2 配置:右击项目——属性——配置属性

C/C++——常规——附加包含目录:添加 C:\OSGeo4W64\include

      C/C++——预处理器——预处理器定义:添加

      _CRT_SECURE_NO_DEPRECATE
      _SCL_SECURE_NO_DEPRECATE

      参考:https://www.cnblogs.com/douzi2/p/3974959.html

链接器——常规——附加库目录:添加 C:\OSGeo4W64\lib

链接器——输入——附加依懒项:添加 pdalcpp.libpdal_util.lib

分享给有需要的人,代码质量勿喷。

#pragma execution_character_set("utf-8")//解决中文

#include "pch.h"
#include <iostream>

#include <memory>
#include <pdal/PointTable.hpp>
#include <pdal/PointView.hpp>
#include <pdal/io/LasReader.hpp>
#include <pdal/io/LasHeader.hpp>
#include <pdal/Options.hpp>

using namespace std;

int main()
{
	string xjFileName = "E:\\测试\\test.las";//中文路径可能报错
	pdal::Option las_opt("filename", xjFileName);//参数1:"filename"(键)
	pdal::Options las_opts;
	las_opts.add(las_opt);

	pdal::PointTable table;
	pdal::LasReader las_reader;

	las_reader.setOptions(las_opts);
	las_reader.prepare(table);

	pdal::PointViewSet point_view_set = las_reader.execute(table);
	pdal::PointViewPtr point_view = *point_view_set.begin();
	pdal::Dimension::IdList dims = point_view->dims();

	pdal::LasHeader las_header = las_reader.header();


	double xmin = las_header.minX();	
	double xmax = las_header.maxX();
	double deltaX = xmax - xmin;
	cout << "deltaX=" << fixed << setprecision(4) << deltaX << endl;
	
	double ymin = las_header.minY();	
	double ymax = las_header.maxY();
	double deltaY = ymax - ymin;
	cout << "deltaY=" << fixed << setprecision(4) << deltaY << endl;
	
	double zmin = las_header.minZ();
	double zmax = las_header.maxZ();
	double deltaZ = zmax - zmin;
	cout << "deltaZ=" << fixed << setprecision(4) << deltaZ << endl;

	unsigned int n_features = las_header.pointCount();
	cout << "PointCount=" << n_features << endl;
}

5.3 计算结果与CloudCompare显示是一致的。

      

六、代码参考

https://pdal.io/api/transition/index.html

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

累了就要打游戏

把我养胖,搞代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值