シェープファイルからArcPyレイヤーに定義クエリを設定しますか?


11

ArcPyを使用してレイヤー定義クエリを設定するオプションを決定しようとしています。

arcpy.mapping.ListLayers()を使用すると可能になることを知っています。

ただし、このシナリオでは、シェープファイルを読み込んでおり、ArcPyでarcpy.MakeFeatureLayer_management()を使用しています。

このジオプロセッサを使用して作成したレイヤーに定義クエリを設定します。

これは可能ですか?

回答:


15

以下のコードは、シェープファイルから、「testField」=「A」の定義クエリが保存されているtest_A.lyrというレイヤーファイルを作成します。

import arcpy

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr")
lyr = arcpy.mapping.Layer("test_lyr")
lyr.name = "test"
lyr.definitionQuery = '"testField" = ' + "'A'"
lyr.saveACopy(r"C:\temp\test_A.lyr")

del lyr

必要に応じて、このレイヤーファイル、またはレイヤーファイルとして保存する前のレイヤーオブジェクト(lyr)をarcpy.mapping.AddLayerを介してマップに追加することもできます。

MakeFeatureLayerのwhere_clauseが定義クエリとして渡されるかどうかを確認するために、文書化されていない動作だと思うため、以下の2番目のテストを実行して@Johnの回答を確認しました。

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr2",'"testField" = ' + "'A'")
lyr2 = arcpy.mapping.Layer("test_lyr2")
lyr2.name = "test2"
lyr2.saveACopy(r"C:\temp\test_2.lyr")

del lyr2

ArcGIS Proとそのライブラリを更新するために、次のものarcpy.mapping.layer()に置き換えられましたarcpy.mp.LayerFile()
adin

5

はい、それはオプションの「where_clause」パラメータの目的であるため、間違いなく可能です。詳細と例についてはドキュメントを参照してください。注意すべきことは、ObjectID / FIDフィールドを持たないレイヤーを使用している場合、ArcGISではSQL式を実行する際に問題が発生しますが、通常のArcGISレイヤーでは問題が発生します。


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