Equirectangular Projection에서 왜곡을 어떻게 계산합니까?


28

왜곡을 계산하려고하여 텍스트와 양식을 겹쳐서 등변 형 투영 이미지와 정확하게 일치하도록 왜곡시킵니다.

그러면 등변 방형 투영 1 : 45,000,000 (예 : 너비 2000 픽셀 x 높이 1000 픽셀)에서 주어진 위도에서 왜곡을 어떻게 계산합니까?

이 게시물과 그에 대한 링크를 알아 내려고 노력했지만 정확한 Tissot Indicatrix를 만드는 방법은 무엇입니까?

나는 전문가가 아니라 매우 관심이 많은 아마추어이기 때문에 나를 위해 바보로 쓰십시오!

많은 감사합니다!


신속한 답변 감사합니다! 긴 이야기가 있습니다. 나는 그것이 더 명확하기를 바랍니다.

처리 프로그래밍 언어를 사용하여 데이터를 시각화 / 매핑하고 2D 매핑 된 데이터 (다른 크기의 글꼴 및 원)를 3D 지구본으로 줄 바꿈 할 때 왜곡되지 않은 상태로 표시하려고합니다. 데이터는 등변 형 x, y를 사용하여 매핑되며 배경으로 사용하려는 맵이 모두이 투영이므로이 왜곡을 "일치"한다고 가정합니다 (예 : Tissot 방정식을 사용하여 위도를 통한 왜곡 계산). 프로그래밍 언어를 사용하여 텍스트와 원을 정확하게 왜곡 할 수 있습니다. 내가 필요한 것은 올바르게하는 방정식이라고 생각합니다.

원본 2D 데이터 맵은 다음과 같습니다.

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

랩핑하면 다음과 같이 왜곡되어 보입니다.

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

$ 10,000 질문 : 2D 이미지를 3D 구체로 감쌀 때 왜곡되지 않은 것처럼 보이게하려면 어떻게해야합니까?

참고로, 다음 은 처리 포럼에서 다르게 질문 된 동일한 질문 입니다.

다시 감사합니다!


올바르게 이해하면 직교 투영으로 다시 투영하고 싶지 않습니다. 2D 데이터 맵을 상호 작용할 수있는 3D 구체 모델 (예 : 회전)로 랩핑하고 싶습니다.

3D 모델링 프로그램 (Cinema 4D)을 사용하여 NASA에서 2MB "Blue Marble"이미지 ( 구형 투영) 로 구를 래핑합니다 .

래핑되면 모든 반구에서 왜곡되지 않은 것처럼 보입니다 (직교 투영법으로 볼 때 하나의 반구가 아니라?). 위의 3D 모델에서 여전히 참조하십시오. (모델링 프로그램은 객체를 회전시킬 때 직교 투영을 수행하고 있다고 생각합니다.) 따라서 2D 데이터 맵을 비슷한 방식으로 왜곡하면 3D 구에서도 왜곡되지 않은 것으로 나타납니다. 다음은 등변 형 왜곡을 근사하는 방정식으로 찍은 샷입니다. 2D 이미지에서 계란 모양의 타원이 3D 구에 래핑되면 원 모양으로 나타납니다. 마찬가지로 Tissot 타원도 3D 구에 원으로 나타납니다.

왜곡 된 원이있는 Tissot Indicatrix 3D 구에 래핑 된 왜곡 된 원

이것이 내가 티쏘 방정식을보고있는 이유입니다 ... 다른 위도에서 등 직사각 투영의 왜곡을보다 정확하게 파악하여 그에 따라 오버레이를 왜곡 할 수 있습니다.

이 모든 것이 의미가 있기를 바랍니다.

아마도 당신은 내가 GIS 프로그램을 사용해야한다는 것이 맞을 것입니다. 방금 Cartographica를 다운로드했으며 알아낼 수 있는지 확인할 것입니다. 이 작업을 수행하는 초보자를위한 Mac 소프트웨어 제안 사항이 있습니까?

다시 감사합니다.


1
정말로 왜곡 계산을 의미합니까, 아니면 투영 자체를 계산하는 방법을 정말로 알고 싶습니까? 웹에서 이미지를 사용하여 수행하려는 작업을 설명 할 수 있습니다. "일치"를 사용하면 하나의 이미지를 다른 이미지로 변환하는 방법을 결정하여 시작하는 대상과 끝낼 대상을 지정해야 함을 나타냅니다.
whuber

1
전문 용어를 몰라도 원하는 것을 설명하기는 어렵지만 결과보다는 프로세스를 설명하려는 것처럼 들립니다. 해결하고자하는 문제부터 시작하여 원하는 결과를 얻으십시오. 그 차이를 메우기 위해 노력할 것입니다. :)
MerseyViking

기술 용어 : 등방 형 투영 에서 직교 ( "공간에서 월드") 투영으로 다시 투영하려고합니다 . 어떤 소프트웨어를 사용할 수 있습니까? GIS 소프트웨어가 있거나 프로젝션 라이브러리에 대해 코딩하려는 경우 기본적으로 작업이 완료됩니다. 그렇지 않으면, 당신은에 대한 방정식을 구현해야 unprojecting 투영법이 투영 (쉬운)와 투사 직교 투영 (너무 열심히하지,하지만 수치 루틴을 코딩에 약간의 기술이 필요합니다).
whuber

1
나는이 게시물을 보았고 기본적으로 똑같은 일을하려고합니다. 3D 구에 투사 할 때 올바르게 왜곡되는 2D 원을 그리려고합니다. 2D 원 왜곡에 사용한 알고리즘을 기꺼이 공유 할 수 있을지 궁금합니다. 답이 아닌 의견이되어야했지만, 잘못된 위치에 썼습니다. 죄송합니다.
HankTurbo

3D 공간에 데이터를 그린 다음 구체로 다시 투영해야합니다.
AngelLeliel

답변:


5

3D 구에 래핑 할 때 2D 이미지가 왜곡되지 않은 것처럼 보이게하려면 어떻게해야합니까?

이미지 좌표는 위도 및 경도이므로

(a) 투영을 해제 하고 직교 또는 수직 니어 사이드 프로젝션 (즉, 우주에서 세계처럼 보이는 프로젝션) 또는

(b) 텍스처 좌표로 위도를 사용하여 구의 3D 모델에 텍스처 매핑 하고 3D 그래픽 렌더링 장치로 해당 구를 표시합니다.

대부분의 GIS는 (a) 일상적으로 행동합니다. (b)를 설명하기 위해 , 텍스처 매핑 된 구를 공전하는 관점에서 찍은 질문의 "평면"맵에서 파생 된 이미지 세트는 다음과 같습니다.

우주에서 세계

