回答:
シェープファイルを直接使用します。あなたは簡単にこれを行うことができrgdal
たりsf
、パッケージ、及びオブジェクト形状をお読みください。提供する必要がある両方のパッケージdsn
-シェープファイルの場合はディレクトリであるデータソース、およびlayer
-拡張子を除いたシェープファイル名:
# Read SHAPEFILE.shp from the current working directory (".")
require(rgdal)
shape <- readOGR(dsn = ".", layer = "SHAPEFILE")
require(sf)
shape <- read_sf(dsn = ".", layer = "SHAPEFILE")
(rgdalについて、OSXやLinuxには、データソース(としてのホームディレクトリの「〜」速記を使用することはできませんdsn
)ディレクトリ-そうでなければ、助けにならない「を開けませんデータソース」メッセージが表示されます。sf
パッケージにはありませんいくつかの利点の中でも特にこの制限があります。)
これにより、Spatial * DataFrame(ポイント、ライン、またはポリゴン)であるオブジェクトが得られます。属性テーブルのフィールドには、通常のデータフレームと同じ方法(shape$ID
ID列など)でアクセスできます。
インポートしたASCIIファイルを使用する場合は、テキスト(文字)のxおよびyフィールドを数字に変換するだけです(例:
shape$x <- as.numeric(as.character(shape$x))
shape$y <- as.numeric(as.character(shape$y))
coordinates(shape) <- ~x + y
編集2015-01-18:rgdalはmaptools(最初にここで提案した)よりも少し優れていることに注意してください。これは主に投影情報を自動的に読み書きするためです。
ノート:
as.numeric(as.character())
関数-ASCIIテキストが(おそらく)ファクターとして読み取られた場合、これにより、ファクターレベルではなく数値が取得されます。rgdal
また、sf
さまざまな種類のファイルやデータベースにアクセスする混乱する方法があり(GPXファイルの場合、dsnはファイル名であり、ウェイポイント、トラックポイントなどの個々のコンポーネントを階層化します)、オンラインの例を注意深く読む必要があります。as.character
問題を回避するためにネストされて更新されます。
dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
の引数は最後のスラッシュを含めることはできません---例えばdsn = "C:/Users/Downloads/"
なければなりませんdsn = "C:/Users/Downloads"
。これは、誰かの欲求不満を解消するホープ...
私はシンバマングに同意し、シェープファイルを保持するという点で解決しましたが、特にrgdalライブラリに注意を向けたいと思います。NCEAS用にgissolvedが提案したリンクをたどり、rgdalの指示に従ってください。一部のマシンにインストールするのは難しい場合がありますが、予測に関しては結果を大幅に改善できます。
maptoolsライブラリは優れており、読み込んでいるシェープファイルの投影法を定義できますが、そのためには、その投影法をproj4形式で指定する方法を知る必要があります。例は次のようになります。
project2<-"+proj=eqdc +lat_0=0 +lon_0=0 +lat_1=33 +lat_2=45 +x_0=0 +y_0=0 +ellps=GRS80
+datum=NAD83 +units=m +no_defs" #USA Contiguous Equidistant Conic Projection
data.shape<-readShapePoly("./MyMap.shp",IDvar="FIPS",proj4string=CRS(project2))
plot(data.shape)
このルートに進みたい場合は、http://spatialreference.orgにアクセスして、proj4形式での投影がどのように見えるかを調べてください。それが面倒な場合、rgdalはESRIシェイプファイルの.prjファイル(シェープファイルのESRIの投影定義を含むファイル。同じファイルでrgdalを使用するには、次のように記述します。
library(rgdal)
data.shape<-readOGR(dsn="C:/Directory_Containing_Shapefile",layer="MyMap")
plot(data.shape)
単一のシェープファイルで作業している場合は、これを行わずに滑ることができますが、複数のデータソースを見たり、Googleマップでオーバーレイを開始したりすると、投影を適切に維持することが不可欠になります。
Rの空間データに関する役立つチュートリアル(ポイントパターンのインポートと操作に関するものを含む)については、https://csde.washington.edu/workshop/point-patterns-and-rasterで古いコース資料をオンラインで入手できます。 -surfaces /(他のワークショップはこちらにあります)これらの方法が実際にどのように比較されるかを見るのに役立つかもしれません。
シェープファイルをASCIIに変換するのではなく、空間拡張の1つでシェープファイルを直接使用する必要があると思います。ここでは、シェープファイルhttp://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFilesを読み取る(および書き込む)3つの方法を見つけることができます。R空間プロジェクトは、おそらくhttp://cran.r-project.org/web/packages/sp/index.htmlにも関心を持っています。
sf
ライブラリを使用して、でシェープファイルを直接開くことができますR
。rgdal
ライブラリよりも高速です。R-ベンチマークのシンプルな機能を確認してください。sf
パッケージの詳細については、プロジェクトのホームページr-spatialを確認してください。
# Load library
library('sf')
# Load shapefile
shapename <- read_sf('~/path/to/file.shp')
もう1つの選択肢は、fastshpライブラリを使用することです:
大規模なESRIシェープファイル(.shp)を処理するためのルーチン。これには、読み取り、ポイントの細線化、およびポイントを含むシェイプへのマッチングが含まれます。このパッケージの主な目的は、大きなシェープファイル(数百万ポイント)をサポートする速度を提供することです。他のシェープファイルパッケージよりも数桁高速です。
ggplot2でSEを使用する方法に関するSEに関する私の質問は次のとおりです。