2017-08-30 16 views
0

チラシマップからGeoTiffを作成しようとしています。私はこのオンラインの回答を見つけようとしましたが、私のためにはうまくいかないようです。私はRを使って全く新しいです。 ジオデータは、タイトル、長さ、緯度が見つかる2000 * 10マトリックスです。ここ は私のコードです:チラシマップからGeoTiffを作成する

install.packages('leaflet') 
install.packages('rgdal') 
install.packages('raster') 
install.packages('sp') 


library(leaflet) 
library(raster) 
library(rgdal) 
library(raster) 
library(sp) 


sites <- data.frame(Name=(geodata[,2]),Long=(geodata[,10]),Lati=(geodata[,9])) 

ma <- leaflet() 
ma <- addTiles(ma) 
ma <- addMarkers(ma, lng=sites$Long, lat=sites$Lati, popup=sites$Name) 
ma 

rast <- writeRaster(ma, filename="Worldmap.tif", format="GTiff") 

それが動作していない最後のステップ「writeRaster」です。エラーメッセージは次のようになります。

Error in (function (classes, fdef, mtable) : 
unable to find an inherited method for function 'writeRaster' 
for signature '"leaflet", "character"' 

エラーの原因は何ですか?

答えて

1

リーフレットはJavaScriptライブラリに基づいており、動的なウェブマップを生成します。

動的マップをgeotiffやpngなどの静的マップとして保存する直接の方法はありません。自動的に行う必要がない場合は、PNG、JPEGまたはBMP形式で保存するオプションを提供するRStudioでイメージを書き出すことができます。

それ以外の場合は、リーフレットマップをhtmlファイルとして保存し、ライブラリwebshotまたはmapviewなどの情報をスクラップして、pngなどのイメージファイルを作成します。 Webshotおよびmapviewを使用すると、ファイルをPNG、PDFまたはJPEGとして保存できます。

library(leaflet) 
rand_lng = function(n = 10) rnorm(n, -93.65, .01) 
rand_lat = function(n = 10) rnorm(n, 42.0285, .01) 
ma <- addMarkers(ma, lng=rand_lng(50), lat=rand_lat(50), popup="a") 

## With webshot and htmlwidgets:  
library(webshot) 
saveWidget(ma, "temp.html", selfcontained = FALSE) 
webshot("temp.html", file = "Rplot.png", cliprect = "viewport") 

## With mapview 
library(mapview) 
mapshot(ma, file = "Rplot.png", remove_url = TRUE) 

thisもご覧ください。

GeoTiffが本当に必要な場合は、イメージを再度Rに読み込み、ラスタに変換してGeoTiffとして保存する必要があります。ここに簡単な例があります。あなたはあなたの範囲を適応させ、参照システムを追加する必要があります。画像データがどのようにしてマトリックスにロードされるのか正確にはわからないので、ラスタの値を制御することもできます。この変換では多くの情報が失われているようです。

library(png) 
library(raster) 
img <- readPNG("pathto/staticImage.png") 

img[img==1]=NA 
ar2mat <- matrix(img, nrow = nrow(img), ncol = ncol(img)) 
## Define the extent 
rast = raster(ar2mat, xmn=0, xmx=1, ymn=0, ymx=1) 
## Define the spatial reference system 
proj4string(rast) <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs") 

plot(rast); extent(rast) 
writeRaster(rast, "pathto/png2tif.tif", format="GTiff", overwrite=TRUE) 
関連する問題