일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 국비지원교육
- 국비지원취업
- 코딩연습
- 코딩테스트문제풀이
- 데이터분석
- Python
- 학습일지
- SQL
- 데이터분석취업
- bigquery
- 아나콘다
- 데이터분석부트캠프
- 부트캠프
- Programmers
- WSL
- qgis
- shp
- 국비지원
- 패스트캠퍼스
- 내일배움카드
- 코딩테스트
- 데이터분석가
- 코테문제풀이
- 패스트캠퍼스데이터분석부트캠프
- 패스트캠퍼스기자단
- 프로그래머스
- 패스트캠퍼스부트캠프
- sql강의
- mysql
- K디지털기초역량훈련
- Today
- Total
데이터 리터러시를 위한 발자취
[QGIS] 대용량 데이터 분석 시 작업속도 향상을 위한 공간인덱스 생성법 본문
안녕하세요! 오랜만에 QGIS Tip을 가져왔습니다.
해당 내용은 QGIS에서 대용량 SHP 데이터를 다룰 때 아주 유용한 팁입니다.
제가 진행했던 프로젝트 중 100 Cell 또는 50 Cell 단위의 인구 데이터를 구매하여 분석에 활용한 적이 있는데요.
인구 데이터 대부분이 대용량이다보니 원천데이터를 QGIS에 업로드하는 것만으로도 화면이 버벅거리곤 했습니다.
사용 중인 컴퓨터 사양이 좋은 편이었는데도 간단한 공간 분석을 진행할 때마다 상당한 시간이 소요되었습니다.
그러다 보니 오래 걸리는 작업일 경우 미리 돌려놓고 퇴근하곤 했습니다 ㅎㅎ 하지만 이 점도 문제가 있었는데요.
처리 도중 컴퓨터 다운으로 인해 작업물 자체가 날아간 적도 많아서..😭 굉장히 애를 먹었던 데이터였습니다.
하지만 늘 방법은 존재하듯, 우연히 찾아낸 공간인덱스를 생성한 뒤 작업속도가 거의 70~90% 감소하였는데요..!
적용 방법 자체는 매우 간단하지만, QGIS로 대용량 데이터를 종종 사용하신다면 필수적으로 필요한 기능입니다-!
아래 설명 참고 없이 바로 결론만 보고 싶으면 아래 더보기를 클릭해 주세요!🤗
# 공간 인덱스 설정 방법(QGIS 3.16-Hannover 기준)

