여러 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)