From: tsteven4 <13596209+tsteven4@users.noreply.github.com> Date: Tue, 2 Nov 2021 17:30:10 +0000 (-0600) Subject: retire TopoMapPro Places File format (#711) X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~12^2~2^2~58 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f6fe2dead9c81ca6d4699c7911604c1961501628;p=gpsbabel.git retire TopoMapPro Places File format (#711) * retire TopoMapPro Places File format. * remove topomap pro reference files. * catch serialization references up with tmpro retirement. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index cfaf4a65c..2c1dfbf75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ set(MINIMAL_FMTS set(ALL_FMTS ${MINIMAL_FMTS} gtm.cc gpsutil.cc pcx.cc - skytraq.cc holux.cc tmpro.cc tpg.cc tpo.cc + skytraq.cc holux.cc tpg.cc tpo.cc xcsv.cc tiger.cc easygps.cc saroute.cc navicache.cc delgpl.cc ozi.cc text.cc html.cc diff --git a/GPSBabel.pro b/GPSBabel.pro index 1bbb8d0cf..0bd2a2696 100644 --- a/GPSBabel.pro +++ b/GPSBabel.pro @@ -60,7 +60,7 @@ MINIMAL_FMTS = magproto.cc explorist_ini.cc gpx.cc geo.cc mapsend.cc garmin.cc kml.cc wbt-200.cc ALL_FMTS=$$MINIMAL_FMTS gtm.cc gpsutil.cc pcx.cc \ - skytraq.cc holux.cc tmpro.cc tpg.cc tpo.cc \ + skytraq.cc holux.cc tpg.cc tpo.cc \ xcsv.cc tiger.cc easygps.cc \ saroute.cc navicache.cc delgpl.cc \ ozi.cc text.cc html.cc \ diff --git a/deprecated/tmpro.cc b/deprecated/tmpro.cc new file mode 100644 index 000000000..f00423416 --- /dev/null +++ b/deprecated/tmpro.cc @@ -0,0 +1,261 @@ +/* + ---------------------------------------------------------------------------------------- + TopoMapPro (.txt) + New Zealand Mapping Software + www.topomappro.com + (Tab Delimited text file) + + Based on gpsbabel .MXF format by Alex Mottram (geo_alexm at cox-internet.com) + Tweaked for TopoMapPro by Nick Heaphy (nick at automata dot co dot nz) + + Group sID sDescription fLat fLong fEasting fNorthing fAlt iColour iSymbol sHyperLink + 25 6 80 8 8 8 8 8 4 4 128 (lengths) + + Based on the specifications found in the TopoMapPro documentation available from website + ---------------------------------------------------------------------------------------- + + Copyright (C) 2002-2014 Robert Lipe, robertlipe+source@gpsbabel.org + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + */ + +#include "defs.h" +#include "cet_util.h" +#include "csv_util.h" +#include + +#define MYNAME "TMPro" + +static gbfile* file_in, *file_out; +static short_handle mkshort_handle; + +static void +rd_init(const QString& fname) +{ + file_in = gbfopen(fname, "rb", MYNAME); +} + +static void +rd_deinit() +{ + gbfclose(file_in); +} + +static void +wr_init(const QString& fname) +{ + file_out = gbfopen(fname, "w", MYNAME); +} + +static void +wr_deinit() +{ + gbfclose(file_out); +} + +static void +data_read() +{ + char* buff; + int linecount = 0; + + while ((buff = gbfgetstr(file_in))) { + if ((linecount++ == 0) && file_in->unicode) { + cet_convert_init(CET_CHARSET_UTF8, 1); + } + + /* skip the line if it contains "sHyperLink" as it is a header (I hope :) */ + if ((strlen(buff)) && (strstr(buff, "sHyperLink") == nullptr)) { + + auto* wpt_tmp = new Waypoint; + + /* data delimited by tabs, not enclosed in quotes. */ + char* s = buff; + s = csv_lineparse(s, "\t", "", linecount); + + int i = 0; + while (s) { + switch (i) { + + /* Group sID sDescription fLat fLong fEasting fNorthing fAlt iColour iSymbol sHyperLink */ + /* 0 1 2 3 4 5 6 7 8 9 10 */ + + case 0: + /* ignore: group */ + break; + case 1: + wpt_tmp->shortname = csv_stringtrim(s, ""); + break; + case 2: + /* Description is not a TopoMapPro format requirement. + If we assign "" then .loc/.gpx will generate empty XML tags :( + */ + wpt_tmp->description = csv_stringtrim(s, ""); + break; + case 3: + wpt_tmp->latitude = atof(s); + break; + case 4: + wpt_tmp->longitude = atof(s); + break; + case 5: + /* ignore: NZMapGrid Easting */ + break; + case 6: + /* ignore: NZMapGrid Northing */ + break; + case 7: + wpt_tmp->altitude = atof(s); + break; + case 8: + /* ignore: color */ + break; + case 9: + /* ignore: symbol (non standard) */ + break; + case 10: + /* URL is not a TopoMapPro format requirement. + You can store file links etc, we will discard anything that is not http + (as URLs in TMPro must start "http:") as other GPS formats probably can't + use the TopoMapLinks links. + (plus discards length 0 strings (so no empty XML tags)) + */ + { + QString link = csv_stringtrim(s, ""); + if (link.contains("http:")) { + wpt_tmp->AddUrlLink(link); + } + } + break; + default: + /* whoa! nelly */ + warning(MYNAME ": Warning: data fields on line %d exceed specification.\n", + linecount); + break; + } + i++; + + s = csv_lineparse(nullptr, "\t", "\"", linecount); + } + + if (i != 11) { + delete wpt_tmp; + warning(MYNAME ": WARNING - extracted %d fields from line %d. \nData on line ignored.\n", + i, linecount); + } else { + waypt_add(wpt_tmp); + } + + } else { + /* empty line */ + } + + } +} + +static void +tmpro_waypt_pr(const Waypoint* wpt) +{ + int icon = 1; /* default to "flag" */ + int colour = 255; /*default to red */ + QString shortname; + QString description; + if ((wpt->shortname.isEmpty()) || (global_opts.synthesize_shortnames)) { + if (!wpt->description.isEmpty()) { + if (global_opts.synthesize_shortnames) { + shortname = mkshort_from_wpt(mkshort_handle, wpt); + } else { + shortname = csv_stringclean(wpt->description, ",\""); + } + } else { + /* no description available */ + shortname = ""; + } + } else { + shortname = csv_stringclean(wpt->shortname, ",\""); + } + + if (wpt->description.isEmpty()) { + if (!shortname.isEmpty()) { + description = csv_stringclean(shortname, ",\""); + } else { + description = ""; + } + } else { + description = csv_stringclean(wpt->description, ",\""); + } + + /* Group sID sDescription fLat fLong fEasting fNorthing fAlt iColour iSymbol sHyperLink */ + /* 0 1 2 3 4 5 6 7 8 9 10 */ + /* Number of characters */ + /* 25 6 80 8 8 8 8 8 4 4 128 */ + + const char* l = nullptr; + if (wpt->HasUrlLink()) { + // Yes, it's lame to allocate/copy here. + UrlLink link = wpt->GetUrlLink(); + l = xstrdup(link.url_); + } + gbfprintf(file_out, "new\t%.6s\t%.80s\t%08.6f\t%08.6f\t\t\t%.2f\t%d\t%d\t%.128s\n", + CSTRc(shortname), + CSTRc(description), + wpt->latitude, + wpt->longitude, + wpt->altitude, + colour, + icon, + l ? l : "" + ); + + if (l) { + xfree(l); + } +} + +static void +data_write() +{ + /* Short names */ + if (global_opts.synthesize_shortnames) { + mkshort_handle = mkshort_new_handle(); + setshort_length(mkshort_handle, 6); + setshort_whitespace_ok(mkshort_handle, 0); + setshort_badchars(mkshort_handle, "\","); + } + + /* Write file header */ + gbfprintf(file_out, "Group\tsID\tsDescription\tfLat\tfLong\tfEasting\tfNorthing\tfAlt\tiColour\tiSymbol\tsHyperLink\n"); + + waypt_disp_all(tmpro_waypt_pr); + mkshort_del_handle(&mkshort_handle); +} + +ff_vecs_t tmpro_vecs = { + ff_type_file, + FF_CAP_RW_WPT, + rd_init, + wr_init, + rd_deinit, + wr_deinit, + data_read, + data_write, + nullptr, + nullptr, + CET_CHARSET_ASCII, 0 /* CET-REVIEW */ + , NULL_POS_OPS, + nullptr +}; + diff --git a/reference/format0.txt b/reference/format0.txt index d2a88d5de..bbb7aa5e1 100644 --- a/reference/format0.txt +++ b/reference/format0.txt @@ -135,7 +135,6 @@ tomtom_itn itn TomTom Itineraries (.itn) tomtom_itn_places itn TomTom Places Itineraries (.itn) tomtom_asc asc TomTom POI file (.asc) tomtom ov2 TomTom POI file (.ov2) -tmpro tmpro TopoMapPro Places File dmtlog trl TrackLogs digital mapping (.trl) tiger U.S. Census Bureau Tiger Mapping Service unicsv Universal csv with field structure in first line diff --git a/reference/format1.txt b/reference/format1.txt index 263a3744b..ef7198e1a 100644 --- a/reference/format1.txt +++ b/reference/format1.txt @@ -141,7 +141,6 @@ file tomtom_itn itn TomTom Itineraries (.itn) file tomtom_itn_places itn TomTom Places Itineraries (.itn) file tomtom_asc asc TomTom POI file (.asc) file tomtom ov2 TomTom POI file (.ov2) -file tmpro tmpro TopoMapPro Places File file dmtlog trl TrackLogs digital mapping (.trl) file tiger U.S. Census Bureau Tiger Mapping Service file unicsv Universal csv with field structure in first line diff --git a/reference/format2.txt b/reference/format2.txt index 605898a76..7250f49b7 100644 --- a/reference/format2.txt +++ b/reference/format2.txt @@ -141,7 +141,6 @@ file ----rw tomtom_itn itn TomTom Itineraries (.itn) file ----rw tomtom_itn_places itn TomTom Places Itineraries (.itn) file rw---- tomtom_asc asc TomTom POI file (.asc) file rw---- tomtom ov2 TomTom POI file (.ov2) -file rw---- tmpro tmpro TopoMapPro Places File file rwrw-- dmtlog trl TrackLogs digital mapping (.trl) file rw---- tiger U.S. Census Bureau Tiger Mapping Service file rwrwrw unicsv Universal csv with field structure in first line diff --git a/reference/format3.txt b/reference/format3.txt index 3c4e41df3..d59c5246f 100644 --- a/reference/format3.txt +++ b/reference/format3.txt @@ -1332,8 +1332,6 @@ option tomtom_asc datum GPS datum (def. WGS 84) string https://www.gpsbabel.o file rw---- tomtom ov2 TomTom POI file (.ov2) tomtom https://www.gpsbabel.org/WEB_DOC_DIR/fmt_tomtom.html -file rw---- tmpro tmpro TopoMapPro Places File tmpro - https://www.gpsbabel.org/WEB_DOC_DIR/fmt_tmpro.html file rwrw-- dmtlog trl TrackLogs digital mapping (.trl) dmtlog https://www.gpsbabel.org/WEB_DOC_DIR/fmt_dmtlog.html option dmtlog index Index of track (if more than one in source) integer 1 1 https://www.gpsbabel.org/WEB_DOC_DIR/fmt_dmtlog.html#fmt_dmtlog_o_index diff --git a/reference/help.txt b/reference/help.txt index 2eac8ef37..af672decc 100644 --- a/reference/help.txt +++ b/reference/help.txt @@ -664,7 +664,6 @@ File Types (-i and -o options): prefer_shortnames (0/1) Use shortname instead of description datum GPS datum (def. WGS 84) tomtom TomTom POI file (.ov2) - tmpro TopoMapPro Places File dmtlog TrackLogs digital mapping (.trl) index Index of track (if more than one in source) tiger U.S. Census Bureau Tiger Mapping Service diff --git a/reference/topomappro.txt b/reference/topomappro.txt deleted file mode 100644 index 5837da3a5..000000000 --- a/reference/topomappro.txt +++ /dev/null @@ -1,10 +0,0 @@ -Group sID sDescription fLat fLong fEasting fNorthing fAlt iColour iSymbol sHyperLink -new GCEBB Mountain Bike Heaven by susy1313 35.972033 -87.134700 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=3771 -new GC1A37 The Troll by a182pilot & Family 36.090683 -86.679550 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=6711 -new GC1C2B Dive Bomber by JoGPS & family 35.996267 -86.620117 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=7211 -new GC25A9 FOSTER by JoGPS & Family 36.038483 -86.648617 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=9641 -new GC2723 Logan Lighthouse by JoGps & Family 36.112183 -86.741767 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=10019 -new GC2B71 Ganier Cache by Susy1313 36.064083 -86.790517 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=11121 -new GC309F Shy's Hill by FireFighterEng33 36.087767 -86.809733 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=12447 -new GC317A GittyUp by JoGPS / Warner Parks 36.057500 -86.892000 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=12666 -new GC317D Inlighting by JoGPS / Warner Parks 36.082800 -86.867283 0.00 255 1 http://www.geocaching.com/seek/cache_details.asp?ID=12669 diff --git a/testo.d/deprecated/tmpro.test b/testo.d/deprecated/tmpro.test new file mode 100644 index 000000000..0a6407e11 --- /dev/null +++ b/testo.d/deprecated/tmpro.test @@ -0,0 +1,6 @@ +# tmpro (TopoMapPro Places) file format +rm -f ${TMPDIR}/topomappro.txt ${TMPDIR}/mxf.mxf +gpsbabel -i tmpro -f ${REFERENCE}/topomappro.txt -o tmpro -F ${TMPDIR}/tmp.txt +gpsbabel -i tmpro -f ${TMPDIR}/tmp.txt -o tmpro -F ${TMPDIR}/topomappro.txt +compare ${TMPDIR}/topomappro.txt ${REFERENCE} + diff --git a/testo.d/tmpro.test b/testo.d/tmpro.test deleted file mode 100644 index 0a6407e11..000000000 --- a/testo.d/tmpro.test +++ /dev/null @@ -1,6 +0,0 @@ -# tmpro (TopoMapPro Places) file format -rm -f ${TMPDIR}/topomappro.txt ${TMPDIR}/mxf.mxf -gpsbabel -i tmpro -f ${REFERENCE}/topomappro.txt -o tmpro -F ${TMPDIR}/tmp.txt -gpsbabel -i tmpro -f ${TMPDIR}/tmp.txt -o tmpro -F ${TMPDIR}/topomappro.txt -compare ${TMPDIR}/topomappro.txt ${REFERENCE} - diff --git a/tmpro.cc b/tmpro.cc deleted file mode 100644 index f00423416..000000000 --- a/tmpro.cc +++ /dev/null @@ -1,261 +0,0 @@ -/* - ---------------------------------------------------------------------------------------- - TopoMapPro (.txt) - New Zealand Mapping Software - www.topomappro.com - (Tab Delimited text file) - - Based on gpsbabel .MXF format by Alex Mottram (geo_alexm at cox-internet.com) - Tweaked for TopoMapPro by Nick Heaphy (nick at automata dot co dot nz) - - Group sID sDescription fLat fLong fEasting fNorthing fAlt iColour iSymbol sHyperLink - 25 6 80 8 8 8 8 8 4 4 128 (lengths) - - Based on the specifications found in the TopoMapPro documentation available from website - ---------------------------------------------------------------------------------------- - - Copyright (C) 2002-2014 Robert Lipe, robertlipe+source@gpsbabel.org - - 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. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - */ - -#include "defs.h" -#include "cet_util.h" -#include "csv_util.h" -#include - -#define MYNAME "TMPro" - -static gbfile* file_in, *file_out; -static short_handle mkshort_handle; - -static void -rd_init(const QString& fname) -{ - file_in = gbfopen(fname, "rb", MYNAME); -} - -static void -rd_deinit() -{ - gbfclose(file_in); -} - -static void -wr_init(const QString& fname) -{ - file_out = gbfopen(fname, "w", MYNAME); -} - -static void -wr_deinit() -{ - gbfclose(file_out); -} - -static void -data_read() -{ - char* buff; - int linecount = 0; - - while ((buff = gbfgetstr(file_in))) { - if ((linecount++ == 0) && file_in->unicode) { - cet_convert_init(CET_CHARSET_UTF8, 1); - } - - /* skip the line if it contains "sHyperLink" as it is a header (I hope :) */ - if ((strlen(buff)) && (strstr(buff, "sHyperLink") == nullptr)) { - - auto* wpt_tmp = new Waypoint; - - /* data delimited by tabs, not enclosed in quotes. */ - char* s = buff; - s = csv_lineparse(s, "\t", "", linecount); - - int i = 0; - while (s) { - switch (i) { - - /* Group sID sDescription fLat fLong fEasting fNorthing fAlt iColour iSymbol sHyperLink */ - /* 0 1 2 3 4 5 6 7 8 9 10 */ - - case 0: - /* ignore: group */ - break; - case 1: - wpt_tmp->shortname = csv_stringtrim(s, ""); - break; - case 2: - /* Description is not a TopoMapPro format requirement. - If we assign "" then .loc/.gpx will generate empty XML tags :( - */ - wpt_tmp->description = csv_stringtrim(s, ""); - break; - case 3: - wpt_tmp->latitude = atof(s); - break; - case 4: - wpt_tmp->longitude = atof(s); - break; - case 5: - /* ignore: NZMapGrid Easting */ - break; - case 6: - /* ignore: NZMapGrid Northing */ - break; - case 7: - wpt_tmp->altitude = atof(s); - break; - case 8: - /* ignore: color */ - break; - case 9: - /* ignore: symbol (non standard) */ - break; - case 10: - /* URL is not a TopoMapPro format requirement. - You can store file links etc, we will discard anything that is not http - (as URLs in TMPro must start "http:") as other GPS formats probably can't - use the TopoMapLinks links. - (plus discards length 0 strings (so no empty XML tags)) - */ - { - QString link = csv_stringtrim(s, ""); - if (link.contains("http:")) { - wpt_tmp->AddUrlLink(link); - } - } - break; - default: - /* whoa! nelly */ - warning(MYNAME ": Warning: data fields on line %d exceed specification.\n", - linecount); - break; - } - i++; - - s = csv_lineparse(nullptr, "\t", "\"", linecount); - } - - if (i != 11) { - delete wpt_tmp; - warning(MYNAME ": WARNING - extracted %d fields from line %d. \nData on line ignored.\n", - i, linecount); - } else { - waypt_add(wpt_tmp); - } - - } else { - /* empty line */ - } - - } -} - -static void -tmpro_waypt_pr(const Waypoint* wpt) -{ - int icon = 1; /* default to "flag" */ - int colour = 255; /*default to red */ - QString shortname; - QString description; - if ((wpt->shortname.isEmpty()) || (global_opts.synthesize_shortnames)) { - if (!wpt->description.isEmpty()) { - if (global_opts.synthesize_shortnames) { - shortname = mkshort_from_wpt(mkshort_handle, wpt); - } else { - shortname = csv_stringclean(wpt->description, ",\""); - } - } else { - /* no description available */ - shortname = ""; - } - } else { - shortname = csv_stringclean(wpt->shortname, ",\""); - } - - if (wpt->description.isEmpty()) { - if (!shortname.isEmpty()) { - description = csv_stringclean(shortname, ",\""); - } else { - description = ""; - } - } else { - description = csv_stringclean(wpt->description, ",\""); - } - - /* Group sID sDescription fLat fLong fEasting fNorthing fAlt iColour iSymbol sHyperLink */ - /* 0 1 2 3 4 5 6 7 8 9 10 */ - /* Number of characters */ - /* 25 6 80 8 8 8 8 8 4 4 128 */ - - const char* l = nullptr; - if (wpt->HasUrlLink()) { - // Yes, it's lame to allocate/copy here. - UrlLink link = wpt->GetUrlLink(); - l = xstrdup(link.url_); - } - gbfprintf(file_out, "new\t%.6s\t%.80s\t%08.6f\t%08.6f\t\t\t%.2f\t%d\t%d\t%.128s\n", - CSTRc(shortname), - CSTRc(description), - wpt->latitude, - wpt->longitude, - wpt->altitude, - colour, - icon, - l ? l : "" - ); - - if (l) { - xfree(l); - } -} - -static void -data_write() -{ - /* Short names */ - if (global_opts.synthesize_shortnames) { - mkshort_handle = mkshort_new_handle(); - setshort_length(mkshort_handle, 6); - setshort_whitespace_ok(mkshort_handle, 0); - setshort_badchars(mkshort_handle, "\","); - } - - /* Write file header */ - gbfprintf(file_out, "Group\tsID\tsDescription\tfLat\tfLong\tfEasting\tfNorthing\tfAlt\tiColour\tiSymbol\tsHyperLink\n"); - - waypt_disp_all(tmpro_waypt_pr); - mkshort_del_handle(&mkshort_handle); -} - -ff_vecs_t tmpro_vecs = { - ff_type_file, - FF_CAP_RW_WPT, - rd_init, - wr_init, - rd_deinit, - wr_deinit, - data_read, - data_write, - nullptr, - nullptr, - CET_CHARSET_ASCII, 0 /* CET-REVIEW */ - , NULL_POS_OPS, - nullptr -}; - diff --git a/vecs.h b/vecs.h index 67eaed96b..86a6f1d08 100644 --- a/vecs.h +++ b/vecs.h @@ -66,7 +66,6 @@ extern ff_vecs_t holux_vecs; extern ff_vecs_t tpg_vecs; extern ff_vecs_t tpo2_vecs; extern ff_vecs_t tpo3_vecs; -extern ff_vecs_t tmpro_vecs; extern ff_vecs_t tiger_vecs; extern ff_vecs_t easygps_vecs; extern ff_vecs_t saroute_vecs; @@ -277,7 +276,6 @@ private: LegacyFormat tpg_fmt {tpg_vecs}; LegacyFormat tpo2_fmt {tpo2_vecs}; LegacyFormat tpo3_fmt {tpo3_vecs}; - LegacyFormat tmpro_fmt {tmpro_vecs}; LegacyFormat tiger_fmt {tiger_vecs}; LegacyFormat easygps_fmt {easygps_vecs}; LegacyFormat saroute_fmt {saroute_vecs}; @@ -534,13 +532,6 @@ private: "tpo", nullptr, }, - { - &tmpro_fmt, - "tmpro", - "TopoMapPro Places File", - "tmpro", - nullptr, - }, { &tiger_fmt, "tiger", diff --git a/xmldoc/formats/tmpro.xml b/xmldoc/formats/tmpro.xml deleted file mode 100644 index 10e4be1db..000000000 --- a/xmldoc/formats/tmpro.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - Reads and writes places files for -use in TopoMapPro places files. As this file -type can store links other than web links, anything that is not a http -url will be discarded. Note that this does not do datum conversions, -so if your input file does not have WGS84/NZGD2000 data, your output -file won't either. The color of waypoint icons defaults to red. -