【问题标题】:dataframe to ArcGIS ASCII in R数据框到R中的ArcGIS ASCII
【发布时间】:2017-04-11 08:16:01
【问题描述】:

我有一个数据框 (predHB.Lv1Hard),其中包含 3 列“y”= 经度、“x”= 纬度和“predLv1Hard”= 模型输出的概率。所有列都是数字。

> head(predHB.Lv1Hard)
      y        x      predLv1Hard
1 -21.78557 114.0319  0.00000000
2 -21.78557 114.0319  0.06315789
3 -21.78557 114.0320  0.00000000
4 -21.78557 114.0320  0.00000000
5 -21.78557 114.0321  0.00000000
6 -21.78557 114.0321  0.00000000

我正在尝试如何将其导出为可在 ArcGIS 中打开的 ASCII(.txt 或理想情况下的 .asc 格式)。

我试图模拟的代码 (SPlus) 如下所示(R 中似乎没有等效的 export.data 函数。)

export.data(DataSet = "predHB.Lv1Hard", Columns ="ALL", Rows = "ALL", Delimiter = ",", ColumnNames = T, 
FileName="C:/working/predHBLv1Hard.txt" , FileType="ASCII")

【问题讨论】:

  • 当然有。 write.table与它所有美妙的论点。
  • 我曾尝试使用 write.table 但它似乎与列名混淆并且也无法正确导出,你能详细说明吗?谢谢!
  • 恐怕您必须更具体地说明问题所在...随时编辑您在问题中尝试过的内容。

标签: r ascii arcgis


【解决方案1】:

查看包裹raster

您首先需要将数据框转换为栅格文件(重新排列列以匹配 xyz):

r <- rasterFromXYZ(predHB.Lv1Hard[,c(2,1,3)])

然后使用:

writeRaster(r,'filename.asc', format='ascii')

如果点不在规则网格中,您可以尝试函数rasterize。我对该文件的头部无能为力,但可以举个例子:

# Convert to SpatialPoinDataFrane
coordinates(predHB.Lv1Hard) <- ~x+y

# Calculate the extent of the observations
ext <- extent(predHB.Lv1Hard)

# Get the distance between points
table(diff(predHB.Lv1Hard@coords[,1]))
#0 0.00010000000000332 
#3                   2
# With the limited info I have I could assume that the resolution is 0.00010000000000332 degrees.
# If you know the original resolution, much better.

# Create the template
r <- raster(ext=ext,res=0.00010000000000332)
# Final raster
to_ascii <- rasterize(predHB.Lv1Hard, r, 'predLv1Hard')

# Write raster to ascii
writeRaster(to_ascii,'filename.asc', format='ascii')

【讨论】:

  • 感谢您的回复!不幸的是,我收到错误“rasterFromXYZ(predHB.Lv1Hard[, c(2, 1, 3)]) 中的错误:x 单元格大小不规则”
  • 数据是否需要是偶数正方形/矩形才能正常工作?
  • 根据报错信息,是的。第二种选择是使用rasterize,但要做到这一点,您需要创建一个光栅模板。
  • 哇,太棒了!这似乎成功了!就分辨率而言,数据为 5 x 5 m(但我也将以 2 x 2 m 工作)是您在那里工作的吗?这是在 -21 到 -22 度纬度
  • 嗯,我计算的是10m左右的分辨率,但我只是使用了前6个点。如果你用所有的点来做,它应该会给你一个更精确的估计。
猜你喜欢
  • 2023-04-03
  • 2016-12-02
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 2022-08-20
相关资源
最近更新 更多