Quantcast
Channel: Forums - Python
Viewing all articles
Browse latest Browse all 2485

Batch Clip Process

$
0
0
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
Attached Thumbnails
Click image for larger version

Name:	Error Message.JPG‎
Views:	N/A
Size:	49.0 KB
ID:	24158  

Viewing all articles
Browse latest Browse all 2485

Trending Articles