PHOTOGRAMMETRY

우분투(Ubuntu) 16.04에서 웹오디엠(WebODM) 설치하기

유병혁 2017. 5. 16. 17:08

앞서 우분투(Ubuntu) 16.04에서 오픈드론맵(OpenDroneMap)과 노드오픈드론맵(node-OpenDroneMap) 설치방법을 정리했는데요,

우분투(Ubuntu) 16.04에서 오픈드론맵(OpenDroneMap) 설치하기 | http://blog.daum.net/geoscience/1081
우분투(Ubuntu) 16.04에서 노드-오픈드론맵(node-OpenDroneMap) 설치하기 | http://blog.daum.net/geoscience/1082

이번 글에서는 웹오디엠(WebODM) 설치방법을 정리해보도록 하겠습니다.
웹오디엠은 오픈드론맵과 노드오픈드론맵을 이용한 드론 영상처리용 애플리케이션과 API입니다.

오픈드론맵은 커맨드 라인 툴킷(command line tookit)입니다. 커맨드 라인에 익숙한 사용자는 이것만으로 원하는 결과를 처리할 수 있습니다.
노드오픈드론맵은 커맨드 라인이 불편한 사용자에게 가벼운 인터페이스를 제공하며, 또한 개발자에게 애플리케이션 개발을 위한 API를 제공합니다.


웹오디엠은 사용자 인증, 지도 및 3D 디스플레이, 고급수준의 API 등을 추가적으로 제공합니다.

또한 노드오픈드론맵이 설치된 다수의 서버들을 제어하여 다중 병렬 처리를 구현할 수 있습니다.

웹오디엠에 대한 자세한 설명은 아래 유튜브 동영상을 참고하시면 되겠습니다.
WebODM - An Introduction to a Web Interface for OpenDroneMap to Make Drone Mapping Even Easier
https://youtu.be/UnN-NzL96T8


그러면 오픈드론맵과 노드오픈드론맵이 설치된 상태에서 웹오디엠을 설치해 보겠습니다.
설치방법은 아래 웹오디엠 깃허브(GitHub)에 상세하게 소개되어 있습니다.
https://github.com/OpenDroneMap/WebODM

우분투에서 웹오디엠을 네이티브로 설치하기 위해서는 아래 소프트웨어들이 설치되어야 합니다.
1. PostgreSQL (9.5 이상)
2. PostGIS 2.3
3. Python 3.5
4. GDAL (2.1 이상)
5. Node.js (6.0 이상)

먼저, 설치에 앞서 관리자 권한으로 우분투 패키지 도구를 업데이트 및 업그레이드 하겠습니다.
참고로 su는 사용자 변경(subsitute user=switch user)의 의미를 가지며, apt-get은 advanced packaging tool의 약어로써 패키지 관리 명령어 도구입니다.
su
apt-get update
apt-get upgrade

PostgreSQL과 PostGIS를 설치합니다.

PostgreSQL
-오픈소스 객체 관계 데이터베이스 시스템(open source object-relational database system)
-공식 홈페이지: https://www.postgresql.org/

PostGIS
-PostgreSQL용 공간 데이터베이스 익스텐더(spatial database extender for PostgreSQL)
-공식 홈페이지: http://postgis.net/

apt-get install postgresql-9.5-postgis-2.2

설치가 완료되면, 포스트그레스큐엘 설정 파일을 수정합니다(선택).
postgresql.conf: PostgreSQL configuration file
gedit /etc/postgresql/9.5/main/postgresql.conf


postgresql.conf에서 listen_addresses = 'localhost'을 주석 해제하고 localhost를 *로 변경합니다.
포스트그레스큐엘이 설치된 서버 내에서만 가능했던 '로컬 접근'을, '모든 접근'으로 변경하는 내용입니다.


pg_hba.conf: PostgreSQL Client Authentication Configuration File
gedit /etc/postgresql/9.5/main/pg_hba.conf

pg_hba.conf에서 복제 권한(replication privilege)에 아래 줄을 추가합니다.
host     all     all     0.0.0.0/0     md5


위 설정은 0.0.0.0/0 IP의 모든 User가 모든 DB에 접근이 가능하다는 것입니다. 즉, 모든 IP의 원격 접속을 허용하는 설정입니다.


