balparmak

Batch Clip Process

Discussion created by balparmak on May 9, 2013
Latest reply on May 10, 2013 by mdenil
Hi all,

I am using below code to clip numbers of feature from Dan Patterson;

#BatchClipFCs.py
#
#Author
#  Dan Patterson
#  Dept of Geography and Environmental Studies
#  Carleton University, Ottawa, Canada
Dan_Patterson@carleton.ca
#
#Purpose
#  Batch clips feature classes (eg shapefiles) in a project
#  and writes them to a folder.
#  Many batch clip examples exist, this is compiled for demonstration
#  purpose for a class
#
#Properties (right-click on the tool and specify the following)
#General
#  Name   BatchClipFCs
#  Label  Batch Clip Feature Classes
#  Desc   Batch clip feature classes (eg shapefiles) and saves
#         them to a folder.
#
#Source  BatchClipFCs.py
#
#Parameter list
#                                                Parameter Properties
#           Display Name          Data type      Type      Direction  MultiValue
#  argv[1]  Feature(s) to clip    Feature Layer  Required  Input      Yes
#  argv[2]  Polygon clip layer    Feature Layer  Required  Input      No
#  argv[3]  Append to output      String         Optional  Input      No
#           filename
#  argv[4]  Output folder         Folder         Required  Input      No
#--------------------------------------------------------------------
#Import the standard modules
#  Get a list of feature classes (shapefiles)
#  Get the clip feature class
#  Get the optional text to append to the filename output filename
#  Get the output folder

# Usage: BatchClipFCs <Input_Features> <ClipWith> <optional_text> <Output_Workspace>
# ---------------------------------------------------------------------------
#
# Import system modules, Create the Geoprocessor object and
# Load required toolboxes...
#
import sys, string, os, win32com.client
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Analysis Tools.tbx")
#gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")
#
# Script arguments...
FCsToClip = gp.GetParameterAsText(0)    #a list of features
fcs = string.split(FCsToClip, ";")      #split into a list
#
clipWith = sys.argv[2]                  #clip layer
desc = gp.Describe(clipWith)
clipWithType = desc.ShapeType
#
addToName = sys.argv[3]                 #optional text to append to output name
if(addToName == "#"):
  addToName = ""
#
outputFolder = sys.argv[4]              #a folder
#
gp.Addmessage("\n" + "Batch Clip Feature layers" + "\n" )
#
if (clipWithType == "Polygon"):
  for fc in fcs:
    try:
      fc=fc.replace("'","")             #check if a layers name has been changed
      desc = gp.Describe(fc)
      fcDataType = desc.DataType
      gp.AddMessage("Data type = " + fcDataType)
      if(fcDataType == "FeatureClass"): # Feature class on disk
        theName = str(os.path.split(fc)[1])
        outFile = outputFolder + "\\" + theName + addToName + ".shp"
      else:                             # Feature layer
        FullName = desc.CatalogPath
        theName = (os.path.split(FullName)[1]).replace(".shp","")
        theName = str(fc).replace(" ","_")
        outFile = outputFolder + "\\" + theName + addToName + ".shp"
        gp.AddMessage("Output file from layer " + outFile)
      #
      gp.AddMessage("Clipping " + str(fcDataType) + ": " + fc + " Saving to: " + outFile + "\n")
      try:
        gp.Clip_analysis(fc, clipWith, outFile, "")
      except:
        gp.AddMessage("Could not clip " + fc + " with " + clipWith + " to " + outFile)
    except:
      gp.AddMessage("cannot describe" + fc)
else:
  gp.AddMessage (clipWith + " is not a polygon layer, clipping terminated" )
#



but every single time when I run this code got this message:
"<type 'expestations.ImportError'>: No Module named win32com.client
Failed to execute (Script)

see attached file.

Can you please help me to solve this problem?

Thank you and much appreciated

Attachments

Outcomes