Garmin(가민) GPS의 경우, 래스터(이미지) 맵을 GPS 장치에서 사용하기 위한 방법은 두가지입니다. 첫번째는 Custom Maps(커스텀 맵)이며 두번째는 버즈아이 맵(BirdsEye Maps)입니다. 이 글에선 커스텀 맵 생성 작업을 설명 할 것입니다. Coustom은 구글어스의 포맷인 kmz를 사용합니다. 따라서 작업의 진행은 '래스터 지도 이미지 - 맵 매칭 - kmz 파일 생성'의 순서가 됩니다.
>글 업데이트
1. ITRF2000 설명 관련 추가(2012년 6월 28일)
2. Custom Maps와 JNX 비교 관련 추가(2012년 6월 28일)
3. 작업후기, 진북수정 불필요 부분 추가(2012년 7월 8일)
4. 지도의 저작권으로 인해 본문에 포함된 모든 지도 스크린샷은 모자이크 처리하였습니다.
5. 네이버 AIP 부분 내용 수정(2012년 8월 9일)
6. 네이버지도를 Daum API로 맵매칭 후기 - 네이버지도 API 부분에 첨가(2012년 8월 19일)
> Custom Maps(커스텀 맵)의 자세한 매뉴얼(사용설명서) 보기 -> http://gpser.tistory.com/10
> 본 글에 포함된 대부분의 이미지는 클릭 시, 확대된 원본 이미지를 볼 수 있습니다.
> 글의 분량이 많고 복잡해 보이는데요. 작업을 단 한번만 해 보시면 아주 간단한 작업이라고 판단하게 될 겁니다. 커스텀 맵의 A에서 Z까지 설명 하느라 글의 분량이 많을 따름입니다.
> 대부분의 포털 지도 서비스와 국토지리정보원에서 발행하는 지도, 그것을 원판으로 재편집 하여 발행한 공식적인 지도 등은 법적인 사용제한이 있습니다.
대부분의 지도 서비스 법적공지
■ 좌표 캘리브레이션(정조준)을 통한 맵 매칭의 한계
커스텀 맵의 맵 매칭(지도 좌표 매칭) 방법은 세가지가 있습니다. 첫번째로 구글어스를 실행 한 후 JPG 포맷으로 된 지도(래스터 이미지)를 오버레이(중첩)로 불러 와 좌표 조정 또는 이미지 스케일 조정을 통해 구글어스의 위성 이미지와 크기 및 위치를 매칭 시키는 방법입니다.
두번째로 글로벌 매퍼(Global Mapper) 또는 GTM(GPS Track Maker) 등의 프로그램에서 두개 이상의 지점(포인트)에 대한 좌표 캘리브레이션(정조준)을 통해 맵 매칭을 하는 겁니다.
세번째로 Geo-Tiff 등의 지리적 수치 좌표가 포함 된 래스터 이미지의 경우 자동 맵 매칭을 통해 바로 Custom Maps를 생성 시킬 수 있습니다. 이것은 수치 지도와 동일한 좌표 정확도를 가집니다.
지리적 수치 좌표가 포함 되지 않은 래스터 이미지 맵은 구글어스에서 육안에 의존한 맵 매칭을 하거나 글로벌 매퍼, GTM을 통한 좌표 캘리브레이션 역시 육안에 의존 할 수 밖에 없습니다. 특히 래스터 맵의 경우 정확한 좌표 포인트를 찍기 위해 확대를 하게 되면 해상도가 깨지는 단점이 있습니다. 따라서 오차가 생길 수 밖에 없습니다.
업무에 사용될 커스텀 맵은 지리적 좌표가 포함 된 JPG 또는 Geo-Tiff 래스터 이미지를 사용하여야 합니다. 다만 대략의 확인작업만 할 경우엔 육안에 의한 맵 매칭 작업도 상당히 유용할 수 있습니다. 물론 숙련도에 따라 육안으로도 비교적 정확한 맵 매칭이 가능합니다. 만약 1m의 오차도 용납되지 않는다 하면 수치좌표가 입력 된 래스터 이미지를 사용하여야 합니다.
■ Custom Maps 작업을 할 지도의 종류
좌표가 입력 된 래스터 맵
유료로 입수할 수 있는 지도의 경우 대부분 좌표가 입력 되어 있을 겁니다. 하지만 무료로 입수할 수 있는 지도의 경우 좌표가 입력되어 있지 않습니다. 수치 지적도나 수치 지형도의 경우 맵 매칭 작업이 필요 없습니다. 또는 정부 기관 내부의 지리정보 시스템의 경우에도 지도 화면 저장 시 래스터 이미지에 좌표가 입력되어 저장됩니다. 이것은 간단하게 kmz 포맷으로 변환 시켜 Garmin GPS에서 커스텀 맵으로 사용할 수 있습니다.
국토해양부에서 제공하는 국토환경성 평가지도(http://ecvam.kei.re.kr/moe/map/map.jsp)는 화면 저장 시 좌표가 입력 된 Tiff 포맷의 래스터 이미지를 다운로드 받을 수 있습니다. 다만, 오래된 종이지도의 스캔본입니다. 외부 캡쳐 프로그램을 사용해서는 안되며 지도 시스템에 있는 화면 저장 기능을 사용하여야 합니다.
|
좌표가 입력 되지 않은 래스터 맵
많은 종류의 이미지가 있을 것 같습니다. 인터넷에 공유되는 등산로 지도라든지, 정부 기관에서 무료로 배포하는 지도라든지, 도로지도라든지, 포털의 지도 서비스 캡쳐 이미지라든지 등등 많은 것들이 있을텐데요.
그 중에서 유용하게 사용할 수 있는 것이 네이버나 다음 커뮤니케이션 등의 위성, 항공사진 지도일 겁니다. 일부 GPS 커뮤니티에선 전국 단위의 무료 배포 지형도를 다운로드 받아 일일히 좌표 캘리브레이션을 통한 맵 매칭 작업을 하는데, 콜렉터(수집가)의 성향을 가진 매니아가 아니고서는 상당한 고충이 따르는 작업입니다. 차라리 돈 주고 디지털 지형도를 사는게 노력한 시간에 비해 저렴할 수 있습니다.
■ 좌표를 확인 할 수 있는 지도의 종류
좌표가 없는 래스터 이미지를 맵 매칭 하기 위해선 좌표를 확인할 수 있는 지도 또는 지도 서비스가 필요합니다. 좌표를 확인 할 수 있는 지도의 특정 지점을 래스터 이미지에서 동일 지점을 찾아 그곳에 좌표를 입력해 주는 작업을 해야 하며, 이것이 맵 매칭 작업입니다.
현재 일반에게 공개된 지도 서비스에서는 법률 제한으로 인해 특정 지점의 좌표를 알려주지 않습니다. 따라서 꼼수를 통해 좌표를 알아내야 하는데요. 하나의 도엽으로 이루어진 지형도의 경우 도엽명만 알면 도엽의 네군데 모서리 부분(도곽)의 좌표가 공개 되어 있기 때문에 그것을 기준으로 삼으면 됩니다.
다음 지도와 네이버 지도 서비스의 경우 API 서비스를 통해 비교적 만족스럽게 포인트의 좌표를 알아낼 수 있습니다.
이렇게 볼 때, 지형도를 맵매칭 할 경우 도곽의 좌표를 통해 맵 매칭을 하여야 하며, 네이버 지도는 네이버 지도의 좌표 확인 방법을 통해 맵 매칭을 하여야 하고 다음 지도의 경우 다음 API 서비스를 통해 좌표를 확인해 맵 매칭을 하여야 보다 더 정확한 맵 매칭을 할 수 있습니다. 쉽게 말해 동일한 지도 서비스를 이용하여야 한다는 것입니다. 구글어스에서 오버레이를 통해 커스텀 맵의 맵 매칭을 할 경우 위성 이미지를 오버레이 시켜야 하늗데 지형도를 오버레이 시킨다면 그 기준점을 찾기 힘든 이유와 같습니다.
■ 좌표 캘리브레이션 프로그램
좌표를 캘리브레이션(정조준)할 수 있는 프로그램은 글로벌 매퍼와 GTM 입니다. 이들 프로그램은 좌표 캘리브레이션을 통한 맵 매칭 후 kmz 파일로 만들어 줄 수 있으나 Custom Maps을 위한 kmz 파일을 만들기 위해선 글로벌 매퍼(Global Mapper)를 사용하여야 합니다. 이때 글로벌 매퍼는 정식버전이어야 합니다.
■ GPS 장치에서 커스텀 맵의 제한
GPS 장치에서 커스텀 맵의 해상도(크기) 및 갯수 제한이 있습니다. 이미지 하나의 용량은 1mb를 넘어서는 안됩니다. 또한 1024x1024의 해상도(크기)를 넘어서도 안됩니다. GPS 장치에 저장하는 이미지의 총 갯수는 오레곤의 경우 100개를 넘어서는 안되며 몬타나의 경우 500개를 넘어서는 안됩니다.
Custom Maps로 사용할 kmz 파일의 경우 1mb 이하의 이미지 한장이 포함된 하나의 kmz 파일이 만들어질 수 있고 1024x1024 해상도의 이미지가 2장 이상 포함된 하나의 kmz 파일이 만들어질 수도 있습니다. 이때 갯수 제한은 kmz 파일의 갯수가 아니라 kmz에 포함된 이미지의 갯수입니다.
■ Custom Maps 맵 만드는 작업
1.지도 구하기
GPS에서 사용할 지도를 구해야 합니다. 가장 유용한 것이 위성, 항공사진 지도일 것 같습니다. 이것을 GPS 맵의 베이스로 깔고 그 위에 벡터 지형도나 도로지도 등을 중첩 시키면 위치를 파악하는데 상당히 유용한 참고가 될 것입니다. 여기선 항공사진을 기반으로 하는 네이버 지도 보다는 항공사진을 기반으로 하는 다음지도를 이용해 보겠습니다. 다만, 항공사진 서비스가 위성사진 서비스 보다 업데이트가 느리다는 단점이 있습니다.
좌표 캘리브레이션을 통한 맵 매칭 작업은 좌표 소스를 얻는 경로만 다를 뿐 그외의 모든 작업은 동일하기 때문에 하나의 예만 들어도 열가지를 알 수 있습니다.
네이버 지도와 다음 지도는 온라인용으로만 사용하여야 하며, 인쇄물의 간행에 이용해서는 안됩니다. 또한 여러장을 캡쳐해서 붙이는 편집행위도 저작권에 위반됩니다. 따라서 다음지도와 네이버지도를 가공하여 GPS의 오프라인 사용의 경우 저작권 위반이 될 수 있습니다. 특히 캡쳐된 네이버, 다음 지도에 특정 좌표 또는 위치를 첨가하는 행위도 저작권 위반일 수 있습니다.
쉽게 말해서 네이버, 다음 지도 서비스를 그대로 이용하거나 오픈 API를 이용하는 것 이외에는 전부 불허라는 말이 되겠습니다. 아래의 내용은 이러한 저작권을 위반할 수 있는 행위이기에 사용상 절대적인 주의가 필요합니다. 아래의 온라인 지도 서비스 스크린 캡쳐 화면들 역시 전부 모자이크 처리를 하였습니다.
|
다음 지도 서비스에 들어갑니다.
원하는 지역으로 이동한 후 필요로 하는 범위나 레벨(확대/축소) 단계를 선택하여 외부 캡쳐 프로그램을 화면을 캡쳐하거나 메뉴의 지도-현재 화면 크기로 저장을 선택하여 화면을 저장합니다. 다음지도 서비스의 화면 저장기능을 이용할 경우 png 포맷으로 저장됩니다.
다음지도 API에서 항공사진을 바로 캡쳐하여 보다 더 정확한 맵 매칭을 할 수 있는 방법은 아래의 다음지도 API에서 다시 설명하겠습니다. 지금은 일반적인 다음지도 서비스에서의 화면 저장방법을 설명합니다.
만약 넓은 범위의 항공지도가 필요 한데 한 화면에 범위를 모두 담을 경우 해상도(품질)이 떨어질 겁니다. 이때 확대해서 원하는 범위를 전부 담을 수 있게 여러장을 캡쳐 합니다. 지도를 한 화면씩 이동해서 캡쳐 또는 화면 저장을 해야합니다. 보다 정확한 좌표 캘리브레이션을 위해선 선명한 품질의 이미지 즉, 최대한 확대된 이미지가 유리합니다.
여러장을 저장할 경우 각각의 저장 이미지에 대한 캘리브레이션을 해 주어야 하므로 귀찮은 일이 발생합니다. 따라서 그래픽 프로그램을 사용해 그 여러장의 저장 이미지를 한장으로 붙여야 합니다.
포토샵에서 두장의 이미지를 합치는 작업을 합니다. 두장 중 한장의 이미지의 투명도(Layer-Opacity)를 낮춥니다. 그리고 아래 이미지의 특정 지점에 마우스를 갖다 대고 위의 이미지의 동일 지점으로 이미지를 드래그하여 이동시킵니다. 정확하게 맞지 않는다면 화살표키를 이용해 미세조정을 합니다.
한장으로 합쳐진 이미지에 크롭툴(crop tool)을 이용해 깨끗한 사각형 이미지로 만듭니다. 작업을 마친 후 JPG로 저장을 합니다.
자, 이제 항공지도 이미지인 래스터 맵이 준비 되었습니다. 다음지도 서비스의 경우 필요에 따라 항공사진 이미지만 사용할 수도 있고 도로지도가 나타나는 이미지를 저장할 수도 있습니다.
주의할점은 이렇게 합쳐진 이미지의 크기가 너무 클 경우 GPS 장치에서 제한이 걸릴 수가 있습니다. 즉, 오레곤의 경우 1024x1024 크기(해상도)의 이미지가 100장을 넘을 수 없고 몬타나의 경우 500장을 넘을 수 없습니다. 예를들면 여러장의 이미지를 합친 한장의 이미지 크기(해상도)가 8500x7000 이었는데 Custom Maps를 만들 때 1024x1024 크기의 이미지 타일(조각) 99장이 포함된 kmz 파일이 생성되었습니다. 오레곤의 경우 100장 제한에서 1장의 여유밖에 없게 됩니다(주: 이 예가 정확한 기준은 아닙니다)
|
2. 다음지도 API에서 좌표 취득 및 화면 캡쳐 방법
준비한 다음지도 항공사진의 네군데 포인트(4점 캘리브레이션)에 대한 좌표값을 얻어야 합니다. 그 좌표값을 얻기 위해서는 다음지도 API 서비스를 이용해야 하늗데요. 이미 만들어진 API를 이용하면 됩니다.
다음지도 API에서 화면 캡쳐 및 좌표 취득방법
> 다음지도 좌표값 확인 API 다운로드 -> 다음지도 API.html
다음지도 API는 다음지도 서비스와 동일합니다. 다만 마우스 커서가 크로스 헤어(십자) 표시로 나타나며 클릭한 곳의 좌표를 확인할 수 있고 표시된 좌표를 복사(Ctrl+c) 할수도 있으며 축척도 나타납니다.
위의 화면을 보시면 알겠지만 캡쳐할 항공사진 이미지의 특정 지점에 대한 포인트를 미리 찍어 둘 수도 있고 좌표값이 나타난 풍선창을 포함하여 캡쳐할 수도 있습니다. 단 캡쳐할 하나의 화면에 하나의 좌표값 및 포인트만 표시된다는 단점이 있습니다. 만약 여러장을 캡쳐해야 할 경우 상당히 유용해질 수 있습니다. 다만 화면 저장 기능이 없어 외부 캡쳐 프로그램을 사용해 화면을 저장하여야 합니다.
|
이때 표시된 포인트 및 좌표값은 글로벌 매퍼에서 좌표 캘리브레이션을 할 때 따로 다음 API와 비교 확인 및 좌표값을 취득해야 하는 작업을 건너 뛸 수 있는 장점이 있습니다. 하지만 아래의 글로벌 매퍼작업에서는 다음API에서 좌표값 및 포인트를 을 표시하지 않고 화면 저장을 하였다는 가정하에 좌표 캘리브레이션 작업을 할 것입니다.
네이버 지도의 좌표 API 및 작업 후기
좌표를 알 수 있는 네이버 지도 API 입니다. http://flowmoon.cafe24.com/etc/gnu/map.php
사용방법은 아래의 다음 지도 캘리브레이션 작업과 유사하나 좌표가 X,Y좌표입니다. 글로벌 매퍼에서 X,Y 좌표를 넣어 캘리브레이션 작업을 할 수 있습니다.
네이버지도 API의 좌표체계는 Bessel KATECH(TM128) 체계를 사용하고 있습니다. 근데 글로벌매퍼에서 캘리브레이션 작업시 KATECH 좌표계 참조파일이 에러가 나더군요. 일단 포기하고 Daum 지도 API를 이용해 캘리브레이션 및 맵매칭을 해 보았습니다.
작업한 결과물인 KMZ 파일을 구글어스에 불러들여 오차 비교를 해 보았습니다. 다음지도 좌표로 맵매칭한 네이버지도와 구글어스의 오차는 7m~11m 정도 차이가 발생했습니다. 구글어스에서 GPS 트랙로그를 불러들인다면 상당한 오차가 발생합니다. 구글어스는 그것이 고의적인 좌표 오차이든 한국 좌표에 대한 기술적인 오차이든 간에 신뢰도가 떨어지는 건 사실입니다.
아래의 스크린샷은 맵매칭 한 네이버지도를 구글어스에서 오버레이 시키고 난 뒤 트랙로그(Garmin 60CSx)를 불러들인 화면입니다.
트랙로그는 길에서 거의 벗어나지 않습니다. 오차범위가 최대 3m를 벗어나지 않는 일치성을 보여주고 잇는데요. 트랙로그가 튄 부분(장시간 머물러 있어 하나의 포인트에 트랙로그가 밀집된 부분)은 실제 지리적 포인트와 완전히 일치할 정도입니다. 이렇게 볼 때 네이버지도를 다음지도 API를 통해 캘리브레이션 및 맵매칭을 할 경우에도 상당한 신뢰도가 있다고 여겨집니다.
위의 스크린샷은 몬타나650에 네이버지도(JNX 포맷)를 담아 지적도를 중첩시켜서 스크린샷을 저장했는데요. 이미지 크기가 5945x7513 이라는 비교적 큰 크기 입니다. 그럼에도 불구하고 글로벌 매퍼에서 4 포인트 캘리브레이션 작업만으로 어느 정도 신뢰할 수 있는 맵 매칭을 하였습니다. 수치지적도의 지적선(수치지도는 이미 좌표가 포함되어 있어 별도의 캘리브레이션 작업이 필요 없습니다)이 네이버지도의 위성사진의 범위에 상관 없이 신뢰할 수 있는 수준으로 일치하였습니다.
따라서 네이버지도의 캘리브레이션 및 맵 매칭 작업과정에서 네이버 API를 통한 KATECH 좌표체계를 어렵게 사용할 필요가 없이 Daum 지도 API를 통해 WGS84 좌표를 바로 입력해 주면 만족할만한 수준의 결과물을 얻을 수 있습니다. 네이버의 경우 지적도 서비스까지 하고 있으므로 지적도 중첩 화면을 스크린샷하여 맵 매칭 후 사용할 수도 있을 겁니다. 다만 주의할 점은 네이버도 다른 포털 및 웹사이트의 지도서비스 저작권과 마찬가지로 온라인 서비스가 아닌 캡쳐화면이나 오프라인에서 이용하는 것은 저작권에 위배되는 사항일 것 같습니다.
3. 글로벌 매퍼(Global Mapper)에서 맵 매칭 작업
글로벌 매퍼에 항공사진을 불러 오면 지리적 좌표를 확인할 수 없다는 메시지 창이 뜹니다. 이때 이미지를 'YES - 수동으로 조정하겠습니다'를 선택하여야 합니다.
'예(Y)'를 선택하시면 됩니다.
이제 이미지 조정창이 뜹니다. 좌표를 캘리브레이션(정조준) 하는 창인데요. 방법은 1~6번까지 진행하여야 하는데 좌표를 캘리브레이션 할 포인트가 네군데여야 정확한 맵 매칭이 되므로 1~4번까지를 총 4번 반복해 주어야 합니다.
1번: 이미지의 전체 화면이며 마우스를 드래그 하여 사각형 영역을 지정하 주면 영역 만큼 2번 화면에서 확대되어 표시됩니다. 2번의 확대된 지점이 전체 영역에서 어디에 위치하고 있는지를 1번에서 확인할 수 있습니다.
2번: 이미지를 확대시켜 어디에 좌표값을 입력할지에 대한 포인트를 찍는 화면입니다. 여기서도 마찬가지로 마우스 드래그로 사각형 영역을 지정하면 확대가 되고 마우스 휠을 이용해 확대/축소 시킬 수도 있습니다.
원하는 지점에 포인트를 찍으면 빨간색 점으로 나타나는데요. 그 지점에 대한 좌표값을 3번에 입력하여야 합니다. 이 좌표값은 다음 API에서 취득할 수 있습니다.
3번: Easting(x축)는 경도(동경) 값입니다. Northing(y축)는 위도(북위) 값입니다. 다음 API에 나타난 경위도 좌표값을 입력해 주면 됩니다.
4번: Add Point to List를 누르면 포인트가 등록됩니다. 포인트 등록 후 2번 화면에서 다시 포인트를 찍었을 때 이전 포인트는 등록된 상태를 유지합니다. 이렇게 총 4개의 포인트를 등록시켜야 합니다.
5번: 좌표체계를 지정해 주는 것인데요. WGS84를 선택하면 됩니다.
6번: OK를 선택하면 WGS84의 좌표체계를 가진 맵 매칭 된 항공사진 이미지가 글로벌 매퍼 화면에 나타납니다.
네군데 포인트 캘리브레이션 작업
다음 지도 API
보다 정확한 맵 매칭을 위해선 이미지의 최대한 각 모서리 부분의 좌표값을 취득해야 합니다. 그리고 좌표 포인트 역시 많으면 많을수록 유리하나 4포인트면 충분합니다.
GPS 관련 맵매칭에 대한 글들 중에 진북수정이나 이미지 회전 등에 대해서 들어 보셨을 겁니다. 그건 2 포인트 맵 매칭일 때 해 주어야 하는 작업입니다. 4 포인트 맵매칭에서는 자동으로 이미지가 회전되어 매칭 됩니다. 다만 글로벌 매퍼가 아닌 GPS Track Maker 무료 버전에서는 2 포인트 맵 매칭 밖에 되지 않기에 진북 수정이나 이미지 회전을 해 주어야 합니다.
|
다음 API와 글로벌 매퍼 이미지 조정 창을 같이 띄워서 캘리브레이션 작업을 하였습니다. 항공사진의 왼쪽 상단의 최대한 모서리 부분을 확대 한 후 좌표 포인트를 정확하게 비교하여 기준점으로 사용할 수 있는 부분에 포인트를 찍었습니다.
글로벌 매퍼에서 보이는 항공사진에서 지붕의 모서리 부분에 포인트를 찍었습니다. 그리고 다음 API에서 동일 지점의 지붕을 찾아서 확대해 똑 같은 위치에 포인트를 찍어 좌표값을 나타냈습니다.
다음 API에 나타난 좌표값을 마우스로 블록지정하여 복사(Ctrl+c) 한 후 글로벌 매퍼 창의 해당 부분에 붙여넣기(Ctrl+v) 하였습니다. 이후 Add Point to List를 눌러 '포인트 1'로 등록을 하였습니다.
만약 다음 API에서 미리 좌표가 될 포인트를 찍어서 캡쳐하고 좌표값은 메모장에 입력해 두거나, 좌표값이 나타난 풍선창을 포함해서 캡쳐를 하였다면 다음 API와 글로벌 매퍼 창을 번갈아 확인할 필요는 없을 겁니다. 그러나 한장의 이미지에 포인트 하나만 캡쳐할 수 있기에 유용하지 않으나, 만약 4장 이상의 화면을 캡쳐하였을 경우 이 4장의 이미지를 포토샵에서 한장으로 합친다면 4점의 포인트 및 좌표가 이미지에 입력되어 있는 결과가 됩니다. 이것은 어떤 방법이 유용하다라고 하기 보다는 작업을 보다 단순화 하기 위한 꼼수입니다.
|
네군데 포인트의 좌표값을 입력 했다면 위의 캡쳐 화면 처럼 순서대로 진행하면 됩니다. 마지막으로 Add Point List를 눌러 Point 4를 만든 후 Select Projection을 누르면 좌표계 설정창이 나타납니다. 이때 Load From File를 눌러 좌표계 참조 파일 중 경위도(wgs84)를 선택합니다. 그리고 열기를 선택합니다.
> 좌표계 참조 파일 다운로드 ->projection_090716.zip 좌표계 참조 파일은 따로 폴더를 만들어 압축을 풉니다. 폴더의 위치는 찾기 쉬운 곳에 저장합니다. 그리고 글로벌 매퍼에서 좌표계를 설정 할 때 간단한 선택만으로 좌표계를 입력할 수 있어서 유용합니다.
|
참고로 경상남도 3차원지리정보 시스템과 같은 정부기관 내부용(외부 유출 금지)으로 활용하는 항공지도의 경우 화면 저장을 할 때 지리적 좌표가 입력 된 래스터 이미지로 저장됩니다. 이때 tiff로 저장을 해야 하며 좌표 맵매칭을 할 필요가 없습니다. 글로벌 매퍼에서 KML/KMZ 변환 과정만을 거친다면 바로 GPS 장치에서 사용할 수 있습니다.
중요한 점은 좌표체계 선택시 ITRF2000 좌표체계를 선택하여야 한다는 것입니다. 좀 더 자세히 설명하자면 수치 좌표가 미리 입력된 래스터 이미지를 글로벌 매퍼에서 불러 올 때 좌표 캘리브레이션 화면이 뜨는게 아니라 어떤 좌표체계인지를 묻는 화면이 뜹니다. 이때 좌표계 참조 파일 중 경상남도 3차원 지리정보 시스템의 경우 PCS_ITRF2000_TM_OLD(동부원점)을 선택하여야 합니다. 해당 지역이 중부원점에 속한다고 할지라도 동부원점으로 불러와야 합니다.
이렇게 불러온 상태에서 다시 WGS84 좌표로 변환을 해 주어야 합니다. 좌표 변환은 글로벌 매퍼 Configuration-Projection 창을 연 후에 ITRF2000을 선택하는 것 처럼 경위도(wgs84) 참조 파일(위의 projection_090716.zip에 있음)을 선택하면 됩니다. GPS에서 사용할 맵은 WGS84 좌표체계 이외에는 사용할 수 없습니다. 또한 ITRF2000 좌표체계가 WGS84와 거의 동일하다고 하나 수미터의 오차가 있습니다. 꼭 WGS84로 변환한 후 KMZ를 만들거나 JNX를 만들어야 합니다. > ITRF2000 좌표계 참조 파일 다운로드 ->Custom CS.zip
|
이후 좌표계 설정창에서 확인을 누른 후 최종적으로 이미지 조정창(캘리브레이션 창)에서 OK를 누르면 글로벌 매퍼 창에 맴 매칭이 된 항공사진 이미지가 뜹니다.
이 작업이 처음 할 땐 복잡하고 어려워 보이지만 두세번 해 보면 아주 간단합니다.
네이버 지도 API
네이버 지도 API에서 X,Y 좌표값을 다음 지도 API를 사용하여 캘리브레이션을 할 때 처럼 X축, Y축 좌표 입력 칸에 넣어 주시면 됩니다.
4. Custom Maps(KMZ) 파일 생성 작업
이제 Garmin GPS에서 사용할 Custom Maps을 만들텐데요. Custom Maps는 kmz 포맷을 사용합니다. 따라서 글로벌 매퍼에서 kmz 포맷으로 변환을 하겠습니다.
File-Export Raster/Image Format를 선택합니다.
KML/KMZ를 선택합니다.
KML/KMZ 옵션 창이 뜨는데요. 여기서 중요한 부분은 두군데입니다. 첫번째, Export Image Format에서 반드시 JPG에 체크를 해야 합니다. Garmin GPS 장치에서 Custom Maps은 JPG만 인식을 하기 때문입니다.
두번째 Super Overlay Setup에 체크를 하여야 합니다. 애초에 화면을 캡쳐 또는 저장 할 때 해상도를 1024x1024 이하로 했다면 상관 없지만 이 보다 크다면 꼭 체크를 해야 합니다. 이 옵션은 이미지 사이즈가 1024x1024 보다 클 경우 자동으로 타일(조각)을 만들어서 이미지를 나누어 줍니다.
Cilck Here to Calculate Spacing in Other Units...옵션은 메뉴-Zoom To Scale을 통해 정한 해상도(스케일, 축척)를 Use Current Screen Pixel Size 버튼을 눌러 지정할 수 있는데요. 본 작업에서는 글로벌 매퍼에서의 자동 설정에 맞겨 두고 그냥 넘어가겠습니다.
다른 옵션은 그대로 두고 OK를 누릅니다.
다른 이름으로 저장을 하는데요. 한글을 사용해서는 안됩니다. 파일명을 영어 또는 숫자로만 하여야 합니다. 절대 한글이 포함되어서는 안됩니다. KML/KMZ 포맷 옵션에 UTF-8 선택 항목이 없기에 한글이 표현되지 않아 GPS 장치와 구글어스에서 사용할 시에 에러가 나타날 수 있습니다. 물론 파일명은 한글로 생성이 되겠지만 KMZ 파일 내부에 생성되는 맵 이름이 파일명을 따르기 때문에 한글지원이 되지 않아 외계어로 표현됨은 물론이려니와 이미지도 표현되지 못하는 오류가 발생합니다.
■ 작업 후기
1.구글어스에 띄우기
작업 결과물인 kmz 파일을 구글어스에 먼저 띄워 보았습니다.
하위에 위치한 구글어스의 지도와 맵 매칭 한 다음 지도가 겹치는 부분의 도로 등을 보면 약간의 차이가 납니다. 중요한 건 구글어스 위성이미지의 지리적 좌표와의 매칭 보다 다음지도를 맵 매칭한 이미지가 실제 지리적 좌표와 더 일치하며 GPS 트랙(gdb, gpx)도 구글어스 보다 맵 매칭한 다음지도와 더 일치하는 것을 보여주었습니다.
구글어스에서 최초에 캡쳐하여 포토샵에서 두장을 합친 상태의 원본 이미지 파일을 '이미지 오버레이'로 불러 보았습니다. 구글어스 이미지 오버레이에서 항공사진을 늘렸다 줄였다 그리고 이동을 시키면서 맵 매칭 된 항공사진과 위치, 크기를 일치 시켜 보았습니다. 이것은 기초적인 Custom Maps의 맵 매칭 방법입니다.
이미지 오버레이 맵의 경우 그리기 순서(Darw Oder, 객체순서)를 조정해 보았습니다. 그리기순서 1일 땐 맵 매칭한 항공사진의 하부에 위치했으며 2일 때 상부에 위치하는 것으로 보아, 글로벌 매퍼에서 작업한 맵 매칭 KMZ 이미지는 그리기 순서 1이 지정되어 있음을 알 수 있습니다. 이것은 다른 지도와 중첩 시켰을 때 또는 GPS 장치에서 여러개의 지도를 사용 가능 체크를 하였을 때 가장 하단에 위치한다는 것을 알 수 있습니다.
그리고 다음항공지도는 WGS84 좌표체계로 변환하게 되면 구글어스에서 확인할 수 있듯이 -0.4500도 만큼 오른쪽으로 기울게 됩니다.
2. 다른 종류의 래스터 이미지 지도 맵 매칭에 관하여
이미지로 된 지형도
래스터 이미지 지형도의 경우 도곽선을 포함하여 캡쳐 또는 다운로드 해야 합니다. 도곽 좌표 정보를 국토지리정보원 등에서 다운로드 받아 해당 도곽의 꼭지점 좌표를 글로벌 매퍼 등에서 캘리브레이션 해 주어야 합니다. 다른 방법으로는 GTM(GPS Track Maker)에서 도곽선을 미리 그려 놓은 gtm 파일이나 기타 파일을 참고하는 방법이 있습니다(시도해 볼 필요성도 없었지만 완전 노가다 같아서 테스트도 해 보지 않아 정확한 방법은 모르겠습니다)
구글어스 지도
구글어스 지도의 경우 모바일 아틀라스 크리에이터(Mobile Atlas Creator)에서 간단하게 구글어스 지도 이미지를 KMZ 포맷으로 만들 수 있습니다. 또한 다양한 Map Source가 있기 때문에 다른 공개 지도도 kmz 포맷으로 만드는 것이 가능합니다. Map Source에서 구글어스 또는 다른 지도 서비스를 선택한 후 지도화면에서 원하는 영역(범위)을 지정합니다. 저장 Format에서 Garmin Custom Maps(KMZ)를 선택하여 KMZ 포맷의 파일을 만들 수 있는데요. 공개맵이다 보니 좌표의 정확한 신뢰성은 부족합니다.
물론 국토지리정보원에서 제공하는 수치좌표도 오차는 있겠습니다만 무엇보다 중요한 건 공인된 기준이라는 것입니다. 이 기준만 확립이 되어 있다면 오차는 큰 의미가 없을 겁니다. 모든 사용자가 같은 오차를 가지고 있다면 그것을 바로 잡는 것 또한 쉬울테니까요.
등산 안내도
인터넷에 떠도는 종이 지형도를 스캔한 형식의 등산안내도의 경우 맵 매칭을 시도해 보지 않았지만 구글어스에서 바로 맵 매칭하는 방법이 유용할 것 같습니다. 등산 안내도에 노선이 그려져 있을 것이기에 해당 산의 GPS 트랙자료 일부를 인터넷 GPS 커뮤니티에서 다운로드 받아 구글어스에 띄우고 등산안내도 이미지에 있는 노선과 GPS 노선을 일치시킨다면 비교적 쉽게 맵 매칭을 할 수 있을 것 같습니다.
3. JNX 포맷으로 만들기
맵 매칭을 완료한 래스터 이미지는 글로벌 매퍼에서 Geo-Tiff로 만들어 Garmin GPS 버즈아이 서비스에서 사용하는 JNX 포맷으로 만들수도 있습니다. JNX 포맷의 경우 하나의 JNX 파일에 250,000개 정도의 타일조각을 넣을 수도 있고 이렇게 만들어진 JNX를 250까지 GPS 장치에 담을 수 있는 잇점이 있습니다. 또한 1024x1024 해상도 사이즈를 넘어서는 큰 해상도의 래스터 맵을 조각(타일) 내지 않고 한장으로 사용할 수 있는 잇점도 있습니다.
그러나 단점이 있는데요. 지리적 좌표(Geo Reference Coordinates) 정보가 입력된 래스터 이미지가 아니라면 엄청난 노가다에 직면할 수 있습니다. 사용할 수 있는 용량만큼 좌표 캘리브레이션과 맵 매칭 작업을 일일히 해주어야 한다는 것입니다. 따라서 일반적인 사용자의 JNX 활용 방법은 Custom Maps와 비슷합니다.
JNX에 250,000개 타일을 담기 위해선 인간의 힘으로는 안됩니다. 모바일 아틀라스 크리에이터를 통해 구글어스 맵을 자동으로 타일을 만들어 JNX 전용프로그램으로 변환을 해 주게 되는데요. 구글어스는 실제 지리적 좌표와 수미터 또는 수십미터의 오차가 발생하기에 오히려 수동으로 조정하는 Custom Maps가 더 유용해 질 수 있습니다.
JNX와 Custom Maps의 로딩속도 차이는 상당히 큽니다. Custom Maps에서 타일이 100개 정도 되는 맵은 JNX에서 Cells(또는 타일)이 많게는 1300개 정도 되는데요. 이렇게 타일(조각)의 수가 많아질수록 로딩속도는 빠르게 됩니다. 당연해 JNX가 로딩속도가 빠릅니다. 로딩속도는 거의 10배 정도 차이나구요. 영문판을 한글판으로 만든 GPS에서는 로딩속도가 20배 가까이 납니다(주관적인 견해) 그러나 이것은 해상도가 큰 래스터 이미지일 경우입니다. 9,000x9,000 해상도 사이즈 정도에서의 차이입니다. 해상도가 작은 래스터 이미지라면 Custom Maps도 로딩속도가 빠릅니다.
여기서 Custom Maps의 타일을 1024x1024 보다 작게 만들어서 타일의 수를 많게 하면 로딩속도가 빠르지 않겠냐고 반문하실 수 있는데요. GPS 장치에 들어갈 수 있는 타일의 수가 한정되어 있기 때문에 JNX의 로딩속도를 따라갈 수는 없습니다.
JNX와 Custom Maps는 장단점이 있으며, JNX 포맷을 사용하기 위해선 펌웨어를 해킹 패치하는 작업이 필요합니다.
JNX 설명 및 사용방법 보러가기 -> http://gpser.tistory.com/30
4. GPS 장치에서 확인하기
Custom Maps(KMZ) 파일은 GPS 외장 메모리 또는 내장 메모리의 Garmin\CustomMaps 폴더에 넣어야 합니다. 만약 KMZ 파일 내의 이미지가 오레곤에서 100장이 넘을 때, 몬타나에서 500장이 넘을 때 커스텀 맵이 너무 많아 실행할 수 없다는 메시지가 나옵니다. 이땐 이미지 갯수를 줄이거나 kmz 파일이 몇개 될 경우 kmz 파일 수를 줄여주어야 합니다.
스크린 캡쳐는 몬타나(Montana) 650에서 하였습니다. 줌레벨 80, 50, 30, 20m에서 캡쳐 했습니다. 근데 모자이크 처리를 해 버려서 위성사진이 뭉개져 버렸습니다. 어줍잖은 지식을 공유하다가 저작권 침해에 걸리면 낭패잖아요.
■ 작업 후기
래스터 이미지의 경우 아무리 정확하게 캘리브레이션 작업을 할려고 해도 이미지 확대시 라인이 깨져 버리는 특성 때문에 오차가 날 수 밖에 없는 것 같습니다. 수치좌표가 입력된 Tiff 항공사진과 GPS 트랙로그 그리고 맵매칭한 다음 지도를 비교 해 보니 다음지도의 경우 약 3m 정도의 오차가 발생하는 것 같습니다.
Tiff 항공사진에서 GPS 트랙로그를 중첩 시켰을 때 항공사진에 나타나는 임도를 트랙로그가 벗어나지 않습니다만 다음 지도를 중첩시켰을 때는 동일 지역의 임도를 트랙로그가 벗어납니다. 오차난 여러 부분의 거리를 재 보니 대부분 3m 정도였습니다. 물론 GPS의 오차도 있겠습니다만 수치좌표가 포함된 Tiff 항공사진에서는 너무 절묘하게 GPS 데이터가 맞아 떨어집니다.