ArcGIS Pythonスクリプトツールに終了コマンドを追加しますか?


8

mxdのコピーを作成し、定義クエリを設定し、定義クエリに基づいてデータドリブンページのセットをエクスポートするGISスクリプトツールがあります。エクスポートが完了すると、mxdコピー、いくつかの変数、および一連のデータベース接続が削除されます。

どこにいてもデータドリブンページのエクスポートをキャンセルするエスケープコードをコーディングする方法はありますか?スクリプト全体をキャンセルするのではなく、最後にジャンプしてmxdコピーなどを削除します。コードのブロックは次のようになります。この:

    mxd = arcpy.mapping.MapDocument(mxd_master)
    mxd_folder = os.path.dirname(mxd_master)
    mxd_copy = mxd_folder + "\\WORKING.mxd"
    mxd.saveACopy(mxd_copy)
    mxd = arcpy.mapping.MapDocument(mxd_copy)

    ddp = mxd.dataDrivenPages
    for page_num in range (1, ddp.pageCount + 1):
        ddp.currentPageID = page_num
        row = ddp.pageRow
        mapsheet = row.getValue(ddp.pageNameField.name)
        arcpy.mapping.ExportToPDF(pdf export parameters....)

    del mxd, mxd_master
    arcpy.Delete_management(mxd_copy)

基本的に、「Q」キー(または任意のキー)を押すことができるようにしたいのですが、pdfエクスポートループが壊れ、del / Delete_managementブロックが実行されます。ツールを介してスクリプトを実行しているので、それは可能ではないと思いますが、エクスポートを早期に停止することを決定した場合、手動で削除する必要がなくなるため、そうであるかどうかを確認しました。

ArcGIS Desktop 10.4を使用しています。


4
@Maddison私はこれを試していなかったので回答を投稿しませんでしたが、ArcGISヘルプトピック「スクリプトツールでのキャンセル動作について」を参照する必要があると思います。
user2856 2017

質問を編集して、使用しているArcGIS Desktopのバージョンを指定してください。参照してください gis.stackexchange.com/q/172598/2856
user2856

リンクありがとうございました。今すぐ質問を更新します。
Maddison Lussin 2017

回答:


2

見てくださいここに

つまり、コードは次のようになります。

 # Start of code

 try:
      #for loop
 except KeyboardInterrupt:
      pass

 #Rest of code

リンクされたスタックオーバーフローの質問によると、Ctrl-Cが機能して、KeyboardInterruptを開始します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.