QGIS API Documentation 3.99.0-Master (e9821da5c6b)
Loading...
Searching...
No Matches
qgsbabelformatregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsbabelformatregistry.cpp
3 -------------------
4 begin : July 2021
5 copyright : (C) 2021 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
20#include "qgsbabelformat.h"
21#include "qgsbabelgpsdevice.h"
22#include "qgsexception.h"
23#include "qgslogger.h"
24
25#include <QRegularExpression>
26#include <QString>
27
28using namespace Qt::StringLiterals;
29
31
33
35
37
39
41
43{
44 //
45 // this list is automatically generated by scripts/dump_babel_formats.py
46 //
47 mImporters[u"alantrl"_s] = new QgsBabelSimpleImportFormat( u"alantrl"_s, u"Alan Map500 tracklogs (.trl)"_s, Qgis::BabelFormatCapability::Tracks, {u"trl"_s} );
48 mImporters[u"alanwpr"_s] = new QgsBabelSimpleImportFormat( u"alanwpr"_s, u"Alan Map500 waypoints and routes (.wpr)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes, {u"wpr"_s} );
49 mImporters[u"an1"_s] = new QgsBabelSimpleImportFormat( u"an1"_s, u"DeLorme .an1 (drawing) file"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes, {u"an1"_s} );
50 mImporters[u"arc"_s] = new QgsBabelSimpleImportFormat( u"arc"_s, u"GPSBabel arc filter file"_s, Qgis::BabelFormatCapability::Waypoints, {u"txt"_s} );
51 mImporters[u"bcr"_s] = new QgsBabelSimpleImportFormat( u"bcr"_s, u"Motorrad Routenplaner (Map&Guide) .bcr files"_s, Qgis::BabelFormatCapability::Routes, {u"bcr"_s} );
52 mImporters[u"bushnell"_s] = new QgsBabelSimpleImportFormat( u"bushnell"_s, u"Bushnell GPS Waypoint file"_s, Qgis::BabelFormatCapability::Waypoints, {u"wpt"_s} );
53 mImporters[u"bushnell_trl"_s] = new QgsBabelSimpleImportFormat( u"bushnell_trl"_s, u"Bushnell GPS Trail file"_s, Qgis::BabelFormatCapability::Tracks, {u"trl"_s} );
54 mImporters[u"cambridge"_s] = new QgsBabelSimpleImportFormat( u"cambridge"_s, u"Cambridge/Winpilot glider software"_s, Qgis::BabelFormatCapability::Waypoints, {u"dat"_s} );
55 mImporters[u"compegps"_s] = new QgsBabelSimpleImportFormat( u"compegps"_s, u"CompeGPS data files (.wpt/.trk/.rte)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {} );
56 mImporters[u"cst"_s] = new QgsBabelSimpleImportFormat( u"cst"_s, u"CarteSurTable data file"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"cst"_s} );
57 mImporters[u"csv"_s] = new QgsBabelSimpleImportFormat( u"csv"_s, u"Comma separated values"_s, Qgis::BabelFormatCapability::Waypoints, {} );
58 mImporters[u"cup"_s] = new QgsBabelSimpleImportFormat( u"cup"_s, u"See You flight analysis data"_s, Qgis::BabelFormatCapability::Waypoints, {u"cup"_s} );
59 mImporters[u"destinator_itn"_s] = new QgsBabelSimpleImportFormat( u"destinator_itn"_s, u"Destinator Itineraries (.dat)"_s, Qgis::BabelFormatCapability::Routes, {u"dat"_s} );
60 mImporters[u"destinator_poi"_s] = new QgsBabelSimpleImportFormat( u"destinator_poi"_s, u"Destinator Points of Interest (.dat)"_s, Qgis::BabelFormatCapability::Waypoints, {u"dat"_s} );
61 mImporters[u"destinator_trl"_s] = new QgsBabelSimpleImportFormat( u"destinator_trl"_s, u"Destinator TrackLogs (.dat)"_s, Qgis::BabelFormatCapability::Tracks, {u"dat"_s} );
62 mImporters[u"dmtlog"_s] = new QgsBabelSimpleImportFormat( u"dmtlog"_s, u"TrackLogs digital mapping (.trl)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"trl"_s} );
63 mImporters[u"dna"_s] = new QgsBabelSimpleImportFormat( u"dna"_s, u"Navitrak DNA marker format"_s, Qgis::BabelFormatCapability::Waypoints, {u"dna"_s} );
64 mImporters[u"easygps"_s] = new QgsBabelSimpleImportFormat( u"easygps"_s, u"EasyGPS binary format"_s, Qgis::BabelFormatCapability::Waypoints, {u"loc"_s} );
65 mImporters[u"energympro"_s] = new QgsBabelSimpleImportFormat( u"energympro"_s, u"Energympro GPS training watch"_s, Qgis::BabelFormatCapability::Tracks, {u"cpo"_s} );
66 mImporters[u"enigma"_s] = new QgsBabelSimpleImportFormat( u"enigma"_s, u"Enigma binary waypoint file (.ert)"_s, Qgis::BabelFormatCapability::Routes, {u"ert"_s} );
67 mImporters[u"exif"_s] = new QgsBabelSimpleImportFormat( u"exif"_s, u"Embedded Exif-GPS data (.jpg)"_s, Qgis::BabelFormatCapability::Waypoints, {u"jpg"_s} );
68 mImporters[u"f90g"_s] = new QgsBabelSimpleImportFormat( u"f90g"_s, u"F90G Automobile DVR GPS log file"_s, Qgis::BabelFormatCapability::Tracks, {u"map"_s} );
69 mImporters[u"flysight"_s] = new QgsBabelSimpleImportFormat( u"flysight"_s, u"FlySight GPS File"_s, Qgis::BabelFormatCapability::Waypoints, {u"csv"_s} );
70 mImporters[u"fugawi"_s] = new QgsBabelSimpleImportFormat( u"fugawi"_s, u"Fugawi"_s, Qgis::BabelFormatCapability::Waypoints, {u"txt"_s} );
71 mImporters[u"g7towin"_s] = new QgsBabelSimpleImportFormat( u"g7towin"_s, u"G7ToWin data files (.g7t)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"g7t"_s} );
72 mImporters[u"garmin301"_s] = new QgsBabelSimpleImportFormat( u"garmin301"_s, u"Garmin 301 Custom position and heartrate"_s, Qgis::BabelFormatCapability::Waypoints, {} );
73 mImporters[u"garmin_fit"_s] = new QgsBabelSimpleImportFormat( u"garmin_fit"_s, u"Flexible and Interoperable Data Transfer (FIT) Activity file"_s, Qgis::BabelFormatCapability::Tracks, {u"fit"_s} );
74 mImporters[u"garmin_g1000"_s] = new QgsBabelSimpleImportFormat( u"garmin_g1000"_s, u"Garmin G1000 datalog input filter file"_s, Qgis::BabelFormatCapability::Tracks, {u"csv"_s} );
75 mImporters[u"garmin_gpi"_s] = new QgsBabelSimpleImportFormat( u"garmin_gpi"_s, u"Garmin Points of Interest (.gpi)"_s, Qgis::BabelFormatCapability::Waypoints, {u"gpi"_s} );
76 mImporters[u"garmin_poi"_s] = new QgsBabelSimpleImportFormat( u"garmin_poi"_s, u"Garmin POI database"_s, Qgis::BabelFormatCapability::Waypoints, {} );
77 mImporters[u"garmin_txt"_s] = new QgsBabelSimpleImportFormat( u"garmin_txt"_s, u"Garmin MapSource - txt (tab delimited)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"txt"_s} );
78 mImporters[u"garmin_xt"_s] = new QgsBabelSimpleImportFormat( u"garmin_xt"_s, u"Mobile Garmin XT Track files"_s, Qgis::BabelFormatCapability::Tracks, {} );
79 mImporters[u"gdb"_s] = new QgsBabelSimpleImportFormat( u"gdb"_s, u"Garmin MapSource - gdb"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"gdb"_s} );
80 mImporters[u"geo"_s] = new QgsBabelSimpleImportFormat( u"geo"_s, u"Geocaching.com .loc"_s, Qgis::BabelFormatCapability::Waypoints, {u"loc"_s} );
82 mImporters[u"geonet"_s] = new QgsBabelSimpleImportFormat( u"geonet"_s, u"GEOnet Names Server (GNS)"_s, Qgis::BabelFormatCapability::Waypoints, {u"txt"_s} );
83 mImporters[u"ggv_bin"_s] = new QgsBabelSimpleImportFormat( u"ggv_bin"_s, u"Geogrid-Viewer binary overlay file (.ovl)"_s, Qgis::BabelFormatCapability::Tracks, {u"ovl"_s} );
84 mImporters[u"ggv_log"_s] = new QgsBabelSimpleImportFormat( u"ggv_log"_s, u"Geogrid-Viewer tracklogs (.log)"_s, Qgis::BabelFormatCapability::Tracks, {u"log"_s} );
85 mImporters[u"ggv_ovl"_s] = new QgsBabelSimpleImportFormat( u"ggv_ovl"_s, u"Geogrid-Viewer ascii overlay file (.ovl)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"ovl"_s} );
86 mImporters[u"glogbook"_s] = new QgsBabelSimpleImportFormat( u"glogbook"_s, u"Garmin Logbook XML"_s, Qgis::BabelFormatCapability::Tracks, {u"xml"_s} );
87 mImporters[u"gnav_trl"_s] = new QgsBabelSimpleImportFormat( u"gnav_trl"_s, u"Google Navigator Tracklines (.trl)"_s, Qgis::BabelFormatCapability::Tracks, {u"trl"_s} );
88 mImporters[u"googledir"_s] = new QgsBabelSimpleImportFormat( u"googledir"_s, u"Google Directions XML"_s, Qgis::BabelFormatCapability::Tracks, {u"xml"_s} );
89 mImporters[u"gopal"_s] = new QgsBabelSimpleImportFormat( u"gopal"_s, u"GoPal GPS track log (.trk)"_s, Qgis::BabelFormatCapability::Tracks, {u"trk"_s} );
90 mImporters[u"gpl"_s] = new QgsBabelSimpleImportFormat( u"gpl"_s, u"DeLorme GPL"_s, Qgis::BabelFormatCapability::Tracks, {u"gpl"_s} );
91 mImporters[u"gpsdrive"_s] = new QgsBabelSimpleImportFormat( u"gpsdrive"_s, u"GpsDrive Format"_s, Qgis::BabelFormatCapability::Waypoints, {} );
92 mImporters[u"gpsdrivetrack"_s] = new QgsBabelSimpleImportFormat( u"gpsdrivetrack"_s, u"GpsDrive Format for Tracks"_s, Qgis::BabelFormatCapability::Waypoints, {} );
93 mImporters[u"gpsman"_s] = new QgsBabelSimpleImportFormat( u"gpsman"_s, u"GPSman"_s, Qgis::BabelFormatCapability::Waypoints, {} );
94 mImporters[u"gpsutil"_s] = new QgsBabelSimpleImportFormat( u"gpsutil"_s, u"gpsutil"_s, Qgis::BabelFormatCapability::Waypoints, {} );
97 mImporters[u"gtrnctr"_s] = new QgsBabelSimpleImportFormat( u"gtrnctr"_s, u"Garmin Training Center (.tcx/.crs/.hst/.xml)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"tcx"_s, u"crs"_s, u"hst"_s, u"xml"_s} );
98 mImporters[u"hiketech"_s] = new QgsBabelSimpleImportFormat( u"hiketech"_s, u"HikeTech"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"gps"_s} );
99 mImporters[u"holux"_s] = new QgsBabelSimpleImportFormat( u"holux"_s, u"Holux (gm-100) .wpo Format"_s, Qgis::BabelFormatCapability::Waypoints, {u"wpo"_s} );
100 mImporters[u"humminbird"_s] = new QgsBabelSimpleImportFormat( u"humminbird"_s, u"Humminbird waypoints and routes (.hwr)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"hwr"_s} );
101 mImporters[u"humminbird_ht"_s] = new QgsBabelSimpleImportFormat( u"humminbird_ht"_s, u"Humminbird tracks (.ht)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"ht"_s} );
102 mImporters[u"iblue747"_s] = new QgsBabelSimpleImportFormat( u"iblue747"_s, u"Data Logger iBlue747 csv"_s, Qgis::BabelFormatCapability::Tracks, {u"csv"_s} );
103 mImporters[u"iblue757"_s] = new QgsBabelSimpleImportFormat( u"iblue757"_s, u"Data Logger iBlue757 csv"_s, Qgis::BabelFormatCapability::Tracks, {u"csv"_s} );
104 mImporters[u"igc"_s] = new QgsBabelSimpleImportFormat( u"igc"_s, u"FAI/IGC Flight Recorder Data Format"_s, Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {} );
105 mImporters[u"ignrando"_s] = new QgsBabelSimpleImportFormat( u"ignrando"_s, u"IGN Rando track files"_s, Qgis::BabelFormatCapability::Tracks, {u"rdn"_s} );
106 mImporters[u"igo2008_poi"_s] = new QgsBabelSimpleImportFormat( u"igo2008_poi"_s, u"iGO2008 points of interest (.upoi)"_s, Qgis::BabelFormatCapability::Waypoints, {u"upoi"_s} );
107 mImporters[u"igo8"_s] = new QgsBabelSimpleImportFormat( u"igo8"_s, u"IGO8 .trk"_s, Qgis::BabelFormatCapability::Tracks, {u"trk"_s} );
108 mImporters[u"igoprimo_poi"_s] = new QgsBabelSimpleImportFormat( u"igoprimo_poi"_s, u"iGo Primo points of interest (.upoi)"_s, Qgis::BabelFormatCapability::Waypoints, {u"upoi"_s} );
109 mImporters[u"ik3d"_s] = new QgsBabelSimpleImportFormat( u"ik3d"_s, u"MagicMaps IK3D project file (.ikt)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"ikt"_s} );
110 mImporters[u"itracku-bin"_s] = new QgsBabelSimpleImportFormat( u"itracku-bin"_s, u"XAiOX iTrackU Logger Binary File Format"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"bin"_s} );
111 mImporters[u"jogmap"_s] = new QgsBabelSimpleImportFormat( u"jogmap"_s, u"Jogmap.de XML format"_s, Qgis::BabelFormatCapability::Tracks, {u"xml"_s} );
112 mImporters[u"jtr"_s] = new QgsBabelSimpleImportFormat( u"jtr"_s, u"Jelbert GeoTagger data file"_s, Qgis::BabelFormatCapability::Tracks, {u"jtr"_s} );
113 mImporters[u"kml"_s] = new QgsBabelSimpleImportFormat( u"kml"_s, u"Google Earth (Keyhole) Markup Language"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"kml"_s} );
114 mImporters[u"kompass_tk"_s] = new QgsBabelSimpleImportFormat( u"kompass_tk"_s, u"Kompass (DAV) Track (.tk)"_s, Qgis::BabelFormatCapability::Tracks, {u"wp"_s} );
115 mImporters[u"kompass_wp"_s] = new QgsBabelSimpleImportFormat( u"kompass_wp"_s, u"Kompass (DAV) Waypoints (.wp)"_s, Qgis::BabelFormatCapability::Waypoints, {u"wp"_s} );
116 mImporters[u"land_air_sea"_s] = new QgsBabelSimpleImportFormat( u"land_air_sea"_s, u"GPS Tracking Key Pro text"_s, Qgis::BabelFormatCapability::Tracks, {u"txt"_s} );
117 mImporters[u"lmx"_s] = new QgsBabelSimpleImportFormat( u"lmx"_s, u"Nokia Landmark Exchange"_s, Qgis::BabelFormatCapability::Waypoints, {} );
118 mImporters[u"lowranceusr"_s] = new QgsBabelSimpleImportFormat( u"lowranceusr"_s, u"Lowrance USR"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"usr"_s} );
119 mImporters[u"m241-bin"_s] = new QgsBabelSimpleImportFormat( u"m241-bin"_s, u"Holux M-241 (MTK based) Binary File Format"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"bin"_s} );
120 mImporters[u"magellan"_s] = new QgsBabelSimpleImportFormat( u"magellan"_s, u"Magellan SD files (as for Meridian)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {} );
121 mImporters[u"magellanx"_s] = new QgsBabelSimpleImportFormat( u"magellanx"_s, u"Magellan SD files (as for eXplorist)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"upt"_s} );
122 mImporters[u"maggeo"_s] = new QgsBabelSimpleImportFormat( u"maggeo"_s, u"Magellan Explorist Geocaching"_s, Qgis::BabelFormatCapability::Waypoints, {u"gs"_s} );
123 mImporters[u"mainnav"_s] = new QgsBabelSimpleImportFormat( u"mainnav"_s, u"Mainnav"_s, Qgis::BabelFormatCapability::Tracks, {u"nav"_s} );
124 mImporters[u"mapasia_tr7"_s] = new QgsBabelSimpleImportFormat( u"mapasia_tr7"_s, u"MapAsia track file (.tr7)"_s, Qgis::BabelFormatCapability::Tracks, {u"tr7"_s} );
125 mImporters[u"mapbar"_s] = new QgsBabelSimpleImportFormat( u"mapbar"_s, u"Mapbar (China) navigation track for Sonim Xp3300"_s, Qgis::BabelFormatCapability::Tracks, {u"trk"_s} );
126 mImporters[u"mapconverter"_s] = new QgsBabelSimpleImportFormat( u"mapconverter"_s, u"Mapopolis.com Mapconverter CSV"_s, Qgis::BabelFormatCapability::Waypoints, {u"txt"_s} );
127 mImporters[u"mapfactor"_s] = new QgsBabelSimpleImportFormat( u"mapfactor"_s, u"Mapfactor Navigator"_s, Qgis::BabelFormatCapability::Waypoints, {u"xml"_s} );
129 mImporters[u"mmo"_s] = new QgsBabelSimpleImportFormat( u"mmo"_s, u"Memory-Map Navigator overlay files (.mmo)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"mmo"_s} );
130 mImporters[u"motoactv"_s] = new QgsBabelSimpleImportFormat( u"motoactv"_s, u"Motoactiv CSV"_s, Qgis::BabelFormatCapability::Waypoints, {u"csv"_s} );
131 mImporters[u"mtk-bin"_s] = new QgsBabelSimpleImportFormat( u"mtk-bin"_s, u"MTK Logger (iBlue 747,...) Binary File Format"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"bin"_s} );
132 mImporters[u"mtk_locus"_s] = new QgsBabelSimpleImportFormat( u"mtk_locus"_s, u"MediaTek Locus"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {} );
133 mImporters[u"mxf"_s] = new QgsBabelSimpleImportFormat( u"mxf"_s, u"MapTech Exchange Format"_s, Qgis::BabelFormatCapability::Waypoints, {u"mxf"_s} );
134 mImporters[u"mynav"_s] = new QgsBabelSimpleImportFormat( u"mynav"_s, u"MyNav TRC format"_s, Qgis::BabelFormatCapability::Tracks, {u"trc"_s} );
135 mImporters[u"navicache"_s] = new QgsBabelSimpleImportFormat( u"navicache"_s, u"Navicache.com XML"_s, Qgis::BabelFormatCapability::Waypoints, {} );
136 mImporters[u"navigonwpt"_s] = new QgsBabelSimpleImportFormat( u"navigonwpt"_s, u"Navigon Waypoints"_s, Qgis::BabelFormatCapability::Waypoints, {} );
137 mImporters[u"naviguide"_s] = new QgsBabelSimpleImportFormat( u"naviguide"_s, u"Naviguide binary route file (.twl)"_s, Qgis::BabelFormatCapability::Waypoints, {u"twl"_s} );
138 mImporters[u"navitel_trk"_s] = new QgsBabelSimpleImportFormat( u"navitel_trk"_s, u"Navitel binary track (.bin)"_s, Qgis::BabelFormatCapability::Tracks, {u"bin"_s} );
139 mImporters[u"netstumbler"_s] = new QgsBabelSimpleImportFormat( u"netstumbler"_s, u"NetStumbler Summary File (text)"_s, Qgis::BabelFormatCapability::Waypoints, {} );
140 mImporters[u"nima"_s] = new QgsBabelSimpleImportFormat( u"nima"_s, u"NIMA/GNIS Geographic Names File"_s, Qgis::BabelFormatCapability::Waypoints, {} );
141 mImporters[u"nmea"_s] = new QgsBabelSimpleImportFormat( u"nmea"_s, u"NMEA 0183 sentences"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {} );
142 mImporters[u"nmn4"_s] = new QgsBabelSimpleImportFormat( u"nmn4"_s, u"Navigon Mobile Navigator .rte files"_s, Qgis::BabelFormatCapability::Routes, {u"rte"_s} );
143 mImporters[u"openoffice"_s] = new QgsBabelSimpleImportFormat( u"openoffice"_s, u"Tab delimited fields useful for OpenOffice"_s, Qgis::BabelFormatCapability::Waypoints, {} );
144 mImporters[u"osm"_s] = new QgsBabelSimpleImportFormat( u"osm"_s, u"OpenStreetMap data files"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes, {u"osm"_s} );
147 mImporters[u"pocketfms_bc"_s] = new QgsBabelSimpleImportFormat( u"pocketfms_bc"_s, u"PocketFMS breadcrumbs"_s, Qgis::BabelFormatCapability::Tracks, {} );
148 mImporters[u"pocketfms_fp"_s] = new QgsBabelSimpleImportFormat( u"pocketfms_fp"_s, u"PocketFMS flightplan (.xml)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes, {u"xml"_s} );
149 mImporters[u"pocketfms_wp"_s] = new QgsBabelSimpleImportFormat( u"pocketfms_wp"_s, u"PocketFMS waypoints (.txt)"_s, Qgis::BabelFormatCapability::Waypoints, {u"txt"_s} );
150 mImporters[u"qstarz_bl-1000"_s] = new QgsBabelSimpleImportFormat( u"qstarz_bl-1000"_s, u"Qstarz BL-1000"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {} );
151 mImporters[u"raymarine"_s] = new QgsBabelSimpleImportFormat( u"raymarine"_s, u"Raymarine Waypoint File (.rwf)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes, {u"rwf"_s} );
152 mImporters[u"ricoh"_s] = new QgsBabelSimpleImportFormat( u"ricoh"_s, u"Ricoh GPS Log File"_s, Qgis::BabelFormatCapability::Tracks, {u"log"_s} );
153 mImporters[u"s_and_t"_s] = new QgsBabelSimpleImportFormat( u"s_and_t"_s, u"Microsoft Streets and Trips 2002-2007"_s, Qgis::BabelFormatCapability::Waypoints, {u"txt"_s} );
154 mImporters[u"saplus"_s] = new QgsBabelSimpleImportFormat( u"saplus"_s, u"DeLorme Street Atlas Plus"_s, Qgis::BabelFormatCapability::Waypoints, {} );
155 mImporters[u"saroute"_s] = new QgsBabelSimpleImportFormat( u"saroute"_s, u"DeLorme Street Atlas Route"_s, Qgis::BabelFormatCapability::Tracks, {u"anr"_s} );
156 mImporters[u"sbn"_s] = new QgsBabelSimpleImportFormat( u"sbn"_s, u"NaviGPS GT-31/BGT-31 SiRF binary logfile (.sbn)"_s, Qgis::BabelFormatCapability::Tracks, {u"sbn"_s} );
157 mImporters[u"sbp"_s] = new QgsBabelSimpleImportFormat( u"sbp"_s, u"NaviGPS GT-31/BGT-31 datalogger (.sbp)"_s, Qgis::BabelFormatCapability::Tracks, {u"sbp"_s} );
158 mImporters[u"shape"_s] = new QgsBabelSimpleImportFormat( u"shape"_s, u"ESRI shapefile"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"shp"_s} );
159 mImporters[u"skyforce"_s] = new QgsBabelSimpleImportFormat( u"skyforce"_s, u"Skymap / KMD150 ascii files"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {} );
160 mImporters[u"skytraq-bin"_s] = new QgsBabelSimpleImportFormat( u"skytraq-bin"_s, u"SkyTraq Venus based loggers Binary File Format"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"bin"_s} );
161 mImporters[u"stmsdf"_s] = new QgsBabelSimpleImportFormat( u"stmsdf"_s, u"Suunto Trek Manager (STM) .sdf files"_s, Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"sdf"_s} );
162 mImporters[u"stmwpp"_s] = new QgsBabelSimpleImportFormat( u"stmwpp"_s, u"Suunto Trek Manager (STM) WaypointPlus files"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"txt"_s} );
163 mImporters[u"tef"_s] = new QgsBabelSimpleImportFormat( u"tef"_s, u"Map&Guide 'TourExchangeFormat' XML"_s, Qgis::BabelFormatCapability::Routes, {u"xml"_s} );
164 mImporters[u"teletype"_s] = new QgsBabelSimpleImportFormat( u"teletype"_s, u"Teletype"_s, Qgis::BabelFormatCapability::Waypoints, {} );
165 mImporters[u"tiger"_s] = new QgsBabelSimpleImportFormat( u"tiger"_s, u"U.S. Census Bureau Tiger Mapping Service"_s, Qgis::BabelFormatCapability::Waypoints, {} );
166 mImporters[u"tmpro"_s] = new QgsBabelSimpleImportFormat( u"tmpro"_s, u"TopoMapPro Places File"_s, Qgis::BabelFormatCapability::Waypoints, {u"tmpro"_s} );
167 mImporters[u"tomtom"_s] = new QgsBabelSimpleImportFormat( u"tomtom"_s, u"TomTom POI file (.ov2)"_s, Qgis::BabelFormatCapability::Waypoints, {u"ov2"_s} );
168 mImporters[u"tomtom_asc"_s] = new QgsBabelSimpleImportFormat( u"tomtom_asc"_s, u"TomTom POI file (.asc)"_s, Qgis::BabelFormatCapability::Waypoints, {u"asc"_s} );
169 mImporters[u"tomtom_itn"_s] = new QgsBabelSimpleImportFormat( u"tomtom_itn"_s, u"TomTom Itineraries (.itn)"_s, Qgis::BabelFormatCapability::Routes, {u"itn"_s} );
170 mImporters[u"tomtom_itn_places"_s] = new QgsBabelSimpleImportFormat( u"tomtom_itn_places"_s, u"TomTom Places Itineraries (.itn)"_s, Qgis::BabelFormatCapability::Routes, {u"itn"_s} );
171 mImporters[u"tpg"_s] = new QgsBabelSimpleImportFormat( u"tpg"_s, u"National Geographic Topo .tpg (waypoints)"_s, Qgis::BabelFormatCapability::Waypoints, {u"tpg"_s} );
172 mImporters[u"tpo2"_s] = new QgsBabelSimpleImportFormat( u"tpo2"_s, u"National Geographic Topo 2.x .tpo"_s, Qgis::BabelFormatCapability::Tracks, {u"tpo"_s} );
173 mImporters[u"tpo3"_s] = new QgsBabelSimpleImportFormat( u"tpo3"_s, u"National Geographic Topo 3.x/4.x .tpo"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"tpo"_s} );
174 mImporters[u"unicsv"_s] = new QgsBabelSimpleImportFormat( u"unicsv"_s, u"Universal csv with field structure in first line"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {} );
175 mImporters[u"v900"_s] = new QgsBabelSimpleImportFormat( u"v900"_s, u"Columbus/Visiontac V900 files (.csv)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {} );
176 mImporters[u"vidaone"_s] = new QgsBabelSimpleImportFormat( u"vidaone"_s, u"VidaOne GPS for Pocket PC (.gpb)"_s, Qgis::BabelFormatCapability::Tracks, {u"gpb"_s} );
177 mImporters[u"vitosmt"_s] = new QgsBabelSimpleImportFormat( u"vitosmt"_s, u"Vito Navigator II tracks"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks, {u"smt"_s} );
178 mImporters[u"vitovtt"_s] = new QgsBabelSimpleImportFormat( u"vitovtt"_s, u"Vito SmartMap tracks (.vtt)"_s, Qgis::BabelFormatCapability::Tracks, {u"vtt"_s} );
179 mImporters[u"vpl"_s] = new QgsBabelSimpleImportFormat( u"vpl"_s, u"Honda/Acura Navigation System VP Log File Format"_s, Qgis::BabelFormatCapability::Tracks, {} );
180 mImporters[u"wbt-bin"_s] = new QgsBabelSimpleImportFormat( u"wbt-bin"_s, u"Wintec WBT-100/200 Binary File Format"_s, Qgis::BabelFormatCapability::Tracks, {u"bin"_s} );
181 mImporters[u"wbt-tk1"_s] = new QgsBabelSimpleImportFormat( u"wbt-tk1"_s, u"Wintec WBT-201/G-Rays 2 Binary File Format"_s, Qgis::BabelFormatCapability::Tracks, {u"tk1"_s} );
182 mImporters[u"wfff"_s] = new QgsBabelSimpleImportFormat( u"wfff"_s, u"WiFiFoFum 2.0 for PocketPC XML"_s, Qgis::BabelFormatCapability::Waypoints, {u"xml"_s} );
183 mImporters[u"wintec_tes"_s] = new QgsBabelSimpleImportFormat( u"wintec_tes"_s, u"Wintec TES file"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"tes"_s} );
184 mImporters[u"xmap"_s] = new QgsBabelSimpleImportFormat( u"xmap"_s, u"DeLorme XMap HH Native .WPT"_s, Qgis::BabelFormatCapability::Waypoints, {u"wpt"_s} );
185 mImporters[u"xmap2006"_s] = new QgsBabelSimpleImportFormat( u"xmap2006"_s, u"DeLorme XMap/SAHH 2006 Native .TXT"_s, Qgis::BabelFormatCapability::Waypoints, {u"txt"_s} );
186 mImporters[u"xmapwpt"_s] = new QgsBabelSimpleImportFormat( u"xmapwpt"_s, u"DeLorme XMat HH Street Atlas USA .WPT (PPC)"_s, Qgis::BabelFormatCapability::Waypoints, {} );
187 mImporters[u"xol"_s] = new QgsBabelSimpleImportFormat( u"xol"_s, u"Swiss Map 25/50/100 (.xol)"_s, Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks, {u"xol"_s} );
188 mImporters[u"yahoo"_s] = new QgsBabelSimpleImportFormat( u"yahoo"_s, u"Yahoo Geocode API data"_s, Qgis::BabelFormatCapability::Waypoints, {} );
189
191}
192
194{
195 qDeleteAll( mImporters );
196 qDeleteAll( mDevices );
197}
198
200{
201 return mImporters.keys();
202}
203
205{
206 return mImporters.value( name );
207}
208
210{
211 for ( auto it = mImporters.constBegin(); it != mImporters.constEnd(); ++it )
212 {
213 if ( it.value()->description().compare( description, Qt::CaseInsensitive ) == 0 )
214 return it.value();
215
216 // also need to test square bracket variant, see logic in importFileFilter()
217 const QString descriptionSquareBrackets = it.value()->description().replace( '(', '[' ).replace( ')', ']' );
218 if ( descriptionSquareBrackets.compare( description, Qt::CaseInsensitive ) == 0 )
219 return it.value();
220 }
221 return nullptr;
222}
223
225{
226 QStringList res;
227 QMap< QString, QString > descriptionToString;
228 for ( auto it = mImporters.constBegin(); it != mImporters.constEnd(); ++it )
229 {
230 const QStringList extensions = it.value()->extensions();
231 QString fileFilter;
232 if ( !extensions.empty() )
233 {
234 fileFilter = '(';
235 for ( const QString &extension : extensions )
236 fileFilter.append( u"*.%1"_s.arg( extension ) );
237 fileFilter.append( ')' );
238 }
239 else
240 {
241 fileFilter = u"(*.*)"_s;
242 }
243
244 // we have to replace round brackets from the format description, or they are treated as the filter component!
245 const QString description = it.value()->description().replace( '(', '[' ).replace( ')', ']' );
246
247 descriptionToString.insert( description.toLower(), u"%1 %2"_s.arg( description, fileFilter ) );
248 }
249
250 // build the list in a sorted order of lowercase description
251 for ( auto it = descriptionToString.constBegin(); it != descriptionToString.constEnd(); ++it )
252 res << it.value();
253
254 return res.join( ";;"_L1 );
255}
256
258{
259 return mDevices.keys();
260}
261
263{
264 return mDevices.value( name );
265}
266
267QMap<QString, QgsBabelGpsDeviceFormat *> QgsBabelFormatRegistry::devices() const
268{
269 return mDevices;
270}
271
273{
274 qDeleteAll( mDevices );
275 mDevices.clear();
276
277 mDevices[u"Garmin serial"_s] =
278 new QgsBabelGpsDeviceFormat( u"%babel -w -i garmin -o gpx %in %out"_s,
279 u"%babel -w -i gpx -o garmin %in %out"_s,
280 u"%babel -r -i garmin -o gpx %in %out"_s,
281 u"%babel -r -i gpx -o garmin %in %out"_s,
282 u"%babel -t -i garmin -o gpx %in %out"_s,
283 u"%babel -t -i gpx -o garmin %in %out"_s );
284
285 try
286 {
287 for ( const QString &device : sTreeBabelDevices->items() )
288 {
289 // don't leak memory if there's already a device with this name...
290 delete mDevices.value( device );
291
292 mDevices[device] = new QgsBabelGpsDeviceFormat( settingsBabelWptDownload->value( device ), settingsBabelWptUpload->value( device ),
293 settingsBabelRteDownload->value( device ), settingsBabelRteUpload->value( device ),
294 settingsBabelTrkDownload->value( device ), settingsBabelTrkUpload->value( device ) );
295 }
296 }
297 catch ( QgsSettingsException &e )
298 {
299 QgsDebugError( e.what() );
300 }
301}
302
@ Tracks
Format supports tracks.
Definition qgis.h:2057
@ Waypoints
Format supports waypoints.
Definition qgis.h:2055
@ Routes
Format supports routes.
Definition qgis.h:2056
void reloadFromSettings()
Reloads the registry's members from the currently stored configuration.
QgsBabelSimpleImportFormat * importFormatByDescription(const QString &description)
Returns a registered import format by description.
static const QgsSettingsEntryString * settingsBabelWptDownload
static const QgsSettingsEntryString * settingsBabelRteUpload
static const QgsSettingsEntryString * settingsBabelTrkDownload
QMap< QString, QgsBabelGpsDeviceFormat * > devices() const
Returns a map of device name to device format.
static const QgsSettingsEntryString * settingsBabelWptUpload
QStringList importFormatNames() const
Returns a list of the names of all registered import formats.
static const QgsSettingsEntryString * settingsBabelTrkUpload
QStringList deviceNames() const
Returns a list of the names of all registered devices.
static QgsSettingsTreeNamedListNode * sTreeBabelDevices
QgsBabelFormatRegistry()
Constructor for QgsBabelFormatRegistry.
QString importFileFilter() const
Returns a file filter string representing all registered import formats.
static const QgsSettingsEntryString * settingsBabelRteDownload
QgsBabelSimpleImportFormat * importFormat(const QString &name)
Returns a registered import format by name.
QgsBabelGpsDeviceFormat * deviceFormat(const QString &name)
Returns a registered device format by name.
A babel format capable of interacting directly with a GPS device.
A babel format capable of converting input files to GPX files.
QString what() const
A string settings entry.
Custom exception class for settings related exceptions.
#define QgsDebugError(str)
Definition qgslogger.h:59