ArcMapプロジェクト内から起動されるPythonコードがいくつかあります。ユーザーがプロジェクトで作成した可能性のある結合は、コードを実行するために削除する必要があります。残念ながら、結合を削除するコード…arcpy.RemoveJoin_management( "layer1"、 "layer2")…は、アプリケーションに重要ないくつかのレイヤープロパティ(強調表示されたフィールド、読み取り専用フィールドなど)も壊します。
ArcMapでレイヤーを右クリックし、[結合の削除]を選択して結合を削除した場合、レイヤーのプロパティはそのまま残ります。
コード内から結合が存在することを検出できる場合は、コードを終了し、ユーザーがコードを実行する前に手動で結合を削除する必要があるというメッセージを表示します。では、プログラムで結合を検出できますか?
Arcpyを介してRemoveJoinを実行すると問題が発生するので、少し迷っています。読み取り専用フィールドを台無しにするのはどうですか?また、ArcMapで[結合の削除]ツールを使用しても同じ問題が発生しますか?
—
Nathanus
多分これに取り組む別の方法は、あなたのpythonコードを結合に鈍感にすることでしょうか?
—
Dan S.
@ Nathanus-ArcMapで手動で[結合を削除]を実行しても、レイヤープロパティが破損しませんが、GPツールでは破損します。ESRIヘルプの関連する引用は次のとおりです。「これらのツールは、実際の舞台裏の結合処理を[データの結合]ダイアログボックスとは少し異なる方法で実行するため、そのダイアログボックスの結合機能で予期しない問題が発生した場合は、ツールを使用してください。 」
—
BrianPeasley
@ Dan S.-私はコードで挿入カーソルなどを使用しています。私は自分のコードを結合の影響を受けないようにする方法を知りません。
—
BrianPeasley 2011年
まあ、それは尋ねる価値があった。;)forums.esri.com/Thread.asp?c=93&f=1729&t=293173は、列名の前にテーブル名を付けることで、結合されたテーブルの値を更新できる可能性があることを示しているようです。多分それは挿入全体でも機能しますか?
—
ダンS.