답변:
정수 값만 선택하는 간단한 방법은 다음 구문을 사용하는 것입니다.
Mod(Round("ELEVATION", 0)*10, 10)=0
이 곱셈에 10을 곱하면 모든 값이 정수가되고 10의 배수 인 값만 선택합니다.
다른 숫자의 배수를 선택하려면 간격에 10을 곱하십시오.
5m 간격으로 윤곽을 얻으려면 다음을 사용하십시오.
Mod(Round("ELEVATION",0) * 10, 50)=0
100m 간격으로 윤곽을 얻으려면 다음을 사용하십시오.
Mod(Round("ELEVATION", 0) * 10, 1000)=0
업데이트
아래 주석에 주어진 Whuber의 조언에 따라 쿼리 표현식에 반올림 함수를 추가했습니다.
MOD
으로 부동 소수점 반올림 오류가 발생하며 여기에서 매우 중요합니다. 최상위 자리까지도 낮은 경우 MOD
구현 방법에 따라 잘못된 값을 반환 할 수 있습니다. 이러한 미묘한 (그리고 교활한) 오류를 방지하는 방법으로 적용하기 전에 값을 반올림 하는 것이 좋습니다 MOD
.
ROUND
하여 라운딩의 정밀도를 높이십시오.
다른 쿼리 옵션이 있습니다. 위의 답변과 거의 동일하지만 다른 시나리오에 맞게 사용자 정의하기가 조금 더 쉽습니다.
10으로 나눌 수있는 형상을 표시하려면
Floor(Elevation/10)=Elevation/10
50으로 나눌 수있는 형상을 표시하려면
Floor(Elevation/50)=Elevation/50
반 미터 윤곽선을 표시하려면
Floor(Elevation/0.5)=Elevation/0.5
임의의 오프셋으로 10 미터 형상을 표시하려면 (예 : 10.2, 20.2, 30.2)
Floor((Elevation-0.2)/10)=(Elevation-0.2)/10
하루가 끝나면 고려해야 할 또 다른 옵션입니다.
인덱스 윤곽선을 얻으려면 필드 계산기에서 이것을 사용하십시오.
ARCMAP에서
dim dIndexInterval
dim dCont
dim i
dim j
dim k
dim c
dIndexInterval = 200 ' set to interval of index contours
dCont = [level] ' Set to contour height field
i = ROUND(dCont, 0) * 10
j = dIndexInterval * 10
k = i MOD j
if k = 0 then
c = 1 ' is an index contour
else
c = 0 ' is not an index contour
end if
대화 상자 하단의 텍스트 입력 필드에 "c"(따옴표없이)를 입력하고 확인을 클릭하십시오.
QGIS에서
if(((round("level", 0) * 10) % (200 * 10)) = 0, 1, 0)
""level ""등고선 높이 필드로 설정 "200"색인 등고선 간격으로 설정
그런 다음 "1"은 인덱스 윤곽이며 "0"은 인덱스 윤곽이 아닙니다.