본문 바로가기

웹 개발/jVectorMap

jVectorMap - Map Converting for Ubuntu

OS : Ubuntu 12.0.4

jVectorMap을 개발자 버전으로 다운로드 하게 되면 convert.py 파일이 존재한다.

이 파일을 이용해서 shp 파일을 jVectorMap에서 사용가능하게끔 변환이 가능한데 이를 해야만 했었다......

우선 Ubuntu에 Python2.7.5를 설치해야 하는데 아래 의존성 관계를 먼저 해결해 주었어야 했다.
sudo apt-get install build-essential
sudo apt-get install libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev 
이후 home 디렉토리에 Python 2.7.5 를 wget으로 다운로드 받고 
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz
압축 풀고 인스톨
tar -xvf Python-2.7.5.tgz 
cd Python-2.7.5/
./configure
make
sudo make altinstall  

jVectorMap에서 사용하는 converter.py는 아래 두 개의 패키지가 추가로 필요하다.

삽질 시작.. 

 Shapely의 간편 설치를 위해 pip를 설치한다.

sudo apt-get install python-pip

pip install Shapely  

GDAL은 easy_install 을 사용한다.
sudo easy_install GDAL 
에러난다.. 아...
GDAL이 easy_install로 설치가 안된다. easy_install은 wget으로 파일을 받아와서 작업을 하는 방식이기에 wget으로도 안된다.
 
결국 아래 방법으로.. 진행

sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable sudo apt-get update sudo apt-get install gdal


안된다..... 레파지토리가 깨진듯하다..  방법이 없는건 아닌듯하다..

svn checkout https://svn.osgeo.org/gdal/trunk/gdal gdal ./configure sudo make install 

설치가 된다.. 근데 엄청 오래 걸린다........ 백그라운드로 실행 안한걸 후회할 정도로... 30분정도..

이렇게 설치하면 계정 Path에 설정해 주어야 하는데..

echo " " >> $HOME/.bashrc echo "# GDAL environment variables" >> $HOME/.bashrc echo "export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> $HOME/.bashrc source $HOME/.bashrc

gdal 설치하다가 시간 다 보낸듯..
맵 파일 넣고 convert를 해보니..

Traceback (most recent call last): File "converter.py", line 10, in <module> from osgeo import ogr ImportError: No module named osgeo

이런 에러 나온다...
찾아보니..
http://gis.stackexchange.com/questions/64398/importing-osgeo-module-in-ubuntu-10-04
다시 gdal... configure 부터...

./configure --with-python sudo make install 



이상 여기까지 삽질.... 2시간..

sudo apt-get install python-gdal sudo apt-get install python-shapely 


위 두개면 설치 된다.... 아..
설치 다 했으니 아래 처럼 실행을 하면...

python ../converter.py \ --width 1000 \ --country_name_index 7 \ --country_code_index 8 \ --where "ISO = 'KOR'" \ --input_file_encoding 'UTF-8' \ --name datag_korea \ --language en \ KOR_adm2.shp \ jquery-jvectormap-data-korea-aea-en.js


이런 에러가 나는데..

ERROR 6: Unable to load PROJ.4 library (libproj.so), creation of OGRCoordinateTransformation failed.


아래 처럼 설치해주고..

sudo apt-get install python-pyproj


확인도 해주어야 하고..

/sbin/ldconfig -p | grep proj libproj.so.0 (libc6,x86-64) => /usr/lib/libproj.so.0 

 심링크도 잡아 주어야 한다....

sudo ln -s /usr/lib/libproj.so.0 /usr/lib/libproj.so


확실하게 이것도 설치하자..

sudo apt-get install python-anyjson

 다시.. 실행하자....  

python ../converter.py \ --width 1000 \ --country_name_index 7 \ --country_code_index 8 \ --where "ISO = 'KOR'" \ --input_file_encoding 'UTF-8' \ --name datag_korea \ --language en \ KOR_adm2.shp \ jquery-jvectormap-data-korea-aea-en.js

  아래는 결과..

vi로 열어보면...

올ㅋ


근데 안된다.....
jVectorMap에서 권장하는 Natural Earth 이곳의 데이터를 기준으로 작업할 경우 지도가 올바른 형태로 나오는데
국가별로 지도를 뽑으려고 해보니 뭔가가 안맞다...
같은 shp 파일이라도 뭔가가 다르다..? 열어봐야 아는건데.. 
급한대로.. 다른 개발자가 작업한 곳을 찾아서 사용은 한다만...



안되는 이유는.. 작업이 죽는다..;;

행정동 레벨 2기준으로 작업을 할 경우 약 200여개의 행정동(시/군/구)가 나오는데 가상서버가 힘들어하더니 작업을 멈추네..

WIndow에서 아래처럼 지도는 나옴.