私は何度も何度も同じ問題であなたを悩ませることを嫌いますが、コードにわずかな変更を加えるたびに新しい問題に遭遇します。以下のコードで私が行ったのは、フィールド名を元のフィーチャクラスと一致するように置き換えることだけでした。今では機能しません。それは私にくれました
<type 'exceptions.RuntimeError'>: ERROR 999999: Error executing function.
Failed to execute (Script).
エラーメッセージを表示せず、結果も表示しないコードに、Try / Exceptを追加してみました。
何が起こっているのかわかりませんか?これを理解するための助けは非常に高く評価されます。
import arcpy, os
Try:
roadpath = arcpy.GetParameterAsText(0)
tablepath = arcpy.GetParameterAsText(1)
datapath = os.path.split(tablepath)[0]
tablename = os.path.split(tablepath)[1]
rows = arcpy.SearchCursor(roadpath,"FROMLEFT <> 0 AND TOLEFT <> 0","","STREET_NAME_ID;FROMLEFT;TOLEFT","STREET_NAME_ID A;FROMLEFT A;TOLEFT A")
arcpy.env.workspace = datapath
if arcpy.Exists(tablename):
arcpy.DeleteRows_management(tablename)
else:
arcpy.CreateTable_management(datapath,tablename,roadpath)
arcpy.DeleteField_management(tablename,"SHAPE_Length")
irows = arcpy.InsertCursor(tablename)
first = True
for row in rows:
if first:
first = False
else:
GISID = row.GIS_ID
stid = row.STREET_NAME_ID
fl = row.FROMLEFT
tl = row.TOLEFT
if stid == prev_stid and fl <= prev_tl:
irow = irows.newRow()
irow.GIS_ID = prev_GISID
irow.STREET_NAME_ID = prev_stid
irow.FROMLEFT = prev_fl
irow.TOLEFT = prev_tl
irows.insertRow(irow)
del irow
irow = irows.newRow()
irow.GIS_ID = GISID
irow.STREET_NAME_ID = stid
irow.FROMLEFT = fl
irow.TOLEFT = tl
irows.insertRow(irow)
del irow
prev_GISID = row.GIS_ID
prev_stid = row.STREET_NAME_ID
prev_fl = row.FROMLEFT
prev_tl = row.TOLEFT
del rows, irows
except:
print arcpy.GetMessages()
` `
(ref)
tablepath
なくを読み取るように見えますtablename
。これは単なるフォーラムの誤植ですか、それとも実際にスクリプトの中でそうですか?エラーは前者を示唆しているので、両方のパラメーターに渡す値の例を提供できますか?またimport arcpy
、スクリプトの上部に行がありますか?
rows =
をirows
包括的にすることで、より明確なエラーメッセージが表示されるかどうかを確認します。また、データのサンプルと完全なスクリプトをどこかに置くことができる場合にも役立ちます(minus.comは、簡単に公開共有できる場所の1つです)。