gocesiumtiler는 LAS 파일로 저장된 포인트 클라우드 데이터를 Cesium.js에서 사용할 수 있는 3D 타일로 변환하는 오픈 소스 도구입니다. 이 도구는 Go 언어로 작성되었으며, 고성능과 간단한 사용법을 제공합니다. 특히, 대규모 포인트 클라우드를 효율적으로 처리하고, 다양한 기능을 통해 사용자에게 유연성을 제공합니다.
주요 기능
1. 포인트 클라우드 데이터 변환
gocesiumtiler는 LAS 파일을 Cesium.js에서 사용할 수 있는 다음 두 가지 형식으로 변환합니다:
- 3D Tiles 1.0 (.pnts)
- 3D Tiles 1.1 (실험적, glTF/GLB 지원)
2. 자동 좌표 변환
- 외부 라이브러리 없이 좌표 변환을 수행하며, CRS(Coordinate Reference System) 정보를 자동으로 감지합니다.
- EPSG 코드, Proj4 문자열, WKT 정의를 통해 수동으로 CRS를 설정할 수도 있습니다.
3. 고성능
- 모든 사용 가능한 CPU 코어를 활용하여 빠른 변환을 지원하며, 디스크 작업을 최소화합니다.
- 포인트 클라우드 데이터를 메모리 내에서 처리하여 속도를 극대화합니다.
4. 추가 데이터 포함
- 포인트 클라우드 데이터에 색상, 레이저 강도, 분류 정보를 포함할 수 있습니다.
5. 다양한 설정 가능
- 해상도, 타일 최소 포인트 수, 트리 깊이 등을 설정하여 결과물을 세부 조정할 수 있습니다.
- 여러 LAS 파일을 병합하여 하나의 3D 타일셋으로 생성하거나, 각각 개별 타일셋으로 생성할 수 있습니다.
설치 및 사용 방법
1. 설치
gocesiumtiler의 최신 릴리스는 GitHub Releases 페이지에서 다운로드할 수 있습니다.
Windows와 Linux용 사전 컴파일된 실행 파일이 제공됩니다.
설치 방법:
- 실행 파일을 다운로드하고, 압축을 해제합니다.
- 다운로드한 실행 파일과 함께 share 폴더를 동일한 디렉토리에 배치합니다.
- 필요한 경우, Proj 데이터 그리드를 Proj CDN에서 다운로드하여 share 폴더에 저장합니다.
2. CLI(Command Line Interface) 사용법
gocesiumtiler는 파일 모드와 폴더 모드로 실행할 수 있습니다:
1) 파일 모드
단일 LAS 파일을 변환하려면 다음 명령어를 사용합니다:
gocesiumtiler file -o <출력_폴더> -e <CRS> <LAS_파일>
예:
gocesiumtiler file -o ./output -e EPSG:4326 ./data/sample.las
2) 폴더 모드
폴더 내 모든 LAS 파일을 변환하려면 다음 명령어를 사용합니다:
gocesiumtiler folder -o <출력_폴더> -e <CRS> <LAS_파일_폴더>
예:
gocesiumtiler folder -o ./output -e EPSG:32633 ./data/
3) 병합 옵션
여러 LAS 파일을 하나의 3D 타일셋으로 병합하려면 -join 플래그를 추가합니다:
gocesiumtiler folder -o ./output -e EPSG:32633 -join ./data/
3. 사용 가능한 주요 플래그
플래그설명
--out, -o | 출력 폴더 경로 |
--crs, --epsg, -e | 입력 파일의 CRS (예: EPSG:4326, EPSG:32633+3855) |
--resolution, -r | 3D 타일의 최소 해상도 (기본값: 20m) |
--z-offset, -z | Z 오프셋(높이) 값 (기본값: 0m) |
--depth, -d | 출력 타일 트리의 최대 깊이 (기본값: 10) |
--min-points-per-tile, -m | 각 타일의 최소 포인트 수 (기본값: 5000) |
--subsample | 입력 포인트의 샘플링 비율 (0.01 ~ 1) |
--8-bit | 포인트 색상을 8비트 색상 공간으로 해석 (기본값: false) |
--join, -j | 폴더 내 LAS 파일을 병합하여 단일 3D 타일셋 생성 |
사용 예제
예제 1: 단일 파일 변환
gocesiumtiler file -o ./output -e EPSG:4326 ./data/sample.las
- sample.las 파일을 EPSG:4326 CRS로 해석하여 변환.
예제 2: 폴더 내 파일 변환
gocesiumtiler folder -o ./output -e EPSG:32633 ./data/
- data 폴더 내 모든 LAS 파일을 EPSG:32633 CRS로 변환.
예제 3: 병합 및 변환
gocesiumtiler folder -o ./output -e EPSG:32633 -join ./data/
- data 폴더 내 모든 LAS 파일을 병합하여 하나의 3D 타일셋 생성.
라이브러리로 사용하기
gocesiumtiler는 Go 언어 라이브러리로도 사용할 수 있습니다. 다음 명령어로 설치할 수 있습니다:
go get github.com/mfbonfigli/gocesiumtiler/v2
라이브러리를 사용한 간단한 예제:
package main
import (
"context"
"log"
"github.com/mfbonfigli/gocesiumtiler/v2/tiler"
)
func main() {
t, err := tiler.NewGoCesiumTiler()
if err != nil {
log.Fatal(err)
}
ctx := context.TODO()
err = t.ProcessFiles([]string{"./data/sample.las"}, "./output", "EPSG:32633", tiler.NewTilerOptions(
tiler.WithEightBitColors(true),
tiler.WithMaxDepth(5),
), ctx)
if err != nil {
log.Fatal(err)
}
}
향후 개발 및 지원
추가 예정 기능
- LAZ(압축된 LAS 파일) 지원
- 포인트 클라우드 압축 기능
- 출력 데이터에서 Intensity 및 Classification 속성을 선택적으로 포함
- macOS용 바이너리 제공
gocesiumtiler는 오픈 소스 프로젝트로, 누구나 기여할 수 있습니다. 아이디어나 개선 사항이 있다면 GitHub 저장소를 통해 참여하세요.
결론
gocesiumtiler는 포인트 클라우드 데이터를 효율적으로 처리하고 Cesium.js와 통합할 수 있는 강력하고 유연한 도구입니다. Go 언어 기반의 고성능 변환 도구를 찾고 있다면, gocesiumtiler를 사용해 보세요!
프로젝트에 대한 자세한 정보는 공식 GitHub 페이지를 확인하세요.
'공간정보' 카테고리의 다른 글
GIS 분야에서 모델 컨텍스트 프로토콜(MCP)을 통한 AI 강화 소개 (0) | 2025.04.04 |
---|---|
메타버스의 새로운 관문 (0) | 2025.03.27 |
Martin: 강력한 벡터 타일 서버와 도구 모음 (1) | 2024.12.09 |
Vector Tiles on OSMF Hardware 논의 (0) | 2024.12.05 |
pgOSM Flex: docker를 이용해 osm 데이터 postgresql 임포트하기 (4) | 2024.11.01 |