基于QT4的GPX文件编辑器开发

本文介绍了一款基于QT4开发的GPX文件编辑器,采用模型视图模式处理数据,支持新建、打开、保存GPX文件,编辑头信息及地理点,以及可视化。开发流程涵盖表格视图、绘图和应用等方面,详细阐述了每个步骤的关键实现代码。
摘要由CSDN通过智能技术生成

GPX文件是记录地理点的文件,本质是一种xml文件。GPX文件目前没有很好的编辑器,因此作者决定开发一款无需安装的绿色编辑器。

在QT4开发中,XML可以用DOM来实现,但其逻辑并不是很清晰。使用模型视图反而会更加可读。因此在开发中,使用model-view模式来实现数据读写。

1 需求

1 新建gpx文件

2 打开gpx文件

3 保存gpx文件

4 编辑gpx头

5 编辑gpx地理点,包括插入行,删除行,编辑字段

6 地理点可视化

2 表格视图开发流程

1 新建UI工程

2 引入QCustomPlot和TableView

3 提升部件,并在UI界面下设计功能菜单。为了让代码更好读,所有的控件都用UI生成。

菜单目前先实现三个最基本的功能,就是新建,打开,保存。

4 新建逻辑

新建面临两种情况:

  • 1当前未打开任何文件,直接新建
  • 2打开文件且已修改但未保存,需要先保存再新建

代码如下:


    // 若当前为修改状态 询问是否保存
    if(windowTitle().contains(" *")){
        QMessageBox::StandardButton res;
        res = QMessageBox::question(this,"Note","Save changes?",
                                    QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,
                                    QMessageBox::Save);
        if(res==QMessageBox::Save)
            on_actionSave_triggered();
        else if(res==QMessageBox::Cancel)
            return;
    }

    // 指定新建文件名
    QString tempName = QFileDialog::getSaveFileName(this,tr("New file"),"", "*.gpx");
    if(tempName.isEmpty())
        return;

    // 刷新文件名和模型
    fileName = tempName;
    model->removeRows(0,model->rowCount(QModelIndex()),QModelIndex());
    // 新建文件
    QFile file(fileName);
    if(!file.open(QIODevice::WriteOnly))
        return;
    file.close();
    // 更新标题*标记
    setWindowTitle(winName+" - "+fileName.replace("/","\\")+" *");

如何判断是否打开了未保存的文件?主要靠标题栏的*号。如果有*号则调用保存的槽函数。

指定文件名时,如果放弃指定就直接返回。

5 打开逻辑

打开面临两个情况,1是未打开任何文件,2是打开的文件已修改未保存。和新建一样,需要对标题栏的*号进行判断。

判断后,就打开指定文件。打开文件涉及到文件的读取。可以先看下gpx文件结构。gpx本质上是一种xml文本文件。

<?xml>

 <gpx>

        <metadata>

        <wpt lat="xxx" lon="xxx">

                 <ele>xxx</ele>

                 <time>2022-07-10T04:12:29Z</time>

                  <name>xxx</name>

                  <cmt>2022-07-10 12:12:29pm</cmt>

                  <sym>Flag, Blue</sym>

        </wpt>

        ...若干个wpt

</gpx>

基于上述结构,可以设计读文件的思路。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是使用ArcGIS导入并编辑GPX文件的步骤: 1. 在ArcGIS中创建一个新的空白地图文档。 2. 在“Catalog”窗口中导航到包含GPX文件文件夹,并在文件夹上单击右键。选择“New” > “Shapefile”来创建一个新的shapefile。 3. 在“Create New Shapefile”对话框中,选择“Polyline”作为“Feature Type”,并为shapefile设置名称和位置。单击“Edit”按钮来定义shapefile的空间参考。 4. 在“Spatial Reference Properties”对话框中,选择与GPX文件相同的坐标系。如果不确定坐标系,请使用WGS 1984坐标系。单击“OK”按钮来保存设置。 5. 在“Create New Shapefile”对话框中,单击“OK”按钮来创建空的shapefile。 6. 在ArcGIS的主界面中,选择“File” > “Add Data” > “Add Data From File”来导入GPX文件。选择GPX文件并单击“Add”按钮。 7. 在“Add XY Data”对话框中,选择GPX文件中的坐标字段,并设置正确的坐标系。单击“OK”按钮来将GPX文件导入到地图文档中。 8. 在地图文档中选择新创建的shapefile,并选择“Edit” > “Start Editing”来启动编辑模式。 9. 在编辑模式下,选择“Create Features”工具栏上的“Polyline”工具,并在地图上绘制轨迹线。 10. 完成后,选择“Editor” > “Save Edits”来保存更改。 这些步骤可以帮助您将GPX文件导入到ArcGIS中,并进行编辑。请注意,这只是基本的编辑过程,您可以根据需要进行更高级的编辑和分析。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Intimes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值