Objective
Some time ago, the data range of the colleague is too large, not so much (only need a township, the results brought to the county), too much load is also a problem. So let me deal with it.
Due to the large number of files, manual cropping, I am a one with the tools in the ArcGIS Toolbox to crop, the overall use of about 3 hours. Later, because of the need to narrow the scope again, this time one more manual then it is too pit. I thought I could use Python to write my script in batches.
Body
When you install the ArcGIS software, the Python environment is installed by default, and the arcpy library is installed. However, this Python is 2.7, I used to learn to use python3.x, I originally thought directly with 3.X, but in the "import arcpy" where there has been a problem, find some methods or not, finally can only use 2.7 of the.
The following is a batch-trimmed Python script:
ImportarcpyImportGlobImportos arcpy. Checkoutextension ('Spatial') #Specify the table of contents before croppingINWS = R"D:\PythonClip\oldData" #Specify the cropped storage directoryOutws = R"D:\PythonClip\Newdata" #Specify the SHP scope boundary file, which is the boundary of the target areaMask = R"D:\PythonClip\panhuo.shp"cluster_tolerance="0.0000001 decimaldegrees" #Use the Glob package to read all SHP files under INWS to ShpsShps = Glob.glob (Os.path.join (INWS,"*.shp")) #Loop through all the images in the SHPS and extract them by mask forshpinchShps:outname= Os.path.join (Outws, Os.path.basename (SHP))#specify how the output file is to be named PrintOutnameTry: arcpy. Clip_analysis (Shp,mask,outname)exceptException as E:PrintE.message
Due to the large number of files, it is the shp file in the specified directory, one clip and the output saved.
After cropping, you need to add the X/y coordinates of the file to the attribute list. I think this also use the script to write, good no problem The following also successfully completed:
Importarcpydefcalcxy ():Try: Print "Set ENV"Arcpy.env.workspace="D:\\pythonclip\\newdata" Print "Start AddField and Calculate centroid"Shps= arcpy. Listfiles ("*.shp") forshpinchshps:fieldlist= arcpy. ListFields (SHP,"","Double") FieldNames= [] forFieldinchfieldList:fieldNames.append (field.name)if "X" not inchfieldnames:arcpy. Addfield_management (SHP,"X","DOUBLE", 20,4) arcpy. Addfield_management (SHP,"Y","DOUBLE", 20,4) arcpy. Calculatefield_management (SHP,"X","! SHAPE. Centroid. x!","python_9.3") arcpy. Calculatefield_management (SHP,"Y","! SHAPE. Centroid. y!","python_9.3") PrintshpPrint "AddField and Calculate centroid End" exceptException as E:Printe.message Calcxy () calcxy ()
The above is the code to add x, Y.
These simple scripts can be found in the ArcGIS Help documentation, and each one has a complete example. There are some Python basics that can be implemented.
ArcGIS + Python Batch cropping, adding x/y coordinate scripts