将gpx文件转换为gssi的专有dzg格式

gpx2dzg的Python项目详细描述


gpx2dzg

PyPI versionLicense: GPL v3DOI

Sanity check plot with identical mark counts

该软件获取存储在GPX文件中的GPS航路点信息,尝试将航路点与GSSI专有DZX文件格式的用户标记对齐,并将结果输出到DZG(一个包含RMC和/或GGANMEA字符串和“类似NMEA”GSSI专有字符串组合的ASCII文件)。此转换的目的是人为创建GPS感知的探地雷达(GPR)项目。

目前(2019年6月),该软件已通过SIR-3000和SIR-4000 GSSI控制单元创建的文件进行测试。3000和4000控制单元以非常不同的方式记录用户标记:3000直接记录到雷达阵列的第二行,而4000创建一个名为DZX的专有XML文件,并将它们作为XML对象记录在该文件中。这个软件可以同时处理这两种情况。如果在调查过程中使用3000,可以直接将软件指向DZT文件来读取标记。如果使用4000,则应将软件指向与DZT关联的DZX文件。有关如何在Pythonon the command line中执行此操作的说明,请参见usage

注:

gpx和dzx或dzt文件必须包含相同数量的标记,此进程才能工作。这是因为每个GPS点必须与扫描号匹配,以便将GPS点与控制单元在DZX或DZT中所做的标记相关联。如果没有,脚本将显示一个图,显示按距离绘制的GPX标记、按扫描号绘制的DZX/DZT标记和GPX点之间的速度,以便进行比较。您可以使用标准文本编辑器修改GPX或DZX,并根据您的调查笔记添加或删除标记。如果您正在从SIR-3000调查中读取DZT文件,则可以通过指定drops=[3,4,-2](如果您使用的是Python控制台)或-r 3,4,-2(如果您使用的是命令行)来删除标记列表末尾的标记4、5和第二个标记。请记住,列表索引从0开始,因此drops=[3]-r 3将去掉第4个标记。

我敦促你在现场做大量的记录,以便你知道是否会有错误的标记,你需要稍后删除。我会尽我所能帮助你,但最终我不会为你的雷达测量中遗漏的GPS或GPR标记负责(抱歉!)

安装

简单安装

如果您在安装python包之前可能不需要它。如果您不喜欢安装python包,请继续阅读。所有需求都在python包接口(pypi)上,这意味着您不需要手动执行任何操作(理论上,需求应该是自动安装的)。在anaconda提示符或bash终端中执行以下命令进行安装:

pip install gpx2dzg

安装开发版本

如果您希望从github安装最新的commit(它可能比pypi上的版本更新,但也可能有更多的bug),只需使用上面的“clone或download”按钮下载这个存储库。将包解压缩到下载文件夹,然后在anaconda提示符或bash终端中执行以下命令:

pip install ~/Downloads/gpx2dzg

如果这不起作用,您可能需要以不同的方式解压缩。尝试在下载文件夹中创建一个名为gpx2dzg的文件夹,然后将此包的所有内容解压缩到其中,以便setup.py位于~/Downloads/gpx2dzg/setup.py

用法

在python中

请注意,尽管这些示例中有许多使用sir-4000 dzx文件,但此程序也适用于使用sir-3000创建的dzts,后者将标记存储在雷达配置文件的第二行。

下面的命令将比较dzx和gpx文件,如果标记号相同,它将编写一个dzg文件(write=True)。

>>>importgpx2dzg.gpx2dzgasg2d>>>g2d.convert(dzx='/path/to/dzx.DZX',gpx='/path/to/gpx.gpx',write=True)

但是,如果要先比较标记点,则write=True可能不是所需的行为。在这种情况下,您需要指定plot=True,而不是强制一个健全的ch艾克情节。注意:如果gpx和dzx标记号不相等,这将自动发生,因为在这种情况下,软件不会编写DZG

正常检查绘图

该软件能够将GPX和DZX标记以及地面速度绘制在一起,以便直观地检查哪些点可能被遗漏或在野外错误地创建。如上所述,如果gpx和您使用的任何gssi文件之间的标记号不同,这将自动发生。

下面是一个例子。此绘图包含四个轴:

  1. 沿数字线绘制的GPX标记,表示按距离(米)沿测量线绘制的标记
  2. 沿着数字线绘制的GPX标记,表示标记,绘制时间为沿着线的秒数
  3. 沿数字线绘制的DZX或DZT标记,描绘由扫描号绘制的标记
  4. speed(米/秒)在gpx文件中的标记之间,绘制为经过秒数的函数

