Add script to automatically dump babel formats from gpsbabel

and update internal list to add a ton of new formats and remove
formats deprecated and removed by gpsbabel
This commit is contained in:
Nyall Dawson 2021-08-01 09:10:01 +10:00
parent 9bd5ad48b9
commit 4b17ef20f1
2 changed files with 250 additions and 26 deletions

View File

@ -0,0 +1,109 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
***************************************************************************
dump_babel_formats.py
---------------------
Date : July 2021
Copyright : (C) 2021 by Nyall Dawson
Email : nyall dot dawson at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
"""
Dumps a list of babel formats for inclusion in QgsBabelFormatRegistry::QgsBabelFormatRegistry()
"""
__author__ = 'Nyall Dawson'
__date__ = 'July 2021'
__copyright__ = '(C) 2021, Nyall Dawson'
import subprocess
import re
def process_lines(lines):
"""
Processes lines from gpsbabel -^3 output
"""
current_line = 0
format_out = {}
while current_line < len(lines):
line = lines[current_line]
fields = line.split('\t')
assert len(fields) >= 5, fields
current_line += 1
html_pages = []
while lines[current_line].startswith('http'):
html_pages.append(lines[current_line])
current_line += 1
while current_line < len(lines) and lines[current_line].startswith('option'):
options = lines[current_line].split('\t')
assert len(options) >= 9, options
name, description, option_type, option_def, option_min, option_max, option_html = options[:7]
# print(name, description, option_type, option_def, option_min, option_max, option_html)
option_http_pages = []
current_line += 1
while current_line < len(lines) and lines[current_line].startswith('http'):
option_http_pages.append(lines[current_line])
current_line += 1
name = fields[2]
description = fields[4]
read_waypoints = fields[1][0] == 'r'
read_tracks = fields[1][2] == 'r'
read_routes = fields[1][4] == 'r'
write_waypoints = fields[1][1] == 'w'
write_tracks = fields[1][3] == 'w'
write_routes = fields[1][5] == 'w'
is_file_format = fields[0] == 'file'
is_device_format = fields[0] == 'serial'
extensions = fields[3].split('/')
if is_file_format and any([read_routes, read_tracks, read_waypoints]):
capabilities = []
if read_waypoints:
capabilities.append('Qgis::BabelFormatCapability::Waypoints')
if read_routes:
capabilities.append('Qgis::BabelFormatCapability::Routes')
if read_tracks:
capabilities.append('Qgis::BabelFormatCapability::Tracks')
format_out[
description] = f"""mImporters[QStringLiteral( "{description}" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "{name}" ), {' | '.join(capabilities)} );"""
for format_name in sorted(format_out.keys(), key=lambda x: x.lower()):
print(format_out[format_name])
CMD = "gpsbabel -^3"
START_FORMATS_RX = re.compile("^file|serial")
result = subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE)
found_first_line = False
input_lines = []
for input_line in result.stdout.readlines():
input_str = input_line.decode()
if not found_first_line:
if START_FORMATS_RX.match(input_str):
found_first_line = True
else:
continue
if input_str.strip():
input_lines.append(input_str.strip())
process_lines(input_lines)

View File

