R 中的 ArcGIS ASCII 数据框
dataframe to ArcGIS ASCII in R
我有一个数据框 (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")
检查包裹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')
我有一个数据框 (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")
检查包裹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')