건물 외곽 설정에서 건물 그림자를 어떻게 생성 하시겠습니까?
건물 높이에 대한 속성 값이 있습니다.
따라서 그림자 크기는 그에 따라 달라지는 것이 좋습니다.
가장 좋은 제안 I의 한 드롭 그림자는 ArcGIS이다 사용하여 발견 : http://blogs.esri.com/Support/blogs/mappingcenter/archive/2008/10/21/3d-effect-for-a-building-footprints.aspx
답변
빠르고 더러운 방법 은 건물 지붕의 그림자 만 그릴 수 있으며 어두운 회색으로 표시하고 (기본 지상층이있는 경우 반투명) 건물 다각형을 그 위에 그립니다. 지붕 그림자는 광원의 방위각과 고도에 의해 설정된 방향으로 건물 높이에 의해 결정된 거리만큼 건물 다각형을 변환하여 얻습니다 (무한 거리로 간주). (번역 양에 대한 공식은 아래에 나와 있습니다.)
낮은 고도 나 고층 빌딩 (예 : 고층 빌딩)을 제외하고는 제대로 작동하는 경향이 있습니다. 오른쪽에있는 더 높은 고립 된 건물의 그림자가 건물 자체에서 어떻게 분리되는지 확인하십시오.
그림자 를 건물에 올바르게 연결하려면 건물 벽 의 그림자를 포함해야합니다 . 이것은 어렵지 않습니다. P에 위치한 점과 Q에있는 다른 점 사이에서 연장되는 벽의 그림자는 {P, Q, Q ‘, P’}로 요약 된 사변형이됩니다. 여기서 Q ‘는 Q의 그림자이고 P’는 P. 다각형 건물은 닫힌 점 시퀀스 (P (1), P (2), …, P (n))로 표시되는 연결된 다각형의 모음입니다. 이러한 각 다각형에 대해 가장자리 그림자의 합집합을 형성하십시오 (P (1), P (2)), (P (2), P (3)), …, (P (n), P ( 1)). 이것은 가장자리 위의 루프를 통해 간단합니다.
방위각에서 빛 도 (이스트 북쪽)과 고도 의의 (수평선)에서도, 투영 좌표 (X, Y) 및 높이를 갖는 점 P의 그림자 H (모두 같은 단위로 표현 미터와 같은)는 P ‘= (x-h sin (a) / tan (s), y-h cos (a) / tan (s))에 있습니다. 전체 레이어에 대해 sin (a) / tan (s) 및 cos (a) / tan (s)을 한 번만 계산하면되고 각 다각형에 대해 오프셋을 얻기 위해 해당 계수에 높이를 한 번만 곱하면됩니다. 다각형의 각 점 그림자. (실제 계산 작업은 코드가 아닌 GIS에 의해 수행되며,이 모든 사변형의 합집합을 형성합니다.)
다음은 효과의 예입니다. (방위와 고도는 첫 번째 그림과 비교하여 약간 변경되었지만 건물 다각형과 높이는 서로 다르지만 이전과 동일합니다.)
충수
요청에 대한 응답으로 두 번째 예를 작성하는 데 사용되는 코드는 다음과 같습니다. 더 이상이 언어 (애비뉴)를 사용하는 사람은 거의 없지만 좋아하는 GIS에서 솔루션을 만들기위한 의사 코드 역할을 할 수 있습니다. (그러나 대부분의 의사 코드와 달리 실제로 실행하여 테스트되었습니다. 🙂 설명이 필요하지 않은 것은 매우 간단합니다. 인덱싱은 1이 아니라 0으로 시작하고 다각형 링은 명시 적으로 닫힙니다 (목록의 마지막 지점이 첫 번째 지점과 일치 함).
' S
' Return the shadow of a shape.
' Field calculator example:
' av.run("S", {[shape], [height], 200, 35})
'======================================================================'
theShape = SELF.Get(0) ' A projected polygon
xHeight = SELF.Get(1) ' Expressed in the projected units
xAzimuth = SELF.Get(2).AsRadians ' Any angle (in degrees) east of north
xAltitude = SELF.Get(3).AsRadians ' Angle between 0 and 90 (vertical)
'
' Compute the shadow offsets.
'
xSpread = 1/xAltitude.Tan
x = -xHeight * xSpread * xAzimuth.Sin
y = -xHeight * xSpread * xAzimuth.Cos
xy = x@y
'
' Begin with the original shape.
'
p = theShape.Clone
'
' Adjoin the wall shadows.
'
for each lPts in theShape.AsList ' Loop over the rings
for each i in 1..(lPts.Count-1) ' Loop over edges in this ring
l = {lPts.Get(i-1), lPts.Get(i), lPts.Get(i)+xy, lPts.Get(i-1)+xy}
p = p.ReturnUnion(Polygon.Make({l}))
end
end
return p
' end of script
답변
나는 당신이 (찾고있는) 말이 아크 맵 (버전?)의 가능성이 될 것이라고 생각하지 않습니다. 아마도 당신이 원하지 않는 한계에
대해서는이 질문 을 보십시오 .
활용하여 3 차원 분석의 확장 및 arcscene 당신이 빛을 추가 할 수 있지만 몇 가지 제한 사항이 아직 없습니다. cityengine
과 관련 하여 일부 esri 운동이 있습니다 .
그림자 정확도 섹션으로 스크롤하십시오.
나는 이전에 lightscape와 관련이 있습니다 (이것은 은퇴되었으며 3dsmax 내부에 살고 있음을 확신합니다).
이제는 경로가 엔지니어링 시각화 제품 라인을 통과했을 것입니다 …
3ds Max
답변
3D Analyst 확장에는 실루엣과 그림자 볼륨을 생성하기위한 몇 가지 도구 ( Skyline 및 Skyline Barrier )가 있지만 스카이 라인에서와 같이 수직 평면에 투영되는 상황이므로 쉽게 조정할 수 있는지 여부를 잘 모르겠습니다. 이 경우 (평면,지면에 투사).