※ 요약

필자는 가끔 구글 어스를 이용한다. 그런데 위경도 단위가 도분초인데, 필자는 도분초(DMS)보다는 도(D) 값으로 보는게 편하다. 그래서 옵션 찾아보니 위도, 경도 표시 단위를 바꾸는 방법이 있어 소개하고자 포스팅한다.


※ 설명

먼저 구글 어스를 실행한다. 보면 알겠지만 화면 하단에 나오는 위경도 표시 값이 도분초인걸 알 수 있다.


단위를 바꾸기 위해 도구->옵션으로 이동한다.



3D 보기 탭 내용중 위도/경도 표시 항목의 값을 본인이 원하는 값으로 바꿔주면 된다. 필자는 십진법으로 표기로 바꿔주었다.


※ 요약

구글 지도에서는 위경도 정보를 얻기 쉬운데 네이버 지도에서는 위경도 정보를 어디서 얻어야 할 지 모르는 사람들이 많다. 이번 포스트에서는 조금 번거롭지만 네이버 지도에서 위경도 값을 얻는 방법을 소개하도록 하겠다.


※ 설명

먼저 위경도 값을 알고 싶은 곳을 검색한다. 검색을 할때는 필자처럼 상호명을 입력해도 되고 주소를 입력하여도 된다.


검색된 곳을 클릭하면 팝업 메뉴가 뜨는데 공유 버튼을 클릭한다.



그 다음 아래와 같이 URL 복사 버튼을 눌러 URL을 복사한다.


복사된 값을 메모장에 붙여 넣으면 URL 주소 속에 위도, 경도 값이 담겨있다. x가 경도 y가 위도다.




도를 도분이나 도분초로 변환 가능하며 반대로 도분초를 도나 도분, 도분을 도분초나 도로 변환 가능한 프로그램 입니다. 위경도를 입력 후 이동버튼으로 해당 좌표에 해당하는 곳으로 이동도 가능하며 지도는 구글맵을 이용했습니다.


도, 도분, 도분초 각 에디트에 값을 입력하면 자동으로 다른 값으로 변경됩니다.




C언어나 C++에서 사용할 수 있는 함수입니다. 두 지점의 위경도 값을 정해서 함수에 대입하면 Meter로 값을 반환합니다. km로 값을 받고 싶으면 dDistance*=1000; 부분 주석치면 됩니다.

double GetDistance( tagPT pt1, tagPT pt2 )
{
	int radius = 6371;

	double dLat = rad( (pt2.y-pt1.y) );
	double dLon = rad( (pt2.x-pt1.x) );
	
	pt1.y = rad( pt1.y );
	pt2.y = rad( pt2.y );

	double a = sin(dLat⁄2) * sin(dLat⁄2) + sin(dLon⁄2) * sin(dLon⁄2) * cos(pt1.y) * cos(pt2.y);
	double c = 2 * atan2f(sqrtf(a), sqrtf(1-a));
	double dDistance = radius * c;

	dDistance*=1000;

	return dDistance;
}



아래는 예제 입니다.

#include <stdio.h>
#include <math.h>

#define rad(x) x*3.14159⁄180.0

struct tagPT
{
	double x;
	double y;
	double z;
};

double GetDistance( tagPT pt1, tagPT pt2 );

int main()
{
	tagPT pt1;
	tagPT pt2;
	
	//한밭수목원 거리
	pt1.y = 36.364808;
	pt1.x = 127.379525;

	pt2.y = 36.364772;
	pt2.x = 127.390275;

	double dDis = GetDistance( pt1, pt2 );

	return 0;
}

double GetDistance( tagPT pt1, tagPT pt2 )
{
	int radius = 6371;

	double dLat = rad( (pt2.y-pt1.y) );
	double dLon = rad( (pt2.x-pt1.x) );
	
	pt1.y = rad( pt1.y );
	pt2.y = rad( pt2.y );

	double a = sin(dLat⁄2) * sin(dLat⁄2) + sin(dLon⁄2) * sin(dLon⁄2) * cos(pt1.y) * cos(pt2.y);
	double c = 2 * atan2f(sqrtf(a), sqrtf(1-a));
	double dDistance = radius * c;

	dDistance*=1000;

	return dDistance;
}


+ Recent posts