Pythonを使用した属性によるアークマップ選択


9

次のようにして、グリッドと交差する「プロジェクト」レイヤーを選択(強調表示)し、選択した「グリッド」からレコードをプルします。レイヤーを保存する必要はありません。

注:PythonコンソールウィンドウのArcMap内からスクリプトを実行します。

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

このコードは実行され、エラーは発生しませんが、機能は選択(強調表示)されません。何かアイデアはありますか?また、実行が非常に遅くなります。

結果

基本的に私はこれをやろうとしている:

ここに画像の説明を入力してください

これはほぼ瞬時に非常に高速に実行されますが、Pythonを使用して同じように実行したいと考えています。選択したフィーチャのテーブルからの値が必要なだけで、レイヤーのコピーは必要ありません。

解決策の一部は、インメモリワークスペースを使用することです。

多くの場合、インメモリワークスペースへのデータの書き込みは、他の形式への書き込みよりもはるかに高速です...

インメモリワークスペースの実装方法がわからない


このスクリプトをArcMap内(つまり、Pythonコンソール)から実行していますか?または、ArcMapの外部から(つまり、IDLEまたは別のPythonエディタ内から)?ArcMapが「フィーチャを選択(ハイライト)」する唯一の方法は、ArcMap内からです。import arcpyコマンドの実行には時間がかかるため、ArcMapの外部からスクリプトを実行しているようです。
dmahr 2012

PythonコンソールウィンドウのArcMap内からスクリプトを実行しています。
Tristan Forward

ArcMap内から実行している場合は、既にレイヤーなので、arcpy.MakeFeatureLayer()ラインは必要ありませんproject。するだけarcpy.SelectLayerByLocation_management("project","INTERSECT","Grid")
dmahr 2012

素晴らしい質問形式!
Brad Nesom

@dmahrに感謝しますが、組み込みの属性による選択よりも動作は遅くなりますが、機能します。
Tristan Forward

回答:


2

良い質問!

Dmahrは正解です。フィーチャレイヤーを作成する代わりに、レイヤーを選択するだけの方が簡単です。変数はオプションですが、残りの変数も追加します。

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

私が見つけたもう1つのことは、ArcMapのpythonウィンドウでの実行が常に遅いことです。コードを.pyファイルに書き込み、それをスクリプトとしてツールボックスに追加して実行すると、処理が速くなることがわかりました。

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