Lebih

Klip satu folder shapefile dengan yang lain dengan akhiran nama yang sama

Klip satu folder shapefile dengan yang lain dengan akhiran nama yang sama


Saya memiliki dua folder dengan shapefile: r'E:SOPolygons' dan r'E:SODistricts'

Di dalam setiap folder saya memiliki 215 shapefile yang dinamai dengan konvensi penamaan yang serupa: poly_100 atau dist_100. Saya perlu memotong poligon dengan distrik jika angka akhirnya sama. Saya baru mengenal python dan bingung:

#folder untuk poligon Voronoi yang dipotong Voronoi_file = str(maindir) + "/" + "Voronoi_polygons" jika tidak os.path.exists(Voronio_file): os.makedirs(Voronoi_file) env.workspace = r'E:SOPolygons' outputworkspace= Voronoi_file count=0 untuk fc di arcpy.ListFeatureClasses(): end1 = str(fc[4:]) env.workspace = r'E:SODistrics' untuk fc di arcpy.ListFeatureClasses(): end2 = str (fc[4:]) if end1==end2: out_name = str((outputworkspace) + "/" + "dis_poly" + str(count)) # Kumpulkan nama titik keluaran dan path arcpy.Clip_analysis(end1, end2, out_name) count = count + 1

Ini harus melakukannya. Ini memanfaatkan konvensi penamaan Anda, dan mengasumsikan ada "dist_xxx.shp" yang cocok untuk setiap "poly_xxx.shp".

import arcpy import os def getShapefiles(aDir): # Dapatkan semua file di direktori allfiles = os.listdir(aDir) # Isolasi hanya file *.shp shpOnly = [f for f in allfiles if (os.path.splitext( f)[1] == ".shp")] return shpOnly def makeDictionary(aFCList): aDict = {} untuk fc di aFCList: idNumber = fc.split("_")[1] aDict[idNumber] = fc return aDict # File input polysDir = r'E:SOPolygons' districtDir = r'E:SODistricts' # Catatan koreksi ejaan # Isolasi file .shp dalam daftar polys = getShapefiles(polysDir) district = getShapefiles(districtsDir) # Buat kamus file distrik yang diindeks berdasarkan nomornya districtDictionary = makeDictionary(distrik) # Ulangi tugas kliping untuk p dalam poli: pFileName = os.path.split(p)[1] # Jika ada garis bawah di dalam nama direktori idNumber = pFileName.split("_")[1] # Dapatkan digit setelah "_". clippingFeatures = districtDictionary[idNumber] # Temukan distrik yang cocok. outName = os.path.splitext(p)[0] + "_clp.shp" # Tambahkan "_clp"; mengasumsikan shapfiles, bukan gdb fc. arcpy.Clip_analysis(p, clippingFeatures, outName) # Clip.

Anda membuat daftar di dalamuntukgaris:

untuk fc di arcpy.ListFeatureClasses():

arcpymenggunakan lingkungan ruang kerja saat mengembalikan daftar yang telah Anda ubah. Anda juga telah menggunakan variabel yang samafcdi kedua loop!

Coba ini:

arcpy.env.workspace = r'E:SOPolygons' myList = arcpy.ListFeatureClasses() untuk fc di Daftar Saya: end1 = str(fc[4:]) arcpy.env.workspace = r'E:SO MyList2 kabupaten = arcpy.ListFeatureClasses() untuk fc2 di MyList2: # lakukan klip

Ini adalah bagaimana saya akan melakukannya. Ini belum diuji tetapi harus bekerja. Kode mengulangi daftar kelas fitur dari kedua direktori Anda dan mencari file yang ditemukan di kedua direktori yang memiliki angka yang sama setelah garis bawah:

import arcpy, os clippeeDir = r'E:SOPolygons' clipperDir = r'E:SODistrics' outDir = r'E:SOVoronio_file' arcpy.env.worksapce = clippeeDir untuk c1 di arcpy.ListFeatureClasses (): print c1 clippeeFile,clippeecCode = c1.split('_') arcpy.env.workspace = clipperDir untuk c2 di arcpy.ListFeatureClasses(): clipperFile,clipperCode = c2.split('_') jika clippeecCode == clipperCode : clippee = os.path.join(clippeeDir,clippeeFile) clipper = os.path.join(clipperDir,clipperFile) outFile = os.path.join(outDir,file+code+'_clip') arcpy.Clip_analysis(clippee,clipper, file keluar)

Tonton videonya: Ինչպես միավորել pdf ֆայլերը օնլայն