KML结构清晰,起初用QXmlStreamReader(之前一直没使用过)解析,花了几小时没搞定,真费劲,后来改用pugixml,10分钟搞定。

#include "./pugixml/pugixml.hpp"void ParsePlacemark(pugi::xml_node node)
{/*<Placemark><name>A0001.JPG</name><visibility>1</visibility><Style><IconStyle><color>ffffffff</color><scale>1</scale><Icon><href>ico_path</href></Icon></IconStyle><LabelStyle><color>ffffffff</color><scale>1</scale></LabelStyle></Style><Point><altitudeMode>clampToGround</altitudeMode><coordinates>104.45402038920673,30.29919938150362,387.29788757221144</coordinates></Point></Placemark>*/pugi::xml_node nodeChild = node.first_child();while (nodeChild){if (nodeChild.name() == QStringLiteral("name")){qDebug() << "name" << ": " << nodeChild.text().as_string();}else if (nodeChild.name() == QStringLiteral("visibility")){qDebug() << "visibility" << ": " << nodeChild.text().as_string();}else if (nodeChild.name() == QStringLiteral("Style")){qDebug() << "Style" << ": " << nodeChild.text().as_string();}else if (nodeChild.name() == QStringLiteral("Point")){pugi::xml_node nodeChildSub = nodeChild.first_child();while (nodeChildSub){if (nodeChildSub.name() == QStringLiteral("altitudeMode")){qDebug() << "altitudeMode" << ": " << nodeChildSub.text().as_string();}else if (nodeChildSub.name() == QStringLiteral("coordinates")){qDebug() << "coordinates" << ": " << nodeChildSub.text().as_string();}nodeChildSub = nodeChildSub.first_child();}}nodeChild = nodeChild.next_sibling();}
}void ParseDocument(pugi::xml_node node)
{pugi::xml_node nodeChild = node.first_child();while (nodeChild){if (nodeChild.name() == QStringLiteral("Document")){ParseDocument(nodeChild);}else if (nodeChild.name() == QStringLiteral("Placemark")){ParsePlacemark(nodeChild);}nodeChild = nodeChild.next_sibling();}
}int main(int argc, char *argv[])
{pugi::xml_document docKml;if (docKml.load_file(QString("./data/中国行政区划.kml").toStdWString().c_str())){docKml.root().next_sibling();pugi::xml_node node = docKml.root().first_child();while (node){std::string name = node.name();if (node.name() == QStringLiteral("kml")){pugi::xml_node nodeChild = node.first_child();while (nodeChild){if (nodeChild.name() == QStringLiteral("Document")){ParseDocument(nodeChild);}nodeChild = nodeChild.next_sibling();}}node = node.next_sibling();}}return 1;
}

OSG KML文件解析相关推荐

  1. php kml文件解析,英语翻译中文:详细分析了KML、MapInfo文件及二者之间的联系,以KML点标记文件为例,基于PHP编程实现了KML到...

    共回答了16个问题采纳率:81.3% "successfully achieved "要和文中动词"present"."analyse"时态 ...

  2. kml 解析 java_KML文件解析显示在地图

    风景 KML解析用到的工具jar包下载 dom4j.jar KML文件格式1: xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns ...

  3. JS如何解析kml文件中的数据

    1.JS如何解析kml文件中的数据 1. 需要将文件转换为字符串 2. 再使用DOMParser().parseFromString将字符串转换为xml文档 3. 再使用@mapbox/togeojs ...

  4. 经纬坐标(BLH)数据创建.kml文件小工具设计 Java版

    技术背景 KML,是标记语言(Keyhole Markup Language)的缩写,最初由Keyhole公司开发,是一种基于XML 语法与格式的.用于描述和保存地理信息(如点.线.图像.多边形和模型 ...

  5. ESRI的Shapefile文件向Google Earth中KML文件的格式转换

    转载自http://wenku.baidu.com/link?url=3TG7c0cERbdnZwFBLq6n2v-chB-k4ja5ikNYSyRQHyLf4yvYCGBEGrlhch8GD5e-9 ...

  6. Json文件解析(下

    Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...

  7. Json文件解析(上)

    Json文件解析(上) 代码地址:https://github.com/nlohmann/json 自述文件 alt=GitHub赞助商 data-canonical-src="https: ...

  8. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...

  9. OpenCV读写视频文件解析

    OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在OpenCV 中,VideoCapture 类 ...

最新文章

  1. Science | 初步的SARS-CoV-2蛋白酶抑制剂在小鼠中显示功效
  2. 转:java中数组与List相互转换的方法
  3. 前方高能!金三银四Java高级工程师面试题整理
  4. Delphi中methodaddress的代码解析
  5. vue3.x通过ref属性获取元素
  6. 2020webpack的面试题(webpack)
  7. [Vue warn]: Property or method id is not defined on the instance but referenced during render.
  8. mongodb从2.6迁移到3.0过程
  9. Prometheus+Grafana PG监控部署以及自定义监控指标
  10. golang中值类型/指针类型的变量区别总结
  11. C文件编译、链接指令
  12. 新兴IT企业特斯拉(二)——特斯拉的诞生
  13. 两行代码开启 Ubuntu ftp服务
  14. 2022秋招 华为硬件工程师-单板硬件开发面经
  15. 数学-泰勒展开和拉格朗日
  16. Word如何插入图片
  17. DTAS棣拓公差分析软件尺寸链计算:DTAS Talk尺寸联盟参与公益课
  18. 信创办公–基于WPS的EXCEL最佳实践系列 (筛选重要数据)
  19. canvas画拓扑图(箭头连线)
  20. Kubernetes----Job控制器

热门文章

  1. linux篇之安装MySQL及远程连接
  2. 公式不懂也无妨,业务精通才是真正的算法工程师
  3. PDF文件转换文件格式
  4. 用SDK包开发K66FX18学习笔记(1)
  5. 万字长文Python面试题,年后找工作就靠这了
  6. 通信系统:南、北向接口
  7. html设置图片切割,HTML+CSS实现合并图片的切割显示以及背景渲染
  8. HTML中enter键触发事件
  9. 洁厕灵的工作原理、使用方法和危害 //2021-1-27
  10. openlayers6【五】地图图层数据来源 source 详解