在Python中使用gdb中的栅格数据集

1 投票
2 回答
1030 浏览
提问于 2025-04-17 09:23

我正在尝试写一个脚本,用于在Python中将角度转换为弧度。这是一个常见的任务,能随时用到会很方便。问题是,我发现输入的栅格数据似乎被当作字符串来读取。请看下面:

import arcpy
from arcpy import env
from arcpy.sa import *
import math
arcpy.CheckOutExtension("Spatial")
env.workspace = "C:\Users\OJB\Desktop\University\UsingRAS\UsingRas.gdb"


degrad = math.pi / 180
PythonRad = "Aspect_Deg" * degrad

outCos = Cos("PythonRad")
outCos.save("C:\Users\OJB\Desktop\University\UsingRAS\UsingRas.gdb\PyTest")

我遇到的错误是:

Traceback (most recent call last):
File "C:/Users/OJB/Desktop/University/UsingRAS/Scripts/DegtoRad", line 11, in <module>
PythonRad = "Aspect_Deg" * degrad
TypeError: can't multiply sequence by non-int of type 'float'

我不太确定如何在不使用引号的情况下使用这个栅格数据。我对Python非常陌生,所以任何帮助都将不胜感激。

祝一切顺利

2 个回答

1

首先:当你想在字符串中使用\这个字符时,你需要用另一个\来转义它。所以你的路径应该写成这样:"C:\\Users\\OJB\\Desktop\\University\\UsingRAS\\UsingRas.gdb"

这一行:

PythonRad = "Aspect_Deg" * degrad

是没有意义的,因为你在用一个字符串和一个浮点数相乘。你需要先获取一个可以和你的浮点数相乘的对象。

2

使用arcpy模块中的栅格对象来创建一个栅格:

from arcpy import Raster

...

ras = Raster('path_to_raster') 
PythonRad = ras * degrad

另外,完成后别忘了把你的空间分析扩展功能重新检查回来。

撰写回答