緯度と経度を指定して、R に場所の海抜の高さを見つけるためのツールがあるかどうかを知っている人はいますか?
5 に答える
または、geonamesから検索するパッケージを使用して、srtm3数値標高モデルから値を取得することもできます。
まず、で登録してgeonamesのユーザー名を取得しますgeonames.org
。次に、それを設定します。
> options(geonamesUsername="myusernamehere")
それから:
> require(geonames)
> GNsrtm3(54.481084,-3.220625)
srtm3 lng lat
1 797 -3.220625 54.48108
またはgtopo30モデル:
> GNgtopo30(54.481084,-3.220625)
gtopo30 lng lat
1 520 -3.220625 54.48108
geonamesはCRAN上にあるため、install.packages( "geonames")が取得します。
これら2つのモデルの違いは、衛星データに基づく近似値にすぎないためです。これから山を特定することを期待して行かないでください。
更新: Earthtools はもう存在しないため、この回答は廃止されました。代わりに@Spacedmanの回答をお勧めします。
DWin が言ったように、これには 2 つの部分があります。Web サービスで適切なデータ ソースを見つけてから、R で解析します。この回答では、earthtools.org
サービスを使用します。
library(RCurl)
library(XML)
latitude <- 52.4822
longitude <- -1.8946
url <- paste(
"http://www.earthtools.org/height",
latitude,
longitude,
sep = "/"
)
page <- getURL(url)
ans <- xmlTreeParse(page, useInternalNodes = TRUE)
heightNode <- xpathApply(ans, "//meters")[[1]]
(height <- as.numeric(xmlValue(heightNode)))
Web クエリを許可する RCurl などの R パッケージがあります。また、Web リソースもあります。詳細な仕様には ....まあ、詳細が必要です。
http://gisdata.usgs.net/xmlwebservices2/elevation_service.asmx?op=getElevation
内部で geonames を使用するパッケージ rgbif を使用することもできます。このオプションは、入力としてデータ フレームや他の入力形式を提供できるため、気に入っています。ここでも、GeoNames ユーザー名を提供する必要があります。
library(rgbif)
coords <- data.frame(decimalLatitude = 54.481084,
decimalLongitude = -3.220625)
elevation(coords, username = "myusernamehere")
データ フレームを入力として提供する場合、DarwinCore 標準に関連する decimalLatitude および decimalLongitude という名前の座標列が含まれている必要があります。
引数「elevation_model」を使用して、モデルのさまざまなオプションから選択できます。