使用LASlib庫對LAS文件進行分割

       在實際的項目,有很多時候,我們會遇到一個巨大的las文件,比如7,8個G的大小。這時候,我們需要對這個大的las文件進行分塊保存爲多個小的las文件。可是按照點的個數進行保存,也可以按照內存的大小保存。實際上也就是對點雲的讀寫過程。具體的代碼如下所示:

void lasFileDivision()
{
	LASreadOpener lasreadopener;
	LASwriteOpener laswriteopener;
	//laslib只允許'\\'格式的文件路徑。
	std::string lasFile("C:\\test\\test.las");

	int num = 1;
	//打開las文件
	lasreadopener.set_file_name(lasFile.c_str());
	LASreader* lasreader = lasreadopener.open();
	size_t count = lasreader->header.number_of_point_records;
	printf("%d", count);
	//LASpoint *one_point = new LASpoint();
	int loop_time = 0;
	LASwriter* laswriter = nullptr;
	while (lasreader->read_point())  //只讓輸出前 10 行座標
	{
        //按照每889000個點一個las文件進行分割
		if (loop_time % 889000 == 0)
		{
            //每打開一次文件都需要close();否則文件會一直佔用。
            if(laswriter != NULL)
            {
                laswriter->close();
            }
			stringstream ss;
			ss << "C:\\test\\out" << num << ".las";
			string file_name = ss
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章