여러 CSV를 QGIS 3에로드

Sep 05 2020

여러 CSV 파일을 QGIS 3.10에로드하는 가장 빠른 방법을 찾고 있습니다.

내 CSV 파일은 5 개의 열로 구성됩니다.

Brand Name | Branch Name | Address | Latitude | Longitude

Mac을 사용 중이며 "files:///"작동하지 않을 수 있습니다. 어떤 제안?

나는 이것과 관련된 코드를보고 따라 갔다. 내가 생각 해낸 것은 다음과 같습니다.

import glob, os

csv_files="Users/ajie/Documents/RestoBrand_Py/SAMPLE CSVs/"
os.chdir(csv_files)

for fname in glob.glob("*csv"):
   uri = "files:///" + csv_files + fname + "?delimiter=%s&crs=epsg:4326&xField=%s&yField=%s" % (",",",",",","x","y")
   name = fname.replace('csv', '')
   lyr = QgsVectorLayer(uri, name, 'delimitedtext')
   QgsProject.instance().addMapLayer(lyr)

여기에 오류가 있습니다.

답변

2 underdark Sep 06 2020 at 09:39

@ user2856의 주석에서 언급했듯이 형식 호출에 인수가 너무 많습니다. 프로세스를 더 투명하게 만들기 위해 모든 매개 변수를 하드 코딩 할 수 있습니다. 작동합니다 (Mac에서는 테스트되지 않음).

import os

directory = "Users/ajie/Documents/RestoBrand_Py/SAMPLE CSVs/"
 
def load_and_configure(path):
    path = os.path.join(directory, filename)
    uri = 'file:///' + path + "?type=csv&escape=&useHeader=yes&detectTypes=yes"
    uri = uri + "&crs=EPSG:4326&xField=Longitude&yField=Latitude"
    vlayer = QgsVectorLayer(uri, filename, "delimitedtext")
    QgsProject.instance().addMapLayer(vlayer)
 
for filename in os.listdir(directory):
    if filename.endswith(".csv"):
        load_and_configure(filename)