1. ホーム
  2. r

[解決済み] readOGR()でファイルを開くことができない

2022-01-25 03:01:51

質問

wmap <- readOGR(dsn="~/R/funwithR/data/ne_110m_land", layer="ne_110m_land")

このコードでは、シェイプファイルを読み込むことができず、次のようなエラーが発生します。

Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,  : 
Cannot open file

ディレクトリは間違いなく正しいものです。末尾の/もありませんし、レイヤー名も正しいです。

ne_110m_land ディレクトリの中にあるファイルです。

ne_110m_land.dbf
ne_110m_land.prj
ne_110m_land.shp
ne_110m_land.shx
ne_110m_land.VERSION.txt
ne_110m_land.README.html

解決方法は?

で正しい道筋を示すことができたはずです。

list.files('~/R/funwithR/data/ne_110m_land', pattern='\\.shp$')
file.exists('~/R/funwithR/data/ne_110m_land/ne_110m_land.shp')

を試してみてはいかがでしょうか。

readOGR(dsn=path.expand("~/R/funwithR/data/ne_110m_land"), layer="ne_110m_land")

またはそれをラップしたよりシンプルな代替案。

library(raster)
s <- shapefile("~/R/funwithR/data/ne_110m_land/ne_110m_land.shp")

更新しました。

rgdal が少し変更され、パスとレイヤーを分離する必要がなくなりました(少なくとも一部のフォーマットでは)。そのため、次のようにすることができます。

x <- readOGR("~/R/funwithR/data/ne_110m_land/ne_110m_land.shp")

(おそらくまだpath.expandを使用しています)

また、もしあなたがまだ readOGR というのは、少し時代遅れです。ということです。 terra::vect または sf::st_read .