• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
从xml读取gps数据获取经纬高

 

 

 

 

 

#!/usr/bin/python
# -*- coding: UTF-8 -*-
  
from xml.dom.minidom import parse
import xml.dom.minidom
  

"""

数据输入

xmlname   文件名字
nodename  要获取的路径

输入格式
<?xml version="1.0"?>
<opencv_storage>
<KfrmGPS_ type_id="opencv-matrix">
  <rows>2508</rows>
  <cols>3</cols>
  <dt>d</dt>
  <data>
    3.4236497333300001e+01 1.0889943616700000e+02 400.
    3.4236502333300002e+01 1.0889943933300000e+02 400.
    3.4236507166700001e+01 1.0889944250000001e+02 400.
    3.4236511999999998e+01 1.0889944566699999e+02 400.
  </data>
</KfrmGPS_>

<KfrmGPS_m_ type_id="opencv-matrix">
  <rows>2508</rows>
  <cols>3</cols>
  <dt>d</dt>
  <data>
    3.4236724219391739e+01 1.0889944810627938e+02 3.9653005784470588e+02
    3.4236728962259967e+01 1.0889945157710224e+02 3.9650777322053909e+02
    3.4236731965099686e+01 1.0889945368682891e+02 3.9653498737327754e+02
    3.4236738454649888e+01 1.0889945827032633e+02 3.9652323448006064e+02
  </data>
</KfrmGPS_m_>
</opencv_storage>


输出

转化成flaost的列表  纬 经 高

"""
 
   
def read_xml_getgps(xmlname,nodename):
    
 
    # 使用minidom解析器打开 XML 文档
    DOMTree = xml.dom.minidom.parse(xmlname)
    collection = DOMTree.documentElement

 
    
    KfrmGPS_ = collection.getElementsByTagName(nodename)
    #for KfrmGPS_i in KfrmGPS_:   

    KfrmGPS_i=KfrmGPS_[0]#可能有多个

    gps_rows = KfrmGPS_i.getElementsByTagName('rows')[0]
    gps_rows = gps_rows.childNodes[0].data
    gps_cols = KfrmGPS_i.getElementsByTagName('cols')[0]
    gps_cols = gps_cols.childNodes[0].data
    

    gps_data = KfrmGPS_i.getElementsByTagName('data')[0]

    gps_data_str=str(gps_data.childNodes[0].data)
    #print("KfrmGPS_/data/内容",gps_data_str)

    alllines=gps_data_str.strip().split("\n")# 行的分割符号 两个空格
    i=1

    gps_list=[]
    for lines_i in alllines:
        line_ii=lines_i.strip().split(" ") # 行内部的珊瑚橘分割符号 一个空格
        real_gps_lat = line_ii[0:1] # list--str
        real_gps_lat="".join(real_gps_lat).strip()
        
        real_gps_lon = line_ii[1:2] # list--str
        real_gps_lon="".join(real_gps_lon).strip()
        real_gps_high = line_ii[2:3] # list--str
        real_gps_high="".join(real_gps_high).strip()

        #print("字符串类型",i,real_gps_lon,real_gps_lat,real_gps_high)

        real_gps_lat=float(real_gps_lat)
        real_gps_lon=float(real_gps_lon)
        real_gps_high=float(real_gps_high)
        #print("float类型",i,real_gps_lon,real_gps_lat,real_gps_high)
        i=i+1

        gps_i=[real_gps_lat,real_gps_lon,real_gps_high]
        gps_list.append(gps_i)
    
    print("节点",nodename,"行数",gps_rows,"列数",gps_cols)   
    return gps_list
    

   
if ( __name__ == "__main__"):
    xmlpath="20230107142004075.xml"
    
    real_gps_list=read_xml_getgps(xmlpath,"KfrmGPS_")
    slam_gps_list=read_xml_getgps(xmlpath,"KfrmGPS_m_")

  

posted on 2023-02-02 17:34  MKT-porter  阅读(57)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3