gpt4 book ai didi

r - 在 R 中将路径/路线图编写为 GeoTiff

转载 作者:行者123 更新时间:2023-12-04 12:26:24 26 4
gpt4 key购买 nike

我正在使用 geom_path 函数在 R 中绘制一些路线。我希望做的是将我正在绘制的数据转换为 GeoTiff(其中包括用于投影和纬度长角的 GeoSpatial 组件)我可以导入到 NASA WorldWind .

我引用的工件可在此处获得:

  • ne_110m_admin_0_countries
  • HYP_LR_SR_W

  • 我做了一个非常简单的例子来说明我所拥有的以及我正在尝试做的事情:
    library(rgdal)
    library(ggplot2)
    library(png)
    library(raster)
    library(tiff)


    wrld <- readOGR("data" , "ne_110m_admin_0_countries")
    base <- ggplot(wrld, aes(x = long, y = lat))


    myDataFrame <- data.frame(Name=c("Object1","Object1","Object1","Object2","Object2","Object2"), lat=c(34,30,25,65,32,16), long=c(-118,-120,-114,-63,-108,-110))


    route <- c(geom_path(aes(long, lat, group = myDataFrame$Name), colour = "#ffff00", size = 2, data =
    myDataFrame, alpha = 0.75,
    lineend = "round"))


    earth <- readTIFF("HYP_LR_SR_W.tif")


    pathPlot <- base + annotation_raster(earth, -180, 180, -90, 90) + route
    plot(pathPlot)

    这产生了这个情节:

    enter image description here

    我想做的下一步是将结果图输出为 GeoTIFF(我可以将其导入 WorldWind)。

    我想知道一旦我有了堆叠的光栅,就知道以我想要的格式创建 GeoTIFF 的命令,但我不知道如何将它们连接在一起以从路由到只包含图像本身的 GeoTIFF 并且包括地理空间组件:
    ggsave(plot=pathPlot, "pathPlot.tiff", device = "tiff")
    stackedRaster <- stack("pathPlot.tiff")
    xRange <- ggplot_build(pathPlot)$layout$panel_params[[1]][c("x.range")]
    yRange <- ggplot_build(pathPlot)$layout$panel_params[[1]][c("y.range")]
    extent(stackedRaster) <- extent(xRange$x.range[1],xRange$x.range[2], yRange$y.range[1],yRange$y.range[2])
    projection(stackedRaster) <- CRS("+proj=longlat +datum=WGS84")
    writeRaster(stackedRaster, "myGeoTiff.tiff", options="PHOTOMETRIC=RGB", datatype="INT1U", overwrite=TRUE)

    最佳答案

    我不认为有一种直接的方法来强制 ggplot对象(即 ggproto )到 RasterStack目的。我不确定以下解决方案是否能满足您的要求,但您可以将其视为一种解决方法:

  • 保存 ggplot情节成 tiff图像使用 ggsave
  • 创建一个 RasterStack使用 stack 保存图像的对象
  • 保存 RasterStack对象作为 GeoTiff 图像使用 writeRaster

  • 上述步骤的实现如下:
    # This is your pathPlot
    pathPlot <- base + annotation_raster(earth, -180, 180, -90, 90) + route

    # Remove the margins from the plot (i.e., keep the earth raster and the routes only)
    pathPlot <- pathPlot +
    theme(
    axis.ticks=element_blank(),
    axis.text.x=element_blank(),
    axis.text.y=element_blank(),
    axis.title.x=element_blank(),
    axis.title.y=element_blank(),
    plot.margin = unit(c(0, 0, 0, 0), "null"),
    legend.position = 'none'
    ) +
    labs(x=NULL, y=NULL)

    # Save the plot
    ggsave(plot=pathPlot, "pathPlot.tiff", device = "tiff")

    # Create a StackedRaster object from the saved plot
    stackedRaster <- stack("pathPlot.tiff")

    # Get the GeoSpatial Components
    lat_long <- ggplot_build(pathPlot)$layout$panel_params[[1]][c("x.range","y.range")]

    # Supply GeoSpatial data to the StackedRaster
    extent(stackedRaster) <- c(lat_long$x.range,lat_long$y.range)
    projection(stackedRaster) <- CRS("+proj=longlat +datum=WGS84")

    # Create the GeoTiff
    writeRaster(stackedRaster, "myGeoTiff.tif", options="PHOTOMETRIC=RGB", datatype="INT1U")

    这是生成的 GeoTiff 图像:

    GeoTiff
    希望能帮助到你。

    关于r - 在 R 中将路径/路线图编写为 GeoTiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53771331/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com