2010-12-08 35 views
1

我想製作一個腳本,選擇以字母「LG」開頭的文件夾中的每個.png文件。然後,我希望scipt創建一個shapefile,用「SH」替換「LG」,然後我想讓腳本緩衝該shapefile,並用前兩個字母爲「SB」重命名該緩衝區!柵格到多邊形腳本循環失敗!錯誤99999!

我在第37行不斷收到錯誤消息99999!

(gp.RasterToPolygon_conversion(INPUT_RASTER, Output_polygon_features, "SIMPLIFY", "VALUE")) 

任何人都可以看到爲什麼這不工作?我對此非常非常新,並且一直盯着這個劇本拉扯我的頭髮好幾天!

下面是腳本:

# Load required toolboxes... 
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Conversion Tools.tbx") 
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Analysis Tools.tbx") 

# Script arguments... 

folder = "D:\\J04-0083\\IMAGEFILES" 
for root, dirs, filenames in os.walk(folder): # returms root, dirs, and files 
    for filename in filenames: 
     filename_split = os.path.splitext(filename) # filename and extensionname (extension in [1]) 
     filename_zero = filename_split[0] 

     try: 
      first_2_letters = filename_zero[0] + filename_zero[1] 
     except: 
      first_2_letters = "XX" 

     if first_2_letters == "LG": 
      Output_polygon_features = "D:\\J04-0083\\ShapeFiles.gdb\\" + "SH_" + filename + ".shp" 

      # Process: Raster to Polygon... 

      INPUT_RASTER = os.path.join(root + "\\" + filename_zero + ".png") 
      gp.RasterToPolygon_conversion(INPUT_RASTER, Output_polygon_features, "SIMPLIFY", "VALUE") 

      Distance__value_or_field_ = "5 Meters" 
      Raster_Buffer_shp = "SB_" + filename + ".shp" 

      # Process: Buffer... 
      gp.Buffer_analysis(Output_polygon_features, Raster_Buffer_shp, Distance__value_or_field_, "FULL", "ROUND", "NONE", "") 
+1

你很興奮! – 2010-12-08 08:52:24

+0

它沒有興奮,它是「盯着一個不能工作3天的腳本」誘發瘋狂(!!!) – 2010-12-08 08:58:16

回答

0

是png格式,這個函數希望的格式? PNG是一種壓縮格式,所以我會認爲像這樣的東西會期待未壓縮的格式。實際上,由於該函數的名稱是RasterToPolygon_conversion,函數是不是期望raster formatdocs表示輸入應該是integer raster dataset。另外,The input raster can have any cell size and may be any valid integer raster dataset.無論如何,我懷疑這是真正的問題。

要檢查的最後一件事情是,如果文件格式與上面的格式相符,那麼文件中有一個字段VALUE

0

嘗試使用GRID或TIFF文件而不是PNG。 您可以將PNG轉換爲: http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=raster_to_other_format_(multiple)_(conversion

然後將其輸出到柵格到多邊形轉換中。

你也可以查看輸入柵格的文件路徑,以確保它看起來是正確的:

INPUT_RASTER = os.path.join(root + "\\" + filename_zero + ".png") 
print INPUT_RASTER 
gp.RasterToPolygon_conversion(INPUT_RASTER, Output_polygon_features, "SIMPLIFY", "VALUE") 

還有通過建立一個文件路徑的方法:

import os 
root + os.sep + filename_zero + '.png'