QGIS 내에서 CSV 파일을 다시로드 하시겠습니까?


9

QGIS를 사용하여 Matlab 시뮬레이션의 결과를 설명합니다. Matlab은 QGIS 내의 shapefile에 연결된 CSV 파일을 생성합니다.

현재 Matlab 시뮬레이션의 새로운 결과를 보여주기 위해 QGIS를 닫았다가 다시 열어야합니다.

QGIS를 닫았다가 다시 열지 않고도 CSV 파일의 속성 테이블을 다시로드 할 수 있습니까?


감사합니다 @Jason 귀하의 팁이 저에게 매력적이었습니다. QGIS 3.10을 사용하는 경우 옵션은 properties-> source ! [propertiescreatespatialindex ] ( i.stack.imgur.com/5G3y5.png )
Hannes Buhrmann에서

답변:


3

매번 QGIS를 닫고 여는 것보다 쉽지만은 않지만 대체 워크 플로를 제안 할 수 있습니다.

  • shapefile을 공간으로 가져 오기
  • "가상 TXT / CSV 옵션을 사용하여 CSV를 공간으로 가져 오기
  • 공간 테이블 (shapefile)을 가상 CSV 테이블에 결합하여 공간 뷰에서 공간 뷰 작성

이제 공간 레이어와 마찬가지로 QGIS에 뷰를 표시 할 수 있으며 공간 라이트에서 조인 된 값을 사용할 수 있습니다. 그러나 CSV를 다시 만들 때마다 가상 CSV 테이블을 삭제하고 다시 연결해야합니다. 그런 다음 QGIS를 새로 고치면 새 값이 표시됩니다. 이것은 단지 시간이 걸리며, 더 나아가 많은 뷰를 정의하고 필요한 경우 이전 뷰를 유지할 수 있습니다 ...

HTH


2

공간적 형식을 사용하지 않고 여전히 이것에 대한 답을 찾고있는 사람이라면, 나는 효과가있는 것을 발견했습니다.

CSV가 있고 조인을 사용하여 공간 레이어에 조인하는 경우 조인 옵션 중 하나는 레이어를 캐시하는 것입니다. 레이어의 속성으로 이동 한 다음 결합 된 데이터로 이동하고 결합 편집을 클릭하면이 옵션을 사용할 수 있습니다. 캐시 옵션비활성화하면 csv가 변경된 후 데이터 계층을 다시로드 한 다음 맵을 다시 페인트하여 새로 고친 맵 뷰를 얻을 수 있습니다.

파이썬 콘솔에서 다시로드하고 다시 칠할 수 있습니다. 먼저 맵 캔버스, csv 및 레이어의 이름을 정의해야합니다.

mc = iface.mapCanvas()
layer=mc.currentLayer()
csv_layer=mc.currentLayer()

currentLayer 메소드를 사용할 때 콘솔에서 레이어의 이름을 지정할 때 레이어를 활성화해야합니다 ( '현재 레이어'여야 함).

그런 다음 결합에 대해 캐시 옵션을 해제로 설정 한 경우 csv를 변경 한 후 Python 콘솔에서 다음 두 명령을 사용하여 맵을 다시 그릴 수 있습니다.

csv_layer.reload()
layer.triggerRepaint()

이것은 나를 위해 일했지만 100 행의 데이터 만 가지고있었습니다. 더 큰 데이터 세트가있는 경우 캐싱없이 작업이 느려질 수 있습니다.


0

쉐이프 파일의 레이어 속성을 열고 General- 로 이동 한 다음을 Coordinate reference system클릭 Create spatial index합니다. 완료되면 shapefile이 새로 고쳐집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.