해결된 질문
작성
·
414
답변 1
0
안녕하세요. 답변이 늦었습니다.
csv 등의 데이터를 통해 포인트 레이어를 생성하는 방법은 QGIS 기능 중 "테이블에서 포인트 생성" (or "Create points layer from table" 영어 버전) 기능을 활용하시어, 추가가 가능합니다.
(참고 URL : https://freegistutorial.com/how-to-create-points-from-a-table-in-qgis/)
하지만, 질문해주신 대로 python을 이용하여 포인트를 만드시고자 한다면, 아래 예시 코드와 같이 코드를 실행시켜 포인트 레이어 생성 및 추가가 가능합니다.
import processing
# 레이어 지정 (현재 qgis 프로젝트에 추가된 레이어 명을 활용)
layer = QgsProject.instance().mapLayersByName("서울시 (안심이) CCTV 설치 현황")[0]
# 일시 산출물
output_point = 'memory:output_point'
# 테이블 투 포인트 파라미터 (input은 레이어로, x와 y는 layer의 속성에서 필드명 확인 후 지정. 좌표계는 x,y 좌표의 형식에 맞게 지정)
#tabletopointParams = {'INPUT' : input, 'XFIELD' : x, 'YFIELD' : y,'TARGET_CRS' : crs, 'OUTPUT' : output_point}
tabletopointParams = {'INPUT' : layer, 'XFIELD' : '경도', 'YFIELD' : '위도','TARGET_CRS' : 'EPSG:4326', 'OUTPUT' : output_point}
# 테이블 투 포인트 실행
tabletopoint = processing.run('native:createpointslayerfromtable', tabletopointParams)
# 결과 추가 및 완료 메시지
QgsProject.instance().addMapLayer(tabletopoint['OUTPUT'])
해당 코드를 실행하기 위해선, QGIS 실행 및 레이어에 csv 파일 추가가 필요합니다.
예시에 사용된 자료는 https://data.seoul.go.kr/dataList/OA-20923/S/1/datasetView.do#AXexec 에서 다운로드 받으실 수 있으며, QGIS 레이어에 추가 후 코드를 복사하여 실행해보시면 포인트 레이어가 생성되는 걸 확인하실 수 있습니다.
코드 사용 시 주의해야 할 점은,
QGIS 프로젝트에 csv 레이어가 추가되어 있어야 함 (레이어 이름과 코드의 레이어 이름을 동일하게 설정)
파라미터의 "XFIELD", "YFIELD"를 레이어의 필드명으로 설정해주어야 함
파라미터의 TARGET_CRS는 레이어의 x, y 좌표계에 따라 설정해야 함 (예시 자료는 위경도를 사용하고 있으므로 EPSG:4326 crs 를 사용하였음)
등 입니다.
저는 csv 등의 파일에서 포인트를 생성할 때는 python보단 QGIS의 기능을 더 자주 활용합니다.
그 이유는, 코드 실행을 위해선 레이어의 필드값을 확인해야 하기 때문에, 코드로 작성하는게 더 번거롭기 때문이며,
또한, 데이터를 직접 확인하여 생성된 포인트 레이어의 오류를 최소화하기 위함입니다.
질문하신 내용에 충분한 답변이 되었길 바라며, 추가적인 질문이 있다면 말씀 부탁드립니다.
감사합니다 :)
-UPWISE 답변-
상세한 답변 너무 감사합니다.
참고하여 해보겠습니다. ^^