【问题标题】:Using raster datasets from a gdb in python在 python 中使用来自 gdb 的栅格数据集
【发布时间】:2012-01-02 16:02:38
【问题描述】:

我正在尝试编写一个脚本,用于在 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 很陌生,因此我们将不胜感激。

一切顺利

【问题讨论】:

    标签: python floating-point gis raster arcpy


    【解决方案1】:

    使用 arcpy 模块中的栅格对象来实例化栅格:

    from arcpy import Raster
    
    ...
    
    ras = Raster('path_to_raster') 
    PythonRad = ras * degrad
    

    另外,完成后不要忘记重新检查您的空间分析扩展。

    【讨论】:

      【解决方案2】:

      首先:当您想在字符串中使用\ 字符时,您必须使用另一个\ 对其进行转义。所以你的路径看起来像这样:"C:\\Users\\OJB\\Desktop\\University\\UsingRAS\\UsingRas.gdb"

      这一行:

      PythonRad = "Aspect_Deg" * degrad
      

      没有意义,因为您将字符串文字与浮点值相乘。您必须首先检索一个可与您的浮点数相乘的对象。

      【讨论】:

      • @Constantinus 谢谢!完全忘记了 python 的路径和 \\. “Aspect_Deg”是指我要使用的网格文件。我想如果设置了工作区,特定的文件名必须在 ""
      猜你喜欢
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2018-07-10
      • 2020-09-21
      • 1970-01-01
      相关资源
      最近更新 更多