問題タブ [r-raster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 既知の座標と半径を使用してラスター上に円をプロット
半径が定義された円をラスター イメージにプロットしようとしています。ラスターを正常にプロットし、画像にポイントを配置しました。
結果の画像は次のようになります。
ラスターのピクセルは 30 m です。
私がやりたいことは、各ポイントに半径 x (たとえば、300 m) の円を配置することです。ポイントのサイズをいじることで手動でこれを行うことができますが (cex
たとえば、を使用)、画像の寸法を変更したり、ラスターをトリミングしたりすると、円は正しいサイズではなくなります。ラスターで定義された単位を使用して地図上に円を配置する方法はありますか?
ありがとう!
r - R - 'raster' パッケージ - RasterLayer ("raster") は SpatialPolygonsDataFrame ("sp") に抽出されません。単純に NULL オブジェクトを返す
このraster
パッケージを使用して、ASCII ラスターと ESRI シェープファイルの 2 つのデータセットを読み込みました。ラスターの (水温) データを、湖の海岸線であるシェープファイルの全範囲に抽出したいと考えています。
SpatialPolygonsDataFrame
関数を使用して読み込むと、ESRI シェープファイルは として扱われshapefile()
ます。
shapefile <- shapefile("shore.shp",verbose=TRUE)
関数を使用raster()
して ASCII ラスターを読み込みました。
raster <- raster("1995_001.asc",native=TRUE,crs="+proj=merc +datum=WGS84 +ellps=WGS84 +units=m")
シェープファイルの座標参照情報は次のとおりです。
+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
ラスターのそれ (つまりcrs
、関数内の引数を使用して次のように強制されraster()
ます):
+proj=merc +datum=WGS84 +ellps=WGS84 +units=m +towgs84=0,0,0
次にspTransform()
、パッケージ内の関数を使用しrgdal
て、シェープファイルの空間参照をラスターの空間参照に強制しました。
spTransform(shapefile, CRS(projection(raster)))
最後に、以下を提出しました。
extract(raster,shapefile,method="simple",fun=mean,small=TRUE,na.rm=TRUE,df=FALSE)
ただし、型のオブジェクトをextract()
返すだけです。この問題は、座標参照の明示的な強制から生じていると思います。NULL
list
さらに、show()
各データセットで関数を使用した結果は次のとおりです。
> show(raster)
class : RasterLayer
dimensions : 1024, 1024, 1048576 (nrow, ncol, ncell)
resolution : 1800, 1800 (x, y)
extent : -10288022, -8444822, 4675974, 6519174 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : layer
values : -9999, 8.97 (min, max)
> show(shapefile)
class : SpatialPolygonsDataFrame
features : 1
extent : 597568.5, 998261.6, 278635.3, 668182.2 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
variables : 3
names : AREA, PERIMETER, HECTARES
min values : 59682523455.695, 5543510.075, 5968252.346
max values : 59682523455.695, 5543510.075, 5968252.346
これらのフォーラムで解決策のない同様の質問を多数検索しました。誰か(仮想の)手を貸してくれませんか?
事前にどうもありがとうございました。
r - R ラスターを使用したインタラクティブなプロット: マウスオーバー時の値
色付きの画像として表示されるいくつかのラスター データセットのインタラクティブな視覚化と変更のために、R で小さなプログラムを実行したいと思います。ユーザーはファイルを開き (ターミナルからでも構いません)、それをプロットし、マウス クリックで編集するポイントを選択し、新しい値を挿入する必要があります。
これまでのところ、私はそれを簡単に達成しました。パッケージのplot()
関数を使用してプロットを視覚化し、ポイントを選択してターミナル経由で値を編集します。raster
click()
マウスオーバーで値を表示する機能を追加したいと思います。これを行う方法を検索しましたが、これは標準の R パッケージでは不可能のようです。これは正しいです?
この場合、gGobi、iPlots、Shiny、Plotly などの外部パッケージを使用せざるを得ない場合があります。ただし、KISSを使用して、ラスターplot()
関数やトレリス グラフィック オブジェクト (たとえばrasterVis
.
Shiny アプリがおそらく最適であることは理解していますが、習得して完成させるには多くの時間がかかります。
r - ラスター オブジェクトで saveRDS() を使用する際の問題
saveRDS()
それぞれがラスター レイヤーとメタデータを含むリストを含む多数のリストを保存するために使用しようとしています。ラスター レイヤーが ncdf ファイルから抽出された場合は正常に機能しましたが、元のファイルが ASCII ファイルsaveRDS()
の場合、値を最終ファイルに書き込むのではなく、元のファイルへのポインターのみを書き込みます。
何が起こっているかの要約版は次のとおりです。
myresult.Rdata
は単純に への 33KB のポインタになりましたmyfile.asc
。実際に値を保存して、消去後も機能するようにしたい場合myfile.asc
(したがって、約 15MB になるはずです)
対照的に、ncdf 形式の他のファイルの場合:
ここでmyresult2.Rdata
は、私が望むようにすべてを保存しているので、ラスターパッケージで問題が発生すると思いますか?
誰でもこれを修正する方法について何か考えがありますか? writeRaster()
メタデータをデータと一緒に保持しようとしており、ncdf ファイルから抽出したバッチと同じ形式を使用して、後の処理を容易にするため、使用しないことをお勧めします。
r - R では、複数のラスター ファイルから最大ラスターを作成します。
私は一種の新しいRなので、愚かな質問かもしれませんが、自分で理解できません。
これは私の問題です。同じグリッドサイズの複数の asc ファイルがあり、同じ領域をカバーしています。すべての asc ファイルから各グリッドの最大値を取得したいと考えています。私は複数のことを試しました:
これは、ファイルをループしてスローすると失敗します。これは、NA が除外されるためです。そのため、asc0 (ベース ファイル) は次のファイル asc1[2] とは異なるサイズになります。
誰もこれへの方法を知っていますか? すべてのファイルを通過する準備ができているループがあり、13x144 ファイルがあります。しかし、最大値を取得して保存し、次のファイルと比較する方法がわかりません。
ありがとう、本当にあなたの助けに感謝します!!!
r - R snow/snowfall パッケージ sfSapply で引数名の衝突を回避するには?
snow
とsnowfall
パッケージ、特にsfSapply()
複数のラスター ファイルからデータを抽出する機能を使用しようとしています。次のようになります。
fun
に渡される引数は、 (ライブラリ内の) 関数sfSapply()
を対象としています。ただし、引数 ( )も取ります。この例では、2 番目の位置引数として指定しています。extract()
raster
sfSapply()
fun
extract()
渡された関数の引数を指定して、 が期待する引数fun
と混同しないようにするにはどうすればよいですか?fun
sfSapply()