пропуск существующих файлов в pyton2.7

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Dmytro Gilitukha
Новоприбывший
Сообщения: 5
Зарегистрирован: 13 сен 2011, 19:56
Репутация: 0

пропуск существующих файлов в pyton2.7

Сообщение Dmytro Gilitukha »

Здравствуйте
Нужна помощь: для обработки большого количества файлов использую скрипт написан на pyton2.7 иногда выбивает ошибку и скрипт останавливается, причины разные, но дважды для одного файла не повторяются.
Есть команда, при повторении перезаписать env.overwriteOutput = True но это занимает большое количество времени.

- Какую команду можно использовать, чтобы пропустить определенную операцию для существующих файлов?

- Или как заставить обрабатывать файлы сортирую по возрастании за именем
doujin
Активный участник
Сообщения: 163
Зарегистрирован: 28 июн 2012, 01:02
Репутация: 84
Откуда: Vladivostok

Re: пропуск существующих файлов в pyton2.7

Сообщение doujin »

Если ArcGIS 10.x или новее, то для пропуска существующих файлов можно использовать конструкцию типа:

Код: Выделить всё

import arcpy
if not arcpy.Exists(path_to_file):
do_stuff()

Или же так, если проверять нужно только реальные файлы, а не классы в базе, например:

Код: Выделить всё

import os
if not os.path.exists(path_to_file):
do_stuff()

А последний пункт вашего поста вообще не понял.
Dmytro Gilitukha
Новоприбывший
Сообщения: 5
Зарегистрирован: 13 сен 2011, 19:56
Репутация: 0

Re: пропуск существующих файлов в pyton2.7

Сообщение Dmytro Gilitukha »

спасибо за помощь

выдает такую ошибку:

Код: Выделить всё

Traceback (most recent call last):
  File "H:\scripts\JAXA_7.py", line 8, in <module>
    do_stuff()
NameError: name 'do_stuff' is not defined
нужно если существует такой файл повторить первую операцию

Код: Выделить всё

arcpy.CopyRaster_management
с другим файлом. Я так понимаю если повториний не будет пойдут все остальные операции в цикле?

вот сам код :

Код: Выделить всё

import arcpy
from arcpy import env  
from arcpy.sa import *
# Overwrite pre-existing files
if not arcpy.Exists("out_rasterdataset"):
    do_stuff()

env.workspace = "H:/JAXA_7/"

remap = RemapValue([[1,1], [2,"NoData"], [3, "NODATA"]])

# Get a list of ESRI GRIDs from the workspace
rasterList = arcpy.ListRasters("*", "dat")
for raster in rasterList:
    Raster_rec=env.workspace + "/2_recl/"+ raster[:-9] + "_recl.img"
    Raster_agg=env.workspace + "/3_agg/"+ raster[:-9] + "_agg.img"
    Raster_mos=env.workspace + "/4_mos/"
    
    print raster
    
    # Check out Spatial Analyst extension license
    arcpy.CheckOutExtension("Spatial")

    # Copy raster to img
    out_rasterdataset = env.workspace + "/1_copy/"+ raster[:-9] + ".img"
    arcpy.CopyRaster_management(raster, out_rasterdataset)
    print "Copied to img"

    #Reclass the rasters to exclude the background value
    outReclassify = Reclassify(out_rasterdataset, "Value", remap)
    outReclassify.save(Raster_rec)
    print "Reclassified"

    # Execute Aggregate
    outAggreg = Aggregate(Raster_rec, "3","SUM","EXPAND","DATA")
    outAggreg.save(Raster_agg)
Dmytro Gilitukha
Новоприбывший
Сообщения: 5
Зарегистрирован: 13 сен 2011, 19:56
Репутация: 0

Re: пропуск существующих файлов в pyton2.7

Сообщение Dmytro Gilitukha »

спасибо, тепер работает

Код: Выделить всё

if not arcpy.Exists(out_rasterdataset):
    arcpy.CopyRaster_management(raster, out_rasterdataset)
вот исправлен код :

Код: Выделить всё

import arcpy
from arcpy import env  
from arcpy.sa import *
 
env.workspace = "H:/JAXA_7/"

remap = RemapValue([[1,1], [2,"NoData"], [3, "NODATA"]])

# Get a list of ESRI GRIDs from the workspace
rasterList = arcpy.ListRasters("*", "dat")
for raster in rasterList:
    Raster_rec=env.workspace + "/2_recl/"+ raster[:-9] + "_recl.img"
    Raster_agg=env.workspace + "/3_agg/"+ raster[:-9] + "_agg.img"
    Raster_mos=env.workspace + "/4_mos/"
    
    print raster
    
    # Check out Spatial Analyst extension license
    arcpy.CheckOutExtension("Spatial")

    # Copy raster to img
    out_rasterdataset = env.workspace + "/1_copy/"+ raster[:-9] + ".img"
    if not arcpy.Exists(out_rasterdataset):
    arcpy.CopyRaster_management(raster, out_rasterdataset)
    print "Copied to img"

         #Reclass the rasters to exclude the background value
         outReclassify = Reclassify(out_rasterdataset, "Value", remap)
         outReclassify.save(Raster_rec)
         print "Reclassified"

         # Execute Aggregate
         outAggreg = Aggregate(Raster_rec, "3","SUM","EXPAND","DATA")
         outAggreg.save(Raster_agg)
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя