一直一直一直开心 2023-05-11 16:51 采纳率: 80%
浏览 62
已结题

关于#NumPy#的问题,如何解决?

现有两个栅格数据:1991-1999.tif、2000-2008.tif,需要通过RasterToNumPyArray (arcpy)、numpy将这两个栅格数据拼接,使其成为1991-2008.tif
没有用栅格计算器操作是因为相位越界了,需要将栅格数据转为数组进行拼接。
这是两个数据的属性表。

img

img

结果例子:有1991-1994.tif 和1995-1998.tif,通过栅格转数组拼接为1991-1998.tif

img

img


结果为

img


是这样的形式。

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2023-05-11 17:24
    关注

    以下内容引用CHATGPT、有用望采纳:

    可以使用RasterToNumPyArray将栅格数据转换为numpy数组,然后使用numpy.concatenate将两个数组拼接起来,最后使用numpy.save将结果保存为tif格式的栅格数据。

    具体代码如下:

    import arcpy
    import numpy as np
    
    # 读取栅格数据并转换为numpy数组
    arr_1991_1999 = arcpy.RasterToNumPyArray("1991-1999.tif")
    arr_2000_2008 = arcpy.RasterToNumPyArray("2000-2008.tif")
    
    # 拼接两个数组
    arr_1991_2008 = np.concatenate((arr_1991_1999, arr_2000_2008), axis=2)
    
    # 保存结果为tif格式的栅格数据
    np.save("1991-2008.npy", arr_1991_2008)
    arcpy.NumPyArrayToRaster(arr_1991_2008, arcpy.Point(0, 0), 1, 1).save("1991-2008.tif")
    

    需要注意的是,拼接时需要指定axis参数为2,表示在第三个维度(即时间维度)上进行拼接。保存结果时,需要使用NumPyArrayToRaster将数组转换为栅格数据,并指定左上角坐标和像素大小。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月18日
  • 创建了问题 5月11日