Daha çox

Model istehsalçısında təkrarlanmanın atlanması

Model istehsalçısında təkrarlanmanın atlanması


Beləliklə, başqasının modelini təmizləmək mənə tapşırıldı.

Vəziyyət budur. Modelin xüsusiyyət siniflərini ehtiva edən bir neçə yüzdən çox qovluğu yinelemesi və içindəkiləri shapefiles-ə çevirməsi lazım idi. Qovluqda "arc" adlı bir fayl yoxdursa model uğursuz olur, buna görə orada olub olmadığını yoxlamaq üçün bir az piton yazmalıyam, yoxsa cari təkrarlamanı atlayaraq növbəti qovluğa davam edin.

Mənim problemim odur ki, model istehsalçısının qurulması ilə bir iterator vasitəsi daxilində təkrarlamanı atlamağın yolu yoxdur. Fikirləriniz varmı? Yarım yolda bütün aləti pythonda yenidən yazmağı düşünürəm.

Budur yineleyicinin ekran görüntüsü

Təkrarlamanı atlamaq üçün hesablama dəyərindən istifadə etməyim təklif edilmişdir. Kod kifayət qədər sadə olmalıdır, lakin təkrarlamanı atlamaq üçün true / false çıxışı necə istifadə edirəm?


Mən yalnız şərh verərdim, amma nümayəndəm çox aşağıdır.

Stimsonun dediyi kimi, Pythona gedin. Düşünmək olar ki, içərisinə yerləşdirilmiş dönüşüm prosesi ilə sadə bir ifadə işləyəcəkdir. Belə ki:

arcpy.ListFeatureClasses () içərisindəki fc üçün: əgər arcpy.Exists ('arc'): SelectData_mb (in_dataelement, {out_dataelement}) arcpy.CopyFeatures_management (#files kopyalamaq, outpath)

Yaxşı millət, mən bunu başa düşdüm.

Birincisi, problem 'arc' adlı bəzi sənədlərin itkin olmaması deyildi. Problem, seçilmiş məlumat alətinin 'Çıxış Dəyərləri' siyahısına boş bir qovluq qoymasıdır, sonra Featureclass-da Shapefile-ə sıfır dəyərləri çevirməyə çalışarkən problemə səbəb olacaqdır. Bu mövzuda təklif olunduğu kimi, həm məlumat seçimi, həm də dönüşüm proseslərini əhatə edən pitonda bir həll kodlaşdırdım.

import arcpy, os, re # aşağıdakı sətir, yalnız dempoints r = re.compile (r ". *  dempoints") kimi qeyd edilmiş xüsusiyyət məlumat dəstləri vasitəsilə təkrarlamaq üçün istifadə ediləcək bir regexdir. shapefiles saxlanacaq inputDir = arcpy.GetParameterAsText (0) outputDir = arcpy.GetParameterAsText (1) # fayllar sistemimdə rekursiv olaraq saxlanılır, beləliklə os.walk yol, dirs, os.walkdakı fayllar üçün hər şeyi təkrarlayır ( inputDir): holder = path # os.walk xüsusiyyət siniflərini ehtiva edən xüsusiyyət verilənlər bazasına rast gəldikdə ArcGis 'in iş sahəsi dəyişənini bu qovluq olaraq təyin edəcəkdir. r.match (holder): arcpy.env.workspace = arcpy.ListFeatureClasses (): arcpy.FeatureClassToShapefile_conversion (fc, outputDir)

Beləliklə, nəticədə kodum hər şeydən keçir və siyahı quruluşunda saxlamağın və sonradan təkrarlamanın əvəzinə fayl-fayl şəklində bir shapefile yaradır.


Model qurucusunda bunu belə edərdim:

Alt modeliniz bir geodatabase götürür və məzmunu bir siyahıya yığır

Master modeli alt modeli çağırır, ancaq bunun üçün hesablama vasitəsi olan bir şərt var. Bu giriş geodatabase məlumat bir xüsusiyyət sinif var yoxlamaq üçün kiçik bir piton kodu varqövs. Bunu qovluqlar üçün uyğunlaşdıra bilərsiniz.

Hesablama dəyəri aləti aşağıdakı kimi qurulub, modelin GeoDatabase elementinin necə keçdiyini qeyd edinyaxşıdırsatır içi əvəzetmədən istifadə edən funksiya:

Alternativ olaraq bütün bunları başqalarının təklif etdiyi kimi python kimi yaza bilərsiniz.


Videoya baxın: Our Miss Brooks: Mash Notes to Harriet. New Girl in Town. Dinner Party. English Dept. Problem