Tải nhiều CSV vào QGIS 3
Sep 05 2020
Tôi đã tìm kiếm cách nhanh nhất để tải nhiều tệp CSV vào QGIS 3.10.
Tệp CSV của tôi bao gồm 5 cột:
Brand Name | Branch Name | Address | Latitude | Longitude
Tôi đang sử dụng Mac và "files:///"có thể không hoạt động. Bất kỳ đề xuất?
Tôi thấy mã liên quan đến điều này và làm theo điều này. Đây là những gì tôi nghĩ ra:
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)
Đây là lỗi
Trả lời
2 underdark Sep 06 2020 at 09:39
Như đã đề cập trong nhận xét của @ user2856, có quá nhiều đối số trong lệnh gọi định dạng. Để làm cho quá trình minh bạch hơn, bạn có thể mã hóa tất cả các tham số. Điều này sẽ hoạt động (mặc dù không được thử nghiệm trên 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)