赞
踩
""" 模块:python3 streetViewLib.py 功能: 存放处理街景相关的常量、函数。 """ import xml.dom.minidom import os def getFileExtension(filepath): """ 获取文件的扩展名。 :param filepath: 文件路径。类似:“I:/31-CS/31-CS.shp”。 :return: filepath 的扩展名。类似:“.shp”。 """ return filepath[filepath.rfind('.'):] def joinDirpathFilenames(dirpath, filenames): """ 拼接路径和文件名。 :param dirpath: 文件的根路径,类似:F:\3dData\小学-机电合模\1\71 :param filenames: 文件名的列表,类似:['0.b3dm', '1.b3dm', '2.b3dm'] :return: 文件路径的列表。 """ filePaths = [] for filename in filenames: # 此处只收集“.jpg”格式的文件。 if getFileExtension(filename) == ".jpg": # 拼接成绝对路径,并把路径中的 "\" -> "/"。 filePaths.append(os.path.join(dirpath, filename).replace("\\", "/")) return filePaths def getImgFilepathsOfDirectory(directory): """ 获取 directory 目录下的所有图片文件的绝对路径, 存放到一个 列表里 返回。 :param directory: 目标目录。 :return: directory 目录下的所有文件的绝对路径的列表。 """ # filePaths,用以存放所有的文件路径! filePaths = [] for root, dirs, files in os.walk(directory): filePaths.extend(joinDirpathFilenames(root, files)) return filePaths def getKrpanoParams(imgfilePaths): """ 获取 krpano 的参数字符串。 :param imgfilePaths: 图片文件的列表,类似: ['F:/Gaoshengjie/LongGeTasks/streetView/streetImg3/ladybug_panoramic_000000.jpg', ...] :return: 列表的字符串形式,以空格开头,类似:" path/xx.jpg path/xxx.jpg ..." """ return " " + " ".join(imgfilePaths) def MAKE_VTOUR_NORMAL_droplet(krpanoAbsPath, krpanoParams): """ 调用 照片批处理程序,处理某目录下的照片,生成 vtour 目录。 :param krpanoAbsPath: 批处理程序 MAKE_VTOUR_NORMAL_droplet.bat 的绝对路径,类似: F:/Gaoshengjie/LongGeTasks/streetView/pythonTest/krpanodew/krpano/krpano-1.19-pr13/MAKE_VTOUR_NORMAL_droplet.bat :param krpanoParams: 要处理的所有照片路径拼接成的字符串,空格开头,空格分隔。类似: F:/Gaoshengjie/LongGeTasks/streetView/streetImg3/ladybug_panoramic_000000.jpg F:/Gaoshengjie/LongGeTasks/streetView/streetImg3/ladybug_panoramic_000001.jpg ... :return:None. """ os.system(krpanoAbsPath + krpanoParams) # os.kill(os.getpid()) def addHotSpot(xmlPath): """ 给 xmlPath 添加热点箭头。 :param xmlPath: 要添加热点箭头的 xml 文件。 :return: """ # 1.解析 xml 文档。 doc = xml.dom.minidom.parse(xmlPath) # 2.root, 根节点。 root = doc.documentElement scenes = root.getElementsByTagName("scene") # print("scenes:", scenes) # print(len(scenes)) # <hotspot name="spot4" style="skin_hotspotstyle" ath="10" atv="12" linkedscene="scene_ladybug_panoramic_000044"/> # for index in range(len(scenes) - 1): # nextSceneName = scenes[index + 1].getAttribute("name") # hotspot = doc.createElement("hotspot") # if scenes[index].getElementsByTagName("hotspot"): # scenes[index].removeChild(scenes[index].getElementsByTagName("hotspot")[0]) # scenes[index].appendChild(hotspot) # hotspot.setAttribute("name", "spot4") # hotspot.setAttribute("style", "skin_hotspotstyle") # hotspot.setAttribute("ath", "10") # hotspot.setAttribute("atv", "12") # hotspot.setAttribute("linkedscene", nextSceneName) # # print("nextSceneName:", nextSceneName, type(nextSceneName)) # <hotspot name="spot4" style="skin_hotspotstyle" ath="10" atv="12" keep="true"/> hotspot = doc.createElement("hotspot") if scenes[0].getElementsByTagName("hotspot"): scenes[0].removeChild(scenes[0].getElementsByTagName("hotspot")[0]) scenes[0].appendChild(hotspot) hotspot.setAttribute("name", "spot4") hotspot.setAttribute("style", "skin_hotspotstyle") hotspot.setAttribute("ath", "10") hotspot.setAttribute("atv", "12") hotspot.setAttribute("keep", "true") # 3.写文件。 with open(xmlPath, "w", encoding="utf-8") as f: doc.writexml(f, indent='', addindent='', newl='', encoding="utf-8")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。