יותר

שמירה נכשלת באובייקט רסטר שנוצר מ- NumpyArrayToRaster?


אני מנסה לשמור רשת ESRI הבנויה ממערך מטופש ומתקבלת שגיאה שמעולם לא ראיתי:

חריגה לא מטופלת: System.IO.FileNotFoundException: לא ניתן היה לטעון קובץ או הרכבה 'GpMetadataFunctions, Version = 10.2.0.0, Culture = neutral, PublicKeyToken = 8fc3cc631e44ad86' או אחת מהתלות שלה. המערכת לא יכולה למצוא את הקובץ שצוין. שם הקובץ: 'GpMetadataFunctions, Version = 10.2.0.0, Culture = neutral, PublicKeyToken = 8fc3cc631e44ad86' ב- System.Reflection.Assembly._nLoad (שם קובץ Assembly, String codeBase, Evidence AssemblySecurity, Assembly LocationHint, StackCrawlMark, StackMark, BooleanNOF) ב- System.Reflection.Assemble.InternalLoad (AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark & ​​stackMark, Boolean forIntrospection) ב- System.Reflection.Assemble.InternalLoad (String Assembly String, Evidence AssemblySecurity, StackCrawlMark & ​​StackMark, Boolean.Innl. (String assemblyString) ב- GetManagedType (Char* _assemble, Char* _path, Char* _className)

WRN: רישום כריכת ההרכבה כבוי. כדי לאפשר רישום כשל בכריכת הרכבה, הגדר את ערך הרישום [HKLM Software Microsoft Fusion! EnableLog] (DWORD) ל- 1. הערה: יש עונש ביצועים כלשהו הקשור לרישום כשלים בכריכת הרכבה. כדי לכבות תכונה זו, הסר את ערך הרישום [HKLM Software Microsoft Fusion! EnableLog].

אני משתמש בזרימת עבודה חלופית לעת עתה, אך עדיין ארצה לנסות לפתור את הבעיה עם שמירת רסטר ממערך מטופש.

הנה מה שניסיתי לעשות:

  1. לקרוא ברשת ESRI,
  2. ליצור מערך מטומטם,
  3. לעשות סיווג מחדש ידני, וכן
  4. שמור את המערך המעובד ברשת ESRI חדשה

התהליך מתקדם כצפוי עד שלב 3 ונכשל בשלב 4 לאחר המערך הומר לאובייקט רסטר (ראה קוד להלן). זה כאשר הלשמורשיטת הסריקה נקראת כי נתקלת בשגיאה.

קיבלתי את אותה השגיאה כשניסיתי ליצור מערך מטומטם מ- raster geo-tiff (נכשל בשיחהarcpy.RasterToNumPyArray); הצלחתי לעקוף זאת על ידי העתקת קובצי ה- tifs המקוריים לפורמט רשת ESRI תחילה.

הנה הקוד שלי:

יבוא arcpy ייבוא ​​numpy כ- np arcpy.env.overwriteOutput = true arcpy.env.workspace = 'SwbLandUseParameters.gdb' # טבלאות רשימה לשימוש בטבלאות הסיווג מחדש = arcpy.ListTables ('SwbLandUseParameters*') # רשימה רסטרי שימוש במקרקעין lu_rasters = arcpy.ListRasters ('nlcd*', 'GRID') עבור lu_raster ב- lu_rasters: הדפס 'עיבוד raster', lu_raster # קבל מאפייני raster r = arcpy.Raster (lu_raster) ll = r.extent.lowerLeft x_cell_size = r.meanCellWidth y_cell_size = r.meanCellHeight ncol = r.width nrow = r.height year = lu_raster [-4:] # המרת הרסטר למערך numpy lu = arcpy.RasterToNumPyArray (r, ll, ncol, nrow) # צור חבילה של סיווג מחדש רסטרים המשתמשים בטבלאות פרמטרים עבור tbl בטבלאות: temp = np.copy (lu) עם arcpy.da.SearchCursor (tbl, '*') כ cur: לשורה ב- cur: הדפס שורה old_val = שורה [1] new_val = שורה [ 2] temp [temp == old_val] = new_val new_raster = arcpy.NumPyArrayToRaster (temp, ll, x_cell_size, y_cell_size, 0) new_raster_name = tbl + '_' + הדפסה לשנה ', new_raster_name ne w_raster.save (שם_רסטר חדש)