0

でファイルを読み取って変数に割り当てながら、ディレクトリ内のフォルダーをループしようとしていますR

変数に割り当てたいファイルがあるので、パッケージshapefilesの関数を使用します。目的は、特定の種に属するすべてのシェープファイルを後でマージすることです。ディレクトリの階層/構造は>>です。見た目など_readOGRrgdaltype1speciesidsshapefilesid.shp

シェープファイルの例は、ここここからダウンロードできます

#code
setwd("~/type1/")

#Extract ids belonging to $species. Later use in readOCR function

sp_id <- function(species){
 wd = "~/type1/"
 list_shp <- list.files(path=paste(wd,species,sep='/'), full.names = F, recursive = F, include.dirs = F)
 vec <- character() 

  for (shp in list_shp){
   y <- unlist(strsplit(shp, '\\.', perl=T))
   vec <- unique(c(vec,y[1]))
  }

 #"1905" "4279"

#Extract dirs for where to perform readOCR function

  list_dir <- list.dirs(path=paste(wd,species,sep='/'), full.names = F, recursive = F)

   for (id in list_dir){
    setwd(id)
    print(getwd())
   }

#"~/type1/speciesX1/1905"
#"~/type1/speciesX1/4279"

    for (i in vec){
     assign(paste("", i, sep=""), readOGR(".", i))
    break
    }
 }

sp_id('speciesX1')

[1] "~/type1/speciesX1/1905"
OGR data source with driver: ESRI Shapefile 
Source: ".", layer: "1905"
with 10 features and 3 fields
Feature type: wkbPolygon with 2 dimensions
[1] "~/type1/speciesX1/4279"
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv) : 
Cannot open layer

問題は、コードがreadOGRの 1 つに対してのみ実行されshapefiledirsdir が再び変更されたように見えますが、最後の は実行されないことreadOGRです。

4

2 に答える 2

0

ogrInfo()これらのファイルを読み取ることができず、レイヤーが見つからないというエラーが発生しました)。これにより、一部の属性を読み取って取得する方法が提供されました。(Mac はディレクトリの重複した名前を取り、それらに "(n)" を追加するため、同じ名前で異なるファイルは iho.zip と iho.zip でした:

library(sp)

ca3 = readShapeSpatial("~/Downloads/iho/iho.shp")
ca3 = readShapeSpatial("~/Downloads/iho(2)/iho.shp")

> attributes(ca3)$data
                               name   id mrgid
0 Mediterranean Sea - Western Basin 28Aa  4279
1               Strait of Gibraltar  28a  3346
2                       Alboran Sea  28b  3324
3                      Balearic Sea  28c  3322
4                      Ligurian Sea  28d  3363
5                    Tyrrhenian Sea  28e  3386
> attributes(ca2)$data
                               name   id mrgid
0 Mediterranean Sea - Western Basin 28Aa  4279
1 Mediterranean Sea - Eastern Basin 28Bb  4280
2               Strait of Gibraltar  28a  3346
3                       Alboran Sea  28b  3324
4                      Balearic Sea  28c  3322
5                      Ligurian Sea  28d  3363
6                    Tyrrhenian Sea  28e  3386
7                      Adriatic Sea  28g  3314
8                        Ionian Sea  28f  3351
9                        Aegean Sea  28h  3315
于 2013-12-11T07:28:34.450 に答える