GDAL에서 제공하는 Command 정리

GDAL은 geotif 등과 같은 Raster 데이터에 대해 수행할 수 있는 다양한 Command를 제공합니다. Raster 파일에 대한 Extent와 좌표계 정보를 얻을 수 있는 gdalinfo.exe에서부터 영상에서 특정 영역만을 뽑아내 또 다른 영상 파일로 저장할 수도 있고, 좌표계에 대한 투영변환도 가능하며 GCP를 지정해 Georeferencing도 가능합니다. GIS 개발자에게 Raster 데이터를 저수준에서 처리하기 위해 GDAL는 매우 활용도가 높고 중요한 오픈소스 라이브러리입니다. (GDAL 라이브러리만 있다면 어떠한 GIS 데이터 포맷이든 모두 내 손 안에 있다규 !!)

GDAL에서 제공하는 Command 명령 중 실제 작업 중에 사용했던 것을 정리해 둡니다.

1. Raster 데이터의 정보 보기

Z:\> gdalinfo A.tif

위의 명령은 A.tif 파일에 대한 좌표계 및 Extents 등에 대한 정보를 얻기 위한 명령입니다.

2. geotif 영상에서 원하는 부분만을 잘라내 또다른 파일로 저장하기

Z:\> gdalwarp -te 197789.97 552829.04 199789.97 554829.04 G:\img\geotif\Seoul_10cm_GRS80.tif g:\a.tif

위의 명령은 Seoul_10cm_GRS80.tif 영상 파일에서 MBR(197789.97 552829.04 199789.97 554829.04)에 대한 부분을 a.tif 파일로 저장하기 위한 명령입니다.

3. GCP를 지정한 Georeferencing 하기

Z:\> gdal_translate -of GTiff -gcp 48.954 1298.304 219084 362071 -gcp 1174.042 348.95 219261 362144 -gcp 2610.376 5.8401 219418 362116 A.jpg B.tif
Z:\> gdalwarp -r lanczos B.tif C.tif

위의 연속적으로 실행되는 2개의 명령 중 첫번째는 GCP를 3개 사용해 입력 파일인 A.jpg 파일에 대해 Georeferencing 하여 B.tif 파일로 저장하라는 명령이고, 두번째는 저장된 B.tif를 Resizing 알고리즘 중 lanczos를 사용해 c.tif 파일로 저장하라는 명령입니다.

[JavaScript] SVG로 PieChart를 위한 도형 그리기

JavaScript 언어를 이용해 SVG에 PieChart를 위한 도형을 생성하기 위한 코드를 함수로 정리해 둡니다. 최종 결과는 아래처럼 4개의 항목으로 구성된 가운데 구멍이 뚫린 모양입니다.

먼저 아래처럼 svg와 PieChart를 구성하는 4개의 항목을 path로 지정해 둡니다. (실제 활용시에는 이 부분을 모두 JavaScript 코드로 동적 생성하도록 해야 합니다)


    
    
    
    

위의 4개의 path에 대해 각각 파이차트의 구성 요소로 만들어 주는 함수는 아래와 같습니다.

function toPieChartItemPath(x, y, radiusIn, radiusOut, startAngle, endAngle) {
    function _toXY(cX, cY, r, degrees) {
        var rad = (degrees) * Math.PI / 180.0;

        return {
            x: cX + (r * Math.cos(rad)),
            y: cY + (r * Math.sin(rad))
        };
    }

    var startIn = _toXY(x, y, radiusIn, endAngle);
    var endIn = _toXY(x, y, radiusIn, startAngle);

    var startOut = _toXY(x, y, radiusOut, endAngle);
    var endOut = _toXY(x, y, radiusOut, startAngle);

    var arcSweep = (endAngle - startAngle) <= 180 ? "0" : "1";

    var d = [
        "M", startIn.x, startIn.y,
        "L", startOut.x, startOut.y,
        "A", radiusOut, radiusOut, 0, arcSweep, 0, endOut.x, endOut.y,
        "L", endIn.x, endIn.y,
        "A", radiusIn, radiusIn, 0, arcSweep, 1, startIn.x, startIn.y,
        "z"
    ].join(" ");

    return d;
}

이 함수의 인자를 설명하면, x와 y는 파이 차트의 중심점이고 radiusIn과 radiusOut은 파이차트의 내부 반지름과 외부 반지름 값입니다. 그리고 startAngle와 endAngle는 시작각도(3시 방향이 0도)와 종료각도(시계방향)입니다. 이 함수를 통해 앞서 구성한 svg와 path 요소를 파이차트로 구성하는 코드는 아래와 같습니다.

document.getElementById("arc1").setAttribute("d", toPieChartItemPath(250, 250, 100, 240, 0, 45));
document.getElementById("arc2").setAttribute("d", toPieChartItemPath(250, 250, 100, 240, 45, 90));
document.getElementById("arc3").setAttribute("d", toPieChartItemPath(250, 250, 100, 240, 90, 180));
document.getElementById("arc4").setAttribute("d", toPieChartItemPath(250, 250, 100, 240, 180, 360));