Встановлення запиту визначення на шарі ArcPy з shapefile?


11

Я намагаюся визначити параметри для встановлення запиту на визначення рівня за допомогою ArcPy.

Я знаю, що це можливо при використанні arcpy.mapping.ListLayers ().

Однак у цьому сценарії я завантажую файли форм і використовую arcpy.MakeFeatureLayer_management () в ArcPy.

Я хочу встановити запит на визначення на шарі, який я створюю за допомогою цього геопроцесора.

Чи можливо це?

Відповіді:


15

Код нижче створить із файлу форми файл шару під назвою test_A.lyr, у якому запит визначення "testField" = 'A', збережений у ньому.

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

Якщо потрібно, ви також можете додати цей файл шару або об’єкт шару (лір) до того, як він буде збережений як файл шару, на вашу карту через arcpy.mapping.AddLayer.

Щоб побачити, чи проходить де_clause на MakeFeatureLayer як Запит на визначення, який, на мою думку, є недокументованою поведінкою, я провів другий тест нижче, щоб перевірити відповідь @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()
Адіна

5

Так, для вас це безумовно повинно бути можливим, оскільки саме для цього є необов'язковий параметр "where_clause" - детальну інформацію та приклади див. У його документації , але в основному вам потрібно просто включити запит визначення як параметр where_clause, і він повинен працювати. Єдине, що слід зазначити, якщо ви використовуєте шар, у якому немає поля ObjectID / FID, у ArcGIS виникають проблеми із запуском SQL-виразів, але будь-який звичайний шар ArcGIS буде.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.