r - readOGR()、terra::vect 和 sf::st_read :当 file.exists = TRUE 且 .shp、.dbf 和 .shx 文件位于同一文件夹中时,无法打开 shapefile

问题描述 投票:0回答:1

我不明白为什么会收到错误:“无法打开数据源”,而我的路径应该至少一次正确,并且 .shp、.dbf 和 .shx 文件位于同一文件夹中。

我尝试过: 与 rgdal:

rgdal::readOGR(dsn=path.expand("C:/Users/User/Documents/mémoire/pixels_de_reference_1"), layer="pixels_de_reference_1")
rgdal::readOGR(dsn = "C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp",layer = "pixels_de_reference_1")
rgdal::readOGR(dsn = "C:/Users/User/Documents/mémoire/pixels_de_reference_1",layer = "pixels_de_reference_1")
rgdal::readOGR(dsn = "C:/Users/User/Documents/mémoire",layer = "pixels_de_reference_1")
rgdal::readOGR(dsn = "pixels_de_reference_1",layer = "pixels_de_reference_1")
rgdal::readOGR(dsn = ".",layer = "pixels_de_reference_1")
rgdal::readOGR("C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp")
rgdal::readOGR(dsn=path.expand("C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp"))

# Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,  : 
#  Cannot open data source

与土地:

f <- system.file("C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp", package="terra")
terra::vect(f)
# Error: [vect] file does not exist:

我不知道这是否正常,但是当我打印 f 时,我感觉文件是空的:

f
#[1] ""

即使我得到:

#[1] TRUE
list.files("C:/Users/User/Documents/mémoire/")
# [1] "ok analyse orthomosaïque.R"            "pixels_de_reference_1.cpg"            
# [3] "pixels_de_reference_1.dbf"             "pixels_de_reference_1.prj"            
# [5] "pixels_de_reference_1.sbn"             "pixels_de_reference_1.sbx"            
# [7] "pixels_de_reference_1.shp"             "pixels_de_reference_1.shx"            
# [9] "python RF ortho rel.py"                "sécurité code classification image.py"
# [11] "TIFF_ortho.tif"  

还有:

SHP <- raster::shapefile("C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp")
plot(SHP) 

有效。当我尝试时,我遇到了同样的错误:

sf::st_layers(dsn = system.file(SHP , package = "spData"))$name
# Cannot open data source Error: Open failed.

此外,当我尝试检查文件名时,我收到相同的错误:

# Error in rgdal::ogrListLayers("C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp") : 
#  Cannot open data source
sf::st_layers(dsn = system.file("C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp", package = "spData"))$name

# Cannot open data source Error: Open failed.
r1_gdb <- file_path_as_absolute("C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp")
sf::st_layers(dsn = system.file(r1_gdb , package = "spData"))$name
# Cannot open data source Error: Open failed.

我的工作目录是包含文件的目录。 shapefile 在 Arcgis 中正常工作。 我唯一的线索是所需的随附文件中可能缺少一个扩展名。但我已经把Arcgis发布的所有文件夹都拿走了。

r shapefile r-sf rgdal terra
1个回答
0
投票

您正在将

system.file
用于您自己的文件。这是不正确的。 `system.file 用于 R 包附带的文件。无论 R 安装在哪里,它都有助于找到路径。

正如您所见,返回

""
作为文件名,但这是行不通的。

您所需要做的就是提供文件名。

f <- "C:/Users/User/Documents/mémoire/pixels_de_reference_1.shp"
terra::vect(f)
© www.soinside.com 2019 - 2024. All rights reserved.