主要實現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列爲點的法向量,一般以空格分隔;
這兩種數據讀取代碼比較簡單就不做示範了!