이전 포스팅 ☛ 맥(macOS)에 libLAS 설치하고 Makefile로 실행파일 만들기
libLAS 또는 laspy를 사용해서 las 파일을 txt 파일로 변환하는 방법을 알려드리겠습니다.
첫번째 방법으로는 libLAS에서 제공하는 명령어를 사용한 방법입니다.
명령어 자체는 굉장히 간단합니다.
las2txt -i 파일이름.las -o 파일이름.txt
las 파일이 txt 파일로 변환된 것을 확인할 수 있습니다.
공식 홈페이지에는 더 많은 las2txt 명령어 옵션이 상세하게 설명되어 있습니다.
두번째 방법으로는 C++ 코드를 작성하는 방법입니다.
lastotxt.cpp 파일과 CMakeLists.txt 파일을 아래와 같이 작성합니다.
// lastotxt.cpp
#include <iostream>
#include <liblas/liblas.hpp>
using namespace std;
void loadlasfile(string lasfile, string outfile) {
ifstream ifs;
ifs.open(lasfile, ios::in | ios::binary);
ofstream out;
out.open(outfile);
cerr << "INFO : Loading : " << lasfile << endl;
// fail to open file
if(ifs.fail()){
cerr << "ERROR : Impossible to open the file : " << lasfile << endl;
return;
}
liblas::ReaderFactory f;
liblas::Reader reader = f.CreateWithStream(ifs);
liblas::Header const& header = reader.GetHeader();
while(reader.ReadNextPoint()){
liblas::Point const& p = reader.GetPoint();
out << p.GetX() << " " << p.GetY() << " " << p.GetZ() << endl;
}
}
int main(){
string lasfile = "chair.las";
string outfile = "chair.txt";
loadlasfile(lasfile,outfile);
return 0;
}
// CMakeLists.txt
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(lastotxt)
find_package(libLAS)
include_directories(${libLAS_INCLUDE_DIRS})
link_directories(${libLAS_LIBRARY_DIRS})
add_compile_options()
add_executable (lastotxt lastotxt.cpp)
target_link_libraries (lastotxt ${libLAS_LIBRARIES})
다음 명령어를 통해서 빌드합니다.
cd your-project-path
mkdir build
cd build
cmake ..
make
./lastotxt
txt파일로 변환된 것을 확인할 수 있습니다.
마지막으로 파이썬 패키지인 laspy를 사용한 방법입니다.
python 3.7.6 버전을 기준으로 작성했습니다.
laspy 패키지를 설치해줍니다.
pip install laspy
다음 코드를 작성하고 실행합니다.
# -*- coding: utf-8 -*-
from laspy.file import File
inFile = File('chair.las', mode='r')
outFile = open('chair.txt',mode='w')
records_count = inFile.header.records_count
for i in range(0, records_count):
outFile.write('%f %f %f\n'%(inFile.x[i], inFile.y[i], inFile.z[i]))
세 가지의 다른 방법을 소개해 드렸습니다.
인터넷 검색을 해도 las파일을 읽어오는 방법이 잘 나와있지 않아서 포스팅 작성해봤습니다.
도움이 되었으면 좋겠습니다:)
잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.
이 포스팅이 도움이 되었다면 공감 부탁드립니다.
궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D
'major' 카테고리의 다른 글
PCL Iterative Closest Point 튜토리얼 분석 (5) | 2020.03.10 |
---|---|
CMake로 Boost 라이브러리 링킹하기 (0) | 2020.03.08 |
OBJ to LAS 파일 변환 - mesh sampling (0) | 2020.03.04 |
맥(macOS) cloudcompare 설치 및 사용법 (0) | 2020.03.04 |
C++ Stack 구현 (0) | 2020.03.01 |