본문 바로가기

웹 개발/jVectorMap

코드명이 한글인 Shape 파일을 SVG로 변환할 시 인코딩이 안되는 문제.....


Shape 형식의 맵을 jVectorMap으로 변환할 경우 생겼던 문제점과 해결법을 정리해보면..

1. jvm 기본 컨버터를 이용해서 변환할 경우 구멍이 숭숭 뚫리는 경우가 발생한다.
2. 이를 방지하고자 QGIS 프로그램을 이용하여 SHP -> SVG로 변환하여 홈페이지에서 스크립트를 생성하였다.
3. QGIS SVG 플러그인은 SHP 파일의 속성을 SVG로 변환하지 못하기 때문에 id와 title이 id0, name0 이렇게 나오는 문제가
발생.
4. 누군가가 id와 name을 입력하겠지 했지만 다른 사이트를 찾아 이를 해결..
5. http://indiemapper.com/app/ 에서 shp -> svg 를 보다 깔끔하고 속성까지 같이 SVG로 변환해 준다.
   -> 관련글 http://www.yeory.com/275
6. 변환된 SVG를 홈페이지에서 스크립트로 생성하니 id와 name 모두 제대로 표시가 된다.
7. 영문 표기된 각 도시와 구/군 이름은 누군가 한글로 바꾸겠지 하고 패스

이로써 지도에 관련된 개발/변환 작업은 모두 끝이리라 생각했지만... 발주처인 기상청은 甲 이었다.

세종시까지 표현된.. 그리고 시/구/군명이 한글인 Shape 파일을 내게 넘기었다.

Shape 파일을 위 방식대로 변환을 시도하니 (5)의 사이트에서 한글이 깨져버린다.
외쿡 사이트여서 한글 지원이 안되나보다.... 
시간이 없다.. 그래서 아래 방법대로 복잡하지만 변환에 성공하였다... 

1. QGIS 에서 플러그인을 이용하여 한글 속성 지우기

   SVG에 속성을 포함시키는 변환법은 indiemapper 사이트를 이용하는 수 밖에 없는데 한글이 안되므로.. 빼야한다.. 
 QGIS의 플러그인을 이용하여 제거할 수 있다. ( Plug-in : Table Manager)
 


한글 속성인 SIGUNGU_NM을 선택하고 우측의 Delete를 눌러서 지운다.

아래 Save를 눌러 저장을 하고 백업을 묻는 대화상자가 나타날 경우 꼭 Yes를 누르자..
(나중에 엑셀에서 데이터 추출할때 필요하다. )


저장이 되었다면 지도를 SHP로 다시 저장한다. (한글 속성을 제외했으므로)

< 레이어 창에서 우클릭  >

< 탐색을 눌러 이름을 지정하고 아래 OK를 눌러 저장한다. >

 

 
2. 내가 표시하고자 하는 사이즈에 지도를 맞추어주기.
   http://indiemapper.com/app/ 에서 (1)에서 작업한 shp 파일을 불러와 작업을 해야한다.
   

페이지를 누르게 되면 지도 크기를 조절할 수 있는데
크기를 조절 한후 왼쪽 상단의 지구본 모양을 누르면 자동으로 지도가 맞춰진다.

그리고 레이아웃 창에서 꼭 격자를 해제하여 나타나지 않도록 해준다.

지도 크기에 그려진 맵을 맞추었으면 export를 눌러 지도 사이즈와 옵션을 확인한다.

 


SVG 파일 이름을 지정하고 생성 -> 다운로드


3. 변환한 SVG 파일을 열어 상위, 하위 g 태그를 지워야 한다. (그리드 및 페이지 테두리 태그임)

 파일 내용 중 빨간색 박스의 태그는 삭제.. 

 
4. 엑셀에서 백업한 dbf 파일 작업하기

QGIS에서 백업한 DBF 파일을 읽어들여 1 행을 삭제한다.
(아래에선 SIGUN ~~ ) 

 

삭제한 후 파일-> 다른이름으로 저장 -> 텍스트 (탭으로 구분) 형식으로 저장.

5. SVG 파일과 텍스트 파일을 자바에서 읽어들여 SIGUNGU_NM을 SVG의 각 path 속성으로 추가하기.
   -> Web에서 가능하게 제작중...

6. 변환이 완료된 SVG 파일을 에디터로 열어 복사한 후 jvm 사이트에서 스크립트로 생성해준다.    



 
 위 작업을 알아내기까지 정말 삽질의 연속이었다.

능력이 미천하여 indiemapper 사이트처럼 만들지도 못하니 복잡하게 해야지..

한글 속성을 가진 Shape 파일을 jVectorMap으로 만들기 위해선 어쩔 수 없는 듯하다...

위 시군구를 표시한 지도는 아래 링크에 결과가 있다.

http://www.yeory.com/274