一直一直一直开心 2023-07-05 16:59 采纳率: 80%
浏览 33
已结题

关于#字符串#的问题,如何解决?

多个栅格转数组后以字符串形式进行拼接,我的代码如下:

# -*- coding: UTF-8 -*-
import arcpy
arr_1991 = arcpy.RasterToNumPyArray("F:/study/luoyang text/CLCD_v01_1991_albert_henan.tif",nodata_to_value=0)#栅格转数组
arr_1992 = arcpy.RasterToNumPyArray("F:/study/luoyang text/CLCD_v01_1992_albert_henan.tif",nodata_to_value=0)
file  = open("C:/Users/Lenovo/Desktop/test.txt","w")#保存形式为文本
k = 0
str1 = ""
for i in arr_1991:
    n = 0
    for j in arr_1991[k]:
        if arr_1991[k][n] != arr_1992[k][n] :
         str1 += str(arr_1991[k][n]) + str(arr_1992[k][n])  + "\n"
        n+=1
    k+=1
print(str1)
file.write(str1)
file.close()


这是我的栅格转数组后的形式

img

结果如下;

img

以上是我的两个栅格专数组拼接,但是我需要四个栅格转数组拼接,于是出现了问题;

import arcpy
arr_1991 = arcpy.RasterToNumPyArray("F:/study/luoyang text/CLCD_v01_1991_albert_henan.tif",nodata_to_value=0)#栅格转数组
arr_1992 = arcpy.RasterToNumPyArray("F:/study/luoyang text/CLCD_v01_1992_albert_henan.tif",nodata_to_value=0)
arr_1993 = arcpy.RasterToNumPyArray("F:/study/luoyang text/CLCD_v01_1993_albert_henan.tif",nodata_to_value=0)
arr_1999 = arcpy.RasterToNumPyArray("F:/study/luoyang text/CLCD_v01_1994_albert_henan.tif",nodata_to_value=0)
file  = open("C:/Users/Lenovo/Desktop/test.txt","w")#保存形式为文本
k = 0
str1 = ""
for i in arr_1991:
    n = 0
    for j in arr_1991[k]:
        if arr_1991[k][n] != arr_1992[k][n]!= arr_1993[k][n] != arr_1999[k][n]:
            str1 += str(arr_1991[k][n]) + str(arr_1992[k][n]) + str(arr_1993[k][n]) + str(arr_1999[k][n]) + "\n"
        n+=1
    k+=1
print(str1)
file.write(str1)
file.close()


结果如下:

img


** 结果是空白的**
不知道哪里出现了问题。

  • 写回答

3条回答 默认 最新

  • 梦幻精灵_cq 2023-07-05 18:05
    关注

      问题出在您if判断那句,判定四个值各不相等,才执行拼接运算。但是没有一个符合要求的,所以写入文本的就是初值“”了。

    • 您的判定语句写法,是应该没有问题的,我试过了。

      img

      检查下您的拼接数组,是不是四个数组的对应值,始终有一个相等的情况,就达不成您设定的四个全不等,所以写入文本的“都是空”。


    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 创建了问题 7月5日