10

後でフュージョン テーブルまたは他の GIS アプリケーションにインポートする R でシェープファイルを作成しようとしています。

まず、カナダのすべての国勢調査区を含む空のシェープファイルをインポートしました。CT の一意の ID に基づいてシェープファイルに他のデータ (表形式) を添付し、結果をマッピングしました。現時点では、Vancouver のものだけが必要で、Vancouver の CT と新しくアタッチされた属性データのみを含むシェープファイルをエクスポートしたいと考えています。

これが私のコードです(プライバシー上の理由により一部省略されています):

shape <- readShapePoly('C:/TEST/blank_ct.shp') #Load blank shapefile
shape@data = data.frame(shape@data, data2[match(shape@data$CTUID, data2$CTUID),]) #data2 is my created attributes that I'm attaching to blank file
shape1 <-shape[shape$CMAUID == 933,] #selecting the Vancouver CTs

これを使用した他の例を見てきました: writePolyShapeでシェープファイルを作成します。試してみましたが、ある程度効きました。.shp、.dbf、および .shx ファイルが作成されました。.prj ファイルがありません。作成方法がわかりません。シェープファイルを作成するためのより良い方法はありますか?

この問題に関する助けをいただければ幸いです。

4

2 に答える 2

4

問題が解決しました!助けてくれた人にもう一度感謝します!

これが私がやったことです:

Mnel が書いたように、この行はシェープファイルを作成します。

writeOGR(shape1, dsn = 'C:/TEST', layer ='newstuff', driver = 'ESRI Shapefile')

ただし、この行を実行すると、次のエラーが返されました。

Can't convert columns of class: AsIs; column names: ct2,mprop,mlot,mliv

これは、属性データが数値ではなく文字だったためです。幸いなことに、私の属性データはすべて数値なので、この問題を解決するために transform() を実行しました。

shape2 <-shape1
shape2@data <- transform(shape1@data, ct2 = as.numeric(ct2),
mprop = as.numeric(mprop),
mlot = as.numeric(mlot),
mliv = as.numeric(mliv))

writeOGR() コマンドを再試行しましたが、探していた .prj ファイルを取得できませんでした。問題は、ファイルをインポートするときにシェープファイルの座標系を指定しなかったことです。座標系が何であるかは既にわかっているので、インポート時に定義するだけで済みました。

readShapePoly('C:/TEST/blank_ct.shp',proj4string=CRS("+proj=longlat +datum=WGS84")

その後、シェープファイルでやりたいことをすべて再実行し、エクスポートのために writeOGR 行を実行しました。以上です!

于 2013-04-12T14:54:04.517 に答える