" />
所屬欄目:電子技術(shù)論文 發(fā)布日期:2011-09-07 17:06 熱度:
探險(xiǎn)家GPS是麥哲倫公司出品的一款GPS,它具有記錄航跡、興趣點(diǎn)、計(jì)算面積等多種功能。Googleearth是目前最流行的全球地理信息共享軟件。我們?cè)谑褂弥校?jīng)常會(huì)需要將探險(xiǎn)家GPS里面記錄的興趣點(diǎn)導(dǎo)入到Googleearth里進(jìn)行標(biāo)注。而兩者的興趣點(diǎn)文件格式不兼容。開(kāi)始的時(shí)候我們只能手工輸入經(jīng)緯度坐標(biāo),效率很低。后來(lái)經(jīng)過(guò)分析兩者文件格式之后,找到一些規(guī)律。
將兩者格式進(jìn)行轉(zhuǎn)換,主要涉及到字符串操作。我們采用了當(dāng)前國(guó)外比較流行的python腳本語(yǔ)言。該語(yǔ)言是開(kāi)源軟件,完全免費(fèi)下載(http://www.python.org)。它有強(qiáng)大的正則表達(dá)式功能,對(duì)字符串處理能力很強(qiáng)。
探險(xiǎn)家GPS興趣點(diǎn)格式如下:
$PMGNWPL,4145.189,N,12328.002,E,0000049,M,富民橋,,a*66
$PMGNCMD,END*3D
可以看出,這個(gè)格式相對(duì)比較簡(jiǎn)單。我們主要是提取出經(jīng)緯度、高程和名稱(chēng),其他信息可以忽略。
Googleearth興趣點(diǎn)格式如下,它是一種XML語(yǔ)言格式:
<?xmlversion="1.0"encoding="UTF-8"?>
<kmlxmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark><name>富民橋</name>
<Point><coordinates>123.4667,41.75315,28.002</coordinates></Point></Placemark>
</Document>
</kml>
我們看出來(lái),兩者除了一些額外信息,最大的區(qū)別是,經(jīng)緯度表示方法不同(斜體表示)。探險(xiǎn)家GPS里的格式為“緯度度數(shù)緯度分?jǐn)?shù)”“經(jīng)度度數(shù)經(jīng)度分?jǐn)?shù)”并且分?jǐn)?shù)用十進(jìn)制小數(shù)點(diǎn)表示。Googleearth里表示為“經(jīng)度”“緯度”直接用度數(shù)十進(jìn)制小數(shù)點(diǎn)表示,這個(gè)是我們轉(zhuǎn)換的重點(diǎn)。
#導(dǎo)入相應(yīng)庫(kù)
importre
#打開(kāi)探險(xiǎn)家GPS文件,這里假設(shè)文件名為c:xinqudian.upt
inf=open('c:\xinqudian.upt','r')
#創(chuàng)建Googleearth興趣點(diǎn)文件,這里假設(shè)文件名為c:xinqudian.kml
outf=open('c:\xinqudian.kml','w')
#設(shè)置探險(xiǎn)家格式正則表達(dá)式
#可能由于排版變化,下面語(yǔ)句應(yīng)為一整行,
p=re.compile(r'$PMGNWPL,(dd)(dd.ddd),(N),(ddd)(dd.ddd),(E),(ddddddd),(M),(.*?),(.*?),.*')
#寫(xiě)入Goolge興趣點(diǎn)文件頭信息
s="""<?xmlversion="1.0"encoding="UTF-8"?>
<kmlxmlns="http://earth.google.com/kml/2.2">
<Document>n<name>"""+"mypoi"+"""</name>n"""
#循環(huán)取得探險(xiǎn)家GPS每個(gè)興趣點(diǎn)坐標(biāo)。注意Python循環(huán)語(yǔ)句里,循環(huán)體要求縮進(jìn),空白不能省略。
forlineininf:
m=p.match(line)
ifm:
#獲得緯度,并將分轉(zhuǎn)換為十進(jìn)制度
lat=float(m.group(1))+float(m.group(2))/60
#獲得經(jīng)度,并將分轉(zhuǎn)換為十進(jìn)制度
longt=float(m.group(4))+float(m.group(5))/60
#獲得高程信息
height=float(m.group(7))
poi_name=m.group(9)
#下面將經(jīng)緯度重新組合為Googleearth格式。
#這里的一個(gè)重點(diǎn)是中文內(nèi)碼轉(zhuǎn)換decode('cp936').encode('utf8'),否則導(dǎo)入后中文會(huì)顯示為亂碼。
#可能由于排版變化,下面語(yǔ)句應(yīng)為一整行
s=s+"""<Placemark><name>"""+poi_name.decode('cp936').encode('utf8')+
"""</name><Point><coordinates>"""+str(longt)+','+str(lat)+','+str(height)+
"""</coordinates></Point></Placemark>n"""
#循環(huán)結(jié)束,寫(xiě)入尾部信息
s=s+"""</Document>n</kml>"""
#寫(xiě)入并關(guān)閉文件
outf.write(s)
inf.close()
outf.close()
以“#”開(kāi)頭的說(shuō)明文字非程序代碼,輸入時(shí)忽略即可。
將程序用記事本輸入編輯后,保存為名為poi.py(名稱(chēng)任意,擴(kuò)展名不能變)的文件。將興趣點(diǎn)文件命名為xinqudian.upt,并放入“C:”目錄下。雙擊運(yùn)行poi.py,就會(huì)在同一目錄下產(chǎn)生出Googleearth文件xinqudian.kml,直接雙擊即可在Googleearth中顯示出來(lái)。
一些限制:我們的工作地點(diǎn)為國(guó)內(nèi),所以在程序里默認(rèn)假設(shè)坐標(biāo)點(diǎn)為東經(jīng)和北緯。如果超出這個(gè)范圍,需要修改E和N匹配字符。
文章標(biāo)題:用Python實(shí)現(xiàn)探險(xiǎn)家GPS和Google earth 的興趣點(diǎn)轉(zhuǎn)換
轉(zhuǎn)載請(qǐng)注明來(lái)自:http://www.56st48f.cn/fblw/dianxin/dianzijishu/10145.html
攝影藝術(shù)領(lǐng)域AHCI期刊推薦《Phot...關(guān)注:106
Nature旗下多學(xué)科子刊Nature Com...關(guān)注:152
中小學(xué)教師值得了解,這些教育學(xué)...關(guān)注:47
2025年寫(xiě)管理學(xué)論文可以用的19個(gè)...關(guān)注:192
測(cè)繪領(lǐng)域科技核心期刊選擇 輕松拿...關(guān)注:64
及時(shí)開(kāi)論文檢索證明很重要關(guān)注:52
中國(guó)水產(chǎn)科學(xué)期刊是核心期刊嗎關(guān)注:54
國(guó)際出書(shū)需要了解的問(wèn)題解答關(guān)注:58
合著出書(shū)能否評(píng)職稱(chēng)?關(guān)注:48
電信學(xué)有哪些可投稿的SCI期刊,值...關(guān)注:66
通信工程行業(yè)論文選題關(guān)注:73
SCIE、ESCI、SSCI和AHCI期刊目錄...關(guān)注:121
評(píng)職稱(chēng)發(fā)論文好還是出書(shū)好關(guān)注:68
復(fù)印報(bào)刊資料重要轉(zhuǎn)載來(lái)源期刊(...關(guān)注:51
英文期刊審稿常見(jiàn)的論文狀態(tài)及其...關(guān)注:69
Web of Science 核心合集期刊評(píng)估...關(guān)注:59
電子信息論文范文
智能科學(xué)技術(shù)論文 廣播電視論文 光電技術(shù)論文 計(jì)算機(jī)信息管理論文 計(jì)算機(jī)網(wǎng)絡(luò)論文 計(jì)算機(jī)應(yīng)用論文 通信論文 信息安全論文 微電子應(yīng)用論文 電子技術(shù)論文 生物醫(yī)學(xué)工程論文 軟件開(kāi)發(fā)論文
SCI期刊分析
copyright © www.56st48f.cn, All Rights Reserved
搜論文知識(shí)網(wǎng) 冀ICP備15021333號(hào)-3