웹 서버로 오프라인 지도 보완하기
왜??
Tableau 데스크탑 및 서버에서 배경 맵을 표시할 때 디폴트로 사용되는 'Tableau' 배경 맵 서비스는 Tableau사가 보유한 서버에서 인터넷을 통해 제공되는 서비스입니다.
그렇다 보니 금융이나 일부 공공기관 등 인터넷에 연결되지 않는 환경에서 Tableau를 사용하는 경우 지도 표현에 고심하곤 하지요. 그런 경우 '오프라인' 배경 맵을 사용할 수 있지만 오프라인 맵은 6단계만 줌하면 더 이상 표시가 안 되는 한계가 있구요.
일부 사용자들은 Tableau 데스크탑과 Tableau 서버의 오프라인 맵을 더 상세한 레벨까지 늘리는 방법을 사용하기도 합니다. 그 방법은 Alan Eldridge의 블로그에 기술되어 있어 여기서는 자세한 내용을 생략합니다.
https://blog.databender.net/2014/03/04/adding-more-detail-to-the-tableau-offline-map-tile-cache/comment-page-1/
하지만 이 방법에는 치명적인 단점이 몇가지 있는데요.
첫 번째는 임의로 프로그램 설치 디렉토리에 파일을 추가하는 것이다 보니 기술지원이 필요한 상황이 발생하면 문제가 될 수 있다는 것, 두 번째는 모든 데스크탑 사용자의 컴퓨터에 오프라인 배경 맵 파일을 넣어야 하므로 관리상의 어려움이 많다는 것입니다. 그렇다 보니 많은 사용자가 사용하는 환경에는 적합하지 않은데요.
이런 단점을 극복하기 위해서 Apache 웹서버를 이용해서 간단한 배경 맵 서비스를 만들어 보겠습니다.
배경 맵 서비스 준비
1. Apache httpd server 설치
오랜만에 Apache httpd를 설치했는데 예전과는 달리 Apache 재단에서는 소스 코드만 제공하고 실행 파일을 제공하지 않는군요. 컴파일된 실행 파일을 제공하는 사이트 중 하나인 Apache Haus에서 최신 버전을 받았습니다.
https://www.apachehaus.com/cgi-bin/download.plx
압축을 풀고 적절한 위치에 폴더째로 이동시킵니다.
2. 배경 맵 이미지 파일 복사
하위 폴더 중에 htdocs를 찾습니다.
여기에 배경 맵으로 사용할 이미지 파일을 넣어주면 되는데요. 여기서는 Tableau 데스크탑에 포함된 오프라인 맵 배경 이미지 파일만을 사용하겠습니다. 위치는 설치 위치 아래의 Local\Maps\US\normal이구요.
위와 같이 0에서 5까지의 확대 수준이 제공되는 것을 알 수 있습니다. normal 폴더를 복사해서 htdocs에 붙여넣습니다.
여기서는 기본 제공되는 오프라인 맵 이미지만을 활용했기 때문에 5레벨의 지도까지만 사용 가능하지만 필요에 따라 더 높은 확대 수준의 이미지 파일을 넣어줘야 하겠지요.
배경 맵 타일 이미지를 일괄 다운로드 가능한 형태로 제공하는 곳을 아직 인터넷상에서 본 적이 없으니, 더 높은 확대 수준의 이미지가 필요하시다면 Alan의 블로그 내용 등을 참고해서 각자가 구하셔야 할 것 같습니다.
3. 서비스 시작
서비스를 올려서 테스트해 볼까요?
우선 웹 서버를 기동해야 하는데, 그 전에 서비스 포트를 변경하겠습니다. 제 PC는 Tableau 서버가 이미 웹 서버의 디폴트 포트와 동일한 80 포트를 사용하고 있기 때문입니다. 아파치 설치 위치 아래의 conf 폴더에 있는 httpd.conf 파일을 열어서 편집합니다.
LISTEN 80 부분을 찾아서 8000번 포트로 변경하였습니다.
웹 서버를 시작하는 방법이 2가지가 있는데 여기서는 테스트를 위해 간편하게 커맨드에서 시작해 보겠습니다. 커맨드 창을 열고 Apache24\bin로 이동하여 httpd.exe를 실행합니다. 에러메시지가 나오지 않으면 정상적으로 시작된 것으로 보면 되겠습니다.
아래 URL에 연결해 봅니다.
http://localhost:8000/normal/0/0/0.png
아래와 같이 세계지도가 나오면 정상입니다.
Tableau 데스크탑에서 사용하기
우선 tms 파일을 작성합니다.
내용은 아래와 같이 작성하되 localhost가 아닌 네트워크 위치에 서버가 있는 경우 IP 혹은 도메인네임을 바꿔 줍니다.
<?xml version='1.0' encoding='utf-8' ?>
<!-- build 10000.16.0812.0001 --> <mapsource inline='true' source-platform='win' version='10.0' xmlns:user='http://www.tableausoftware.com/xml/user'> <connection class='OpenStreetMap' max-scale-level='5.0' max-stretch='2.0' min-shrink='0.667' port='8000' server='http://localhost' url-format='normal/{Z}/{X}/{Y}.png' /> <languages /> <layers> <layer display-name='Base' name='base' request-string='/' show-ui='false' type='features' /> </layers> <properties /> <map-styles /> <mapsource-defaults version='10.0'> <style /> </mapsource-defaults> </mapsource>
텍스트 파일로 작성하여 내 문서\내 Tableau 리포지토리\맵 원본 폴더에 tms 확장자로 저장합니다. 여기서는 internal.tms로 저장했습니다.
Tableau 데스크탑을 열어서 데이터 원본에 연결하시면 방금 저장한 internal이라는 이름의 배경 맵이 사용 가능해졌음을 확인할 수 있습니다.
이 방법은 앞에서 말한 것처럼 모든 데스크탑 사용자의 컴퓨터에 파일을 복사하는 과정이 필요없고 tms 파일만 나눠주고 사용법을 알려주면 되는 장점이 있습니다. 하지만 사용자가 많은 환경에서 사용한다면 Apache 웹 서버가 사용자의 증가에 따른 부하를 어디까지 감당할 수 있을지도 고민이 필요할 것 같습니다.


















