공지

제목표면 체적 분석 (UAnalySurfaceVolume) 가이드2026-07-09 11:26
카테고리GeOnDT for JS
작성자

 

 

적용 버전 : 1.0.0.3.183.a

표면 체적 분석 (UAnalySurfaceVolume ) 기능 안내

관련 예제 페이지 : https://3d.geon.kr/doc/tutorial-official/analysisSurfaceVolume.html

예제에서는 분석 대상 선택, 영역 그리기, 분석 실행, 결과 확인 및 가시화 항목별 표시·숨김 기능을 확인할 수 있습니다.

 

적용 버전부터 해당 기능을 사용 하실 수 있습니다.

사용자가 지정한 영역의 표면을 분석하여 면적, 높이 차이, 절토량 및 성토량 등을 계산할 수 있는 표면 체적 분석 기능이 추가되었습니다.

이번 기능은 분석 계산와 결과 가시화를 분리하여, 업무 목적에 따라 필요한 계산 방식과 화면 표현을 선택적으로 구성할 수 있도록 제공됩니다.

 

주요 기능

1. 사용자 지정 영역 분석

지도에서 다각형 영역을 직접 그리거나 좌표를 입력하여 분석 영역을 등록할 수 있습니다.

등록된 영역은 설정한 격자 크기에 따라 분할되며, 각 격자에서 분석 대상 표면과 기준면의 높이를 비교하여 결과를 계산합니다.

 

2. 다양한 기준면 설정

분석 목적에 따라 다음과 같은 기준면을 사용할 수 있습니다.

  • 사용자가 입력한 특정 높이 (고정 높이)
  • 영역의 최저 높이 
  • 지형 표면 (*지형 레이어 필수)
  • 별도의 레이어 또는 3D 객체

예를 들어 높이 0m를 기준으로 계산하거나, 기존 지형과 변경된 지형을 비교하는 방식으로 활용할 수 있습니다.

 

3. 면적 및 체적 결과 제공

분석 완료 후 다음과 같은 결과를 확인할 수 있습니다.

  • 수평 투영 면적
  • 실제 계산에 사용된 유효 면적
  • 표면 면적
  • 영역 둘레
  • 절토 / 성토량
  • 순 체적
  • 최소·최대·평균 높이 차이
  • 전체 격자 및 유효 격자 수
  • 분석 영역의 유효 샘플 비율

분석 결과에 대한 정밀도는 격자의 크기가 커질수록 낮아지므로 참고 하시기 바랍니다.

 

4. 분석 결과 가시화

분석 결과는 필요한 항목만 선택하여 화면에 표시할 수 있습니다.

  • 분석 영역 외곽선
  • 분석 격자
  • 높이 차이 Heatmap
  • 현재 표면과 기준면 사이의 수직선
  • 분석 결과 라벨
  • 사용자 정의 3D 가시화 객체 

각 가시화 항목은 개별적으로 추가, 표시, 숨김, 수정 및 제거할 수 있습니다.

따라서 분석 결과 값만 사용하거나, 필요한 가시화 항목만 선택하여 업무 화면에 적용할 수 있습니다.


기본 사용 절차

1. 분석 객체 가져오기

U3dApp.getAnalysis('SurfaceVolume') : 표면 체적 분석 클래스를 반환해줍니다.

mb-file.php?path=2026%2F07%2F09%2FF766_image.png

 

속성/함수 설명
SurfaceVolume 표면 체적 분석 객체 이름
active() 표면 체적 분석 기능 활성화

 


2. 분석 대상 설정

analy.setTarget(targetOption) :  분석 대상은 레이어 또는 개별 3D 객체로 설정할 수 있습니다.

레이어를 대상으로 설정

 

 - 레이어 타입 지정시 layerName 으로 대상 레이어 이름 설정

 

3D 객체를 대상으로 설정

 

 

target type 설명

type 설명
layer 등록된 레이어를 분석 대상으로 사용
object3d   개별 객체를 분석 대상으로 사용 ( object  / group )

 

targetOption 정보

속성 타입 설명
type string 분석 대상 유형   
layerName string 분석 대상 레이어 이름    
object THREE.Object3D   분석 대상 3D 객체

 


3. 기준면 설정

기준면은 체적 계산 시 대상 표면과 비교되는 기준입니다.

analy.setReferenceSurface(referenceOption) : 기준면의 대상을 설정합니다.

 

고정 고도 기준면 (type : constant-height)

 

 - 고정 고도 기준면의 경우 height를 설정하여 해당 면의 높이값을 설정합니다. (m 기준)

 

지형 기준면 (type : terrain)

 

 

레이어 기준면  (type : layer)

 

 

3D 객체 기준면  (type : object3d)

 

 

referenceOption 정보

속성 타입 설명
type string 기준면 유형
height number 고정 고도 기준값
layerName string 기준면으로 사용할 레이어 이름
object THREE.Object3D 기준면으로 사용할 3D 객체

 

 

referenceSurface type 설명

type 설명
constant-height 지정한 height 값을 기준으로 수평 기준면 생성
terrain 현재 지형 레이어를 기준면으로 사용
layer 등록된 레이어를 기준면으로 사용
object3d 단일 3D 객체를 기준면으로 사용
lowest-height 분석 영역 내 최저 높이를 기준으로 사용

 

 


4. 분석 옵션 설정

analy.setAnalysisOption(analyOption) : 분석에 대한 해상도 및 격자 최대수량 등을 조절 할수 있습니다.

 분석 실행시에 설정하는 옵션 값입니다.

격자의 해상도 조절, helper의 가시화 제어 등을 설정 할수 있습니다. 

mb-file.php?path=2026%2F07%2F09%2FF792_%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202026-07-09%20113508.png

 

analyOption 정보

속성 기본값 설명
resolution 0.5 격자 한 변의 길이입니다. 값이 작을수록 정밀하지만 계산량이 증가합니다. ( m 단위 )
maxGridCount 200000 생성 가능한 최대 격자 수입니다.
heightTolerance 0.02 절토·성토 분류 시 사용하는 높이 허용 오차입니다.
visualization.showBoundary true 분석 영역 외곽선 표시 여부
visualization.showGrid true 분석 격자 표시 여부
visualization.showCutFillMap true 절토·성토 수직선 표시 여부
visualization.showReferenceSurface true 기준면 표시 여부
visualization.heatmap.enabled false Heatmap 표시 여부
visualization.verticalLines.enabled true 수직선 표시 여부

5. 분석 영역 등록

analy.addVolumeArea(SurfaceVolumeAreaOption) : 분석 대상 영역을 등록합니다.

그리기로 영역을 입력하거나, 좌표 배열을 직접 전달하여 분석 영역을 등록합니다.

mb-file.php?path=2026%2F07%2F09%2FF776_image.png

 

SurfaceVolumeAreaOption 정보 

속성 타입 설명
id string 분석 영역 고유 ID
name string 분석 영역 이름
geoVertex Array<Vector3Like> 지리 좌표 기준 꼭짓점 목록
worldVertex Array<Vector3Like> 월드 좌표 기준 꼭짓점 목록
target object 해당 영역에 적용할 분석 대상  
referenceSurface object 해당 영역에 적용할 기준면
resolution number 해당 영역에 적용할 격자 크기
visualization object 해당 영역의 가시화 옵션

6. 분석 실행

analy.runAnalysis(area.getId()) : 추가 한 분석 영역에 대해서 분석을 실행하여 결과를 반환받습니다. 

결과는 비동기로 작업하여 반환합니다.

runAnalysis()는 등록된 분석 영역을 대상으로 다음 작업을 순서대로 수행합니다.

mb-file.php?path=2026%2F07%2F09%2FF794_%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202026-07-09%20113522.png

  1. 분석 영역의 격자 및 표면 샘플 준비
  2. 체적 계산 실행
  3. 계산 결과 유효성 검증
  4. 분석 영역에 결과 등록
  5. 완료 이벤트 및 결과 반환
 
함수 설명
runAnalysis(areaId) 지정한 분석 영역 ID로 체적 분석 실행
area.getId() 등록된 분석 영역 ID 반환

 

 


7. 분석 결과 확인

 

 

면적 결과

area에는 분석 영역의 면적과 둘레 정보가 포함됩니다.

속성 설명
area.projected 입력 Polygon을 수평면에 투영한 면적입니다.
area.effective 실제 체적 계산에 사용된 유효 셀 면적의 합입니다.
area.surface 분석 대상 표면의 경사와 형상을 반영한 표면 면적입니다.
area.perimeter 입력 분석 영역의 둘레입니다.

 

투영 면적과 유효 면적의 차이

area.projected는 입력한 전체 Polygon을 기준으로 계산됩니다.

반면 area.effective는 분석 대상 또는 기준면의 샘플을 정상적으로 얻은 셀만을 기준으로 계산됩니다.

따라서 일부 영역에서 표면을 찾지 못한 경우 두 값이 서로 다를 수 있습니다.

 

체적 결과

volume에는 기준면을 기준으로 계산된 절토량과 성토량이 포함됩니다.

속성 설명
volume.cut 분석 표면이 기준면보다 높은 영역의 체적입니다.
volume.fill 분석 표면이 기준면보다 낮은 영역의 체적입니다.
volume.net 절토량과 성토량의 차이를 반영한 순 체적입니다.
volume.estimated 화면 또는 업무 기능에서 대표값으로 사용할 추정 체적입니다.

 

 

높이 결과

height에는 현재 표면과 기준면 사이의 높이 차이 통계가 포함됩니다.

속성 설명
height.min 전체 유효 셀 중 가장 낮은 높이 차이입니다.
height.max 전체 유효 셀 중 가장 높은 높이 차이입니다.
height.average 전체 유효 셀의 평균 높이 차이입니다.

 

양수는 일반적으로 현재 표면이 기준면보다 높은 상태를 의미하며, 음수는 현재 표면이 기준면보다 낮은 상태를 의미합니다.

 

 

Sampling 결과

