如何将多个csv文件导入QGIS3.22.2?

pbgvytdp  于 2023-02-06  发布在  其他
关注(0)|答案(2)|浏览(317)

我想一次将多个csv文件导入QGIS。这些文件包含纬度/经度数据。我想让这些文件投影点。基本上,我希望导入csv文件的结果与使用数据源管理器分隔的文本(选择点坐标,x字段和y字段分别设置为经度/纬度)时的结果相同。
我在许多论坛上不断遇到相同的python代码。虽然我可以将文件作为表导入,但我不能让它们与几何一起加载(下一阶段的问题还将是将时间戳作为日期而不是字符串加载,我可能必须重构所有文件)。
下面是论坛上的代码,导致加载断开的链接(我的文件有列标题“Lat”和“Long”):

import glob, os

# Define path to  directory of your csv files
path_to_csv = "C:/File Path/"

# Set current directory to path of csv files
os.chdir(path_to_csv)  
# Find each .csv file and load them as vector layers
for fname in glob.glob("*.csv"):  
    uri ="file:///"+path_to_csv + fname+"encoding=%s&delimiter=%s&xField=%s&yField=%s&crs=%s" % ("UTF-8",",", "Long", "Lat","epsg:4326")
    name=fname.replace('.csv', '')
    lyr = QgsVectorLayer(uri, name, 'delimitedtext')
    QgsProject.instance().addMapLayer(lyr)

这段代码将加载层,但带有一个“不可用层”的警告三角形。点击三角形会打开“修复数据源”窗口。我可以手动选择文件并修复链接。但随后它只不过是一个所有字段都作为字符串的表。
如果我像这样运行代码,我会得到要导入的文件,但只作为表,没有几何图形:

import glob, os

# Define path to  directory of your csv files
path_to_csv = "C:/Users/DanielStevens/Documents/Afghanistan Monitoring/Phase 2/Border Crossing/Crossing Polygons/Pakistan/"

# Set current directory to path of csv files
os.chdir(path_to_csv)  
# Find each .csv file and load them as vector layers
for fname in glob.glob("*.csv"):  
    uri ="file:///"+path_to_csv + fname
    "encoding=%s&delimiter=%s&xField=%s&yField=%s&crs=%s" % ("UTF-8",",", "Long", 
    "Lat","epsg:4326")
    name=fname.replace('.csv', '')
    lyr = QgsVectorLayer(uri, name, 'delimitedtext')
    QgsProject.instance().addMapLayer(lyr)

如何获取CSV文件以与几何体(经纬投影点)一起批量导入?

8yparm6h

8yparm6h1#

我修改了下面一行的内容,它运行得很好。我删除了编码,因为我的数据不是UTF-8。不确定是不是这样做的。

uri = "file:///" + path_to_csv + fname + "?delimiter=%s&crs=epsg:3857&xField=%s&yField=%s" % (",", "lon", "lat")
bqucvtff

bqucvtff2#

如果它有助于解决部分问题,则在导入csv时使用csv文件有助于强制数据类型(如果你有很多文件,尤其是文件名改变的时候,eidogg.当一个新的批处理需要处理的时候,这会很痛苦)。我在考虑写一些python来读取csv,用相同的文件名创建一个csv,然后用正确数量的列定义填充文件。最后,因为我只有30个文件,所以使用记事本制作csvt并相应地重命名它会更快。我还发现将日期时间字段转换为Oracle日期时间在Qgis中处理得更一致。希望对您有所帮助。

相关问题