GDAL API를 JAVA에서 사용하기 (Windows 환경)

#1 컴파일된 GDAL 다운로드

다음 사이트를 통해 미리 컴파일된 GDAL을 내려 받는다. MSVC2022로 컴파일된 x64를 선택한 뒤 release-1930-x64-gdal-3-5-3-mapserver-8-0-0.zip를 다운로드 받았음 : https://www.gisinternals.com/release.php

#2 GDAL dll의 PATH 지정

내려받은 파일의 압축을 풀면 bin 폴더에 gdal에 대해 컴파일된 dll 파일이 존재하는데, 이 bin 폴더를 path에 지정한다. (gdalalljni.dll에서 이 폴더의 dll을 참조함)

#3 이클립스에서 라이브러리 참조 및 glue dll 참조 설정

bin/gdal/java 폴더에는 gdal.jar와 gdal에 대한 glue dll인 gdalalljni.dll이 존재하는 것을 확인할 수 있다. 이클립스에서 프로젝트를 생성하고 라이브러리로 gdal.jar를 참조한다. 그리고 gdal.jar가 참조하는 gdalalljni.dll 파일을 JRE가 파악할 수 있도록 이 파일의 경로(d:/path1/path2 라고 하자)를 VM arguments에 -Djava.library.path=d:/path1/path2 를 입력한다. (만약 path에 이 경로가 지정되어 있다면 생략해도 됨)

#4 코드 테스트

테스트 코드는 다음과 같다.

package tstGDAL;

import org.gdal.gdal.Dataset;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;

public class MainEntry {
    Dataset hDataset;
    int numBands;
	 
    public MainEntry(String filename) {
        gdal.AllRegister();
        hDataset = gdal.Open(filename, gdalconstConstants.GA_ReadOnly);
        this.numBands = hDataset.getRasterCount();
    }
	 
    public static void main(String[] args) {
        String path = "d:/sample.tif";
        MainEntry instance = new MainEntry(path);
        System.out.println(instance.numBands);
    }
}

복잡한 계단 난간 모델링 최적화하기

아래와 같은 복잡한 계단 난간을 모델링할때 난간 벽면과 바닥에 대한 철재 부분의 세밀한 부분도 모두 모델링한다면 매우 많은 정점과 면으로 구성된 모델이 나올 것이고 이를 웹에서 인터렉티브하게 시각화할 경우 속도 측면에서 그 효율성은 매우 떨어질 것입니다.

위의 모델에 대한 최적화된 모델링을 위해서는 먼저 계단 난간의 벽면과 바닥에 대해 매우 세밀한 모델링을 다음처럼 구축합니다.

그리고 위의 벽면과 바닥에 대한 텍스쳐를 2개 베이킹하는데요. 하나는 노말맵 또 하나는 알파맵입니다.

그리고 다음과 같은 모델에 위의 텍스쳐를 맵핑 시킵니다.

맵핑은 다음과 같은 쉐이더 노드로 구성합니다.

위의 쉐이더 노드 구성 시에 Blend Mode를 Alpha Clip으로 지정해서 알파값에 대한 임계값(Clip Threshold)을 직접 지정할 수 있도록 해야 합니다.

간단하게 Eevee로 렌더링된 결과는 다음과 같습니다.