ArcGIS批量導出柵格影像的屬性表


需要將多幅TIF影像中的屬性表導出后參與運算。

1. 打開 ArcMap 或者 ArcCatalog

 

2. 在文件夾中新建文件地理數據庫。 

 

3. 導入柵格。    

   

 

4. 打開Python窗口,修改代碼,輸入進行計算。

以下代碼將各文件的屬性表分別導出為.csv文件。合並為一個.csv 文件在第二段代碼。

# coding:utf-8
#功能:批量導出柵格文件的屬性表。
#使用步驟 1:在相應文件夾下新建“文件地理數據庫”,並將需要導出屬性表的柵格文件“導入”到該數據庫中。
#使用步驟 2:更改第二行代碼[ws = r'D:\test\test1.gdb']為自己的文件存放地址和數據庫名稱,第三行同樣的處理。
#使用步驟 3:復制代碼在ArcGIS中運行即可。
import arcpy, os 
ws = r'D:\t\test.gdb'      
outPath = r'D:\test' 
outExt = ".csv"  
arcpy.env.workspace = ws  
rasters = arcpy.ListRasters("*") 
for raster in rasters:
     rasloc = ws + os.sep + raster
     fields = "*"
     try:
          lstFlds = arcpy.ListFields(rasloc)
          header = ''         
          for fld in lstFlds:
               header += ",{0}".format(fld.name)
               if len(lstFlds) != 0:
                    outCSV = outPath + os.sep + raster + outExt
                    f = open(outCSV,'w')
                    header = header[1:] + ',RasterName\n'
                    f.write(header)
                    with arcpy.da.SearchCursor(rasloc, fields) as cursor:
                         for row in cursor:
                              f.write(str(row).replace("(","").replace(")","") + "," + raster + '\n')
                    f.close()
     except Exception as e:
          print (e)

 

導出至同一個csv文件。

# coding:utf-8
#功能:批量導出柵格文件的屬性表。
#使用步驟 1:在相應文件夾下新建“文件地理數據庫”,並將需要導出屬性表的柵格文件“導入”到該數據庫中。
#使用步驟 2:更改第二行代碼[ws = r'D:\test\test.gdb']為自己的文件存放地址和數據庫名稱,第三行同樣的處理。
#使用步驟 3:復制代碼在ArcGIS中運行即可。
import arcpy, os 
ws = r'D:\test\test.gdb'      
outCSV = r'D:\test\0.csv' 
arcpy.env.workspace = ws  
rasters = arcpy.ListRasters("*")
for raster in rasters:
    rasloc = ws + os.sep + raster
    fields = "*"
    try:
        lstFlds = arcpy.ListFields(rasloc)
        header = '' 
        header += ",{0}".format(lstFlds[0].name)+",{0}".format(lstFlds[1].name)
        if len(lstFlds) != 0:                    
            f = open(outCSV,'a')
            header =header[0:] + ',RasterName\n'
            f.write(header)
            with arcpy.da.SearchCursor(rasloc, fields) as cursor:
                for row in cursor:
                    f.write(str(row).replace("(","").replace(")","") + "," + raster + '\n')
            f.close()
    except Exception as e:
        print (e)
del row

 

參考地址

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM