主要实现las格式、txt格式、xyz格式点云文件的读取及显示
(1)las点云数据直接使用编译好的LibLAs库进行读取
std::ifstream ifs;
std::ifstream ifs;
ifs.open(path, std::ios::in | std::ios::binary);
if (!ifs)
{
cout << "打开失败!" << endl;
}
liblas::ReaderFactory f;
liblas::Reader reader = f.CreateWithStream(ifs);
liblas::Header const& header = reader.GetHeader();
double maxX = header.GetMaxX();
double minX = header.GetMinX();
double maxY = header.GetMaxY();
double minY = header.GetMinY();
double maxZ = header.GetMaxZ();
double minZ = header.GetMinZ();
int n=header.GetPointRecordsCount();//获取总的点数
double x = 0, y = 0, z = 0;
while (reader.ReadNextPoint())//循环读取las文件中的点
{
liblas::Point const& laspoint = reader.GetPoint();
x = laspoint.GetX();
y = laspoint.GetY();
z = laspoint.GetZ();
}
ifs.close();
(2)txt格式与xyz格式数据的读取,主要了解其数据结构就OK啦
txt格式数据一般每行有3列数据,分别为点的 x,y,z坐标,可以以空格、逗号等分隔,读取的时候注意区别就行;
xyz格式数据一般每行有6列数据,前3列分别为点的 x,y,z坐标,后3列为点的法向量,一般以空格分隔;
这两种数据读取代码比较简单就不做示范了!
来源:CSDN
作者:GIS帅
链接:https://blog.csdn.net/u013045316/article/details/51941850