복합 언덕을 만드는 방법?


10

합성 언덕 모양 의 개념은 여러 언덕 모양을 다른 햇빛 방향과 결합하여 사각 지대를 피하는 것입니다. 3 개의 언덕 음영 이미지를 각각 315⁰ (NW 햇빛, 기본 레이어), + 355⁰ 레이어, + 275⁰ 햇빛과 병합해야합니다. 아래 그림과 같이 세부 사항과 우아함이 향상 됩니다 . 전체 GIS 이외의 설명은 여기에 있습니다 .

여기에 이미지 설명을 입력하십시오

srtm 파일을 사용하여 다음을 통해 3 개의 초기 언덕 음영을 수행 할 수 있습니다.

gdaldem hillshade input.tif hillshades_A.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_B.tmp.tif -s 111120 -z 5 -az 355 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_C.tmp.tif -s 111120 -z 5 -az 275 -alt 60 -compute_edges

답변:


9

링크 된 소스는 "퓨전 모드를 <Multiply>로 변경"하여 언급 하므로 조작은 단순한 평균 입력 언덕 음영이 아닙니다 (이에 대해서는 gdal_hillshades 평균화 방법 도 참조 ). 다른 것입니다. 그러나 3 가지 다른 햇빛 방향 언덕 모양을 만들어 봅시다.

gdaldem hillshade input.tif hillshades_A.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_B.tmp.tif -s 111120 -z 5 -az 355 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_C.tmp.tif -s 111120 -z 5 -az 275 -alt 60 -compute_edges

여기에 이미지 설명을 입력하십시오

A, B, C의 최저값 유지

내가 아는 첫 번째 알고리즘은 가장 어두운 픽셀을 필터링하고 유지하는 것입니다. 일명 입력 A, B, CA 부울 값 중 낮은 값을 가진 픽셀은 다음과 같이 할 수 있습니다.

gdal_calc.py -A hillshades_A.tmp.tif  -B hillshades_B.tmp.tif -C hillshades_C.tmp.tif --outfile=./hillshades_xl.tmp.tif \
   --calc="(A*(A<=B)*(A<=C)+ B*(B<A)*(B<=C)+ C*(C<A)*(C<B))"

그림자에 의해 지배되는 지역은 이제 하나의 중앙 lignt의 반대쪽보다 더 많이 구성되며, 양쪽에서 40⁰ 씩 증가했습니다. 제공된 링크가 아니라이 현재 알고리즘은 계몽 영역을 너무 많이 잃어버린 것 같습니다.

각도 315±30⁰전류가 오히려 것을 (작은 각도 변화) 315±40⁰친절 할 것입니다.

아래 다이어그램은 방정식의 기초입니다. 광원 A, B, C 및 각 부분의 픽셀 값 A, B, C에 대한 부울 비교를 보여줍니다. 평등 라인은 부울에 포함되도록 특별한주의가 필요합니다. 중앙선 221은 수직 광원에 대한 값 을 갖는다 . 영향 영역에 대해 생각해보십시오 . 가장 가까운 광원은 주된 영향이며, 가장 약한 영향입니다.

여기에 이미지 설명을 입력하십시오

A, B, C에 대한 극단 값 유지

다른 부울 알고리즘은 가장 어두운 픽셀과 가장 하얀 픽셀 모두에서 가장 극단적 인 값을 유지하는 것입니다. 다음 다이어그램은 부울 수식에 대한 것입니다. 원의 각 여섯 들어, 및 삼각형 영역 플러스 시계 평등 선을 선택하는 A, B, C, 및 부울으로부터 계속 값을 식별 아니라 . (위에서 시계 방향으로) :

--calc="A*(A>B)*(A>=C) + C*(C>A)*(A>=221) + B*(C>A)*(C>=221) + A*(A<B)*(B<=221) + C*(B>A)*(A<=221) + B*(B>A)*(C<=221)"

여기에 이미지 설명을 입력하십시오

각도 변화가 그다지 중요하지 않으면 좋은 결과를 얻을 수 있습니다.

다른 부울

테두리 세그먼트의 조합을 사용하여 전체 원을 덮기 위해 더 복잡한 부울을 만들 수 있습니다. 하나의 세그먼트에 대해 A, B, C 중 하나의 값만 유지하는 것이 중요합니다 .

곱하다

내가 만든 여러 failled 시도multiply입증 된 공식이나 최종 성공하지 픽셀 값을 설정합니다. @Radouxju는 (a*b*c)^(1/3)ARITHMETIC 평균 대신 (GEOMETRIC 평균) (a*b*c)/(255*255)작동 할 수 있다고 지적했습니다 . 기하 평균은 산술 평균과 같거나 낮으며, 음영 영역의 어둡기를 강조합니다. 아직 테스트하지 않았습니다.


나는 복합재에 대한 개념 학습과 누군가가 그것을 어떻게 사용자 정의 할 수 있는지 요약하려고했습니다. "곱하기"에 대한 실제 공식은 나에게 알려져 있지 않습니다.
Hugolpz

왜 값을 곱하고 결과의 크기를 조정하지 않습니까?
whuber

시도하지 않았습니다! 어떤 식으로 (A*B*C)/(255*255)할까요?
Hugolpz

1
그것은 좋은 시작이 될 것입니다 :-).
whuber

1
ARITHMETIC 평균 대신 GEOMETRIC 평균을 사용하여 "곱하기"가 아닙니다. (a b c) ^ (1/3). 기하 평균은 산술 평균과 같거나 낮으며, 음영 영역의 어둡기를 강조합니다.
radouxju

0

이를 수행 할 수있는 도구는 Sky-View Factor Based Visualization ( http://iaps.zrc-sazu.si/en/svf#v )입니다. 지형의 여러 매개 변수를 계산합니다. 젠장.


-1

Gdal_calc 의 numpy에는 더 많은 연산자 가있는 것 같습니다 :

+ addition 
- subtraction 
/ division 
* multiplication 
= equals to 
< less than 
> larger than 
! not equal to 
? if clause 
M maximum of two values 
m minimum of two values 
B bit level operator

이국적인 연산자를 사용하는 방법에 대한 명확하고 적절한 예를 찾지 못했습니다. 무언가가 있다면 자유롭게 공유하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.