Daha çox

ArcPy GetParameterAsText siyahısını istifadə edərək birləşir


ArcPy üçün olduqca yeniyəm, ona görə dözün. FCs siyahısını "GetParameterAsText" dən birləşmə vasitəsi kimi bir şeyə necə verəcəyimi başa düşməkdə çətinlik çəkirəm. GetParamterAsText pəncərəmi Feature Class və çox dilli olaraq təyin etmişəm, beləliklə alət dialoqunda bir qrup təbəqəni özünə sürükləyə bilərəm.

inputLayer = arcpy.GetParameterAsText (1)

Birləşdirmə əmrini işə saldığımda, görünür; ";" qoyaraq gözlənilən sintaksisini pozur. "," yerinə ayırıcı kimi.

Bunu etmək:

arcpy.Merge_management (inputLayer, outputName, "")

Bu xətanı mənə atır:

"C:  Development  Merge_Dissolve  GA0combined.shp; C:  Development  Merge_Dissolve  GA25combined.shp" mövcud deyil

";" Əvəz etmək üçün bir funksiya yaratmağa çalışdım. "," ilə, amma mənim inputLayer dəyişənimdə iş görmür, amma birləşdirmək kimi bir çox giriş qəbul edən vasitələrlə FC siyahıları ilə işləmək üçün daha standart bir yol olduğunu düşünürəm.


Parametri birləşdirmək üçün gözlənilən siyahıya çevirmək üçün split istifadə edin.

inputLayer = arcpy.GetParameterAsText (1) list2merge = inputLayer.split (";")

cəhd edin

parameter = arcpy.GetParameter (1) inputLayers = parameter.values ​​()

Bu, fərqli bir təbəqələri bir siyahı olaraq verməlidir. Daha sonra ayrı-ayrı təbəqələrə indekslə və ya bir döngədə daxil ola bilərsiniz

qat = inputLayers [0]

və ya

inputLayers-də qat üçün: (qatınızla bir şey edin)

Python-da çox dəyərləri qəbul edən bir vasitə üçün dəyərlərin uğurla biçimləndirilməsinin bir neçə yolu var.

  1. Yarım nöqtəli ayrılmış məlumat sətri birdən çox giriş qəbul edən hər hansı bir geoprosessinq parametri üçün etibarlı bir girişdir. Bu etibarlıdır və nə əldə edəcəksinizGetParameterAsTextçox dəyərli bir parametrdə.
  2. Xüsusiyyət siniflərinin sətirlərinin siyahısı (və ya təbəqələr və ya cədvəl görünüşləri və ya alət parametri qəbul etdiyi hər hansı bir şey).
  3. SiyahısıArcpy.Dəyərobyektlər. İstifadə edirsinizsəGetParameterbu almalı olduğunuz şeydir.
  4. Yaradın və doldurunarcpy.ValueTableobyekt. Dəyərindən daha çox səy göstərdiyinə görə bunu əvvəlcədən tövsiyə etmirəm, amma nəticə verəcəkdir.

1 nömrəli işi görmüsünüzsə və işə yaramırsa, məlumatın olub-olmadığını soruşardım.


Beləliklə, cavab verdim ki, bir siyahı yaratmalı və sonra birləşdirmə əmrinə daxil etməliyəm. Əvvəllər mənim üçün işləyən (və əvvəlcə buna necə yanaşdığım kimi) # 1-nin @DWynne-dən niyə işləmədiyindən əmin deyiləm, birdən çox giriş götürən başqa bir alətdə.

Bu mənim əsas axınım idi:

inputLayer = arcpy.GetParameterAsText (1) layerList = inputLayer.split (";") arcpy.Merge_management (layerList, tempmergeName, "")


Videoya baxın: 6 - Search Cursors - ArcMap Scripting with Python and Arcpy (Sentyabr 2021).