티스토리 뷰

입지 선정 프로젝트를 진행하다보면 QGIS를 사용하는 것이 편할 때가 많다!

자꾸 검색하게 되는 QGIS 사용법 정리해둬야겠다.

환경은 Mac M1 Pro !!

 

csv 불러오기

레이어 > 레이어 추가 > 벡터 레이어 추가 > 구분자로 분리된 텍스트

  • 인코딩도 설정 가능하다! (CP949, EUC-KR, UTF-8 등)
  • EPSG:4326 (WGS 84) 좌표계라면 X 필드를 경도 컬럼, Y 필드를 위도 컬럼으로 설정해준다.

[필드 값으로 속성 결합] 데이터 결합

Python에서의 join과 같은 기능을 하는 듯 하다.

  • [입력 레이어]와 [해당 레이어 안의 테이블 필드]
  • [입력 레이어2]와 [해당 레이어 안의 테이블 필드]

를 선택하면 해당 필드(Python에서의 컬럼)를 기준으로 레이어가 결합된다.

이때, 두 레이어(데이터)에 공통 속성(컬럼)이 존재하지 않으면 결합할 수 없다.

QGIS는 다른 언어들과 용어가 비슷한 듯 달라서 처음에 헷갈린당..

[위치에 따라 속성 결합] 그리드 데이터와 불러온 csv 데이터 결합

위의 [필드 값으로 속성 결합] 기능은 공통 컬럼이 존재해야 결합하는 기능이고,

csv 데이터의 위도 경도에 맞게 그리드 데이터와 연결할 때는 공통 컬럼이 없기 때문에 다른 기능을 사용해야 한다.

(왼) QGIS에서는 [공간 처리 > 공간 처리 툴박스]에서 원하는 기능을 검색하면 바로 찾을 수 있다. (편하당)

(오) [벡터 > 데이터 관리 도구 > 위치에 따라 속성 결합]

 

내가 원하는 데이터의 위도 경도에 맞게 그리드 데이터와 결합하기 위해서는 [join attributes by location (위치에 따라 속성 결합)] 기능을 사용해야 한다.

파라미터를 간단히 설명하자면,

  1. 기준 레이어: 결합하고자 하는 속성(ex. 그리드 id, 시군구명)이 붙는 데이터
  2. 조인 레이어: 결합하고자 하는 속성(ex. 그리드 id, 시군구명)을 가지고 있는 데이터
  3. 기하학적 조건: 어떤 '위치'의 상태를 기준으로 결합할 것인가에 대한 설정
  4. 추가할 필드: 조인 레이어에서 사용할 필드

자세한 기하학적 조건은 토글을 참고!

더보기

 

그림 25.46 레이어들 사이의 공간 관계성 검색 <- 얘 누르면 QGIS 공식 문서로 이동!

앞의 그림을 이용해서, 녹색 원 피처를 주황색 직사각형 피처와 공간적으로 비교해서 녹색 원 피처를 검색할 것입니다. 다음과 같은 기하 서술을 사용할 수 있습니다:

교차(Intersection)

도형들이 서로 교차하는지 검증합니다. 도형들이 공간적으로 교차하는 경우 (공간의 어떤 부분이라도 공유 – 중첩 또는 접하는 경우) 1(참)을 반환하고 교차하지 않는 경우 0(거짓)을 반환합니다. 앞의 그림에서, 1번, 2번 및 3번 원을 반환할 것입니다.

포함(Contain)

B의 포인트 가운데 A 외부에 있는 포인트가 하나도 없고 B 내부의 포인트 가운데 최소한 하나가 A의 내부에 있는 경우에만 1(참)을 반환합니다. 앞의 그림에서 어떤 원도 반환하지 않지만, 반대로 검색할 경우 직사각형이 1번 원을 완전히 담고 있기 때문에 직사각형을 반환할 것입니다. 내부(are within) 의 역(逆)입니다.

분절(Disjoint)

도형들이 공간의 어떤 부분도 공유하지 않는 – 중첩하지도 접하지도 않는 경우 1(참)을 반환합니다. 4번 원만 반환합니다.

동등(Equal)

도형들이 정확하게 동일한 경우에만 1(참)을 반환합니다. 아무 원도 반환하지 않을 것입니다.

접촉(Touch)

도형이 다른 도형과 접하는지 검증합니다. 도형들이 최소한 포인트 1개를 공유하지만 각 도형의 내부가 교차하지 않는 경우 1(참)을 반환합니다. 3번 원만 반환합니다.

중첩(Overlap)

도형이 다른 도형과 중첩하는지 검증합니다. 도형들이 동일한 차원이며 공간을 공유하지만 서로를 완전히 담고 있지 않은 경우 1(참)을 반환합니다. 2번 원만 반환합니다.

내부(Are within)

도형이 다른 도형 내부에 있는지 검증합니다. A가 B 내부에 완전히 들어가 있는 경우 1(참)을 반환합니다. 1번 원만 반환합니다.

공간교차(Cross)

입력 도형들이 전부는 아니지만 일부 내부 포인트를 공유하지만 입력 도형의 최고 차원보다 낮은 차원에서 실제로 가로지르는 경우 1(참)을 반환합니다. 예를 들어, 폴리곤을 가로지르는 라인은 라인으로서 공간교차할 것입니다(참). 라인을 가로지르는 라인은 포인트로서 공간교차할 것입니다(참). 폴리곤을 가로지르는 폴리곤은 폴리곤으로서 가로지릅니다(거짓). 앞의 그림에서, 아무 원도 반환하지 않을 것입니다.

