Python:在kmz中嵌入图像

2024-05-13 07:53:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个文件夹中有一系列kmz文件(1000+),这些文件是我为要素类的每个多边形和相应的图像生成的(所有图像都在一个单独的文件夹中)。这些kmz是从arcGIS的ShapeFile的属性表自动生成的。在每个kmz文件中,我都有一个与该功能对应的图像的链接:

<tr> 
<td>Preview</td>    
<td>G:\Temp\Figures\Ovr0.png</td>    
</tr>

目前,每个图像只是引用目录/Temp/Figures中的图像的表格文本。我喜欢的是把所有的文本转换成链接

^{pr2}$

考虑到文件量很大,如果可以在python、simplekml中完成这项工作,那将是理想的选择?另一方面,在某个阶段,我想分享一些kmz文件,因此我想知道最好的解决方案是将每个kmz和图像对细分到各自的目录中,然后以某种方式重新压缩kmz文件?


Tags: 文件图像文本目录文件夹链接多边形temp
1条回答
网友
1楼 · 发布于 2024-05-13 07:53:18

我通过迭代每个kmz和图像并使用zipfile模块读取内容,重写文件kml把文件重新压缩到kmz。目前,图像被放置在kmz中的<;body>;之后,但可以用re I preside编写一个更复杂的论点。在

如果有更有效的方法请告诉我。。。在

   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()

相关问题 更多 >