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
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