하단 본문 내용에는 샘플 데이터 기반 공간 인덱스 생성에 따른 처리속도까지 정리해 두었으니 참고 부탁드려요!
# 샘플 데이터 기반 공간 인덱스 생성 방법
1. 직장인구, 행정구역 데이터 다운로드
2. QGIS 내 SHP 파일 업로드
3. 행정구역(시도) 데이터 공간 인덱스 생성
4. 서울 행정구역 내 직장인구 추출하기
QGIS 버전은 3.16-Hannover을 사용하였습니다. 😀
1. 직장인구, 행정구역 데이터 다운로드
- 직장인구 데이터 : 국가공간정보포털 내 bizGis가 제공한 대용량 데이터로 공간 인덱스 사전 생성되어 있음
- 대한민국 최신 행정구역 데이터 : 시도 데이터를 활용(공간 인덱스 생성을 위해 추가 다운로드)
직장인구 - 오픈마켓
○ Data 제공 정보 - 광역시명, 광역시코드, 시군구명, 시군구코드, X좌표, Y좌표, 직장인구, 0~19세 직장인구, 20~29세 직장인구, 30~39세 직장인구, 40~49세 직장인구, 50~59세 직장인구, 60~69세 직장인구,
data.nsdi.go.kr
대한민국 최신 행정구역(SHP) 다운로드 – GIS Developer
www.gisdeveloper.co.kr
2. QGIS 내 SHP 파일 업로드
다운로드한 직장인구 데이터의 압축을 풀어주면 아래와 같이 파일 유형이 서로 다른 5개의 데이터를 확인할 수 있습니다.
SHP 파일만 업로드하면 되기 때문에 나머지는 그대로 유지한 채 레이어 창에 shp 파일을 드래그 앤 드롭해 줍니다.
동일한 방법으로 행정구역 시도 데이터도 업로드해줍니다.
* 참고) 직장인구 좌표값 5174, 행정구역 시도 좌표값 5179입니다.
또는, 메뉴창 중 '레이어 - 레이어 추가 - 벡터 레이어 추가'의 절차를 따라 아래와 같은 방법으로도 레이어 추가 가능합니다.
3. 행정구역(시도) 데이터 공간 인덱스 생성
1번 절차에도 언급했지만, 직장인구 데이터는 이미 공간 인덱스가 생성되어 있습니다.
하지만, 대다수 원천 데이터는 공간 인덱스가 미생성 되어있는 점을 참고해 주세요!
행정구역(시도) 데이터를 아래 절차에 따라 공간 인덱스 생성해 주시길 바랍니다.
또는, '벡터 - 데이터 관리 도구 - 공간 인덱스 생성'을 활성화하여 인덱스 생성할 입력 레이어를 선택해 줍니다.
상기 절차 중 어느 방법을 사용해도 공간 인덱스는 생성되기에 편한 방법으로 설정해 주시면 됩니다! 👍👍👍
공간 인덱스가 정상적으로 설정되었다면 아래 붉은색 박스 부분과 같이 내용 변경됩니다.
4. 서울 행정구역 내 직장인구 추출하기
상기 절차까지 완료되었다면, 아래와 같이 서울 행정구역 내 존재하는 직장인구 데이터를 추출해 보겠습니다.
상단 결과 같은 이미지를 얻으려면 아래 절차대로 진행이 필요하니 참고 부탁드립니다-!
*️⃣ 공간 처리에 사용할 SHP 파일 간 좌표값 일치해야 함 (직장인구 : 5174, 행정구역 시도 : 5179)
- 1️⃣ 행정구역 시도 데이터 좌표값 변경
- ctpvn 레이어 선택 - 마우스 우클릭 - 내보내기 - 벡터 레이어를 다른 이름으로 저장 - 좌표계 5174로 설정
간혹, 레이어 좌표계 설정으로 좌표 변경하기도 하지만 동일한 지도 내에 위치하지 않습니다.
🙏반드시 벡터 레이어를 다른 이름으로 저장해서 좌표계를 변경해줘야 합니다-!! 🙏
- ctpvn 레이어 선택 - 마우스 우클릭 - 내보내기 - 벡터 레이어를 다른 이름으로 저장 - 좌표계 5174로 설정
- 2️⃣ 서울 행정구역만 유지하기
- ctpvn 레이어 선택 - 마우스 우클릭 - 속성 테이블 열기 - 이후 절차는 아래 이미지 참고
- 3️⃣ 서울 행정구역 내 존재하는 직장인구 추출하기
- 벡터 - 지리 정보 처리 도구 - 잘라내기(clip) - 입력레이어(직장인구 레이어), 중첩 레이어(서울_5174) - 실행
- 우측 공간처리 툴박스 - 도형 수정 검색 - 서울_5174 레이어 선택 - 수정한 도형 레이어 생성
- 3️⃣ 절차 재수행 - 입력레이어(직장인구), 중첩레이어(수정한 도형)
중간에 geometry 이슈가 있긴 했지만, 0.70초 만에 서울 행정구역 내 직장인구 데이터를 추출하였습니다..! 👍
0.70초면 정말 빠르게 처리된 편인데요..?
공간 인덱스 기능을 몰랐을 땐 대용량 데이터일수록 기본 10분~30분 또는 그 이상의 시간을 소요할 만큼 작업속도가 더딘 편이었습니다.
게다가 컴퓨터 다운으로 작업물이 날아가면... 시간은 시간대로 날리고 허탈한 마음 밖에 들지 않아 몇 번이나 현타를 느꼈던 작업이랄까요...ㅎㅎ
샘플로 공간 인덱스가 생성되지 않은 대용량 데이터를 사용한다면 작업 속도 차이가 얼마나 나는지 보여드릴 수 있었을 텐데 이건 조금 아쉽네요.
글 작성하면서도 대용량 데이터를 찾아서 시도해보려고 했는데요.
노트북 메모리 부하가 걸려 QGIS가 강제종료되는 바람에... 인덱스 생성 전/후를 비교해서 보여드리긴 어려울 것 같습니다 😅
하지만, 대용량 데이터를 다룸에 있어서 공간 인덱스 생성 전과 후는 확연하게 느낄 수 있을 정도로 작업속도가 빨라집니다!
제가 속했던 팀에서도 해당 기능을 이용하여 훨씬 빠르게 공간 분석 진행할 수 있었거든요. 👍
단순히 공간 인덱스 생성 버튼을 누르는 것뿐이지만, 분석 속도 향상에 도움이 되길 바라며 내용 공유드립니다. 😀
긴 글 읽어주셔서 감사합니다-! 다음에 또 다른 Tip으로 돌아오겠습니다~!

'데이터 분석 > QGIS' 카테고리의 다른 글
[QGIS] 투명 백그라운드 설정하기 (0) | 2023.05.23 |
---|---|
법정동/행정동 매칭 이슈 해결하기 (0) | 2023.05.04 |