我在一个文件夹中包含一系列kmz文件(1000多个),该文件夹是我针对要素类的每个多边形和一个对应的图像生成的(所有图像位于单独的文件夹中)。这些kmz是根据来自arcGIS的shapefile的属性表自动生成的。在每个kmz文件中,我都有一个指向与该功能相对应的图像的链接,如下所示:
<tr>
<td>Preview</td>
<td>G:\Temp\Figures\Ovr0.png</td>
</tr>
目前,每个图像只是引用目录/ Temp / Figures中图像的表格文本。 id的意思是将所有这些文本转换成类似于以下内容的链接
<img src="file:///G:/Temp/Figures/Ovr0.png" width = 750 height=500/>
鉴于文件量很大,如果可以在python,simplekml中完成,那将是理想的选择?另一方面,在某个阶段,我想共享一些这些kmz文件,因此我想知道最好的解决方案是将每个kmz和映像对细分为各自的目录,然后以某种方式重新压缩kmz文件吗?
最佳答案
我设法通过迭代每个kmz和图像并使用zipfile模块读取内容,重写doc.kml并将文件重新压缩到kmz中来解决了我的问题。目前,图像放置在kmz中的之后,但我想可以写一个更复杂的参数。
如果有更有效的方法,请告诉我...
def edit_kmz(kmz,output,image):
##Read the doc.kml file in the kmz and rewrite the doc.kml file
zf = zipfile.ZipFile(kmz)
temp = r'tempfolder\doc.kml'
for line in zf.read("doc.kml").split("\n"):
with open(temp,'a') as wf: #Create the doc.kml
if "</body>" in line:
wf.write("</body>\n<img src='files/Ovr0.png' width = 750 height=500</img>\n")
else:
wf.write('%s\n'%(line))
zf.close()
##Rezip the file
zf = zipfile.ZipFile(output,'a')
zf.write(image,arcname='files/Ovr0.png') ##Relative Path to the Image
zf.write(temp,arcname='doc.kml') ##Add revised doc.kml file
zf.close()
关于python - Python:将图片嵌入kmz,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16504029/