光栅到多边形脚本循环失败!!错误99999!

时间:2010-12-08 07:25:58

标签: python esri arcmap

我正在尝试制作一个脚本,用于选择以字母“LG”开头的文件夹中的每个.png文件。然后我想要scipt创建一个shapefile,用“SH”替换“LG”,然后我希望脚本缓冲该shapefile并重命名缓冲区,前两个字母为“SB”!

我在第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", "")

2 个答案:

答案 0 :(得分:0)

这个函数想要的格式是.png吗? PNG是一种压缩格式,所以我认为像这样的东西会期望一种未压缩的格式。实际上,由于函数的名称是RasterToPolygon_conversion,函数不会期望raster format吗? docs表示输入应为integer raster dataset。另外,The input raster can have any cell size and may be any valid integer raster dataset.无论如何,我怀疑这是真正的问题。

如果文件格式正确,最后要检查的是文件中是否有字段VALUE

答案 1 :(得分:0)

尝试使用GRID或TIFF文件而不是PNG。 您可以将PNG转换为: http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=raster_to_other_format_(multiple)_(conversion

然后将其输出处理为Raster to Polygon转换。

您还可以检查INPUT RASTER的文件路径,以确保它看起来正确:

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'