2013년 10월 13일 일요일

QGIS에서 대용량 Raster 및 Shapefile 그리기

QGIS에서 대용량의 래스터(GeoTiff 등) 및 Shape 파일을 사용할 때 그리기 성능이 안나는 경우 해결할 수 있는 옵션입니다.

일반적으로 래스터에 대해서는 피라미드(Pyramid)를 생성하며 단일 파일로 저장(원본 파일에 피라미드 정보 포함)하거나 외부 피라미드파일(.ovr, .aux. .rrd 등)을 활용할 수 있습니다. QGIS에서는 GDAL라이브러리를 활용하며, QGIS가 아니더라도 GDAL 명령어를 통해 피라미드를 생성할 수 있습니다.

Shapefile의 경우에는 공간 인덱싱을 생성하며, 인덱스 파일(qix, idx, sbx 등 GIS 프로그램마다 자체 포맷을 가진 경우가 많음)을 생성하여 그리기 및 검색 성능을 향상할 수 있습니다.

래스터 피라미드(Pyramid)에 대한 조금 더 자세한 정보는 이 블로그의 다음 포스팅을 확인하십시오
 - Raster Pyramids에 대해서... 

▣ GeoTiff Raster 피라미드 생성하기
 ⊙ Layer Properties(레이어 정보) --> Pyramids 탭 활용
- 레이어 창에서 생성할 레이어를 더블클릭 하거나 오른쪽 마우스 눌러 등록정보(Properties) 메뉴를 실행합니다.
- Pyramids 탭의 오른쪽에서 생성할 레벨을 선택하면 [Build Pyramids] 버튼이 활성화됩니다.
- Overview format은 외부 또는 내부 저장을 선택할 수 있습니다. 내부 저장을 선택하는 경우 원본 파일에 변경을 가하므로 반드시 백업을 해 두라는 메세지가 설명에 나와 있습니다.
- 리샘플링 방법은 위 포스팅을 보고 래스터의 특성에 따라 선택하면 됩니다.


 ⊙ Raster 메뉴 기능 활용
 - [Raster] > [Miscellaneous] > [Build Overviews] 메뉴를 실행합니다.
 - 옵션은 위 레이어 등록정보와 동일합니다.

 ⊙ Save As... 메뉴 활용
 - 피라미드를 생성할 레이어를 선택하고 오른쪽 마우스를 눌러 [Save as...] 메뉴를 실행합니다.
 - 저장할 이름(GeoTiff)을 선택합니다.
 - Raster 를 내보내기 할 때는 다양한 옵션을 사용할 수 있습니다.
 - 사용 가능한 옵션은 Extent(일정 범위로 잘라내기), Resolution(래스터 해상도<셀크기> 변경), Create Options(압축 여부 및 압축 방법 등), No data values(NoData 처리) 및 우리가 여기에서 하고자 하는 Pyramids가 있습니다.
 - 피라미드 옵션을 체크하고 위에서 했던 것과 같이 적절한 레벨을 선택합니다.
 - OK 버튼을 누르면 내보내기 과정에서 피라미드를 함께 생성하며 저장합니다.
 

▣ Shapefiles 공간 인덱싱 생성하기
 ⊙ Layer Properties(레이어 정보) --> General 탭 활용
- 레이어 창에서 생성할 레이어를 더블클릭 하거나 오른쪽 마우스 눌러 등록정보(Properties) 메뉴를 실행합니다.
- General 탭의 Coordiante reference system 그룹박스의 버튼 중 [Update extent], [Create spatial index] 버튼을 차례로 누릅니다.
- Shapefile의 크기에 따라 약간의 시간이 걸릴 수 있으니 기다리면 됩니다.


▣ 참고
 - http://qgis.spatialthoughts.com/2012/02/tutorial-working-with-rasters-in-qgis.html
 - http://gis.stackexchange.com/questions/52367/best-way-to-handle-many-raster-files-in-qgis