상기 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 맵 업데이트 시스템은, 네트워크에 접속한 사용자 단말기에 업데이트된 맵 데이터를 제공하는 맵 업데이트 시스템으로서, 전체 맵을 사각형 형태의 고정 영역(메쉬)으로 나누어, 전체 맵의 정보를 메쉬별로 구분하여 저장하는 맵 데이터를 포함하는 맵 데이터 데이터베이스; 상기 맵 데이터의 버전 정보를 저장하는 맵 버전 정보 데이터베이스; 및 상기 사용자 단말기의 맵 버전 아이디를 해석하고, 저장된 메쉬 아이디별 버전 아이디와 비교하여, 업데이트할 메쉬 데이터를 취합한 부분맵 데이터를 생성하여 제공하는 업데이트 서버를 포함한다.
그리고 상기 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 맵 업데이트 방법은, 네트워크에 접속한 사용자 단말기에 업데이트된 맵 데이터를 제공하는 맵 업데이트 방법으로서, a) 상기 사용자 단말기로부터 업데이트 요청이 있은 때, 상기 사용자 단말기의 맵 버전 아이디를 해석하는 단계; b)전체 맵을 사각형 형태의 고정 영역(메쉬)으로 나누어, 전체 맵의 정보를 메쉬별로 구분하여 저장된 맵 데이터의 메쉬 아이디별 버전 아이디를, 상기 맵 버전 아이디와 비교하는 단계; c)비교 결과 업데이트할 메쉬 데이터만을 취합하여 부분 맵 데이터를 생성하는 단계; 및 d)생성된 부분 맵 데이터를 상기 사용자 단말기에 전송하는 단계를 포함한다.
또, 상기 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 저장매체는 상기 방법을 실행하는 프로그램을 기록한 저장매체이다.
또한, 상기 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 사용자 단말기는, 네트워크를 통해 맵 업데이트 시스템에 접속하여 업데이트된 맵 데이터를 전송받는 사용자 단말기로서, 상기 맵 업데이트 시스템과 통신하여, 애플리케이션 구동시 혹은 사용자의 요청이 있을 때 업데이트 요청을 전송하고, 맵 업데이트 시스템으로부터 업데이트된 맵 데이터를 전달받는 통신부; 전체 맵을 사각형 형태의 고정 영역(메쉬)으로 나누어, 전체 맵의 정보를 메쉬별로 구분하여 저장하는 맵 데이터를 포함하며, 맵 제작시 생성한 데이터 구성 레벨별로 폴더가 존재하여, 상기 맵 데이터는 각 폴더내에서 메모리 크기별로 구분되어 같은 데이터 크기를 갖는 메쉬별로 생성되는 파일 형태로 저장되는 맵 정보부; 및 상기 맵 업데이트 시스템으로부터 전송받은 업데이트된 맵 데이터를 이용하여 상기 맵 정보부에 저장된 전체 맵을 업데이트하는 데이터 처리부를 포함한다.
그리고 상기 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 기록매체 는, 네트워크를 통해 맵 업데이트 시스템에 접속하여 업데이트된 맵 데이터를 전송받는 사용자 단말기의 맵 업데이트 방법 프로그램을 기록한 저장매체로서, 상기 맵 업데이트 시스템과 통신하여, 애플리케이션 구동시 혹은 사용자의 요청이 있을 때 업데이트 요청을 전송하고, 맵 업데이트 시스템으로부터 업데이트된 맵 데이터를 전달받는 기능; 및 상기 맵 업데이트 시스템으로부터 전송받은 업데이트된 맵 데이터를 이용하여 상기 맵 정보부에 저장된 전체 맵을 업데이트하는 기능을 포함하며, 상기 맵 데이터는 전체 맵을 사각형 형태의 고정 영역(메쉬)으로 나누어, 전체 맵의 정보를 메쉬별로 구분하여 저장하며, 맵 제작시 생성한 데이터 구성 레벨별로 폴더가 존재하여, 상기 맵 데이터는 각 폴더내에서 메모리 크기별로 구분되어 같은 데이터 크기를 갖는 메쉬별로 생성되는 파일 형태로 저장되는 프로그램을 기록한 저장매체이다.
이상 첨부도면을 참조하여 본 발명을 상세히 설명한다.
그리고, 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한 본 명세서에서 기재한 모듈(MODULE)이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합을 의미할 수 있다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 맵 업데이트 시스템은, 무선 네트워크를 통해 사용자 단말기(100)와 연결되어 사용자 요청이 있을 때, 혹은 사용자 단말기내의 애플리케이션 프로그램이 구동될 때 맵 업데이트 데이터를 전송할 수 있다.
보다 구체적으로, 맵 업데이트 시스템은, 업데이트 서버(200), 맵 데이터 데이터베이스(300) 및 맵 버전 정보 데이터베이스(400)를 포함할 수 있다.
맵 데이터 데이터베이스(300)는 사용자 단말기(100)에 제공될 맵 데이터를 저장하고 있다. 이 때, 맵 데이터란 맵을 구성하는 데이터로서, 배경맵 데이터와 텍스트 데이터를 포함할 수 있다. 배경맵 데이터란 하천, 건물, 도로모양, 공원 등을 표출하는 맵을 의미하며, 텍스트 데이터란 배경맵에 표출되는 도로번호, 건물명, 하천명과 같은 명칭 데이터를 의미할 수 있다.
맵 데이터는 데이터의 읽기 및 찾기 속도 향상을 위해 사각형 형태의 고정영역(이하 메쉬라고도 한다)별로 구분되어 저장되며, 자세한 내용은 후술한다.
맵 버전 정보 데이타베이스(400)는 맵 데이터의 버전 정보를 저장하고 있으며, 요청시 현재 사용자 단말기(100)에 저장된 맵 데이터의 버전 정보를 제공할 수 있다.
업데이트 서버(200)는 사용자 단말기(100)의 애플리케이션 프로그램 구동시 혹은 사용자 요청이 있을 때, 무선 통신망을 이용하여 사용자 단말기(100)에 업데이트된 맵 데이터를 제공할 수 있다.
업데이트 서버(200)는 사용자 단말기(100)로부터 사용자 단말기(100)의 맵 버전 정보를 제공받은 때, 제공받은 사용자 단말기(100)의 맵 버전을 이용하여 단말이 필요한 맵을 검색하여 사용자 단말기(100)에 제공할 수 있다.
이 때 업데이트 서버(200)는 메쉬별로 구분된 맵 데이터 중 사용자 단말기(100)의 맵 업데이트를 위한 일부만을 제공할 수 있으며, 업데이트를 요청한 사용자 단말기(100)의 맵 버전 이후 버전의 맵 데이터를 사용자 단말기(100)에 제공할 수 있다.
사용자 단말기(100)는 무선 통신을 할 수 있는 통신 모듈을 포함하거나, 외부 통신 장치와 연결할 수 있는 연결 포트 등을 포함하여, 무선 네트워크를 통해 맵 업데이트 시스템에 접속할 수 있다.
그리고 사용자 단말기(100)는 읽기 및 쓰기가 가능한 저장장치를 포함하여 맵 업데이트 시스템으로부터 전달받은 맵데이터를 저장하며, 이 때 폴더 구조로 저장하여 데이터 저장 및 업데이트시의 효율을 높일 수 있다.
사용자 단말기(100)에서의 맵 데이터 저장 구조 및 데이터 관리에 대한 상세한 내용은 이하 후술한다.
도 2는 본 발명의 실시에에 따른 맵데이터의 메쉬 구조를 설명한 그림이다.
상술한 바와 같이,본 발명의 실시예에 따른 맵 데이터는 전체 맵 영역의 정보가 사각형 형태의 고정영역(이하 메쉬라고도 한다)별로 구분되어 저장될 수 있으며, 그 결과 데이터의 읽기 및 위치 찾기 속도를 높일 수 있다.
이 때 메쉬의 크기는 속도 향상과 메모리 장치의 물리적 구조에 따라 변경될 수 있으며, 또한 각 메쉬는 위계 구조를 갖고 2개 이상의 위계를 가질 수 있다.
예를 들어 도시된 바와 같이, 메쉬는 전체 4개의 레벨로 이루어진 위계 구조를 가질 수 있으며, 레벨 4는 도단위의 지도 정보, 레벨 3은 시,군단위의 지도 정보를 포함할 수 있으며, 레벨 2 및 레벨 1은 읍, 면, 구, 동 단위의 지역 정보를 포함할 수 있다.
도 3은 본 발명의 실시예에 따른 사용자 단말기(100)의 상세 구성도로서, 사용자 단말기(100)는 통신부(110), 데이터 처리부(120) 및 맵 정보부(130)를 포함할 수 있다.
통신부(110)는 무선 통신망을 이용한 맵 업데이트 시스템과의 통신을 담당하여, 사용자 단말기(100)의 애플리케이션 구동시 혹은 사용자의 요청이 있을 때, 업데이트 요청을 전송하고, 맵 업데이트 시스템으로부터 업데이트된 맵 데이터를 전달받는다.
맵 정보부(130)는 맵 관리자(131) 및 맵 데이터부(133)를 포함하며, 맵 관리자(131)는 사용자 단말기(100)의 맵 데이터 전체를 관리하기 위한 맵 관리 인덱스 파일을 포함할 수 있다.
맵 관리자(131)는 맵 버전, 레벨 개수 레벨별 메쉬 개수, 레벨별 메쉬 크기, 메쉬별 파일 정보, 메쉬별 파일내에 저장된 데이터 관련 정보를 포함하여, 맵 데이터를 관리할 수 있다.
맵 데이터부(133)는 맵 데이터를 포함하며, 맵 데이터부(133)에는 맵 제작시 생성한 데이터 구성 레벨별로 폴더가 존재할 수 있다. 이 때 맵 데이터는 각 폴더 내에서 메모리 크기별로 구분되어 생성될 수 있다.
즉 맵 데이터부(133)는 메쉬별로 데이터 크기를 구분하여, 같은 데이터 크기를 갖는 메쉬들을 하나의 파일로 묶은 맵 데이터를 포함할 수 있다.
데이터 처리부(120)는 사용자 단말기(100)의 애플리케이션 구동시 혹은 사용자 요청시 단말 앱 업데이트를 요청할 수 있고, 맵 업데이트 시스템으로부터 전송받은 맵 데이터를 이용하여 맵 정보부(130)에 저장된 맵 데이터를 업데이트 할 수 있다.
데이터 처리부(120)는 맵 업데이트 시스템으로부터 전송받은 부분 맵 데이터를 저장하고, 다운로드 완료 후 전송받은 업데이트된 부분 맵 데이터를 이용하여 맵 정보부(130)에 저장된 전체 맵을 업데이트 할 수 있다. 그리고, 데이터 처리부(120)는 전체 맵 업데이트 작업 완료 후 맵 정보부(130)의 맵 관리 인덱스 파일의 마스터 인덱스를 수정하여, 사용자 단말기(100)의 맵 버전 정보를 업데이트 할 수 있다.
즉, 도 4에 도시된 바와 같이, 데이터 처리부(120)는 통신부(110)를 이용하여 맵 업데이트 시스템에 사용자 단말기(100)의 맵 버전 업데이트 요청을 전송할 수 있다.
맵 업데이트 시스템은 사용자 단말기(100)로부터 전송받은 단말의 맵 버전 정보를 이용하여, 업데이트 된 맵 데이터가 존재하는지 확인할 수 있다.
이 때, 각 업데이트는 맵 고유의 버전 정보를 통해 구별되며, 맵 버전정보 데이터베이스(400)는 각 업데이트 버전 정보를 포함하여, 업데이트 요청 시점에 상 관없이 모든 업데이트 맵은 제공될 수 있다.
데이터 처리부(120)는 맵 업데이트 시스템으로부터 업데이트된 부분 맵을 전송받아 다운로드 완료후 저장할 수 있다.
데이터 처리부(120)는 다운로드 작업 완료 후, 맵 관리자(131)의 마스터 인덱스를 수정하고, 다운로드 받은 부분 맵 데이터를 기존에 저장된 전체 맵 데이터에 추가 혹은 변경 적용하여, 새로운 버전의 전체 맵 데이터를 생성할 수 있다.
도 5는 본 발명의 실시예에 따른 사용자 단말기(100) 내에서의 맵 정보부(130)에 저장된 맵 데이터 저장구조를 설명한 그림이다.
도시된 바와 같이, 맵 정보부(130)는 맵 데이터를 폴더 형태로 저장하고 있으며, 보다 구체적으로, 맵 데이터 폴더 아래 단말 맵 데이터 전체를 관리하는 맵 관리 인덱스 파일(MapMng.Dat)이 존재하고, 또한 단말 맵 제작시 생성한 데이트 구성 레벨별로 폴더가 존재할 수 있다.
각 폴더내에는 메모리 크기 구분에 따라 생성된 파일들이 존재하는데, 즉 각 메쉬별로 데이터 크기를 구분하여 동일한 데이터 크기를 갖는 메쉬들의 데이터를 하나의 파일로 묶어 저장할 수 있다.
도시된 바와 같이 폴더 1, 폴더 2, 폴더 3 및 폴더 4는 각각 레벨 1 내지 레벨 4의 메쉬들이 데이터를 저장하고 있으며, 이 때 1.dat, 2.dat, 3.dat......n.dat는 각 레벨에 속하면서(레벨 1 내지 레벨 4) 각각 `1k, 2k, 3k,......nk 사이즈를 갖는 메쉬들의 맵 데이터를 하나로 묶은 파일을 가리킬 수 있다.
즉, 사용자 단말기(100)의 데이터 처리부(120)는 맵 데이터의 메쉬별 데이터 사이즈에 대한 분포를 확인하고, 데이터 사이즈를 n개로 분류하여 해당 크기별로 데이터를 블록 단위로 저장할 수 있다. 이 때 업데이트를 위한 공간 확보가 필요한데, 각 파일별로 빈 데이터 블록을(예를 들어 10개 정도) 생성하여 활용할 수 있으며, 향후 업데이트 빈도 및 성능에 최적화하여 블록 수를 결정할 수 있다.
도 6 및 도 7은 본 발명의 실시예에 다른 단말 맵 데이터 포맷을 설명한 그림이다.
도 6에 도시된 바와 같이, 맵 관리 파일은 헤더와 바디를 포함할 수 있고, 이 때 헤더는 맵 버전, 레벨의 개수, 레벨별 메쉬의 개수, 레벨별 메쉬의 크기 등을 저장할 수 있다. 그리고 바디는 메쉬별 파일에 대한 정보, 메쉬별 파일내에 저장된 데이터 관련 정보를 포함할 수 있다.
맵 관리 파일은 마스터 인덱스 헤더 정보로 맵 버전, 맵 데이터가 저장된 파일의 데이터 사이즈 간격(Logical Mesh Size Gap), 데이터를 저장할 수 있는 데이터 블록 개수(Mesh Map Count), 데이터 시작 메쉬의 X, Y 값(Min Index Column, Min Index Row), 업데이트할 메쉬의 X,Y값(Index Column Count(X), Index Column Count(Y)) 정보를 저장할 수 있다.
또한 맵 관리 파일은 메쉬 간격 정보(Mesh Gap Information, Mesh Count)로서, 메쉬 분포도 파일을 저장하고 있는 파일 이름 인덱스, 메쉬 데이터 사이즈의 시작, 끝범위(Start Size, End Size), 메쉬 데이터 저장 파일명(File Name) 정보를 저장할 수 있다.
그리고 맵 관리 파일은 메쉬 저장 위치 정보(Mesh Info.)로서 저장될 데이터 파일명(Sizing Mesh Index), 저장할 데이터 위치 정보(Mesh Offset)정보를 저장할 수 있꼬, 메쉬 사용 정보(Mesh Using Info.)로서 전체 메쉬 개수(Total Count), 사용하지 않는 메쉬 블록 개수 및 위치값(Empty Count, Empty Index) 정보를 저장할 수 있다.
한편, 맵 데이터 파일은 레벨별 맵 폴더 아래 데이터 블록 사이즈별로 머지된 맵 파일로 존재하는데, 데이터 처리부(120)는 업데이트시 다운로드 된 메쉬 아이디를 기초로, 맵 관리 파일에서 이번 버전의 해당 맵 데이터의 데이터 블록을 디스에이블(DISABLE) 상태로 하고, 다운로드 된 업데이트 파일은 해당 파일 끝의 데이터 블록에 첨가(ADD)할 수 있다.
이 때 예를 들어, 디스에이블(DISABLE) 상태의 데이터 블록이 10개가 되면, 11번째부터 첨가되는 데이터는 첫번째 디스에이블(DISABLE)상태의 데이터 블록에 카피하는 방식으로 업데이트를 할 수 있다.
도 7은 본 발명의 실시예에 따른 맵 데이터 파일의 데이터 포맷이다. 맵 데이터 파일은 헤더와 바디부분을 포함하며, 헤더부분에는 파일 타입이 바디부분에는 맵 데이터의 메쉬관련 정보, 레이어 관련 정보, 데이터 레코드 정보를 포함할 수 있다.
보다 구체적으로, 맵 데이터 파일이 배경 데이터 파일인 경우 데이터 헤더 항목으로 데이터 사용유무, 메쉬 공간 크기 및 메쉬위치 정보를 포함할 수 있고, 공간정보 헤더 항목으로 레이어 개수 및 레이어별 정보를 포함할 수 있다.
또한, 레이어 정보로서 레이어 아이디, 데이터 영역 값, 데이터 레코드 개수 및 데이터 저장 시작 위치정보를 포함할 수 있고, 데이터 레코드 정보로서 레코드 영역값, 레코드별 파트개수, 레코드 버텍스 개수, 파트 상세정보, 버텍스 좌표값 정보를 포함할 수 있다.
그리고, 맵 데이터 파일이 텍스트 데이터 파일인 경우 데이터 헤더 항목으로 데이터 사용유무, 메쉬 공간 크기 및 메쉬 위치를 포함할 수 있고, 텍스트 데이터 항목으로 레코드 개수 정보를, 데이터 레코드 정보로서 텍스트 개체 아이디와 타입, 이미지 파일 아이디, 텍스트 정보를 포함할 수 있다.
이하 도 8을 참조하여 본 발명의 실시예에 따른 맵 업데이트 방법을 설명한다.
우선 사용자 단말기(100)는 애플리케이션 구동시 사용자 요청이 있을 때, 무선 통신망에 접속하여 업데이트 요청을 할 수 있다(S100). 이 때, 사용자 단말기(100)는 저장된 맵을 부분 업데이트 하기 위해, 맵 버전 정보(맵 버전 아이디)를 맵 업데이트 시스템에 전송할 수 있다(S101).
업데이트 서버(200)는 전송받은 단말의 맵 버전 정보를 기초로 맵 버전 정보 데이터베이스(400)로부터 현재의 맵 버전 정보를 검색하여, 새로운 업데이트된 맵 버전의 존재 여부를 확인할 수 있다(S103).
이 때, 새로운 맵 버전이 존재하고, 사용자로부터 업데이트 요청이 있을 때(S107), 업데이트 서버(200)는 맵 데이터 데이터베이스(300)로부터 업데이트된 부분 맵 정보를 추출하여 사용자 단말기(100)에 제공할 수 있다(S109).
보다 구체적으로, 업데이트 서버로부터 제공되는 업데이트 맵은 메쉬로 나뉘어져 있으며, 업데이트된 일부분만 제공될 수 있다. 이 때 각 업데이트는 맵 고유의 버전 정보를 통해 구별되는데, 맵 데이터 데이터베이스(300)는 각 업데이트 버전의 이력 정보를 포함하여, 업데이트 요청 시점에 상관없이 모든 업데이트 맵을 사용자 단말기(100)에 제공될 수 있도록 한다.
업데이트 서버(200)는 단말의 맵 버전 정보를 이용하여 단말이 필요한 맵을 검색할 수 있으며, 단말의 맵 버전 이후 변경된 맵 데이터만을 추출하여 제공할 수 있다. 이 때, 부분 맵 업데이트는 지역, 레벨, 메쉬별로 수행될 수 있고, 부분 맵은 버전별로 관리될 수 있다.
맵데이터 데이터베이스(300)에는 원본 맵 데이터, 데이터 변환 환경 설정 파일 및 변경 이력 정보 파일이 저장될 수 있고, 변경이력에 의해 생성된 맵 정보가 저장될 수 있다. 이 때, 원본 맵 데이터는 데이트 변환 환경 설정 파일에 의해 전국 전 레벨의 전체 맵 데이터로 변환되어 저장될 수 있고, 변경 이력 정보 파일에 의해 각 레벨별 메쉬 아이디에 해당하는 맵 데이터가 생성되어 저장될 수 있다.
업데이트 서버(200)는 변경이력에 의해 생성된 부분 맵 파일을 로딩하고, 데이터 로딩시 데이터의 헤더를 해석하여 각 레벨별 또 각 메쉬별로 파일을 생성하여, 업데이트된 맵 데이터를 메쉬 아이디별로 저장하고, 사용자 단말기(100)에 제공할 수 있다. 추가적으로, 업데이트 서버(200)는 지역별 해당 메쉬 아이디도 관리하여, 단말에서 지역별 맵 업데이트 요청을 할 경우에도 해당 부분 맵 데이터를 제공할 수도 있다.
따라서, 업데이트 서버(200)는 사용자 단말기(100)의 맵 버전 아이디를 해석하고 저장된 메쉬 아이디별 버전 아이디와 비교하여 업데이트할 메쉬 데이터를 취합한 부분맵 데이터를 제공할 수 있다.
이 때, 업데이트 서버(200)는 취합된 데이터의 데이터 사이즈 및 사용자 단말기(100)와 연결된 망의 상황을 이용하여 다운로드 시간을 예측할 수 있고, 사용자 단말기(100)에 대해 예측 시간 정보를 제공할 수도 있다.
사용자 단말기(100)는 부분 맵 데이터 다운로드 완료 후, 다운로드 된 부분 맵 데이터의 버전 아이디(버전 정보) 및 메쉬 아이디를 이용하여, 해당 메쉬 아이디가 저장된 폴더 내 파일을 오픈할 수 있다. 이 때, 다운로드 된 메쉬 아이디에 해당하는 데이터 블록은 디스에이블 상태로 하고, 그리고 오픈한 파일의 빈 데이터 블록에 해당 데이터를 첨가(ADD)할 수 있다. 따라서, 기존의 전체 맵 데이터와 다운로드 받은 부분 맵 데이터를 이용하여 전체 맵 데이터를 업데이트 할 수 있다(S113).
사용자 단말기(100)는 전체 맵 업데이트 작업 완료후, 단말의 맵 버전 정보를 변경하여 전체 맵 업데이트 작업은 종료된다(S115).
이상 설명한 바는 본 발명의 실시예에 불과한 것으로, 본 발명의 권리범위가 이에 한정되는 것은 아니며, 당업자에 있어 자명한 사항에 대하여 다양한 변형 실시가 가능하다. 예를 들어, 본 발명의 실시예에 다른 맵 업데이트 시스템을 구성하는 서버 및 데이터베이스들을 그 기능에 따라 추가적으로 구성되거나 병합 구성될 수도 있다. 본 발명의 권리범위는 후술한 특허청구범위 기재사항 및 이와 균등 사 항으로 인정되는 모든 기술요소를 포함할 것이다.