テスト中に後続のステップが失敗した場合でも、arcpy.MakeFeatureLayerインメモリレイヤーが存在する


9

Arcgisscriptingを使用してgp.makefeaturelayerでメモリ内出力レイヤーを作成したとき、それをtry / exceptブロックに入れ、makefeaturelayerが失敗したときに、exceptピースのgpオブジェクトを削除しました。これで、arcpyを使用しているときに、メモリ内の出力レイヤーを削除するために、アイドルウィンドウを閉じて再度開く必要があるようです。

makefeaturelayerツールの出力レイヤーをtry / exceptブロックで削除するにはどうすればよいですか?ありがとう。


フィーチャレイヤーは、フィーチャクラスの軽量表現です。削除する必要がある特定の理由はありますか?
blah238

インメモリフィーチャレイヤーを作成しているときに次のステップが失敗した場合。調整を行い、スクリプトをアイドル状態で再実行しますが、「フィーチャレイヤー」が既に存在するため、アイドルを閉じて再起動する必要があります。余分な時間がかかります。
ジャスティン

Make Feature Layerはデータを作成せず、一部の既存のデータのビューのみを作成します。おそらく、代わりにインメモリフィーチャクラスを作成していますか?その場合、Danの提案を使用して、メモリ内のフィーチャクラスを上書きします。アプリケーションが終了するまでメモリを占有し続けるため、不要になったメモリ内フィーチャクラスを削除することもお勧めします。
blah238

フィーチャレイヤーの詳細については、ヘルプの「レイヤーとテーブルビューの操作」をご参照ください。
blah238

回答:



8

含む

arcpy.env.overwriteOutput = True

スクリプト内では、「不良」バージョンを削除することなく、以前のバージョンのファイルを上書きします。


2
する必要がありますarcpy.env.overwriteOutput = True
Josh Werts 2015

7

exceptコードブロックでフィーチャレイヤーを削除しても機能しません。exceptコードブロックを使用している場合、フィーチャレイヤーの作成に失敗しました。

tryブロックが成功したかどうかにかかわらず実行されるfinallyコードブロックを追加することをお勧めします。これを行う場合、フィーチャレイヤーを削除する前に、そのレイヤーが存在することを確認する必要があります。

try:
    arcpy.MakeFeatureLayer_management(inFeatureClass, "outFeatureLayer", {whereClause})
except:
    print arcpy.GetMessages()
finally:
    if arcpy.Exists("outFeatureLayer"):
        arcpy.Delete_management("outFeatureLayer")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.