(가장 오른쪽 이미지를 자세히 보면 태평양을 통해 눈에 띄는 자오선을 볼 수 있습니다. 이것은지도의 왼쪽과 오른쪽을 함께 감싸서 형성된 "완벽"입니다.

이 중 하나를 생성 하는 기본 Mathematica 명령은

SphericalPlot3D[1, {a, 0, \[Pi]}, {b, 0, 2 \[Pi]}, Mesh -> None, 
 PlotStyle -> {Texture[i]}, TextureCoordinateFunction -> ({#5, -#4} &), 
 Lighting -> {{"Ambient", White}}, 
 Boxed -> False, Axes -> False, Background -> Black]

이렇게하면 원을 올바르게 표시하는 맵을 생성 할 때 발생하는 원래 문제 (구에 "데이터 맵"을 그리는 문제)가 줄어 듭니다. 이를위한 가장 좋은 투영법은 스테레오 그래픽입니다. 크기에 상관없이 구의 모든 원을지도의 원에 투영하기 때문입니다. 따라서 질문에서 볼 수 있듯이 Equirectangular 투영 에서 큰 원을 올바르게 그리는 절차 중 하나 는 Stereographic 투영에서 원을 만든 다음 지리적 좌표 (lat, lon)로 투영을 해제하는 것입니다. (lon, lat)을 (x, y) 직교 좌표로 사용하여 맵을 Equirectangular 투영에 적합하게 만들므로 구에 텍스처를 매핑하거나 직교 투영을 적용하는 데 적합합니다.


Tissot 인덱스는 솔루션으로 적합하지 않습니다 . 무한 원의 로컬 왜곡 만 나타냅니다 . 전 세계적으로 볼 수있을 정도로 큰 원은 더 이상 대부분의 투영에서 원형으로 표시되지 않습니다. 이것이 그림과 같이 프로젝션 게임을하는 것이 좋은 해결책에 필수적인 이유입니다.


매우 유익한 게시물에 감사드립니다! 나는 (b)를 나의 접근 방식으로 취하고 있으며 올바르게 직육면체 맵을 생성하지만 맵을 3D 구에 매핑하는 동안 추악한 극 왜곡을 얻습니다. 당신은 매우 친절하게 도움을 하시겠습니까? gis.stackexchange.com/questions/245315/…
Sibbs Gambling

2

그려지는 모양이 구의 작은 부분을 덮고 있다고 가정하면 너비를 1 / cos (lat)로 스케일링하고 높이 만 남겨두면됩니다.

모양이 클수록 극에 가까울수록 효과가 떨어집니다.


이것이 왜 효과가 있는지 설명해 주시겠습니까? 예제 이미지에서 렌더링 가장자리 근처의 구의 작은 부분에서도 극적으로 실패하는 것처럼 보입니다.
whuber

편집 해 주셔서 감사합니다. 귀하의 답변이 저에게 정확하고 향후 누군가에게 유용 할 수 있기 때문에 공감대를 삭제했습니다. 그러나이 질문을 검토 할 때, 누군가가 구 주위에 작은 모양을 감쌀 것 같지는 않습니다. 그렇게 할 때 기둥과 다른 곳에서도 처리해야 할 것 같습니다.
whuber

0

의견을 추가하는 방법을 알 수 없으므로 솔루션 에이 내용을 넣고 중재자가 내가 의견을 말할 수없는 이유를 알아 낼 수있게하십시오.

당신의 질문을 읽을 때 나의 첫인상은 "왜 메르카토르와 같은 등각 투영법으로 원을 디자인하지 않습니까?" 이지도를 메르카토르 투영법으로 투영하고 원과 텍스트 왜곡을보고 모든 것을 멋지게 수정하고 지구본으로 투영 할 때 모양이 그대로 유지되어야합니다 (즉, 등각 투영의 정의).


2
이것은 나에게 답처럼 읽히므로 남겨 두겠습니다. 그러나 오해에 기초한 것은 틀린 것입니다. 등각 투영은 모든 원을 원으로 투영하지 않습니다. 그들은 무한히 그렇게합니다 . 예를 들어 메르카토르가 지구의 축 주위를 돌고있는 원에 대해 무엇을하는지 생각해보십시오. 원으로 매핑 할 수는 없습니다. 어딘가에서 끊어야합니다. 이에 대한 자세한 내용은 Tissot 사이트를 검색하십시오 .
whuber

1
"그들은 무한히 그렇게합니다." -> "그들은 무한히 작은 것들에 대해서만 그렇게합니다."
Martin F

0

첫 번째 2D지도에는 지리적 지형이 그려져 있지 않습니다. 이지도 (아프리카 등고선)에 추가하고 생각한 왜곡을 한 번에 모든 것에 적용하십시오. 지리도 수정되어 구체에 놓으면 잘못 될 수 있습니다. 따라서, 나는이 아이디어가 약간의 왜곡을 가하는 것이 효과가 없다고 생각합니다.

면적이 제한적이고 왜곡이 허용되는 작은 2D 맵으로 그래픽을 그려서 2D로 얻을 수 있습니다. 2D 맵을 타일로자를 수 있으며 각 타일마다 고유 한 "최상의"투영법을 사용할 수 있습니다.

반면에 2D 맵에서 지정된 반지름의 측지 원에 점을 쉽게 만들 수 있습니다. 이를 위해 주어진 거리에서 다른 지점과의 거리와 방위각의 위도 / 경도를 계산하는 함수를 찾아야합니다 ( "직접 문제 Vincenty"검색). 일단 그것을 얻은 후에는 방위각을 0에서 360으로 변경하여 점으로부터 주어진 거리에서 등거리 점들을 생성 할 수 있습니다. 측지 원이 극을 포함하거나 교차 할 때 2D로 그 점에서 다각형을 만들려면 더 많은 작업이 필요합니다 지도의 왼쪽 또는 오른쪽 경계. 평면지도 에서 측지선이 어떻게 보이는지 확인 하십시오 .

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