inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

QGIS 파이썬 자동화 (벡터편) Ver.2

외부데이터 연결

해결된 질문

530

이미진

작성한 질문수 1

1

안녕하세요

동영상을 보고 파이썬 콘솔에서 shp파일로는 불러와서 작업하는 아주 유용하게 사용하고 있습니다~

그런데 궁금한건 외부데이터(csv,txt .. )등의 x,y값을 이용하여 python으로 포인트를 만들고자 한다면 어떻게 하나요???

python QGIS GIS

답변 1

0

UPWISE

안녕하세요. 답변이 늦었습니다.

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 레이어에 추가 후 코드를 복사하여 실행해보시면 포인트 레이어가 생성되는 걸 확인하실 수 있습니다.

코드 사용 시 주의해야 할 점은,

  1. QGIS 프로젝트에 csv 레이어가 추가되어 있어야 함 (레이어 이름과 코드의 레이어 이름을 동일하게 설정)

  2. 파라미터의 "XFIELD", "YFIELD"를 레이어의 필드명으로 설정해주어야 함

  3. 파라미터의 TARGET_CRS는 레이어의 x, y 좌표계에 따라 설정해야 함 (예시 자료는 위경도를 사용하고 있으므로 EPSG:4326 crs 를 사용하였음)

등 입니다.

저는 csv 등의 파일에서 포인트를 생성할 때는 python보단 QGIS의 기능을 더 자주 활용합니다.
그 이유는, 코드 실행을 위해선 레이어의 필드값을 확인해야 하기 때문에, 코드로 작성하는게 더 번거롭기 때문이며,
또한, 데이터를 직접 확인하여 생성된 포인트 레이어의 오류를 최소화하기 위함입니다.

질문하신 내용에 충분한 답변이 되었길 바라며, 추가적인 질문이 있다면 말씀 부탁드립니다.

감사합니다 :)

-UPWISE 답변-

0

이미진

상세한 답변 너무 감사합니다.

참고하여 해보겠습니다. ^^

Breadth (등락 비율) 분석

0

5

1

교육자료가 너무 오래되어서 지시한대로 진행하려 해도 안됩니다.

0

7

1

작업형1 - 연습문제 16~39 풀이는 몇강을 보면 되나요?

0

10

1

26 .강의 프롬프트와 프롬프트파일(part3) 내용이 차이가 있어요.

0

18

2

작업형 1 -연습문제 4-6

0

20

1

구글 그래피티 마켓 오류...?!

0

28

2

디스코드 소통창구는 없어졌나요 ??

0

25

1

FOREIGN KEY 정리하기, 영상대로 SQL코드 복붙해도 안되요.

0

19

1

모델 서빙과 관련된 강좌 출시 예정된 바가 있으신지 여쭤봅니다!

0

23

2

모델 서빙과 관련된 강좌가 출시되는지 질문드립니다.

0

19

2

디졸브 강의 관련 문의

0

82

2

섹션4 버퍼실습 자료 어디있을까요?

1

164

2

qgis에서 오차범위 내의 객체만 속성 결합을 할 수 있나요?

1

820

3

인코딩 적용관련 문의 드립니다.

1

341

1

스크립트 불러오기

1

288

1

홀삭제 좌표 지정

1

279

1

Buffer 만드는 강의에서 코드 오류인 것 같습니다.

1

380

2

강의 자료는 어디서?(포인트 5186 자료는 어디서?

1

317

1

merge 관련 문의 입니다.

2

1237

2

실전3 오류 문의

1

449

1

실전1_와이파이 소외지역

1

417

1

실습 중의 데이터 입력 오류

2

521

2

안녕하세요 향후 계획이 궁금합니다^^

1

441

1

버퍼 강의 중 VWorld StateTile 레이어

2

442

1