1

内容が次のような ARC/INFO 生成ファイルがあります。

3594 -124.049541 44.429077
 -123.381222 44.530192
 -123.479913 44.625517
 -123.578917 44.720704
 -123.678234 44.815755
 -123.777866 44.910669
 -123.946044 44.885032
 -124.114074 44.858987
 -124.281949 44.832529
 -124.449663 44.805654
 -124.516511 44.684660
 -124.583091 44.563597
 -124.649404 44.442465
 -124.715451 44.321261
 -124.615376 44.227772
 -124.515601 44.134147
 -124.416125 44.040385
 -124.316948 43.946486
 -124.151513 43.973082
 -123.985926 43.999247
 -123.820193 44.024987
 -123.654322 44.050307
 -123.586447 44.170362
 -123.518307 44.290360
 -123.449899 44.410303
 -123.381222 44.530192
END
3595 -123.103772 45.009223
 -122.427717 45.101578
 -122.525757 45.198252
 -122.624122 45.294789
 -122.722814 45.391191
 -122.821833 45.487459
 -122.992014 45.464007
 -123.162072 45.440175
 -123.332002 45.415959
 -123.501798 45.391355
 -123.571234 45.271264
 -123.640389 45.151121
 -123.709266 45.030923
 -123.777866 44.910669
 -123.678234 44.815755
 -123.578917 44.720704
 -123.479913 44.625517
 -123.381222 44.530192
 -123.213811 44.554460
 -123.046278 44.578334
 -122.878629 44.601816
 -122.710869 44.624913
 -122.640504 44.744148
 -122.569859 44.863337
 -122.498931 44.982480
 -122.427717 45.101578
END
3676 -122.989567 44.147495
 -122.323040 44.238368
 -122.419523 44.335217
 -122.516322 44.431923
 -122.613437 44.528488
 -122.710869 44.624913
 -122.878629 44.601816
 -123.046278 44.578334
 -123.213811 44.554460
 -123.381222 44.530192
 -123.449899 44.410303
 -123.518307 44.290360
 -123.586447 44.170362
 -123.654322 44.050307
 -123.556277 43.955264
 -123.458534 43.860080
 -123.361093 43.764751
 -123.263953 43.669279
 -123.098838 43.693189
 -122.933613 43.716694
 -122.768285 43.739802
 -122.602857 43.762515
 -122.533309 43.881546
 -122.463492 44.000532
 -122.393403 44.119472
 -122.323040 44.238368
END
END

私の戦略は、緯度経度ポイントのリストを生成するファイルを読み取り、END に遭遇するたびに新しい一意のグループ ID を開始することです。ggplot" and次に、 geom_polygonを使用してプロットします。」

残念ながら、ファイルの読み取りを効率的に行う方法がわかりません。

何かご意見は?

4

1 に答える 1

2

CRAN で空間タスク ビューを読み取り、rgdal パッケージの readOGR を使用して sp クラス オブジェクトを読み取ります。ARCGEN 形式をサポートする GDAL/OGR のインストールが必要です。これは、「デフォルトでコンパイル済み」と記載されていますが、システムにはありません。

それができない場合は、接続としてファイルを開き、各行を読み取り、Polygon を作成してから、Polygons と SpatialPolygons を作成します。

これはかなり最適ではありませんが、機能する関数です。

readUng <- function(f){
  require(sp)
  stream = file(f,"r")
  first = readLines(stream,1)
  bits = strsplit(first," ")[[1]]
  polys = list();ids=NULL
  while(TRUE){
    id=bits[1] # label pt = bits[2],bits[3]
    ids=c(ids,id)
    coords=NULL
    while(TRUE){
      xy=readLines(stream,1)
      if(xy=="END"){
        break
      }
      coords=rbind(coords,strsplit(xy," ")[[1]])      
    }

    polys[[length(polys)+1]] = Polygons(list(Polygon(matrix(as.numeric(coords[,2:3]),ncol=2))),ID=id)
    lines = readLines(stream,1)
    if(lines == "END"){
      break
    }
    bits = strsplit(lines," ")[[1]]
  }
  return(SpatialPolygons(polys))
}

これで適切な空間データ オブジェクトになりました。座標系を指定することもできます (私には緯度と経度のように見えるので、epsg:4326 ですが、あなただけが知っています)。これですべてを変更して、ggplot が必要とするものを生成できますが、その空間データの場合は、それを空間データ クラスとして保持し、ggplot でそのような処理ができるようにする必要があります。

于 2012-07-16T19:59:13.050 に答える