5

私はこれにしばらく取り組んでおり、ある程度の成功を収めていますが、ファイルの書き換えに関しては、何もありませんでした。

私が使用しているシェープファイルは、メトロポリタン エリアとマイクロポリタン エリアのポリゴン シェープファイルですが、マイクロポリタン エリアには興味がないので、R で shp を使用してそれらをマップから削除しようとしています。

情報源

適切なファイルをダウンロードするには、「メトロポリタン/マイクロポリタン統計地域 (2010)」の下で「すべての州を 1 つの国内ファイルに」を選択していることを確認してください。

これが私がこれまでに持っているものです:

library(maptools)
met=readShapeSpatial("tl_2010_us_cbsa10.shp")
met=met@data

サブセット前:

NAMELSAD10      LSAD10
Anchorage, AK Metro Area   -  M1 
Clarksdale, MS Micro Area    - M2
Richmond, VA Metro Area   -  M1
Big Spring, TX Micro Area  -   M2
Dallas-Fort Worth-Arlington, TX Metro Area  -   M1
Rio Grande City-Roma, TX Micro Area  -   M2

それから:

submet=subset(met, LSAD10 == "M1")

サブセット後:

NAMELSAD10 LSAD10
Anchorage, AK Metro Area   -  M1
Richmond, VA Metro Area  -   M1
Dallas-Fort Worth-Arlington, TX Metro Area   -  M1
Vineland-Millville-Bridgeton, NJ Metro Area  -   M1
Casper, WY Metro Area   -  M1
Cheyenne, WY Metro Area   -  M1

それから:

writeSpatialShape(submet, "tl_2010_us_ma10", factor2char = TRUE)

このコードを使用して、「M1」と指定された Micropolitan エリアを正常に削除できましたが、ファイルを書き直そうとすると、wd に表示されません。

パッケージ「シェープファイル」を使用してこれを実行しようとしましたが、さらに成功しませんでした。したがって、この問題についての助けをいただければ幸いです。

4

1 に答える 1

8

そうするとmet=met@data、空間的な側面が失われmet、単純な古いデータ フレームが取得されます。

次に、そのデータ フレームを適切にサブセット化してから、試してみますwriteSpatialShape。うわあ。オブジェクトにはsubmetポリゴンまたは座標がありません。writeSpatialShapeバーフする必要があります。しかし、なんとかそれを丸ごと飲み込み、抑え込んでいます。これをチェックしてください:

> writeSpatialShape(1,"foo.shp")
> 

ご覧のとおり、シェープファイルは作成されません。うわー、それはかなり厄介なエラー処理です。

2 つの解決策: 1、次のように、データ コンポーネントではなく実際のオブジェクトで作業します。

met = readOGR(dir,name)
submet = met[met$thing=="whatever",]
writeOGR(submet,dir,newname,"ESRI Shapefile")

2. and を使用するpackage:rgdalread/write|OGR、投影を処理するだけでなく、口に合わないものを食べさせようとするとひどく病気になります。

> writeOGR(1,".","foo","ESRI Shapefile")
Error: inherits(obj, "Spatial") is not TRUE
于 2013-03-07T08:24:38.403 に答える