고급협동조합의 OSM
article thumbnail

※ 개인 컴퓨터는 데비안 리눅스(우분투, 리눅스 민트, ...)라는 것을 전제하고 설명하겠습니다. 이론적으로 윈도우에서도 아래 작업을 따라하는 것이 가능은 하나, 설명하기 복잡하므로 넘어가겠습니다.

※ 여기부터는 wiki.openstreetmap.org/wiki/Taginfo/Installation와 같이 보시면 도움이 됩니다.

 

Taginfo/Installation - OpenStreetMap Wiki

Most people will not have to run Taginfo themselves. If you just need access to the Taginfo data you can download it from https://taginfo.openstreetmap.org/download or use the API. But if you want to run Taginfo yourself, for instance to run it with a diff

wiki.openstreetmap.org

1. Github에서 프로젝트 파일 가져오기


Taginfo 실행 파일은 github.com/taginfo/taginfo에 올라와 있고, Taginfo 데이터베이스 제작에 필요한 파일은 github.com/taginfo/taginfo-tools에 올라와 있습니다. Github에 있는 파일들을 라즈베리 파이와 개인 컴퓨터에 각각 가져와 봅시다.

터미널 2개를 동시에 띄운 모습.

먼저 ssh로 라즈베리 파이에 접속하고, 개인 컴퓨터에서 별도의 터미널을 켜 줍니다.

그런 다음 소스 파일이 들어갈 폴더를 만들고, 그 안에 파일을 다운로드하도록 하겠습니다. 다음 명령어를 입력하세요.

(라즈베리 파이에서)
cd /home/ubuntu
mkdir osm && cd osm
git clone https://github.com/taginfo/taginfo.git

========== 코드 설명 ==========
1. ubuntu 계정의 home 디렉토리로 이동한다.
2. 이동한 그 위치에 osm이라는 이름의 디렉토리를 만들고, 그 안으로 이동한다.
3. https://github.com/taginfo/taginfo.git 프로젝트를 가져온다.
(개인 컴퓨터에서)
cd ~
mkdir osm && cd osm
git clone https://github.com/taginfo/taginfo.git
git clone https://github.com/taginfo/taginfo-tools.git

========== 코드 설명 ==========
1. 현재 접속한 계정의 home 디렉토리로 이동한다.
2. 이동한 그 위치에 osm이라는 이름의 디렉토리를 만들고, 그 안으로 이동한다.
3. https://github.com/taginfo/taginfo.git 프로젝트를 가져온다.
4. https://github.com/taginfo/taginfo-tools.git 프로젝트를 가져온다.

만약 git 명령어가 먹히지 않는다면 sudo apt install git으로 git을 설치해 주세요.

taginfo-tools는 라즈베리 파이에 설치하지 않습니다. 데이터베이스 제작은 RAM을 엄청나게 이용하기 때문에(대한민국 전체 기준, 32GB) 웬만한 라즈베리 파이로는 끝까지 못 돌리고 뻗어버립니다.

 

나중의 편의를 위해 데이터베이스가 들어갈 디렉토리와 데이터베이스 압축파일이 들어갈 디렉토리를 따로 만들어 주겠습니다.

(라즈베리 파이, 개인 컴퓨터 모두)
mkdir data download

========== 코드 설명 ==========
1. 현재 디렉토리에 data 디렉토리와 download 디렉토리를 만든다.

ls를 친 모습.

ls를 쳤을 때 위와 같이 파란색 글씨 4개가 나와야 합니다.

 

 

2. 데이터베이스 제작에 필요한 프로그램 컴파일


데이터베이스를 만드는 '코드'는 taginfo-tools에 있지만, '프로그램'은 없습니다. 그럼 어떻게 하느냐, 직접 컴파일해서 써야 합니다. 이렇게 사용자에게 컴파일을 맡기는 이유는 여러 가지가 있지만, 한 마디로 설명하겠습니다.

 

"개인 컴퓨터(x86_64)에서 컴파일한 프로그램은 라즈베리 파이(ARM64)에서 돌릴 수 없다."

 

물론 저희는 라즈베리 파이에서 데이터베이스를 제작할 게 아니긴 합니다만, 말하자면 그렇다는 거죠.

 

일단 컴파일 전에, 의존성들을 설치해야 합니다. 의존성 중에서는 apt로 설치할 수 있는 것들도 있지만, 별도의 PPA에서 다운로드해야 하는 것도 있죠. 여기서는 Debian Backports(deb.debian.org/debian)라는 PPA를 이용하도록 하겠습니다.

 

cd 명령어를 이용해 

 