如果按时间记录文件(即每秒一组扫描次数),比较图2和图3会有帮助。在第二和第三个图中,分数越高,你的生活就越好。如果使用测量轮或其他距离测量仪器(DMI)记录文件,则应比较图1和图3。

Sanity check plot with differing mark counts

dzx/dzt点去除

通过指定drops=[4,5,-2],可以从dzx或dzt标记列表中删除标记点。在GPS和SIR标记匹配之前,这样做并检查几次绘图可能是有益的。请记住,列表索引从0开始,因此drops=[3]-r 3将去掉第4个标记。添加负数将从列表末尾删除,因此drops=[3,-2]将同时删除列表中的第四个点和列表中的第二个到最后一个点。此软件不允许删除第一个或最后一个点(即drops=[0]drops=[-1],因为这些是正确规范dzt文件的完整范围所必需的

在这种情况下,我们只需要把第二个点放到最后一个点,就可以得到匹配的dzx和gpx标记计数。

>>>g2d.convert(dzx='/path/to/dzt.DZX',gpx='/path/to/gpx.gpx',plot=True,drops=[-2])

注意,在第二个示例中,第二个到最后一个点被删除。

Sanity check plot with identical mark counts

将结果写入.DZG文件

write=True添加到函数调用。如果有一个dzg已经命名为dzt或dzx,程序将不会覆盖它,而是将它命名为类似dzt-gpx2dzg.DZG

>>>g2d.convert(dzx='/path/to/dzt.DZX',gpx='/path/to/gpx.gpx',drops=[-2],write=True)

强制执行健全检查图

要强制执行健全性检查图,即使标记号相等,只需添加plot=True

>>>g2d.convert(dzx='/path/to/dzx.DZX',gpx='/path/to/gpx.gpx',plot=True)

Sanity check plot with identical mark counts

这似乎不是一个“理智”的检查方法,但如果你有更好的主意,我很乐意听你的。

bash或anaconda提示符命令行中
gpx2dzg -d /path/to/dzx.DZX -g /path/to/gpx.gpx

正常检查绘图

只需添加-p标志。

gpx2dzg -d /path/to/dzx.DZX -g /path/to/gpx.gpx -p

dzx/dzt点去除

通过添加带整数列表的-r标志,可以从dzx或dzt标记列表中删除标记点。同样,这样做几次可能会有助于检查GPS/SIR标记点是否与您希望的方式匹配。请记住,列表索引从0开始,因此-r 3将删除第四个标记。添加负数将从列表末尾删除,因此-r 3,-2将同时删除列表中的第四个点和列表中的第二个到最后一个点。此软件不允许删除第一个或最后一个点(即-r 0-r -1,因为这些是正确规范DZT文件所必需的

注意在这个例子中,-d的值可以指向sir-3000DZT文件或sir-4000DZX文件。

gpx2dzg -d /path/to/dzt.DZT -g /path/to/gpx.gpx -p -r 4,5,-2

将结果写入.DZG文件

SIM卡ply添加-w标志。如果有一个dzg已经命名为dzt或dzx,程序将不会覆盖它,而是将它命名为类似dzt-gpx2dzg.DZG

gpx2dzg -d /path/to/dzt.DZT -g /path/to/gpx.gpx -p -r 4,5,-2 -w

使用说明:

如果未指定gpx文件,则软件将查找与dzx或dzt同名的gpx(例如,如果dzx/dzt名为file.DZXfile.DZT,则脚本将查找名为file.gpx的文件)。

未来:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Midlet即使按下设备的“剪切”按钮也不能关闭   JavaSpring环境。getProperty未解析   用Hibernate在Java中实现序列   具有重复键和文件写入的java映射   java显示控制台输出到JavaFXML应用程序中的TextArea   java Cucumber在编译为时无法在类路径上找到功能文件。战争   java过滤器中的servlet问题   安卓中消息和字符串之间的java转换?   java Apache POI读取单元(下午12:35:00)时间值返回1899年12月31日   Java游戏中的碰撞检测?   JSF2.0中的JavajQuery   java在setValue之后使用不同的值   java如何修复可选文件的StackOverflow错误?   如何在不使用服务器设置的情况下使用java从Outlook mail下载附件?   YAxis上Java BoxLayout中单个字符的摆动对齐偏离中心