Daha çox

Arcgisdəki sahə kalkulyatoru ilə faizləri hesablayın?

Arcgisdəki sahə kalkulyatoru ilə faizləri hesablayın?


Seçilmiş ərazidə hər bir çoxbucağın hər bir sahəsinin faizini hesablamağa çalışıram.

(Math.fsum (! Shape.area!) /! PolygonArea!)*100 və digər kodları istifadə etməyə çalışdım, amma işlədə bilmirəm.

Bunu necə həll etmək barədə təkliflər?


Sahə kalkulyatoru bir kursor istifadə etmədən bir xülasə edə bilməz və hesablama işləmək üçün kod blokundan istifadə etməlidir. Kursor yalnız bir dəfə işlədilməlidir, buna görə də kursor kodunu ilk qeydlə qlobal mənada və ya lüğətlə doldurmalı və sonra bütün digər qeydlər üçün kursor kodunu atlamalısınız.

Aşağıdakı nümunədə, CASE_FIELD adlı qruplaşdırma üçün bir iş sahəniz olduğunu düşünürəm, buna görə də bütün çoxbucaqlarınızın faizlərini qruplarına əsaslanaraq yalnız bir hesablama hesablaya bilərsiniz. Bu yolla hər bir çoxbucaqlı vəziyyət qrupu üçün ayrı seçkilər və hesablamalar aparmaq lazım deyil. Bu xüsusi kod sınaqdan keçirilməmişdir, lakin əlaqəli Cədvəl Veriləri ilə Etiketlər Yaratmaq mövzusunda blogumda göstərilən sübut edilmiş kod və prinsiplərə əsaslanırdı:

Ayrıştırıcı: Python

Kod Blokundan istifadə edin: yoxlanıldı

Məntiq əvvəli Script Kodu:

areaDict = {} def faiz (hal, forma_ölçüsü) qlobal alanDict if len (areaDict) == 0: # Hesabladığınız xüsusiyyət sinifinə gedən yolu təmin edinFCFC = r "C:  İstifadəçilər  İstifadəçi  Sənədləri  ArcGIS  YourGeodatabase. gdb  YourFC " # əvvəlcə hal sahəsi olan bir sahə siyahısı yaradın (məsələn: CASE_FIELD), # ardınca sahə sahəsi ([email protected]) areaFieldsList = [" CASE_FIELD "," [email protected] "] # bir axtarış kursorunu işləyin arcpy.da.SearchCursor (areaFC, areaFieldsList) ilə arrowpy.da ilə məlumatları lüğətə köçürmək üçün: areaRows üçün areaRow üçün: # key dəyərini dəyişəndə ​​saxla, beləliklə əlaqəli dəyər yalnız sətirdən bir dəfə oxunur və sürət alanını artırır. = areaRow [0] # əgər cari cərgənin sahə açarı tapılmadısa # açarı yaradın və dəyərini qeydin sahəsinə çevirin. sahə açarı artıq lüğətdədir # verilən hal üçün toplamaqla sahəsi yığınDict [areaKey] += areaRow [1] # imleci sil və r ow, bütün kilidlərin del areaRows, areaRow buraxıldığından əmin olmaq üçünDict: return shape_area / areaDict (case) * 100.0 other: return none

İfadə: faiz (! CASE_FIELD !,! Forma. Sahə!)

Düzəliş: SearchCursor köməyinə görə kursor siyahısındakı @SHAPE sahəsi SHAPE @AREA sahəsinə dəyişdirildi


Videoya baxın: Pensiya kalkulyatoru elektron xidməti istifadəyə verilib - AzTV