자신이 현재 위치한 디렉토리.

다음 명령어를 치기 전에, 자신이 ~/osm에 위치해 있는지 확인하세요.

(개인 컴퓨터에서)
echo "deb http://deb.debian.org/debian buster-backports main" >> /etc/apt/sources.list.d/sources.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
sudo apt update
sudo apt install cmake libbz2-dev libexpat1-dev libgd-dev libicu-dev libsqlite3-dev make zlib1g-dev
sudo apt-get -t buster-backports install libosmium2-dev libprotozero-dev

cd taginfo-tools
git submodule update --init
mkdir build && cd build
cmake ..
cd .. && make -j4

=========== 코드 설명 ===========
1. "deb http://deb.debian.org/debian buster-backports main"이라는 문장을 /etc/apt/sources.list.d/에 위치한
   sources.list 텍스트 파일 맨 끝에 추가한다.
2. 키 서버 keyserver.ubuntu.com을 통해 공개 키 04EE7237B7D453EC를 컴퓨터에 추가한다.
3. 키 서버 keyserver.ubuntu.com을 통해 공개 키 648ACFD622F3D138을 컴퓨터에 추가한다.
4. 설치 가능한 패키지 목록을 업데이트한다.
5. cmake, libbz2-dev, libexpat1-dev, libgd-dev, libicu-dev,
   libsqlite3-dev, make, zlib1g-dev 패키지를 설치한다.
6. libosmium2-dev, libprotozero-dev 패키지를 buster-backports에서 가져와 설치한다.

7. taginfo-tools 디렉토리 안으로 이동한다.
7. taginfo-tools가 이용하는 하위 모듈 abseil을 가져온다.
8. build 디렉토리를 생성하고, 그 안으로 이동한다.
9. 상위 디렉토리(여기서는 taginfo-tools/)에 위치한 CmakeLists.txt 파일을 makefile로 변환한다.
10. 상위 디렉토리로 이동하고, 변환한 makefile을 이용해 프로그램들을 컴파일한다(스레드 4개를 동시에 가동).

컴파일 시간은 컴퓨터 사양에 따라 다르지만, 약 2분 정도 걸립니다. make -j4에서 4는 스레드 4개를 동시에 가동한다는 의미입니다. 만약 컴퓨터의 CPU가 8스레드, 16스레드라면 -j4 대신 -j8이나 -j16을 써도 됩니다.

 

 

3. 데이터베이스 제작 및 Taginfo 구동을 위한 설정


데이터베이스를 제작하려면 오픈스트리트맵 원본이 필요합니다. 이를 Planet Data라 하는데, download.geofabrik.de/에서 다운로드할 수 있습니다.

 

Geofabrik Download Server

 

download.geofabrik.de

download.geofabrik.de에서 South Korea에 들어간 모습.

원하는 국가/대륙에 들어가서 (국가명)-latest.osm.pbf 파일을 받아 줍시다. 다운로드한 파일은 아까 만들었던 ~/osm/data 디렉토리에 두세요.

 

이제 본격적으로 taginfo 설정을 바꾸겠습니다. 다음 명령어를 입력하세요.

(라즈베리 파이, 개인 컴퓨터 모두)
cd ~/osm/
cp taginfo/taginfo-config-example.json taginfo-config.json
nano taginfo-config.json

=========== 코드 설명 ==========
1. ~/osm 디렉토리로 이동한다.
2. taginfo 안에 있는 taginfo-cinfig-example.json 파일을 taginfo-config.json이라는 이름으로 복사한다.
3. taginfo-config.json 텍스트 파일을 nano 편집기로 연다.

taginfo-config.json을 nano로 연 모습.

텍스트 파일에서 "geodistribution": { 부분을 찾으세요. 먼저 Taginfo 분포도의 배경 지도로 쓸 이미지를 구한 뒤, geodistribution 안의 값을 바꾸어 주세요.

"left": (왼쪽 경도)

"bottom": (아래쪽 위도)

"right": (오른쪽 경도)

"top" :(위쪽 위도)

"width" X "scale_image" = (이미지의 가로폭)

"height" X "scale_image" = (이미지의 세로폭)

"background_image": (배경 지도의 경로)

 

"paths": 안에서

"data_dir": "/home/(계정명)/osm/data"

"download_dir": "/home/(계정명)/osm/download"

 

나머지 옵션들은 주석 보면서 직접 바꿔 주시면 됩니다.

 

다음 글에서는 데이터베이스 제작과 서버 구동을 다뤄 보겠습니다.

profile

고급협동조합의 OSM

@고급협동조합

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!