-
OSM tileserver 동아시아지역 잘라 사용하기.GIS 2024. 8. 6. 14:19반응형
OSM이란?
오픈소스 프로젝트로 지도 관련 프로젝트이며 전세계를 대상으로 개방형 월드맵 데이터베이스를 구현을 목표로 한다.
OSM은 오픈소스인 만큼. 다양한 부가적인 플러그인이나 / 레이어 맵 이 엄청 많고 다양하다
따라서 맞춤형 지도 제작에 적합하고 유리하다.OSM에 가장 큰 장점은 지도에 오류 정보를 내가 수정하고 내가 반영할 수 있다.
OSM을 왜 직접만들어 사용하지?
사실 osm도 인터넷에서 사용하는 지도를 사용하면 네이버/카카오/구글 지도와 같이 그냥 API를 통해서 사용하면 간단하다. 다만 필자는 폐쇄망 Offline 환경에서 데이터를 사용할 경우가 있다.
또한 직접만드는 이유 중 다른 하나는 OSM을 사용하여 만든 다른 오픈소스들이 인터넷에서 API등을 제공을 하지만 다만 외국이라/지원 폭이 넓지가 않은 경우 속도에 이슈가 걸릴 수 있다. 그럴 땐 내가 직접 빌드해서 사용하는게 맘 편하다
OSM pbf 다운로드
Ubuntu와 Docker를 사용해서 빌드 할 것이다. Docker 같은 경우는 요즘 마이크로서비스들에 대하여 쿠버네티스와 같이 교과서적으로 사용하기 때문에 사용방법은 스킵한다.
https://download.geofabrik.de/
위에 페이지는 OSM 사용되는 파일을 pbf확장자로 만든 파일이다. 국가와 원하는 지역을 다운로드해준다.
필자는 빌드할려는 지역이 중국 해역, 서해 지역 북한, 한국 일본 해역, 러시아 시베리아 극동지역이 필요하므로 해당 국가가 포함한 지역을 다운로드 할 것이다.OSM은 유저 커뮤니티가 만들어 pbf를 업데이트하는 방식으로 데이터의 크기는 국가의 크기보단 zoom 레벨에 따라 어떤 정보가 상세하게 존재하는지에 따라서 용량에 크기가 다르다. 일본이 중국보다 크고 시베리아보다 한국지역이 더 용량이 크다. 북한은 뭐.... 시리아..우즈베키스탄이랑 비슷하다. 그래도 있는것에 감사.... 따지고보면 한국도 굉장히 작은편인데 OSM에 정보를 입력하는 사람이 굉장히 적어서 그런지... 필자도 한번 재미로 id편집기를 사용해서 동네 편의점 정보나 입력해서 기여할려고해봤는데 생각보다 좀 귀찮은편 관심있으면 osm.kr나 osm wiki에 하는법이 자세히 나와있음
다운로드 할 지역들을 차례대로 다운로드 받은 후
이제 해당 파일을 머지할 것이다.
OSM pbf 잘라쓰기/머지
apt-get install osmium-tool osmosis --read-pbf south-korea-latest.osm.pbf --read-pbf north-korea-latest.osm.pbf --merge --write-pbf korea.osm.pbf osmosis --read-pbf korea.osm.pbf --read-pbf japan-latest.osm.pbf --merge --write-pbf korea_jp.osm.pbf osmosis --read-pbf korea_jp.osm.pbf --read-pbf china-latest.osm.pbf --merge --write-pbf korea_jp_cn.osm.pbf osmosis --read-pbf korea_jp_cn.osm.pbf --read-pbf far-eastern-fed-district-latest.osm.pbf --merge --write-pbf merge.osm.pbf
여러개 한번에 하면 좋겠지만 두개씩 나눠서 하면
최종적으로 merge.osm.pbf 파일이 나온다.
OSM Build/RUN 하기
우리는 이제 overv/openstreetmap-tile-server를 이미지를 사용할 것 이다.
https://github.com/Overv/openstreetmap-tile-server
github주소이다.
git clone https://github.com/Overv/openstreetmap-tile-server.git
cd openstreetmap-tile-server
docker build -t overv/openstreetmap-tile-server . docker volume create osm-data docker volume create osm-tiles docker run \ -v /data/merge.osm.pbf:/data/region.osm.pbf \ -v osm-data:/data/database/ \ -v osm-tiles:/data/tiels/ \ overv/openstreetmap-tile-server \ import
해당 import 까지 해서 pbf파일을 가지고 사전 데이터베이스 빌드하는 과정을 진행한다.
docker run \ --name osm \ -p 8080:80 \ -v osm-data:/data/database/ \ -v osm-tiles:/data/tiels/ \ -d overv/openstreetmap-tile-server \ run
이제 볼륨에 빌드된 파일을 가지고 실행해주면된다.
이러한식으로 중국, 극동시베리아, 한반도, 일본 지역을 병합한 영상이 출력된다.
OSM은 특정지역에 줌(호출) 했을 때 Png파일이 생성되는데 이걸 랜더링이라고 하는것 같다. 따라서 한번 씩 다 호출하여 필요 사전 렌더링을 할 필요가 있다.
docker exec -it osm render_list -n 10 -a -z 0 Z 20
-n 쓰레드 옵션 갯수
-a 지역
-z 최소 줌
-Z 최대 줌줌레벨은 1부터 20까지 있으며 한 단계 올라 갈 때마다 약 4배의 png 파일이 더 생성된다고 생각하면된다. 시간도 4배씩 증가. 따라서 빌드 시간과 디스크 용량을 계산하여 미리 사전랜더링을 하면된다.
반응형'GIS' 카테고리의 다른 글
DEM DSM DTM (0) 2021.03.17 GIS 개요 및 용어 정리 (0) 2021.02.03