點雲數據的讀取(las、txt、xyz格式)

      主要實現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列爲點的法向量,一般以空格分隔;

                 這兩種數據讀取代碼比較簡單就不做示範了!

發佈了16 篇原創文章 · 獲贊 33 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章