질문답변

제목[re]경사향 관련 범례2026-08-20 17:40
카테고리GeOnDT for JS
작성자

안녕하세요. 문의하신 경사향/경사도 표출 범례 설정에 대해 아래와 같이 안내드립니다.


1. 현재 적용된 색상별 범례값 확인

경사도 분석 객체의 속성에서 현재 적용된 최소값, 최대값 및 색상 목록을 확인할 수 있습니다.

console.log(analy.slopeLegend);
 

별도의 범례 조회 API는 제공되지 않습니다. 경사도 범례는 min부터 max까지의 범위를 color 배열의 색상 개수에 따라 균등하게 분할하여 적용합니다.


경사향 분석에 적용된 방향별 색상은 aspectLegend 속성에서 확인할 수 있습니다.

console.log(analy.aspectLegend); 

마찬가지로 별도의 범례 조회 API는 제공되지 않습니다.


2. 범례 구간 값 직접 설정

범례 구간 값을 직접 설정하는 API는 별도로 제공되지 않습니다.

다만 arrowStyleFunction을 사용하면 경사도 또는 경사향 값을 기준으로 구간 조건을 정의하고, 각 구간에 해당하는 화살표의 색상 등 스타일을 지정할 수 있습니다. 

구체적인 사용 방법은 ‘3. 설정한 구간에 따른 색상 지정’ 항목에서 함께 설명드리겠습니다.


3. 설정한 범례 구간에 따른 색상 지정

arrowStyleFunction을 활용하면 경사도 또는 경사향 값을 기준으로 구간 조건을 임의로 정의하고, 각 구간에 해당하는 화살표 색상을 지정할 수 있습니다. 아래는 적용 예시입니다.


[arrowStyleFunction 예시 코드]

const slopeLegend = [
{min: 0, max: 5, color: '#ffffff'},
{min: 5, max: 15, color: '#ffff00'},
{min: 15, max: 30, color: '#ff9900'},
{min: 30, max: Infinity, color: '#ff0000'}
];

const aspectLegend = [
{
name: '평탄',
color: '#cccccc',
matches: (aspect) => aspect === 0
},
{
name: '북',
color: '#84d600',
matches: (aspect) => aspect > 0 && (aspect < 22.5 || aspect >= 337.5)
},
{
name: '북동',
color: '#00ab44',
matches: (aspect) => aspect >= 22.5 && aspect < 67.5
},
{
name: '동',
color: '#0068c0',
matches: (aspect) => aspect >= 67.5 && aspect < 112.5
},
{
name: '남동',
color: '#6c00a3',
matches: (aspect) => aspect >= 112.5 && aspect < 157.5
},
{
name: '남',
color: '#ca009c',
matches: (aspect) => aspect >= 157.5 && aspect < 202.5
},
{
name: '남서',
color: '#ff5568',
matches: (aspect) => aspect >= 202.5 && aspect < 247.5
},
{
name: '서',
color: '#ffab47',
matches: (aspect) => aspect >= 247.5 && aspect < 292.5
},
{
name: '북서',
color: '#f4fa00',
matches: (aspect) => aspect >= 292.5 && aspect < 337.5
}
];

analy.setArrowStyleFunction((cell) => {
// 경사도 모드일 때 범례 설정
if (analy.mode === 'slope') {
const item = slopeLegend.find(
({min, max}) => cell.slope >= min && cell.slope < max
);

return {
color: item?.color ?? '#cccccc'
};
}

// 경사향 모드일 때 범례 설정
if (analy.mode === 'aspect') {
const item = aspectLegend.find(
({matches}) => matches(cell.aspect)
);

return {
color: item?.color ?? '#cccccc'
};
}
return {
color: '#cccccc'
};
});


정리하면, arrowStyleFunction을 사용하여 경사도와 경사향 모두 원하는 구간 조건에 따라 색상을 임의로 지정할 수 있습니다. 

다만 arrowStyleFunction은 범례 자체를 생성하는 API가 아니라 각 분석 셀의 화살표 스타일을 결정하는 기능이므로, 범례를 화면에 표시하려면 서비스 또는 클라이언트 소스에서 동일한 구간 및 색상 데이터를 사용하여 별도의 범례 UI를 구성해야 합니다.