@ -23,36 +23,151 @@
QgsBabelFormatRegistry::QgsBabelFormatRegistry()
{
mImporters[QStringLiteral( "CoPilot Flight Planner" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "copilot" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Delorme GPS Log" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpl" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Delorme Routes" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "saroute" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Delorme Street Atlas 2004 Plus" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "saplus" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "DNA" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "dna" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "EasyGPS Binary Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "easygps" ), Qgis::BabelFormatCapability::Waypoints );
//
// this list is automatically generated by scripts/dump_babel_formats.py
//
mImporters[QStringLiteral( "Alan Map500 tracklogs (.trl)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "alantrl" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Alan Map500 waypoints and routes (.wpr)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "alanwpr" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "Bushnell GPS Trail file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "bushnell_trl" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Bushnell GPS Waypoint file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "bushnell" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Cambridge/Winpilot glider software" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "cambridge" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "CarteSurTable data file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "cst" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Columbus/Visiontac V900 files (.csv)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "v900" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Comma separated values" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "csv" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "CompeGPS data files (.wpt/.trk/.rte)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "compegps" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Data Logger iBlue747 csv" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "iblue747" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Data Logger iBlue757 csv" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "iblue757" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "DeLorme .an1 (drawing) file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "an1" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "DeLorme GPL" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpl" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "DeLorme Street Atlas Plus" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "saplus" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "DeLorme Street Atlas Route" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "saroute" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "DeLorme XMap HH Native .WPT" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "xmap" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "DeLorme XMap/SAHH 2006 Native .TXT" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "xmap2006" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "DeLorme XMat HH Street Atlas USA .WPT (PPC)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "xmapwpt" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Destinator Itineraries (.dat)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "destinator_itn" ), Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "Destinator Points of Interest (.dat)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "destinator_poi" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Destinator TrackLogs (.dat)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "destinator_trl" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "EasyGPS binary format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "easygps" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Embedded Exif-GPS data (.jpg)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "exif" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Energympro GPS training watch" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "energympro" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Enigma binary waypoint file (.ert)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "enigma" ), Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "ESRI shapefile" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "shape" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "F90G Automobile DVR GPS log file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "f90g" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "FAI/IGC Flight Recorder Data Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "igc" ), Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Flexible and Interoperable Data Transfer (FIT) Activity file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "garmin_fit" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "FlySight GPS File" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "flysight" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Fugawi" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "fugawi" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Garmin Mapsource" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mapsource" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Garmin PCX5" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "pcx" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "G7ToWin data files (.g7t)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "g7towin" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Garmin 301 Custom position and heartrate" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "garmin301" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Garmin G1000 datalog input filter file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "garmin_g1000" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Garmin Logbook XML" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "glogbook" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Garmin MapSource - gdb" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gdb" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Garmin MapSource - txt (tab delimited)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "garmin_txt" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Garmin PCX5" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "pcx" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Garmin POI database" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "garmin_poi" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Garmin Points of Interest (.gpi)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "garmin_gpi" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Garmin Training Center (.tcx/.crs/.hst/.xml)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gtrnctr" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Geocaching.com .loc" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "geo" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "GeocachingDB" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gcdb" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "GPSDrive" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpsdrive" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Geogrid-Viewer ascii overlay file (.ovl)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ggv_ovl" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Geogrid-Viewer binary overlay file (.ovl)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ggv_bin" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Geogrid-Viewer tracklogs (.log)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ggv_log" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "GeoJson" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "geojson" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "GEOnet Names Server (GNS)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "geonet" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Google Directions XML" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "googledir" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Google Earth (Keyhole) Markup Language" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "kml" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Google Navigator Tracklines (.trl)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gnav_trl" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "GoPal GPS track log (.trk)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gopal" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "GPS Tracking Key Pro text" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "land_air_sea" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "GPS TrackMaker" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gtm" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "GPSBabel arc filter file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "arc" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "GpsDrive Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpsdrive" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "GpsDrive Format for Tracks" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpsdrivetrack" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "GPSman" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpsman" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "GPSUtil" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpsutil" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Holux" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "holux" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "gpsutil" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpsutil" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "GPX XML" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "gpx" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "HikeTech" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "hiketech" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Holux (gm-100) .wpo Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "holux" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Holux M-241 (MTK based) Binary File Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "m241-bin" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Honda/Acura Navigation System VP Log File Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "vpl" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Humminbird tracks (.ht)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "humminbird_ht" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Humminbird waypoints and routes (.hwr)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "humminbird" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "IGN Rando track files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ignrando" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "iGo Primo points of interest (.upoi)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "igoprimo_poi" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "iGO2008 points of interest (.upoi)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "igo2008_poi" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "IGO8 .trk" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "igo8" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Jelbert GeoTagger data file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "jtr" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Jogmap.de XML format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "jogmap" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Kompass (DAV) Track (.tk)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "kompass_tk" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Kompass (DAV) Waypoints (.wp)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "kompass_wp" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Lowrance USR" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "lowranceusr" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Magellan Explorist Geocaching" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "maggeo" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Magellan Mapsend" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mapsend" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Magellan Navigator Companion" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "magnav" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Mapopolis.com Mapconverter Application" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mapconverter" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Maptech" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mxf" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Microsoft Streets and Trips" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "s_and_t" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Navicache" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "navicache" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "NIMA/GNIS Geographic Names" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "nima" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "NMEA Sentences" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "nmea" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "OziExplorer" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ozi" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "PocketStreets 2002/2003 Pushpin" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "psp" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "PSITrex" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "psitrex" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Shapefile" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "shape" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Tiger" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tiger" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Topo by National Geographic" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tpg" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "TopoMapPro" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tmpro" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Magellan SD files (as for eXplorist)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "magellanx" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Magellan SD files (as for Meridian)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "magellan" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "MagicMaps IK3D project file (.ikt)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ik3d" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Mainnav" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mainnav" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Map&Guide 'TourExchangeFormat' XML" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tef" ), Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "MapAsia track file (.tr7)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mapasia_tr7" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Mapbar (China) navigation track for Sonim Xp3300" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mapbar" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Mapfactor Navigator" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mapfactor" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Mapopolis.com Mapconverter CSV" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mapconverter" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "MapTech Exchange Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mxf" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "MediaTek Locus" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mtk_locus" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Memory-Map Navigator overlay files (.mmo)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mmo" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Microsoft Streets and Trips 2002-2007" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "s_and_t" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Mobile Garmin XT Track files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "garmin_xt" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Motoactiv CSV" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "motoactv" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Motorrad Routenplaner (Map&Guide) .bcr files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "bcr" ), Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "MTK Logger (iBlue 747,...) Binary File Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mtk-bin" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "MyNav TRC format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "mynav" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "National Geographic Topo .tpg (waypoints)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tpg" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "National Geographic Topo 2.x .tpo" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tpo2" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "National Geographic Topo 3.x/4.x .tpo" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tpo3" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Navicache.com XML" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "navicache" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Navigon Mobile Navigator .rte files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "nmn4" ), Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "Navigon Waypoints" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "navigonwpt" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "NaviGPS GT-31/BGT-31 datalogger (.sbp)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "sbp" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "NaviGPS GT-31/BGT-31 SiRF binary logfile (.sbn)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "sbn" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Naviguide binary route file (.twl)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "naviguide" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Navitel binary track (.bin)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "navitel_trk" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Navitrak DNA marker format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "dna" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "NetStumbler Summary File (text)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "netstumbler" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "NIMA/GNIS Geographic Names File" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "nima" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "NMEA 0183 sentences" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "nmea" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Nokia Landmark Exchange" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "lmx" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "OpenStreetMap data files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "osm" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "OziExplorer" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ozi" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "PocketFMS breadcrumbs" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "pocketfms_bc" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "PocketFMS flightplan (.xml)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "pocketfms_fp" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "PocketFMS waypoints (.txt)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "pocketfms_wp" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Qstarz BL-1000" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "qstarz_bl-1000" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Raymarine Waypoint File (.rwf)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "raymarine" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "Ricoh GPS Log File" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "ricoh" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "See You flight analysis data" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "cup" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Skymap / KMD150 ascii files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "skyforce" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "SkyTraq Venus based loggers Binary File Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "skytraq-bin" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Suunto Trek Manager (STM) .sdf files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "stmsdf" ), Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Suunto Trek Manager (STM) WaypointPlus files" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "stmwpp" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Swiss Map 25/50/100 (.xol)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "xol" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Tab delimited fields useful for OpenOffice" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "openoffice" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Teletype [ Get Jonathon Johnson to describe" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "teletype" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "TomTom Itineraries (.itn)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tomtom_itn" ), Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "TomTom Places Itineraries (.itn)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tomtom_itn_places" ), Qgis::BabelFormatCapability::Routes );
mImporters[QStringLiteral( "TomTom POI file (.asc)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tomtom_asc" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "TomTom POI file (.ov2)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tomtom" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "TopoMapPro Places File" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tmpro" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "TrackLogs digital mapping (.trl)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "dmtlog" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "U.S. Census Bureau Tiger Mapping Service" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "tiger" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Universal csv with field structure in first line" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "unicsv" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "VidaOne GPS for Pocket PC (.gpb)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "vidaone" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Vito Navigator II tracks" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "vitosmt" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Routes | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Vito SmartMap tracks (.vtt)" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "vitovtt" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "WiFiFoFum 2.0 for PocketPC XML" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "wfff" ), Qgis::BabelFormatCapability::Waypoints );
mImporters[QStringLiteral( "Wintec TES file" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "wintec_tes" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Wintec WBT-100/200 Binary File Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "wbt-bin" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Wintec WBT-201/G-Rays 2 Binary File Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "wbt-tk1" ), Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "XAiOX iTrackU Logger Binary File Format" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "itracku-bin" ), Qgis::BabelFormatCapability::Waypoints | Qgis::BabelFormatCapability::Tracks );
mImporters[QStringLiteral( "Yahoo Geocode API data" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "yahoo" ), Qgis::BabelFormatCapability::Waypoints );
reloadFromSettings();
}