sampling에는 샘플링하여 나온 결과에 대한 정보를 담고 있습니다.

 

결과 속성 설명
sampling.totalCellCount 전체 격자 수
sampling.validCellCount 유효 격자 수
sampling.invalidCellCount 누락 격자 수
sampling.coverageRatio 분석 커버리지 비율

 

셀별 상세 결과

cells에는 분석 격자별 상세 계산 결과가 포함됩니다.

 

mb-file.php?path=2026%2F07%2F09%2FF779_image.png

셀 결과는 다음 기능에서 사용됩니다.

  • 높이 차이 Heatmap 생성
  • 절토·성토 수직선 생성
  • 셀별 상세 결과 표시
  • 사용자 정의 분석 가시화
  • 개별 셀 결과 조회

 

 


8. 가시화 항목 추가

분석 완료 후 외곽선, 격자, Heatmap, 수직선 등을 추가할 수 있습니다.

 

외곽선 Helper

analy.addBoundary(opt) : 외곽선 helper를 추가합니다.

 

mb-file.php?path=2026%2F07%2F08%2FF735_image.png

- 외곽선 helper 형상

 

격자 helper

analy.addGrid(opt) : 격자 helper를 추가합니다.

 

mb-file.php?path=2026%2F07%2F08%2FF738_image.png

 - 격자 helper 형상

 

Heatmap Helper

analy.addHeatmap(opt) : heatmap helper를 추가합니다.

mb-file.php?path=2026%2F07%2F09%2FF782_image.png

 

 - heatmap helper 형상

 

수직선 Helper

analy.addVerticalLines(opt) : 수직선 helper를 추가합니다.

 

mb-file.php?path=2026%2F07%2F08%2FF742_image.png

 - 수직선 helper 형상

 

opt 정보

속성 설명
id 가시화 객체 ID
replace 동일 ID가 있을 때 기존 객체 교체 여부
visible 최초 표시 여부
valueAccessor Heatmap 색상 기준값을 반환하는 함수

 


9. 분석 이벤트 및 로딩 처리

분석 진행 상태는 이벤트를 통해 확인할 수 있습니다.

 

mb-file.php?path=2026%2F07%2F09%2FF784_image.png

 

mb-file.php?path=2026%2F07%2F09%2FF785_image.png

 

주요 이벤트는 다음과 같습니다.

이벤트 설명
DRAW_START 영역 그리기 시작
DRAW_CHANGE 영역 꼭짓점 변경
DRAW_END 영역 그리기 완료
DRAW_CANCEL 영역 그리기 취소
COMPUTE_START 분석 시작
PREPARE_START 격자 및 샘플 준비 시작
PREPARE_COMPLETE 격자 및 샘플 준비 완료
CALCULATE_START 체적 계산 시작
CALCULATE_COMPLETE 체적 계산 완료
PROGRESS 분석 진행률 변경
COMPLETE 전체 분석 완료
WARNING 분석 경고
ERROR 분석 오류
CANCEL 분석 취소

 

 


주의 사항

분석 해상도 설정

분석의 정밀도는 resolution 값을 통해 설정할 수 있습니다.

값을 작게 설정할수록 더 촘촘한 격자로 분석되어 세부적인 결과를 얻을 수 있지만, 생성되는 격자 수와 분석 시간이 증가합니다.

대규모 영역을 지나치게 작은 해상도로 분석하면 설정된 최대 격자 수를 초과할 수 있으므로, 분석 영역의 크기와 필요한 정밀도를 고려하여 적절한 값을 설정해야 합니다.

 

분석 진행 중 화면 처리

분석을 수행하는 동안에는 사용자가 지도나 3D 화면을 조작하지 않도록 업무 화면에서 로딩 화면을 표시하는 것을 권장합니다.

분석 완료, 오류 또는 취소 시에는 로딩 화면이 정상적으로 종료되도록 처리해야 합니다.

해당 입력 차단 및 로딩 화면 처리는 분석 엔진 내부가 아닌 적용 화면에서 관리합니다.

사용 시 주의사항

  • Heatmap과 수직선은 분석이 완료되고 격자별 결과가 생성된 이후 사용할 수 있습니다.

  • 분석 영역이나 격자 크기, 기준면이 변경되면 기존 분석 결과와 가시화 항목이 제거되고 다시 분석됩니다.
  • 동일한 ID의 가시화 항목을 중복으로 추가할 수 없습니다. 기존 항목을 교체하려면 replace 옵션을 사용해야 합니다.
  • 사용자 계산 결과는 필수 데이터 구조와 숫자 형식만 검증됩니다.
  • 절토·성토 계산 공식, 보간 방법, 누락된 샘플 처리 기준 등 업무 계산의 정확성은 적용하는 사용자 계산 함수에서 별도로 검증해야 합니다.
  • 사용자 계산 함수에서 분석 취소 상태를 확인하도록 구현하면 취소 요청에 더 빠르게 반응할 수 있습니다.
  • 분석 결과를 복원한 후 다시 계산하는 경우, 저장 당시 사용한 계산기 ID가 사전에 등록되어 있어야 합니다.