Я пытаюсь очистить свой скрипт, чтобы мне не приходилось менять переменные каждый раз, когда я хочу его использовать.
У меня есть таблицы arcgis для каждого штата США (плюс округ Колумбия и Пуэрто-Рико).Я хочу перебрать эти таблицы в папке, объединить каждую из них в шейп-файл, скопировать объединенные объекты в новый класс пространственных объектов в другой базе геоданных, назвать этот класс пространственных объектов после соответствующего имени состояния, затем удалить объединение и двигаться дальше.в следующее состояние.
Я бы считал себя новичком, когда дело доходит до Python.Я пытался учить себя годами, но у меня не было хорошего шанса пройти углубленный курс, и у меня нет никого, с кем я работаю, который знает это слишком хорошо.Я знаю, что есть более эффективные способы написания сценариев, такие как циклы, функции и условные операторы, но я не знаю, как их правильно настроить.
Поэтому я создал сценарий, который сделал то, что мне нужно было сделатьна сегодня, но я бы хотел сделать сценарий более динамичным.Я не хочу менять каждое имя таблицы или имя нового класса объектов.Я пытался выяснить, как создать пользовательскую функцию для части кода, но затем создать цикл, чтобы он знал, как перебирать каждую таблицу в папке.Я не был уверен, нужен ли мне сначала цикл, затем функция, или цикл внутри функции.Тогда я не был уверен, как получить правильные имена для выходных классов пространственных объектов, я знаю, как можно ссылаться на динамическую переменную с помощью% s, но не уверен, как включить ее здесь.
layer = arcpy.GetParameterAsText(0)
inField = "GEOID"
jTable = r'k:\geospatial\data\census\national\census_fact_finder_data\census_tract_year_built\aa_by_state\xls_pcts\tables'
jField = "GEOID"
outFC = r'K:\GEOSPATIAL\DATA\Census\National\Census_Fact_Finder_Data\Shapefiles\CFF_Census_Tracts\PCTs\FCC_CT_YB_PCT.gdb'
arcpy.AddMessage("Processing Arizona...")
#join table to census tract layer
arcpy.AddMessage("Joining Arizona table to Census Tracts...")
tract_join = arcpy.AddJoin_management(layer, inField,jTable + "\\az_pcts", jField, "KEEP_COMMON")
#Copy joined features to new feature class in geodatabase
arcpy.AddMessage("Exporting joined features to FCC_CT_YB_PCT geodatabase...")
arcpy.CopyFeatures_management(tract_join, outFC + "\Arizona_PCT")
#remove all joins
arcpy.AddMessage("Removing joins to process next table...")
arcpy.RemoveJoin_management(layer)
arcpy.AddMessage("Arizona Complete")
Так что сВ приведенном выше примере он соединял таблицу Аризоны (az_pcts
) со слоем переписных участков (layer = arcpy.GetParameterAsText(0)
), копировал объединенные объекты в новую базу данных и называл ее Arizona_PCT
, затем удалял объединение и переходил к следующемуТаблица.Я повторил ту же самую точную структуру для каждой таблицы состояний и изменил все окончания пути так, как я хотел, чтобы они были.Если у кого-нибудь есть какие-либо советы, даже кусочки, это будет очень цениться.