게시글
질문&답변
2024.03.06
qgis에서 오차범위 내의 객체만 속성 결합을 할 수 있나요?
네 그럼 지난번 보내주신 자료를 바탕으로 한 코드를 작성하여 공유드립니다. 코드 실행에 앞서, 아래 코드 중 input_1, input_2 변수의 경로를 확인 후 아무것도 불러오지 않은 QGIS 창에서 실행을 부탁드립니다. input_1은 제공해주신 point 자료의 경로가 되도록, input_2는 line 자료의 경로로 수정하시면 됩니다. 코드 작동에 대해 설명을 드리면, 우선 최근접 이웃 수가 2 (neighbors = 2)가 되도록 최근접 속성 결합을 시행합니다. 그렇게 하면, line id 1, 2에 대한 정보가 point에 결합되며 이 때 결과물의 피처 수는 40개 (원본 point 피처 수 * 2)가 됩니다. 그 이후, point 자료의 heading 필드와, 결합된 line 자료의 azimuth_ 필드의 차이의 절댓값을 계산합니다. 계산값이 50보다 클 경우 (오차 범위를 벗어났다고 간주되는 경우), 해당 피처를 삭제하고, 최종적으로 해당 수정이 적용된 레이어를 shp 파일로 저장합니다. 결과적으론 20개의 피처만 결과물로 저장이 되고, 속성을 확인해보시면 id_2 (line 자료에서 결합된 id 속성)가 모두 1로 정상 결합 되어 있는 것을 확인할 수 있습니다. 추가적인 질문이 있다면 답글 부탁드립니다!! -UPWISE 답변- import processing import os #processing.algorithmHelp('native:joinbynearest') # 최근접 변수 설정 input_1 = 'C:/shp/point.shp' input_2 = 'C:/shp/line.shp' neighbors = 2 output_join = 'memory:output_joinbynearest' # 최근접 파라미터 joinbynearestParams = {'INPUT' : input_1, 'INPUT_2' : input_2, 'NEIGHBORS' : neighbors, 'OUTPUT' : output_join} # 최근접 실행 joinbynearest = processing.run('native:joinbynearest', joinbynearestParams) # 최근접 결과 레이어 추가 QgsProject.instance().addMapLayer(joinbynearest['OUTPUT']) # 추가된 레이어 변수로 불러오기 및 수정 활성화 layer = iface.activeLayer() layer.startEditing() # attribute 를 통해 heading 과 azimuth 차이 절댓값 계산 및 오차 범위 외 필드 제거 (절댓값 50 이상) for f in layer.getFeatures(): diff_abs = abs(f['heading'] - f['azimuth_']) if diff_abs > 50: layer.deleteFeature(f.id()) # 레이어 수정 적용 및 파일 저장 layer.commitChanges() QgsVectorFileWriter.writeAsVectorFormat(layer,'C:/shp/output_joinbynearest.shp','utf-8',driverName='ESRI Shapefile')
- 1
- 3
- 124
질문&답변
2024.03.01
qgis에서 오차범위 내의 객체만 속성 결합을 할 수 있나요?
안녕하세요. UPWISE 입니다. 지난번 자료를 공유해 주신 이후, 자료를 살펴보았습니다. 제공 주신 자료를 토대로 현재 가장 간단하게 해당 분석을 수행할 수 있는 방법은 아래와 같습니다. 1. " 최근접 거리를 이용하여 속성을 결합" 기능 사용 시 "최대 최근접 이웃 수"를 2 이상으로 하여 인근의 다수의 line 정보를 결합 (이 경우, 결과물의 피처 수는 [point 피처 수 * "최대 최근접 이웃 수" 설정 값] 만큼 도출됨) 2. 결과물의 속성 테이블에서 point의 "heading" 필드와 결합된 line의 "azimuth" 필드의 오차 범위를 비교하여 유효한 피처만 선택 (각도 오차 범위 ± 15도 등) 위 방법은 pyqgis 코드 작성을 통해 간단히 자동화가 가능합니다. 다만 제가 우려되는 점은 전체 원본 데이터가, 제공해주신 데이터 만큼 간단하게 구성되어 있는지 입니다. 아마 경로 line의 길이도 훨씬 길고 line 자체도 곡선형일 것으로 예상됩니다. 또한, point의 수와 line 으로 부터의 거리도 더 다양할 것 같은데, 이런 경우에는 line 개체를 개별 shp으로 쪼갠 뒤, 분석을 진행하는 등의 다른 방법을 모색해봐야 할 것 같습니다. 만약 현재 제공해주신 데이터를 바탕으로 한 분석 코드 제공을 원하신다면, 작성 후 공유 드려보도록 하겠습니다. 감사합니다. -UPWISE 답변-
- 1
- 3
- 124
질문&답변
2024.02.22
qgis에서 오차범위 내의 객체만 속성 결합을 할 수 있나요?
안녕하세요. UPWISE 입니다. 우선 제 강의를 수강해주셔서 감사합니다. 그리고 양해의 말씀을 먼저 드리면, 제가 다음주까지 처리해야하는 일들이 몰려있어서 질문주신 사항을 빠르게 확인하기가 어려울 것 같습니다. 물론 중간에 시간이 있다면 바로 답변 드릴 수 있겠지만, 늦어질 가능성이 있어서 말씀을 드립니다. 질문해주신 내용에선 "오차 범위 내에서 고려" 라고 말씀해주셨는데, 오차 범위가 무엇을 뜻하는 것인가요? 저는 차량 주행데이터 포인트와 주변의 여러 링크 라인 중, 가장 가까운 라인의 속성을 포인트에 결합해야 하는 것으로 이해하였는데, 혹시나 다른 방법으로 분석이 되어야 하는 것이라면 말씀 부탁드립니다. 그리고 가능하시다면, 사용하시는 데이터 (혹은 일부 샘플)를 카카오톡 오픈채팅으로 공유해주시면 훨씬 쉽게 답변을 드릴 수 있을 것 같습니다. 데이터 공유가 어려우시다면, 시각적인 정보를 확인할 수 있도록 GIS 화면을 캡처해주셔도 좋을 것 같습니다. 다시 한 번 답변이 늦어질 수 있음에 대한 양해의 말씀을 드리며, 저도 최대한 빠르게 답변 드릴 수 있도록 하겠습니다. 감사합니다. -UPWISE 답변-
- 1
- 3
- 124
질문&답변
2024.02.21
주제도4:강남구 건물높이도 제작 조판 관련 질문드립니다.
안녕하세요. UPWISE 입니다. 해당 강의의 영상을 확인해 본 결과, 최종 결과물의 이미지를 따로 실행하여 함께 보여드렸던 것입니다. 최종 결과물 이미지는 다운로드 받으신 " 강의자료.zip "에서 ["02.실전예제" > "03.results"] 순서의 폴더로 들어가시면 확인하실 수 있습니다. 실전 예제 부분을 진행하실 때, 최종 결과물 이미지를 함께 열어서 동시에 확인하며 진행하시는 방법을 추천드립니다. 감사합니다 :) -UPWISE 답변-
- 1
- 1
- 63
질문&답변
2024.01.17
인코딩 적용관련 문의 드립니다.
안녕하세요. UPWISE 입니다. 혹시 작업에 사용했던 파일 (혹은 일부 샘플)과 작성하신 코드를 공유해주실 수 있을까요? 추가한 레이어의 어떠한 속성이 한글로 되어 있는지를 정확히 알아야 할 것 같습니다. (레이어 이름이 한글, 레이어 내 속성, 경로 내 한글 포함 등 어떠한 상황인지) 데이터나 코드의 공개가 어려운 상황이라면, 제 강사 프로필의 오픈 채팅을 통해 공유해주시거나 사용하신 데이터의 형식을 설명해주셔도 좋을 것 같습니다. 감사합니다. -UPWISE 답변-
- 1
- 1
- 115
질문&답변
2023.12.12
스크립트 불러오기
안녕하세요. UPWISE 입니다. 질문에 답변드리기에 앞서, 강의 수강과 질문에 감사의 말씀 드립니다 :) 첨부해주신 파이썬 스크립트는, processing.algorithmHelp('ID') 를 통해 확인된 각 파라미터와 그 사용법을 주석과 함께 예시로 직접 작성하여 공유드린 파일입니다. 따라서, 각 코드의 설명과 예제를 확인할 수 있는 스크립트는, 본 강의에서 다루고 있는 [buffer, clip, difference, merge, reprojection, spatial_index, extraction, split] 기능 및 실전123 에 한해서만 제공되고 있습니다. 질문 주신 내용에 따르면 래스터 자료를 활용하고자 하시는 것 같은데, 추후 래스터+파이썬 자동화 강의가 개설되면 안내드리겠습니다. 감사합니다!! -UPWISE 답변-
- 1
- 1
- 117
질문&답변
2023.12.08
홀삭제 좌표 지정
안녕하세요. UPWISE 입니다. 혹시 디졸브한 레이어와, 홀삭제를 한 레이어의 위치가 어떻게 차이 나는지 스크린샷을 요청드려도 될까요? 말씀해 주신대로, 홀삭제에는 별도로 좌표계 설정이 없어서 어떤 원인으로 위치가 다르게 나타났는지 확인이 필요할 것 같습니다. 또한 가능하다면 홀삭제 기능 실행 시 면적 옵션을 사용하셨는지; 그리고, 예시와 다른 shp 파일을 사용하셨다면 해당 파일에 대한 정보도 함께 말씀 부탁드립니다. 감사합니다. -UPWISE 답변-
- 1
- 1
- 101
질문&답변
2023.10.29
Buffer 만드는 강의에서 코드 오류인 것 같습니다.
안녕하세요. UPWISE 입니다. 최근 일주일 간 바쁜 외부 일정이 있어서, 질문 확인 및 답변이 늦어졌습니다. 빠르게 확인드리지 못한 점 양해 부탁드립니다. 말씀해주신 내용은, buffer 부분의 파이썬 코드 예시입니다. 현재 입력해주신 코드에서 오류가 발생하는 이유는 " output_temp_buffer" 의 변수가 'memory_distance_practice'로 되어있기 때문입니다. 해당 부분은 버퍼 실행 후의 결과물을 어떻게 지정할지에 대한 내용이며, 'memory:distance_practice'로 작성이 되어야 합니다. 의미를 풀이하자면, buffer 코드의 아웃풋은 별도 저장 없이 임시 레이어 (memory)로 만들겠다는 뜻이며, 그 레이어의 이름을 "distance_practice"로 설정한다는 의미입니다. 써주신 예시 코드에선 memory 뒤가 콜론이 아니라 언더바로 되어있어서, 요구하는 dict 형식이 아닌 str로 인식한 것 같습니다. 그리고, 말씀해주신 대체코드를 사용하는 것도 하나의 방법입니다. 이경우, 맵에 넣을 레이어를 선택하는 부분이 buffer['OUTPUT']가 되고, 그 레이어의 이름이 'Buffered Layer'가 되는 경우입니다. 레이어를 추가할 때 두 방법 모두 좋은 방법으로 보이며, 작성자께서 편하신 방법을 활용하시면 될 것 같습니다. 제 강의에 관심 가져주셔서 정말 감사드리며, 발생하는 오류에 대한 해결법까지 확인하여 코멘트 남겨주셔서 정말 감사합니다. 앞으로도 강의를 들으시면서 의문이 생기는 점이나, 정상 작동하지 않는 부분이 있다면 언제든 질문 부탁드립니다. 감사합니다!! -UPWISE 답변-
- 1
- 2
- 193
질문&답변
2023.10.07
강의 자료는 어디서?(포인트 5186 자료는 어디서?
안녕하세요. UPWISE 입니다. 강의를 수강해주셔서 감사합니다. 모든 강의 자료는 커리큘럼의 섹션 0에 "섹션 별 활용 데이터 (수업노트 참고)" 강의를 클릭하시면 다운로드 할 수 있습니다. (사진)위와 같은 화면에서, 우측 상단의 "수업 자료"를 누르셔서 다운로드 받으시면 됩니다. 감사합니다!! -UPWISE 답변-
- 1
- 1
- 113
질문&답변
2023.10.05
TMS for Korea 설치 이후 맵 불러오기 관련 질문드립니다.
안녕하세요. UPWISE 입니다. 저도 방금 확인해보았는데, Vworld의 Gray가 제대로 추가되지 않는 동일한 현상을 발견하였습니다. 또한, 네이버의 모든 종류의 지도가 제대로 불러와 지지 않았습니다. 플러그인 팝업에서 접속가능한 Github 페이지로 들어가보니, 최신 수정이 2022년 3월로 되어있었습니다. 아마, 그 사이에 일부 지도 서버의 주소가 바뀌는 등 오류가 발생한 것으로 생각됩니다. 저도 매번 쓰는 지도만 사용하다 보니, 제대로 작동하지 않는 지도 종류가 있는지 처음 알게 되었네요. TMS 플러그인에서 불러와 지지 않는 지도를 추가할 수 있는 다른 방법을 찾아보고 새롭게 답변을 달도록 하겠습니다. 강의 수강에 감사드리며, 수강 중 다른 질문 사항이 생긴다면 언제든 질문 부탁드립니다. 감사합니다 :) -UPWISE 답변-
- 1
- 1
- 770