从传单地图创建 GeoTiff

问题描述 投票:0回答:1

我正在尝试从传单地图创建 GeoTiff。我试图在网上找到这个问题的答案,但似乎没有一个对我有用。我对使用 R 还很陌生。 地理数据是一个 2000*10 矩阵,其中包含标题、经度和纬度。 这是我的代码:

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"'

您知道错误可能出在哪里吗?

r tiff r-leaflet geotiff
1个回答
1
投票

Leaflet 基于 JavaScript 库并生成动态网络地图。

没有直接的方法可以将动态地图保存为静态地图,例如 geotiff 或 png。如果您不需要自动执行此操作,您可以在 RStudio 中导出图像,它为您提供了另存为 PNG、JPEG 或 BMP 的选项。

否则,还有一些解决方法,您可以将传单地图保存为 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)

也看看这个

如果您确实需要 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)
© www.soinside.com 2019 - 2024. All rights reserved.