- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用Python实现探险家GPS及Google earth 兴趣点转换
用Python实现探险家GPS及Google earth 兴趣点转换探险家GPS是麦哲伦公司出品的一款GPS,它具有记录航迹、兴趣点、计算面积等多种功能。Google earth是目前最流行的全球地理信息共享软件。我们在使用中,经常会需要将探险家GPS里面记录的兴趣点导入到Google earth里进行标注。而两者的兴趣点文件格式不兼容。开始的时候我们只能手工输入经纬度坐标,效率很低。后来经过分析两者文件格式之后,找到一些规律
将两者格式进行转换,主要涉及到字符串操作。我们采用了当前国外比较流行的python脚本语言。该语言是开源软件,完全免费下载(http://www.省略)。它有强大的正则表达式功能,对字符串处理能力很强
探险家GPS兴趣点格式如下:
$PMGNWPL,4145.189,N,12328.002,E,0000049,M,富民桥,,a*66
$PMGNCMD,END*3D
可以看出,这个格式相对比较简单。我们主要是提取出经纬度、高程和名称,其他信息可以忽略
Google earth兴趣点格式如下,它是一种XML语言格式:
富民桥
123.4667,41.75315,28.002
我们看出来,两者除了一些额外信息,最大的区别是,经纬度表示方法不同(斜体表示)。探险家GPS里的格式为“纬度度数 纬度分数”“经度度数 经度分数”并且分数用十进制小数点表示。Google earth里表示为“经度”“纬度”直接用度数十进制小数点表示,这个是我们转换的重点
#导入相应库
import re
#打开探险家GPS文件,这里假设文件名为c:\xinqudian.upt
inf = open(’c:\\ xinqudian.upt’,’r’)
#创建Google earth兴趣点文件,这里假设文件名为c:\xinqudian.kml
outf = open(’c:\\ xinqudian.省略pile(r’\$PMGNWPL,(\d\d)(\d\d.\d\d\d),(N),(\d\d\d)(\d\d.\d\d\d),(E),(\d\d\d\d\d\d\d),(M),(.*?),(.*?),.*’)
#写入Goolge 兴趣点文件头信息
s = “““
\n”““ +”my poi” + “““\n”““
#循环取得探险家GPS每个兴趣点坐标。注意Python循环语句里,循环体要求缩进,空白不能省略
for line in inf:
m = p.match(line)
if m:
#获得纬度,并将分转换为十进制度
lat =float(m.group(1)) + float(m.group(2))/60
#获得经度,并将分转换为十进制度
longt =float(m.group(4)) + float(m.group(5))/60
#获得高程信息
height = float(m.group(7))
poi_name = m.group(9)
#下面将经纬度重新组合为Google earth格式
#这里的一个重点是中文内码转换decode(’cp936’).encode(’utf8’),否则导入后中文会显示为乱码
#可能由于排版变化,下面语句应为一整行
s =s + ““““““ + poi_name.decode(’cp936’).encode(’utf8’) +
““““““+str(longt) +’,’+str(lat) + ‘,’+ str(height) +
“““\n”““
#循环结束,写入尾部信息
s=s + “““\n”““
#写入并关闭文件
outf.write(s)
inf.close()
outf.close()
以“#”开头的说明文字非程序代码,输入时忽略即可
将程序用记事本输入编辑后,保存为名为poi.py(名称任意,扩展名不能变)的文件。将兴趣点文件命名为xinqudian.upt,并放入“C:\”目录下。双击运行poi.py,就会在同一目录下产生出Google earth文件xinqudian.kml,直接双击即可在Google earth中显示出来
一些限制:我们的工作地点为国内,所以在程序里默认假设坐标点为东经和北纬。如果超出这个范围,需要修改E和N匹配字符。
1
文档评论(0)