2010-12-08 106 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'