import numpy as np import os from glob import glob from pathlib import Path from multiprocessing import Pool import hashlib # md5 import time import shutil import datetime ######################################################## # 函数区 ######################################################## spacetySliceEnvPathExEPath=r"d:\ProgramData\anaconda3\envs\spacetySliceEnv\python.exe" logPath=r"R:\TYSAR-德清院\A-预处理-未标注\A0-算法版本\AA\SpacetySliceDataTools\log\process.log" def existOrCreate(dirpath): if not os.path.exists(dirpath): os.makedirs(dirpath) def moveDir(srcfolderPath,targetfolderPath): try: shutil.copytree(srcfolderPath,targetfolderPath,dirs_exist_ok=True) print("sucess: copy ", srcfolderPath,targetfolderPath ) shutil.rmtree(srcfolderPath) print("sucess: rmtree ", srcfolderPath) return "sucess: copy and rmtree from {} to {}".format(srcfolderPath,targetfolderPath),True except Exception as e: print("failed: copy ", srcfolderPath, targetfolderPath) return "failed: copy and rmtree from {} to {}".format(srcfolderPath,targetfolderPath),False def writeoutlog(logPath,cmdtxt): with open(logPath,'a',encoding="utf-8") as f: f.write(cmdtxt) f.write("\n") def preProcessTiFF(tiffpath,txtpath,preFolderPath): file_path = Path(tiffpath) directory_path = str(file_path.resolve().parent.name) rootname=Path(tiffpath).stem outpngpath=os.path.join(preFolderPath,"I"+directory_path+"_"+rootname+'.png') programpath=r"R:\TYSAR-德清院\A-预处理-未标注\A0-算法版本\AA\SpacetySliceDataTools\generatorRasterSlicesTools\SpacetyTIFFDataStretch2PNG_AC.py" # cmdtxt=r"{} {} -i {} -o {} --filemode --SquareRoot".format(spacetySliceEnvPathExEPath,programpath,tiffpath,outpngpath) cmdtxt=r"{} {} -i {} -p {} -o {} --slicemode --SquareRoot".format( spacetySliceEnvPathExEPath,programpath, tiffpath, txtpath, preFolderPath ) # 直接切片 if os.system(cmdtxt) ==2: print("sucess:",cmdtxt) writeoutlog(logPath, "sucess: {}\n".format(cmdtxt)) return 2 else: print("failed:",cmdtxt) writeoutlog(logPath, "failed: {}\n".format(cmdtxt)) return 3 def processMJPort(srcFolderPath,outMJPortSumTxtPath,outMJPortFolderPath,MLCShapeFilePath,JLCShapeFilePath,MJLCShapeFilePath): programpath = r"R:\TYSAR-德清院\A-预处理-未标注\A0-算法版本\AA\SpacetySliceDataTools\generatorRasterSlicesTools\SplitShipPortRasterTools_AC.py" cmdtxt=r"{} {} -s {} -o {} -f {} -m {} -j {} -jm {}".format( spacetySliceEnvPathExEPath,programpath, srcFolderPath,outMJPortSumTxtPath,outMJPortFolderPath, MLCShapeFilePath, JLCShapeFilePath, MJLCShapeFilePath ) if os.system(cmdtxt) ==2: print("sucess:",cmdtxt) writeoutlog(logPath, "sucess: {}\n".format(cmdtxt)) # return "sucess: {}".format(cmdtxt) return 2 else: print("failed:",cmdtxt) writeoutlog(logPath, "failed: {}\n".format(cmdtxt)) # return "failed: {}".format(cmdtxt) return 3 def preProcessShipPortTools(srcFolderPath,targetFolderPath,outTargetFolderPath): writeoutlog(logPath, "====================================================================================\n") writeoutlog(logPath, "time: {}".format(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) writeoutlog(logPath, "srcFolderPath: {}".format(srcFolderPath)) writeoutlog(logPath, "targetFolderPath: {}".format(targetFolderPath)) writeoutlog(logPath, "process start \n") # 文件接口创建 MPortFolder=os.path.join(targetFolderPath,"AC-图像预处理","民港口") JPortFolder=os.path.join(targetFolderPath,"AC-图像预处理","军港口") MJPortFolder=os.path.join(targetFolderPath,"AC-图像预处理","混合港口") NoPortFolder=os.path.join(targetFolderPath,"AC-图像预处理","无港口") existOrCreate(MPortFolder) existOrCreate(JPortFolder) existOrCreate(MJPortFolder) existOrCreate(NoPortFolder) outMJPortSumTxtPath=os.path.join(targetFolderPath,"AC-图像预处理","sumMJPort.txt") outMJPortFolderPath=os.path.join(targetFolderPath,"AC-图像预处理","sumMJPortFolder") existOrCreate(outMJPortFolderPath) MLCShapeFilePath=r"D:\TYSAR-德清院\目标点位信息更新\0828目标点位\港口(民船).shp" JLCShapeFilePath=r"D:\TYSAR-德清院\目标点位信息更新\0828目标点位\军港.shp" # 数据BM,不公开 MJLCShapeFilePath=r"D:\TYSAR-德清院\目标点位信息更新\0828目标点位\军民一体港口.shp" processMJPortflag=processMJPort(srcFolderPath,outMJPortSumTxtPath,outMJPortFolderPath,MLCShapeFilePath,JLCShapeFilePath,MJLCShapeFilePath) # 港口归属 if processMJPortflag==2: # 逐行处理 MJlines=None with open(outMJPortSumTxtPath,"r",encoding="utf-8") as f: MJlines=f.readlines() MLCName = "MLC" # M JLCName = "JLC" # J MJLCName = "MJLC" # JM 混合 NOLCName = "NOLC" # 没有港口 async_results = [] with Pool(processes=6) as pool: for linestr in MJlines: if len(linestr)>3: clsname=linestr.split("\t\t")[0] tiffpath=linestr.split("\t\t")[1].replace("\n","") rootname=Path(tiffpath).stem portTxtpath = os.path.join(outMJPortFolderPath, rootname + ".txt") tarPortFolder=None if clsname==MLCName: tarPortFolder=MPortFolder elif clsname==JLCName: tarPortFolder=JPortFolder elif clsname==MJLCName: tarPortFolder=MJPortFolder elif clsname==NOLCName: tarPortFolder=NoPortFolder else: continue # async_results.append(preProcessTiFF(tiffpath,portTxtpath,tarPortFolder)) else: continue # 处理分块 for pidx in range(len(async_results)): async_result=async_results[pidx] print("{}/{}".format(pidx+1,len(async_results)),async_result.get()) writeoutlog(logPath,"{}/{} {}".format(pidx+1,len(async_results),async_result.get())) pass else: pass writeoutlog(logPath, "\nprocess finished \n") # moverTip,moveflag=moveDir(targetFolderPath, outTargetFolderPath) # writeoutlog(logPath, moverTip) writeoutlog(logPath, "====================================================================================\n") # if moveflag: # pass # else: # exit(3) if __name__ == '__main__': # 20250813-不分类 条带模式 # srcFolderPath = r"R:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250813-不分类\0-原图" # preFolderPath = r"D:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250813-不分类\A-预处理\AB-图像预处理" # targetfolderPath = r"D:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250813-不分类\A-预处理\AB-图像预处理" # preProcessShipPortTools(srcFolderPath, preFolderPath, targetfolderPath,logPath) # # # 20250818 条带模式 # srcFolderPath = r"R:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250818-不分类\0-原图" # preFolderPath = r"D:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250818-不分类\A-预处理\AB-图像预处理" # targetfolderPath = r"R:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250818-不分类\A-预处理\AB-图像预处理" # preProcessShipPortTools(srcFolderPath, preFolderPath,targetfolderPath, logPath) # # 20250826-不分类 条带模式 srcFolderPath = r"R:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250826-不分类\0-原图" preFolderPath = r"D:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250826-不分类\A-预处理" targetfolderPath = r"R:\TYSAR-德清院\TYSAR-条带模式(SM)\港口\20250826-不分类\A-预处理" preProcessShipPortTools(srcFolderPath, preFolderPath, targetfolderPath)