2010-12-08 35 views
1

J'essaie de créer un script qui sélectionne tous les fichiers .png dans un dossier commençant par les lettres "LG". Je veux ensuite que la scipt crée un fichier de formes, en remplaçant le "LG" par "SH", et ensuite je veux que le script mette en tampon ce shapefile et renommer le buffer avec les 2 premières lettres étant "SB"!Echec de la boucle de script Raster to Polygon !! erreur 99999!

Je reçois toujours un message d'erreur 99999 à la ligne 37!

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

Quelqu'un peut-il voir pourquoi cela ne fonctionne pas? Je suis très, très nouveau à ce sujet et ai regardé fixement ce script m'arrachant les cheveux pendant des jours !!

Voici le script:

# 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

Vous êtes très excitable!!! –

+0

ce n'est pas de l'excitation c'est "regarder un script qui ne fonctionne pas pendant 3 jours" folie induite (!!!) –

Répondre

0

est-.png le format que cette fonction veut? PNG est un format compressé donc je pense que quelque chose comme ça attendrait un format non compressé. En fait, puisque le nom de la fonction est RasterToPolygon_conversion, la fonction ne s'attendrait-elle pas à raster format? Le docs indique que l'entrée doit être un integer raster dataset. En outre, The input raster can have any cell size and may be any valid integer raster dataset. En tout cas, je soupçonne que c'est le vrai problème.

La dernière chose à vérifier, si le fichier est dans le bon format comme ci-dessus, est s'il y a un champ VALUE dans le fichier. Essayez d'utiliser un fichier GRID ou TIFF au lieu d'un fichier PNG.

+0

C'est la nouvelle erreur que je reçois! Mais quand je cours les fonctions manuellement dans ArcMap je n'obtiens aucune erreur - d'où la confusion! –

0

Vous pouvez convertir le fichier PNG avec: http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=raster_to_other_format_(multiple)_(conversion)

puis de traiter sa sortie dans la conversion Raster vers polygone.

Vous pouvez également vérifier le chemin du fichier de INPUT TRAME pour vous assurer qu'il semble correct par:

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

Il y a aussi une méthode de construction d'un filepath par:

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