이제 원격 접속에 대한 DB와 IP 권한 설정이 끝났으므로 PostgreSQL을 재시작 합니다.
/etc/init.d/postgresql restart

PostgreSQL을 실행하고 기본 postgres계정의 비빌번호를 생성 후 다시 재시작 합니다.
sudo -u postgres psql
ALTER USER postgres with ENCRYPTED PASSWORD 'postgres';
\q
sudo /etc/init.d/postgresql restart

이번에는 pgAdmin을 설치해 보겠습니다.
apt-get install pgadmin3

pgAdmin
-PostgreSQL을 위한 오픈소스 관리개발 플랫폼
 (Open Source administration and development platform for PostgreSQL)
-공식 홈페이지: https://www.pgadmin.org/

pgAdmin에서 앞서 설정한 계정으로 로그인한 후, webodm_dev DB를 추가 생성합니다.
해당 DB에서 아래와 같이 SQL를 실행합니다.

CREATE EXTENSION postgis;
SELECT PostGIS_Full_Version();
ALTER SYSTEM SET postgis.enable_outdb_rasters TO True;
ALTER SYSTEM SET postgis.gdal_enabled_drivers TO 'GTiff';


GDAL을 설치합니다.

GDAL
-지리공간 데이터 추상화 라이브러리(Geospatial Data Abstraction Library)
-공식 홈페이지: http://www.gdal.org/

add-apt-repository ppa:ubuntugis/ppa
apt-get update
apt-get install binutils libproj-dev gdal-bin
gdalinfo --version

Node.js를 설치합니다.

Node.js
-자바스크립트로 서버단 기술까지 제어할 수 있는 프레임워크
-공식 홈페이지: https://nodejs.org/ko/

apt install curl
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
apt-get install -y nodejs
nodejs --version

이제 웹오디엠에 필요한 소트프트웨어 설치를 모두 마쳤습니다.
이제 Git을 설치하고 웹오디엠을 내려받도록 하겠습니다.
apt install git
git clone https://github.com/OpenDroneMap/WebODM

이제 사용자 폴더에 OpenDroneMap, WebODM, node-OpenDroneMap이 각각 위치하고 있습니다.


다운로드 받은 WebODM 폴더 하부에 WebODM\webodm\local_settings.py 파일을 새로 만들고,
아래 내용을 입력합니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.postgis',
        'NAME': 'webodm_dev',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}


현재 제 PC에는 파이썬이 2.7로 설정되어 있는데요, WebODM은
파이썬 3.5를 지원하므로 가상환경인 virtualenv를 이용하도록 하겠습니다.

apt install python-pip
pip install virtualenv

WebODM 폴더 하부에 webodm_project 폴더를 생성하고 파이썬 3.5를 위한 개발환경을 구성합니다.
cd WebODM
virtualenv --python=python3.5 webodm_project
source webodm_project/bin/activate

이제 WebODM 폴더에 있는 requirements.txt 파일 내 정의 요소들을 설치합니다.
pip install -r requirements.txt


이때 pycopg2 파일 오류가 발생하는 경우에는 아래 파일들을 추가로 설치합니다.
apt install libpq-dev python3-dev


자, 이제 마지막 단계로 WebODM을 구동합니다.

pip install -r requirements.txt
sudo npm install -g webpack
npm install
webpack
python manage.py collectstatic --noinput
chmod +x start.sh && ./start.sh --no-gunicorn


파이어웍스 웹브라우저에서 localhost:8000를 통해 웹오디엠 로그인 화면을 접하게 됩니다.


이 때 기본 로그인 계정은 admin (비번 admin)입니다.


웹오디엠에 로그인하시면 화면 좌측에 Processing Nodes가 있는데요,
여기에 기 설치한 노드오픈드론맵 Hostname과 Port를 입력해 주시면 됩니다.
만약 다수의 서버에 처리노드가 셋팅되어 있다면 추가해서 드론영상 병렬처리가 가능하겠죠?!


노드오픈드론맵보다 향상된 웹오디엠의 추가적 기능은 오는 5월 20일 세미나 발표자료에 정리하도록 하겠습니다.

드론 기술 세미나 안내 - 5월 20일(토) 오후 3시 광화문 조선비즈연결지성센터
출처: http://www.osgeo.kr/238 [OSGeo(Open Source GeoSpatial) 한국어 지부 - OSGeo Korean Chapter]