2012-01-02 9 views
1

私は度をラジアンに変換するためのスクリプトをPythonで作成しようとしています。共通の課題であり、周りにいることは便利なことです。私が得ている問題は、入力ラスタが文字列として読み取られているように見えることです。下記を参照してください:私を得るPythonでgdbのラスタデータセットを使用する

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

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

from arcpy import Raster 

... 

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

また、あなたが行われたときに戻ってあなたの空間アナリストの拡張子をチェックすることを忘れないでください。

+0

Brilliant!それは治療に効果があった。みんなありがとう! –

1

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

この行:あなたは浮動小数点値を持つ文字列リテラルを乗算しているよう

PythonRad = "Aspect_Deg" * degrad 

は、意味がありません。あなたはまずフロートで乗算可能なオブジェクトを取得する必要があります。

+0

@ Constantinusありがとう! Pythonのパスと\\を完全に忘れてしまった。 "Aspect_Deg"は、使用したいグリッドファイルを参照します。私は、ワークスペースが設定されている場合、特定のファイル名が "" –