OSG KML文件解析
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文件解析相关推荐
- php kml文件解析,英语翻译中文:详细分析了KML、MapInfo文件及二者之间的联系,以KML点标记文件为例,基于PHP编程实现了KML到...
共回答了16个问题采纳率:81.3% "successfully achieved "要和文中动词"present"."analyse"时态 ...
- kml 解析 java_KML文件解析显示在地图
风景 KML解析用到的工具jar包下载 dom4j.jar KML文件格式1: xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns ...
- JS如何解析kml文件中的数据
1.JS如何解析kml文件中的数据 1. 需要将文件转换为字符串 2. 再使用DOMParser().parseFromString将字符串转换为xml文档 3. 再使用@mapbox/togeojs ...
- 经纬坐标(BLH)数据创建.kml文件小工具设计 Java版
技术背景 KML,是标记语言(Keyhole Markup Language)的缩写,最初由Keyhole公司开发,是一种基于XML 语法与格式的.用于描述和保存地理信息(如点.线.图像.多边形和模型 ...
- ESRI的Shapefile文件向Google Earth中KML文件的格式转换
转载自http://wenku.baidu.com/link?url=3TG7c0cERbdnZwFBLq6n2v-chB-k4ja5ikNYSyRQHyLf4yvYCGBEGrlhch8GD5e-9 ...
- Json文件解析(下
Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...
- Json文件解析(上)
Json文件解析(上) 代码地址:https://github.com/nlohmann/json 自述文件 alt=GitHub赞助商 data-canonical-src="https: ...
- OpenCV读写视频文件解析(二)
OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...
- OpenCV读写视频文件解析
OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在OpenCV 中,VideoCapture 类 ...
最新文章
- Science | 初步的SARS-CoV-2蛋白酶抑制剂在小鼠中显示功效
- 转:java中数组与List相互转换的方法
- 前方高能!金三银四Java高级工程师面试题整理
- Delphi中methodaddress的代码解析
- vue3.x通过ref属性获取元素
- 2020webpack的面试题(webpack)
- [Vue warn]: Property or method id is not defined on the instance but referenced during render.
- mongodb从2.6迁移到3.0过程
- Prometheus+Grafana PG监控部署以及自定义监控指标
- golang中值类型/指针类型的变量区别总结
- C文件编译、链接指令
- 新兴IT企业特斯拉(二)——特斯拉的诞生
- 两行代码开启 Ubuntu ftp服务
- 2022秋招 华为硬件工程师-单板硬件开发面经
- 数学-泰勒展开和拉格朗日
- Word如何插入图片
- DTAS棣拓公差分析软件尺寸链计算:DTAS Talk尺寸联盟参与公益课
- 信创办公–基于WPS的EXCEL最佳实践系列 (筛选重要数据)
- canvas画拓扑图(箭头连线)
- Kubernetes----Job控制器