자세한 파라미터 설명은 토글을 참고!

더보기

파라미터

라벨 명칭 유형 설명
Input Layer INPUT [vector: any] 입력 벡터 레이어. 산출 레이어는 이 레이어의 피처와 두 번째 레이어에 있는 일치하는 피처의 속성으로 이루어질 것입니다.
Join layer JOIN [vector: any] 소스 레이어 속성 테이블에 이 벡터 레이어의 속성을 추가 할 것입니다.
Geometric predicate PREDICATE [enumeration] [list]
기본값: [0]
기하하적 기준을 선택합니다. 다음 가운데 하나 이상을 선택할 수 있습니다:
  • 0 — 교차(intersect)
  • 1 — 포함(contain)
  • 2 — 동등(equal)
  • 3 — 접촉(touch)
  • 4 — 중첩(overlap)
  • 5 — 내부(within)
  • 6 — 공간 교차(cross)
Fields to add (leave empty to use all fields)
부가적
JOIN_FIELDS [tablefield: any] [list] 사용자가 추가하고자 하는 특정 필드를 선택합니다. 기본적으로 모든 필드를 추가합니다.
Join type METHOD [enumeration] 최종 결합 레이어의 유형을 지정합니다. 다음 가운데 하나를 선택할 수 있습니다:
  • 0 — 일치하는 각 피처마다 개별 피처를 생성합니다. (1대다)
  • 1 — 처음으로 일치하는 피처의 속성만 가져옵니다. (1대1)
  • 2 — 최대 중첩 영역을 가진 피처의 속성만 가져오기 (1대1)
Discard records which could not be joined DISCARD_NONMATCHING [boolean]
기본값: False
산출물에서 결합시킬 수 없는 입력 레이어 레코드를 제거합니다.
Joined field prefix
부가적
PREFIX [string] 결합된 필드명에 접두어를 추가합니다. 결합된 필드를 더 쉽게 식별하고 명칭의 충돌을 방지하기 위해서입니다.
Joined layer OUTPUT [same as input]
기본값: [Createtemporarylayer]
결합된 속성을 저장할 산출 벡터 레이어를 지정합니다. 다음 가운데 하나로 저장할 수 있습니다:
  • 임시 레이어 생성 (TEMPORARY_OUTPUT)
  • 파일로 저장
  • Geopackage로 저장
  • PostGIS 테이블로 저장
이 파라미터에서 파일 인코딩도 변경할 수 있습니다.
Unjoinable features from first layer NON_MATCHING [same as input]
기본값: [Skipoutput]
첫 번째 레이어에서 결합할 수 없는 피처를 저장할 산출 벡터 레이어를 지정합니다. 다음 가운데 하나로 저장할 수 있습니다:
  • 산출물 건너뛰기
  • 임시 레이어 생성 (TEMPORARY_OUTPUT)
  • 파일로 저장
  • Geopackage로 저장
  • PostGIS 테이블로 저장
이 파라미터에서 파일 인코딩도 변경할 수 있습니다.

 

 

이 기능을 쉽게 설명하기 위해 내가 가진 데이터를 소개해보자면, 아래와 같다.

  • 무인단속카메라 데이터 (무인단속카메라.csv)
    • 위도, 경도 컬럼이 존재함
    • 하나하나의 행이 무인단속카메라 하나
  • 그리드 데이터 (total_grid.shp)
    • 그리드 id 컬럼이 존재함
    • 하나하나의 행이 그리드 하나

 

[위치에 따라 속성 결합]은 크게 2가지 활용 방법이 있다.

  1. 기준 레이어무인단속카메라.csv & 조인 레이어그리드.shp
    • 무인단속카메라의 위도 경도가 속하는 그리드 id가 오른쪽에 붙는다.
    • 결합 결과 : 무인단속카메라 데이터 +  무인단속카메라 별 그리드 id
  2. 기준 레이어그리드.shp & 조인 레이어무인단속카메라.csv
    • 그리드 별로 그 안에 속하는 무인단속카메라의 개수가 오른쪽에 붙는다.
    • 결합 결과 : 그리드 데이터 + 그리드 별 무인단속카메라 개수

[공간 인덱스 생성] 속도 가속화

무인단속카메라.csv도, 그리드.shp도 데이터가 크다 보니까

거의 1시간을 돌렸는데 67%다.. 안되겠다 싶어서 찾아본 방법!

23.1.14.6. 공간 인덱스 생성하기!!!!!!! <- QGIS 문서를 참고했다.

하는 방법은 완전 간단하다 !!

벡터 > 데이터 관리 도구 > 공간 인덱스 생성...

이거 하나면 속도가 몇만배 빨라지는 기분이다.

약 30만 개 행을 가진 csv 데이터(기준 레이어)에 42만 개 행을 가진 shp 데이터(결합레이어)를 붙이려니 진행율이 0에서 움직이질 않았었는데,

shp 데이터(결합레이어)에 공간 인덱스 생성하고 나선 1분 내로 결합된 것 같다.


QGIS와 조금은 친해진 기분이 든당....

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함