raster2mb

카테고리 없음 2011. 8. 15. 02:24

tilemill에서 사용하는 파일 형식인 mbtiles 형식을 사용 하다가 찾은 툴이 raster2mb이다. 현재 2.0 버전이 unstable한 채 진행중이고, stable한 버전은 1.1 버전의 mbtiles specification이다. 이 mbtiles 포멧(사양서)은 LOD 구조의 타일을 SQLite DB에 저장한다. 이 스펙을 토대로 구현된 프로그램은 다음과 같다( https://github.com/mapbox/mbtiles-spec/wiki/Implementations). 이 프로그램 중 파이썬(Python)으로 된 프로그램을 찾았는데 그 중 하나가 raster2mb이다. GDAL과 Python을 필요로 하며 사용법은 아래와 같다.

 

raster2mb.py raster_merc.tiff raster_merc.mbtiles

만약 GeoTIFF 파일이 Google Mercator 투영법인(EPSG:900913) 아니라면, 아래와 같이 gdalwarp 먼저 실행하여 Google Mercator 투영법을 적용시킨다:

gdalwarp -t_srs EPSG:900913 raster.tiff raster_merc.tiff

raster2mb -h  실행하여 도움말을 있다.

 

이 툴은 MBTiles 1.1 맞춰서 제작되었고 옵션 인자 값인 bounds 속성을 가지고 있지 않다.

마지막으로 가장 중요한 점!

전 세계를 포함하지 않는 경계부터 시작하는 이미지의 mbtiles 데이터 파일의 생성은 가능하지만 제대로 된 데이터가 아니다. 따라서 Mapbox에서도 사용할 수 없고 이상한 좌표에 이미지가 매칭된다. 따라서 tileset을 생성하고 싶으면 전세계를 포함하고 있는 이미지를 사용하여야 한다. http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/ 에 가면 Google Mercator(EPSG:900913)과 관련된 픽셀좌표와 zoom레벨을 표시해 준다. 먼저 자신이 가진 Tiff 파일을 Spherical Mercator(Google Mercator)의 타일 경계에 맞춰 처리한 후 작업을 하면 용이하다. 하지만 실험을 해 본 결과 줌 레벨이 커질수록 전세계를 포함하고 있는 이미지의 사이즈가 너무 커져 실제적으로 작업을 수행하기가 어려웠다. gdal2tiles.py를 사용하여 타일을 생성한 후 mb-util을 사용하는 편이 더 맞는 것 같다.

 

gdal라이브러리를 이용하기 때문에 OSGeo4W shell을 이용하면 raster2mb.py 스크립트를 실행할 수 있다.

 

mbtiles는database이기 때문에 이미지로 바로 사용할 수 없다. 따라서 mbtiles 파일을 이미지로 export하기 위해서는 다음 링크를 클릭하여 스크립트를 실행하면 된다(https://gist.github.com/837851).

 

gdal2tiles와 같은 툴로 폴더 별 타일이미지를 가지고 있고 이 이미지들을 MBTiles 파일로 만들고 싶다면 mb-util을 사용해야 한다. raster2mb는 Tiff 이미지를 MBTiles로 바꾸는 것이기 때문이다.

Posted by 강부자아들
,