使用pyKML创建kml格式文件

引言

最近在做GPS定位相关工作,分析终端的定位精度如何,从终端定位采集到很多点,但没有直观的效果。
之前了解谷歌地球可以加载kml格式的定位信息描述文件,遂尝试

过程

最快的还是使用python来完成工作,搜索到能够使用pyKML模块操作kml格式文件,没有找到合适的例子,其实我的要求很简单,把那一堆堆的经纬度生成到文件中,然后能够显示大概位置即可。通过尝试,使用了Folder对象,代码如下:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
# @Author virqin.github.io

from lxml import etree  #将KML节点输出为字符串
import xlrd             #操作Excel
from pykml.factory import KML_ElementMaker as KML #使用factory模块

xlsfile='f:/log.xlsx'

#加载Excel
xlsbook = xlrd.open_workbook(xlsfile)

#打开Sheet1
location = xlsbook.sheet_by_name(u'Sheet1')

#取得第一和第二列全部的值
lon = location.col_values(0,0,location.nrows)
lat = location.col_values(1,0,location.nrows)

#简单判断文件中的经纬度个数是否一致
if len(lon) != len(lat):
    print 'lon != lat nums'

#使用第一个点创建Folder
fold = KML.Folder(KML.Placemark(
    KML.Point(KML.coordinates(str(lon[0]) +','+ str(lat[0]) +',0'))
    )
)

#将剩余的点追加到Folder中
for i in range(1,len(lon)):
    fold.append(KML.Placemark(
    KML.Point(KML.coordinates(str(lon[i]) +','+ str(lat[i]) +',0')))
    )

#使用etree将KML节点输出为字符串数据
content = etree.tostring(etree.ElementTree(fold),pretty_print=True)

#保存到文件,然后就可以在Google地球中打开了
with open('f:/gen.kml', 'w') as fp:
    fp.write(content)

对于不了解的模块,最快的方式就是是看官方文档和例子。
生成的定位文件加载后效果如下:
![Uploading image_216913.png . . .]

你可能感兴趣的:(使用pyKML创建kml格式文件)