Buffer 만드는 강의에서 코드 오류인 것 같습니다.
import processing
import os
import time
start = time.time()
shpPath_two_points = 'Z:/GIS_Study/Inflearn/Section1/SHP/01_buffer/two_points_5186.shp'
shpPath_triangle = 'Z:/GIS_Study/Inflearn/Section1/SHP/01_buffer/triangle_5186.shp'
#distance
buffer_distance = 300
output_temp_buffer = 'memory_distance_practice'
bufferParams = {'INPUT':shpPath_two_points, 'DISTANCE':buffer_distance, 'OUTPUT':output_temp_buffer}
#버퍼 실행
buffer = processing.run('native:buffer', bufferParams)
#버퍼 결과 추가 및 완료 메세지
QgsProject.instance().addMapLayer(buffer['OUTPUT']) > 알려주신 코드에서 오류 발생
print('버퍼 완료:', time.time()-start)
*QgsProject.instance().addMapLayer(buffer['OUTPUT']) 대체 코드
# QgsVectorLayer로 변환
buffer_layer = QgsVectorLayer(buffer['OUTPUT'], 'Buffered Layer', 'ogr')
# 맵에 추가
QgsProject.instance().addMapLayer(buffer_layer)
print('버퍼 완료:', time.time()-start)
즉 문자열로 받아서 안된다고 하네요.. 위 코드로 대체하니 결과물이 정상적으로 나옵니다.
Answer 2
1
안녕하세요. UPWISE 입니다.
최근 일주일 간 바쁜 외부 일정이 있어서, 질문 확인 및 답변이 늦어졌습니다.
빠르게 확인드리지 못한 점 양해 부탁드립니다.
말씀해주신 내용은, buffer 부분의 파이썬 코드 예시입니다. 현재 입력해주신 코드에서 오류가 발생하는 이유는
"output_temp_buffer" 의 변수가 'memory_distance_practice'로 되어있기 때문입니다.
해당 부분은 버퍼 실행 후의 결과물을 어떻게 지정할지에 대한 내용이며, 'memory:distance_practice'로 작성이 되어야 합니다. 의미를 풀이하자면, buffer 코드의 아웃풋은 별도 저장 없이 임시 레이어 (memory)로 만들겠다는 뜻이며, 그 레이어의 이름을 "distance_practice"로 설정한다는 의미입니다.
써주신 예시 코드에선 memory 뒤가 콜론이 아니라 언더바로 되어있어서, 요구하는 dict 형식이 아닌 str로 인식한 것 같습니다.
그리고, 말씀해주신 대체코드를 사용하는 것도 하나의 방법입니다. 이경우, 맵에 넣을 레이어를 선택하는 부분이 buffer['OUTPUT']가 되고, 그 레이어의 이름이 'Buffered Layer'가 되는 경우입니다.
레이어를 추가할 때 두 방법 모두 좋은 방법으로 보이며, 작성자께서 편하신 방법을 활용하시면 될 것 같습니다.
제 강의에 관심 가져주셔서 정말 감사드리며, 발생하는 오류에 대한 해결법까지 확인하여 코멘트 남겨주셔서 정말 감사합니다.
앞으로도 강의를 들으시면서 의문이 생기는 점이나, 정상 작동하지 않는 부분이 있다면 언제든 질문 부탁드립니다.
감사합니다!!
-UPWISE 답변-
0
안녕하세요 김성훈(Tramerei) 님, 인프런 AI 인턴이에요.
보내주신 코드와 관련해서 알려드릴게 있습니다.
오류가 발생하는 부분은 “QgsProject.instance().addMapLayer(buffer[‘OUTPUT’])” 코드입니다. 해당 코드에서 오류가 발생하는 이유는 ‘OUTPUT’ 변수가 문자열로 받아져서 정상적으로 작동하지 않는 것 같습니다.
대신에 아래 코드로 대체하시면 정상적으로 작동할 것입니다.
buffer_layer = QgsVectorLayer(buffer[‘OUTPUT’], ‘Buffered Layer’, ‘ogr’)
QgsProject.instance().addMapLayer(buffer_layer)
감사합니다!
작업형 1 유형 부분
0
9
1
수강평 이벤트
0
16
2
작업형 1 (삭제예정, 구 버전)
0
28
2
강의노트는 어디있나요?
0
15
1
노션 학습 자료 권한 요청
0
15
1
수강기간 연장 문의드립니다.
0
20
1
2유형 레이블 인코딩 VS 원핫 인코딩
0
21
3
part2강의 문의사항입니다.
0
19
2
수강기간 연장 문의드립니다.
0
26
1
인덱스 슬라이싱
0
26
2
디졸브 강의 관련 문의
0
81
2
섹션4 버퍼실습 자료 어디있을까요?
1
164
2
qgis에서 오차범위 내의 객체만 속성 결합을 할 수 있나요?
1
820
3
인코딩 적용관련 문의 드립니다.
1
340
1
스크립트 불러오기
1
288
1
홀삭제 좌표 지정
1
279
1
강의 자료는 어디서?(포인트 5186 자료는 어디서?
1
317
1
merge 관련 문의 입니다.
2
1237
2
실전3 오류 문의
1
448
1
실전1_와이파이 소외지역
1
417
1
실습 중의 데이터 입력 오류
2
521
2
외부데이터 연결
1
530
1
안녕하세요 향후 계획이 궁금합니다^^
1
441
1
버퍼 강의 중 VWorld StateTile 레이어
2
442
1

