יותר

לחשב אחוזים עם מחשבון שדה ב- arcgis?


אני מנסה לחשב את האחוז של כל שטח של כל מצולע באזור שנבחר.

ניסיתי להשתמש ב- (math.fsum (! Shape.area!) /! PolygonArea!)*100 ובקודים אחרים אך לא הצלחתי לגרום לזה לעבוד.

הצעות כיצד לפתור זאת?


מחשבון השדות אינו יכול לעשות סיכום ללא שימוש בסמן, והחישוב חייב להשתמש בבלוק הקוד כדי לעבוד. יש להפעיל את הסמן פעם אחת בלבד, לכן עליך לגרום לקוד הסמן לאכלס ערך או מילון גלובלי עם הרשומה הראשונה ולאחר מכן לדלג על קוד הסמן עבור כל הרשומות האחרות.

בדוגמה למטה אני מניח שיש לך שדה מקרה לקיבוץ בשם CASE_FIELD כך שתוכל לחשב אחוזים עבור כל המצולעים שלך על סמך הקבוצה שלהם באמצעות חישוב אחד בלבד. כך אינך צריך לבצע בחירות וחישובים נפרדים עבור כל קבוצת מקרה מצולע. קוד ספציפי זה אינו נבדק, אך הוא התבסס על הקוד והעקרונות המוכחים המתוארים בבלוג שלי בנושא יצירת תוויות עם נתוני טבלה קשורים:

מנתח: פייתון

השתמש בלוק קוד: מסומן

קוד סקריפט טרום לוגי:

areaDict = {} אחוזי def (case, shape_area) גלובלי areaDict if len (areaDict) == 0: # ספק את הנתיב למחלקת התכונות שאתה מחשב areaFC = r "C:  Users  USERNAME  Documents  ArcGIS  YourGeodatabase. gdb  YourFC " # צור רשימת שדות עם שדה התיק תחילה (דוגמה: CASE_FIELD), # ואחריו שדה האזור ([email protected]) areaFieldsList = [" CASE_FIELD "," [email protected] "] # עיבוד סמן חיפוש להעביר את הנתונים למילון באמצעות arcpy.da.SearchCursor (areaFC, areaFieldsList) כ- AreaRows: עבור areaRow in areaRows: # אחסן את ערך המפתח במשתנה כך שערך ה- # נקרא רק מהשורה פעם אחת, שיפור אזור המהירות מפתח = areaRow [0] # אם מפתח האזור של השורה הנוכחית לא נמצא # צור את המפתח והפוך את הערך שלו לאזור הרשומה אם לא areaKey in areaDict: areaDict [areaKey] = areaRow [1] אחר: # if מפתח האזור כבר נמצא במילון # צבר את השטח על ידי סיכום עבור אזור השדה הנתון areaDict [areaKey] += areaRow [1] # מחק את הסמן, ו- r ow כדי לוודא שכל המנעולים משחררים את האזור שורות, אזור שורת אם מקרה באזור אזור: חזור צורה_שטח / אזור דקט (מקרה) * 100.0 אחר: החזר אין

ביטוי: אחוז (! CASE_FIELD !,! Shape.area!)

עריכה: השתנה שדה @SHAPE ברשימת שדות הסמן לשדה SHAPE @AREA לפי העזרה של SearchCursor


צפו בסרטון: Calculating Area of Polygons using ArcGIS (אוֹקְטוֹבֶּר 2021).