1

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が初めてなので、助けていただければ幸いです。

ではごきげんよう

4

2 に答える 2

2

arcpy モジュールのラスター オブジェクトを使用して、ラスターをインスタンス化します。

from arcpy import Raster

...

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

また、完了したら、Spatial Analyst エクステンションをチェックインすることを忘れないでください。

于 2012-01-02T16:23:12.877 に答える
1

最初:\文字列でその文字を使用する場合は、別の でエスケープする必要があります\。したがって、パスは次のようになります。"C:\\Users\\OJB\\Desktop\\University\\UsingRAS\\UsingRas.gdb"

この行:

PythonRad = "Aspect_Deg" * degrad

文字列リテラルに浮動小数点値を掛けているため、意味がありません。まず、フロートで乗算可能なオブジェクトを取得する必要があります。

于 2012-01-02T16:24:50.387 に答える