QGIS 결합 오류는 대부분 ①결합 키 컬럼 값 형식 불일치 ②좌표계(CRS) 불일치 ③공간 경계 정밀도 문제 중 하나예요. 속성 결합 시 키 값 포맷을 통일하고, 공간 결합 시 buffer 적용이나 intersects 연산으로 변경해 재시도해 보세요.
QGIS 결합의 종류
QGIS에서 ‘결합’이라고 하면 세 가지 유형이 있어요.
| 종류 | 설명 | 오류 원인 |
|---|---|---|
| 속성 결합(Attribute Join) | 레이어에 다른 테이블의 속성 추가 | 결합 키 불일치, 좌표계 문제 |
| 공간 결합(Spatial Join) | 위치 관계 기준으로 속성 결합 | 경계 불일치, 공간 인덱스 누락 |
| 라벨 표현식 결합 | 필드를 합쳐 라벨로 표시 | 연산자 오류, 따옴표 누락 |
속성 결합이 안 될 때
원인 1 — 결합 키 컬럼이 다를 때
두 레이어에서 결합에 사용할 컬럼(예: 지역코드)의 값 형식이 달라야 해요.
– 한쪽은 숫자(Integer), 다른 쪽은 문자(String)인 경우
– 한쪽에 앞 공백이 있거나 값의 포맷이 다른 경우
해결: 속성 테이블에서 두 레이어의 결합 키 값을 직접 비교해 보세요. 필요하면 필드 계산기로 값 포맷을 통일하세요.
원인 2 — 좌표계(CRS) 불일치
레이어 간 좌표계가 다르면 공간 연산이 제대로 작동하지 않아요.
해결: 레이어 속성 → 정보에서 좌표계 확인 후, 레이어 저장 시 동일한 좌표계로 변환(내보내기 → 다른 이름으로 저장)하세요.
공간 결합이 안 될 때
공간 결합은 단순히 좌표가 같은지가 아니라, 교차(intersects)·포함(contains) 등 공간 연산에 따라 결과가 달라져요.
원인 — 경계가 정확히 일치하지 않을 때
점 레이어가 면 레이어의 경계선 위에 있는 경우 contains 연산이 실패할 수 있어요.
해결 방법:
1. 면 레이어에 buffer를 적용해 경계를 조금 넓히기
2. 공간 결합 옵션에서 op=contains 대신 op=intersects로 변경
3. 공간 인덱스 생성: 레이어 → 속성 → 공간 인덱스 생성
라벨 표현식 결합이 안 될 때
여러 필드를 결합해 라벨을 만들 때 ‘||’ 연산자를 사용해요.
예시: "이름" || ' / ' || "코드"
→ "홍길동 / 12345" 형태로 표시됨
자주 하는 실수:
– 텍스트 구분자를 큰따옴표로 쓰는 경우 → 반드시 작은따옴표로 감싸야 해요
– 필드명을 작은따옴표로 쓰는 경우 → 필드명은 큰따옴표로 감싸야 해요
올바른 예: "이름" || '/' || "코드"
잘못된 예: '이름' || '/' || '코드' (필드가 아닌 문자열로 인식)
결합 실패 후 레이어가 제대로 생성되지 않을 때
파이프라인에서 인코딩·환경 변수 문제로 결합 결과 레이어가 비어 있거나 생성되지 않는 경우예요.
점검 방법:
1. QGIS 로그 메시지 패널 확인 (보기 → 패널 → 로그 메시지)
2. GDAL 환경 변수 확인
3. QGIS 재시작 후 재시도
4. 다른 파일 형식(Shapefile → GeoPackage)으로 저장 후 결합 시도
자주 하는 질문
Q. QGIS에서 속성 결합을 해도 필드가 추가되지 않는 이유는 무엇인가요?
가장 흔한 이유는 결합 키 값이 일치하지 않는 거예요. 한쪽이 정수(1, 2, 3)이고 다른 쪽이 문자열(“1”, “2”, “3”)이면 일치 항목이 0개가 돼요. 속성 테이블을 직접 열어 두 레이어의 결합 키 값을 눈으로 비교해 보세요.
Q. 공간 결합에서 점이 면 안에 있는데 결합이 안 되는 이유가 뭔가요?
경계 처리 방식 때문이에요. 점이 면의 경계선 바로 위에 있거나 부동소수점 오차가 있으면 contains 연산이 실패할 수 있어요. 면 레이어에 소폭 buffer를 적용하거나 intersects 연산으로 변경해 시도해 보세요.
Q. QGIS 라벨 표현식에서 두 필드를 합치려면 어떻게 하나요?
|| 연산자로 결합해요. 예를 들어 “이름” || ‘ ‘ || “코드” 형태로 쓰면 두 필드 사이에 공백을 넣어 합칠 수 있어요. 필드명은 큰따옴표, 텍스트 구분자는 작은따옴표로 구분하는 것이 핵심이에요.
Q. QGIS 결합 결과가 빈 레이어로 나올 때 어떻게 확인하나요?
QGIS 보기 → 패널 → 로그 메시지에서 오류 내용을 확인하세요. 인코딩 문제나 GDAL 오류 메시지가 있으면 해당 메시지를 검색해 해결 방법을 찾을 수 있어요. QGIS를 재시작하거나 레이어를 GeoPackage 형식으로 변환 후 재시도하는 방법도 효과적이에요.
자주 묻는 질문
가장 흔한 이유는 결합 키 값이 일치하지 않는 거예요. 한쪽이 정수(1, 2, 3)이고 다른 쪽이 문자열('1', '2', '3')이면 일치 항목이 0개가 돼요. 속성 테이블을 직접 열어 두 레이어의 결합 키 값을 눈으로 비교해 보세요.
경계 처리 방식 때문이에요. 점이 면의 경계선 바로 위에 있거나 부동소수점 오차가 있으면 contains 연산이 실패할 수 있어요. 면 레이어에 소폭 buffer를 적용하거나 intersects 연산으로 변경해 시도해 보세요.
|| 연산자로 결합해요. 예를 들어 "이름" || ' ' || "코드" 형태로 쓰면 두 필드 사이에 공백을 넣어 합칠 수 있어요. 필드명은 큰따옴표, 텍스트 구분자는 작은따옴표로 구분하는 것이 핵심이에요.
QGIS 보기 → 패널 → 로그 메시지에서 오류 내용을 확인하세요. 인코딩 문제나 GDAL 오류 메시지가 있으면 해당 메시지를 검색해 해결 방법을 찾을 수 있어요. QGIS를 재시작하거나 레이어를 GeoPackage 형식으로 변환 후 재시도하는 방법도 효과적이에요.