快捷搜索:  汽车  科技

arcgis批量切割方法(ArcGISMXD批量裁剪)

arcgis批量切割方法(ArcGISMXD批量裁剪)

#coding=utf8 #by gisoracle import arcpy import os from arcpy import env import math def ConverttoStr(v): if type(v)==str: return v else: return str(v) def geotoPolygon(geometry): part_count = geometry.partCount #有几部分 array = arcpy.Array() #arcpy.AddMessage("FID:" str(FID) " part_count:" str(part_count)) for j in range(part_count): partgeometry=geometry.getPart(j) num=partgeometry.count for k in range(num): pt=partgeometry[k] Point = arcpy.Point(pt.X pt.Y) array.add(point) bPolygon = arcpy.Polygon(array) return bPolygon env.overwriteOutput = True LayerName = arcpy.GetParameterAsText(0) #图层 FieldName = arcpy.GetParameterAsText(1) #字段 outPath= arcpy.GetParameterAsText(2) #输出路径 outLX = arcpy.GetParameterAsText(3) #输出数据库类型 desc = arcpy.Describe(LayerName) if desc.shapeType!="Polygon": arcpy.AddMessage(LayerName "不是面层") pass shapeName = desc.shapeFieldName oldpath=desc.path.lower() #arcpy.AddMessage("desc.dataType:" desc.dataType ",oldpath:" oldpath) if desc.dataType.startswith("Feature"):#看是否有数据集FeatureLayer,FeatureClass,数据ShapeFile是shp if oldpath.index(".")>0: if not oldpath.endswith(".mdb"): if not oldpath.endswith(".gdb"): p=oldpath.rindex("\\") #arcpy.AddMessage("p================:" str(p) "") if p<0: p=oldpath.rindex("/") oldpath=oldpath[0: p] arcpy.AddMessage("oldpath:" oldpath "") if oldpath.endswith(".mdb"): oldlx="ACCESS_WORKSPACE" elif oldpath.endswith(".gdb"): oldlx="FILEGDB_WORKSPACE" else: oldlx="SHAPEFILE_WORKSPACE" OIDField=desc.OIDFieldName #mxd = arcpy.mapping.MapDocument("CURRENT") rows = arcpy.SearchCursor(LayerName) try: for row in rows: try: geo = row.getValue(shapeName) FID=row.getValue(OIDField) arcpy.AddMessage("FID:" ConverttoStr(FID)) bPolygon = geotoPolygon(geo) objv=row.getValue(FieldName) FieidValue=ConverttoStr(objv) gdb=".gdb" gdblx="FILEGDB_WORKSPACE" if outLX.endswith("MDB"): gdb=".mdb" gdblx="ACCESS_WORKSPACE" out_mdb=outPath "\\" FieidValue gdb if not arcpy.Exists(out_mdb): if outLX.endswith("GDB"): arcpy.CreateFileGDB_management(os.path.dirname(out_mdb) os.path.basename(out_mdb)) else: arcpy.CreatePersonalGDB_management(os.path.dirname(out_mdb) os.path.basename(out_mdb)) mxd = arcpy.mapping.MapDocument("CURRENT") for lyr in arcpy.mapping.ListLayers(mxd): arcpy.Clip_analysis(lyr bPolygon out_mdb "\\" lyr.name "") arcpy.AddMessage("lyr.name:" out_mdb "\\" lyr.name) mypath=oldpath #mxd.filePath是mxd文件路径 arcpy.AddMessage("mypath:" ConverttoStr(mypath) " out_mdb=" out_mdb " " gdblx " " oldlx) mxd.replaceWorkspaces(mypath oldlx out_mdb gdblx) mxd.saveACopy(outPath "\\" FieidValue ".mxd") except Exception as err: arcpy.AddError(err.message) finally: if mxd: del mxd

arcgis批量切割方法(ArcGISMXD批量裁剪)(1)

猜您喜欢: