inflearn logo
강의

講義

知識共有

QGIS Python自動化(ベクター編)Ver.2

외부데이터 연결

解決済みの質問

530

mjlee1240

投稿した質問数 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

mjlee1240

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

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

6-6

0

6

0

작업형 1 유형 부분

0

11

1

수강평 이벤트

0

17

2

작업형 1 (삭제예정, 구 버전)

0

31

2

강의노트는 어디있나요?

0

17

1

노션 학습 자료 권한 요청

0

17

1

수강기간 연장 문의드립니다.

0

21

1

2유형 레이블 인코딩 VS 원핫 인코딩

0

24

3

part2강의 문의사항입니다.

0

19

2

수강기간 연장 문의드립니다.

0

26

1

디졸브 강의 관련 문의

0

81

2

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

1

164

2

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

1

820

3

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

1

340

1

스크립트 불러오기

1

288

1

홀삭제 좌표 지정

1

279

1

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

1

379

2

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

1

317

1

merge 관련 문의 입니다.

2

1237

2

실전3 오류 문의

1

448

1

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

1

417

1

실습 중의 데이터 입력 오류

2

521

2

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

1

441

1

버퍼 강의 중 VWorld StateTile 레이어

2

442

1