1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-07-01 13:29:16 +02:00

Compare commits

..

73 Commits
5.7 ... 5.12

Author SHA1 Message Date
bafd0b6af2 Translations update (#118) 2018-05-25 17:16:04 +02:00
eb89ef2f2b Refactoring 2018-05-24 23:19:30 +02:00
f9822b7c78 Translations update 2018-05-24 22:47:28 +02:00
e4feeae064 Improved error handling + code cleanup 2018-05-24 22:11:00 +02:00
31ff81576c Removed asserts from release code 2018-05-24 00:36:27 +02:00
0d879e61a9 Added support for Garmin JNX maps 2018-05-22 22:40:15 +02:00
ba7074f902 Version++ 2018-05-20 21:47:29 +02:00
f371500570 Fixed graph resize glitches 2018-05-20 19:38:01 +02:00
7324535bfc Some more code cleanup 2018-05-19 22:36:11 +02:00
59c95e53c4 Precompute some more constants 2018-05-19 20:55:43 +02:00
a66ca7b3a8 Includes cleanup 2018-05-19 20:32:00 +02:00
273a918ed9 Precache font related info 2018-05-19 20:30:29 +02:00
7198d610c5 Code cleanup 2018-05-18 22:22:36 +02:00
a6389f0174 Precompute e2s as well 2018-05-18 22:10:43 +02:00
d9c922aa47 Do not cache the grid, drawing it is faster 2018-05-18 20:11:41 +02:00
0156d2fbc0 Precompute all compute-intensive stuff 2018-05-18 20:08:52 +02:00
650eb1c302 Optimization/code cleanup 2018-05-18 01:38:33 +02:00
33919c501c Merge branch 'master' of https://github.com/tumic0/GPXSee 2018-05-18 00:22:35 +02:00
be9da5aabe Some more naming unification 2018-05-18 00:21:59 +02:00
f341219613 Update gpxsee_sv.ts (#115) 2018-05-18 00:00:08 +02:00
a486f9e78d Datum shift optimization (precompute ellipsoid constants)
+ projections code unification
2018-05-17 22:41:56 +02:00
b3940283a8 Update Polish translation file. (#114) 2018-05-16 22:08:21 +02:00
74aebce357 Code cleanup 2018-05-16 22:01:21 +02:00
0cd6a82a0f Added support for Garmin route extension
Resolves #112
2018-05-16 21:53:06 +02:00
81a5c712c6 Projection error handling cleanup 2018-05-16 18:52:48 +02:00
025a403c73 PI defines cleanup 2018-05-15 21:51:56 +02:00
a762445bce Version++ 2018-05-14 22:19:59 +02:00
e1a87c84f3 Only include oblique mercator PCSs that can be aproximated using LLC 2018-05-14 22:14:09 +02:00
5f47383648 Updated PCS list 2018-05-14 00:37:19 +02:00
7a702be012 Allow entries with equal timestamp as some Garmin devices do produce them 2018-05-13 21:14:48 +02:00
abfb0c637a 9804 was correct... 2018-05-13 08:52:20 +02:00
c9cedebeb0 Use the propper mercator projection EPSG code number 2018-05-13 01:16:10 +02:00
be1c7fa4c2 Added support for Mercator projection (the real one) 2018-05-13 00:40:03 +02:00
2b421f3b63 Properly name the web mercator projection 2018-05-12 22:38:42 +02:00
80f13d7057 Fixed LCC2 GeoTIFFs loading 2018-05-12 21:45:58 +02:00
ab05014896 Added all remaining EPSG 9603 GCSs 2018-05-12 17:11:33 +02:00
c8433f7b55 Added EPSG 9606 and 9607 datums to the gcs.csv file
(gcs file format change)
2018-05-12 14:48:21 +02:00
bb52003743 Includes cleanup 2018-05-12 13:18:49 +02:00
22ea1b0bca Cosmetics 2018-05-12 13:13:35 +02:00
adb407dcf5 Translations update 2018-05-12 12:15:21 +02:00
3b0a4a30bb Use precise arc second to radian transformation constants 2018-05-11 20:06:16 +02:00
792ec17a20 Added support for EPSG:9606 and EPSG:9607 datum transformations 2018-05-11 19:54:12 +02:00
bd6c6ef344 Simplified zoom key bindings
Closes #99
2018-05-09 18:18:58 +02:00
dfb48d17bf Ignore missing namespace declarations
Fixes #110
2018-05-08 22:09:39 +02:00
362d065020 Added EST97 PCS 2018-05-05 18:18:54 +02:00
b0f4f2294a Fixed the instant-resize-after-first-load issue 2018-05-04 19:36:37 +02:00
4463241e50 Merge branch 'master' of https://github.com/tumic0/GPXSee 2018-05-03 19:12:22 +02:00
abc987cb0c Code cleanup 2018-05-03 19:11:55 +02:00
81f0c40bec Translations update (#109) 2018-05-02 23:29:25 +02:00
cf81e42f52 Remaining qreal/double separation
+ some minor TrekBuddy atlas issues fixes
2018-05-02 21:25:14 +02:00
1aedc1de93 Fixed scale info when printing/exporting with digital zoom 2018-04-28 22:34:37 +02:00
beb966c58f Fixed broken returning from print mode 2018-04-28 22:18:11 +02:00
9eb2e38499 Includes cleanup 2018-04-28 19:08:21 +02:00
247eef5261 Added download retries in case of connection timeout 2018-04-28 19:07:52 +02:00
9c125a0583 Cosmetics 2018-04-28 16:14:03 +02:00
bcff05c37c Code cleanup 2018-04-28 16:07:32 +02:00
266a1d037e Code cleanup 2018-04-27 23:08:44 +02:00
2b0989438a Version++ 2018-04-27 21:16:11 +02:00
f8c92cf036 Enable authorization for OSM type maps 2018-04-27 21:13:10 +02:00
2fb9a59bf0 A little bit more sane PDF resolutions 2018-04-27 19:37:15 +02:00
566f3185f9 Separated map downloaders, added configurable connection timeouts 2018-04-27 19:31:27 +02:00
62962b5de2 Added new Polish comment entry (#105) 2018-04-23 07:41:56 +02:00
cb09ea0681 Version++ 2018-04-19 19:50:04 +02:00
e5d566807a Fixed HTTP redirects (+addded support for relative URLs)
Fixes #104
2018-04-19 19:46:56 +02:00
0ce2cfd13c Update gpxsee_sv.ts (#102)
* Update gpxsee_sv.ts

* Fixed typo

Sorry! I edited online, on a borrowed windows machine.  :(
2018-04-18 22:03:26 +02:00
e1532b978f The true cause of the map switch offset... 2018-04-18 22:02:24 +02:00
bb10f7c0e1 Version++ 2018-04-17 22:54:42 +02:00
8ff21b5b37 Added the Polish translation into the builds 2018-04-17 22:52:47 +02:00
32f41e5287 Added new PL (Polish) translation file. (#103) 2018-04-17 22:40:12 +02:00
c50e41dea1 Numerical instability fix 2018-04-17 22:26:20 +02:00
e34800b8d1 Updated description (added OziExplorer files) 2018-04-17 21:27:03 +02:00
6642a2f810 Updated USGS maps URLs 2018-04-17 21:25:47 +02:00
55458b04a6 Fixed 1px map change offset & invalid zoom level 2018-04-17 21:24:46 +02:00
117 changed files with 6634 additions and 1975 deletions

View File

@ -1,4 +1,4 @@
version: 5.7.{build}
version: 5.12.{build}
configuration: Release
platform: Any CPU
environment:

View File

@ -1,6 +1,6 @@
# GPXSee
GPXSee is a Qt-based GPS log file viewer and analyzer that supports GPX, TCX,
KML, FIT, IGC and NMEA files.
KML, FIT, IGC, NMEA and OziExplorer files.
## Features
* User-definable online maps (OSM/Google tiles, WMTS, WMS).
@ -11,7 +11,7 @@ KML, FIT, IGC and NMEA files.
* Print/export to PDF.
* Full-screen mode.
* Native GUI for Windows, Mac OS X and Linux.
* Opens GPX, TCX, FIT, KML, IGC, NMEA and Garmin CSV files.
* Opens GPX, TCX, FIT, KML, IGC, NMEA, OziExplorer (PLT, RTE, WPT) and Garmin CSV files.
![GPXSee - Linux](https://a.fsdn.com/con/app/proj/gpxsee/screenshots/linux2.png)

View File

@ -1,5 +1,5 @@
TARGET = GPXSee
VERSION = 5.7
VERSION = 5.12
QT += core \
gui \
network
@ -15,6 +15,7 @@ HEADERS += src/config.h \
src/common/rectc.h \
src/common/wgs84.h \
src/common/str2int.h \
src/common/rtree.h \
src/GUI/app.h \
src/GUI/icons.h \
src/GUI/gui.h \
@ -69,7 +70,7 @@ HEADERS += src/config.h \
src/map/projection.h \
src/map/ellipsoid.h \
src/map/datum.h \
src/map/mercator.h \
src/map/webmercator.h \
src/map/transversemercator.h \
src/map/latlon.h \
src/map/utm.h \
@ -117,7 +118,6 @@ HEADERS += src/config.h \
src/data/trackdata.h \
src/data/routedata.h \
src/data/path.h \
src/data/rtree.h \
src/data/gpxparser.h \
src/data/tcxparser.h \
src/data/csvparser.h \
@ -125,7 +125,11 @@ HEADERS += src/config.h \
src/data/fitparser.h \
src/data/igcparser.h \
src/data/nmeaparser.h \
src/data/oziparsers.h
src/data/oziparsers.h \
src/map/rectd.h \
src/map/geocentric.h \
src/map/mercator.h \
src/map/jnxmap.h
SOURCES += src/main.cpp \
src/common/coordinates.cpp \
src/common/rectc.cpp \
@ -183,7 +187,7 @@ SOURCES += src/main.cpp \
src/map/matrix.cpp \
src/map/ellipsoid.cpp \
src/map/datum.cpp \
src/map/mercator.cpp \
src/map/webmercator.cpp \
src/map/transversemercator.cpp \
src/map/utm.cpp \
src/map/lambertconic.cpp \
@ -219,14 +223,18 @@ SOURCES += src/main.cpp \
src/data/fitparser.cpp \
src/data/igcparser.cpp \
src/data/nmeaparser.cpp \
src/data/oziparsers.cpp
src/data/oziparsers.cpp \
src/map/geocentric.cpp \
src/map/mercator.cpp \
src/map/jnxmap.cpp
RESOURCES += gpxsee.qrc
TRANSLATIONS = lang/gpxsee_cs.ts \
lang/gpxsee_sv.ts \
lang/gpxsee_de.ts \
lang/gpxsee_ru.ts \
lang/gpxsee_fi.ts \
lang/gpxsee_fr.ts
lang/gpxsee_fr.ts \
lang/gpxsee_pl.ts
macx {
ICON = icons/gpxsee.icns
QMAKE_INFO_PLIST = pkg/Info.plist
@ -236,7 +244,8 @@ macx {
lang/gpxsee_fi.qm \
lang/gpxsee_fr.qm \
lang/gpxsee_ru.qm \
lang/gpxsee_sv.qm
lang/gpxsee_sv.qm \
lang/gpxsee_pl.qm
CSV.path = Contents/Resources
CSV.files = pkg/csv
MAPS.path = Contents/Resources
@ -264,5 +273,6 @@ win32 {
icons/plt.ico \
icons/rte.ico \
icons/wpt.ico
DEFINES += _USE_MATH_DEFINES
}
DEFINES += APP_VERSION=\\\"$$VERSION\\\"

View File

@ -47,52 +47,52 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="112"/>
<location filename="../src/data/data.cpp" line="110"/>
<source>Supported files</source>
<translation>Podporované soubory</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>CSV files</source>
<translation>Soubory CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>FIT files</source>
<translation>Soubory FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>GPX files</source>
<translation>Soubory GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>IGC files</source>
<translation>Soubory IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>KML files</source>
<translation>Soubory KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>NMEA files</source>
<translation>Soubory NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="117"/>
<location filename="../src/data/data.cpp" line="115"/>
<source>OziExplorer files</source>
<translation>Soubory OziExploreru</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>TCX files</source>
<translation>Soubory TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>All files</source>
<translation>Všechny soubory</translation>
</message>
@ -106,7 +106,7 @@
<translation>Výška</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="122"/>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<source>m</source>
<translation>m</translation>
</message>
@ -126,7 +126,7 @@
<translation>Minimum</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<location filename="../src/GUI/elevationgraph.cpp" line="128"/>
<source>ft</source>
<translation>ft</translation>
</message>
@ -306,380 +306,380 @@
<context>
<name>GUI</name>
<message>
<location filename="../src/GUI/gui.cpp" line="592"/>
<location filename="../src/GUI/gui.cpp" line="595"/>
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
<translation>Program GPXSee je distribuován pod podmínkami licence GNU General Public License verze 3. Pro více informací navštivte stránky programu na adrese </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="666"/>
<location filename="../src/GUI/gui.cpp" line="669"/>
<source>Open file</source>
<translation>Otevřít soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="757"/>
<location filename="../src/GUI/gui.cpp" line="774"/>
<source>Open POI file</source>
<translation>Otevřít POI soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="199"/>
<location filename="../src/GUI/gui.cpp" line="202"/>
<source>Quit</source>
<translation>Ukončit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="208"/>
<location filename="../src/GUI/gui.cpp" line="609"/>
<location filename="../src/GUI/gui.cpp" line="610"/>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="612"/>
<location filename="../src/GUI/gui.cpp" line="613"/>
<source>Keyboard controls</source>
<translation>Ovládací klávesy</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="233"/>
<location filename="../src/GUI/gui.cpp" line="236"/>
<source>Close</source>
<translation>Zavřít</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="239"/>
<location filename="../src/GUI/gui.cpp" line="242"/>
<source>Reload</source>
<translation>Znovu načíst</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="521"/>
<location filename="../src/GUI/gui.cpp" line="524"/>
<source>Show</source>
<translation>Zobrazit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="515"/>
<location filename="../src/GUI/gui.cpp" line="518"/>
<source>File</source>
<translation>Soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="250"/>
<location filename="../src/GUI/gui.cpp" line="253"/>
<source>Close POI files</source>
<translation>Zavřit POI soubory</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="252"/>
<location filename="../src/GUI/gui.cpp" line="255"/>
<source>Overlap POIs</source>
<translation>Překrývat POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="256"/>
<location filename="../src/GUI/gui.cpp" line="259"/>
<source>Show POI labels</source>
<translation>Zobrazit názvy POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="261"/>
<location filename="../src/GUI/gui.cpp" line="264"/>
<source>Show POIs</source>
<translation>Zobrazit POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="270"/>
<location filename="../src/GUI/gui.cpp" line="273"/>
<source>Show map</source>
<translation>Zobrazit mapu</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="280"/>
<location filename="../src/GUI/gui.cpp" line="283"/>
<source>Clear tile cache</source>
<translation>Vymazat mezipaměť dlaždic</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="217"/>
<location filename="../src/GUI/gui.cpp" line="220"/>
<source>Open...</source>
<translation>Otevřít...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="206"/>
<location filename="../src/GUI/gui.cpp" line="643"/>
<location filename="../src/GUI/gui.cpp" line="644"/>
<location filename="../src/GUI/gui.cpp" line="209"/>
<location filename="../src/GUI/gui.cpp" line="646"/>
<location filename="../src/GUI/gui.cpp" line="647"/>
<source>Paths</source>
<translation>Cesty</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="247"/>
<location filename="../src/GUI/gui.cpp" line="250"/>
<source>Load POI file...</source>
<translation>Nahrát POI soubor...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="278"/>
<location filename="../src/GUI/gui.cpp" line="281"/>
<source>Load map...</source>
<translation>Nahrát mapu...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="284"/>
<location filename="../src/GUI/gui.cpp" line="288"/>
<location filename="../src/GUI/gui.cpp" line="626"/>
<location filename="../src/GUI/gui.cpp" line="287"/>
<location filename="../src/GUI/gui.cpp" line="291"/>
<location filename="../src/GUI/gui.cpp" line="629"/>
<source>Next map</source>
<translation>Následující mapa</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="298"/>
<location filename="../src/GUI/gui.cpp" line="301"/>
<source>Show tracks</source>
<translation>Zobrazit cesty</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="302"/>
<location filename="../src/GUI/gui.cpp" line="305"/>
<source>Show routes</source>
<translation>Zobrazit trasy</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="306"/>
<location filename="../src/GUI/gui.cpp" line="309"/>
<source>Show waypoints</source>
<translation>Zobrazit navigační body</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="310"/>
<location filename="../src/GUI/gui.cpp" line="313"/>
<source>Waypoint labels</source>
<translation>Názvy navigačních bodů</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="321"/>
<location filename="../src/GUI/gui.cpp" line="324"/>
<source>Show graphs</source>
<translation>Zobrazit grafy</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="341"/>
<location filename="../src/GUI/gui.cpp" line="344"/>
<source>Show grid</source>
<translation>Zobrazit mřížku</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="345"/>
<location filename="../src/GUI/gui.cpp" line="348"/>
<source>Show slider info</source>
<translation>Zobrazit informace o posuvníku</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="351"/>
<location filename="../src/GUI/gui.cpp" line="354"/>
<source>Show toolbars</source>
<translation>Zobrazovat nástrojové lišty</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="357"/>
<location filename="../src/GUI/gui.cpp" line="360"/>
<source>Total time</source>
<translation>Celkový čas</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="362"/>
<location filename="../src/GUI/gui.cpp" line="934"/>
<location filename="../src/GUI/gui.cpp" line="365"/>
<location filename="../src/GUI/gui.cpp" line="953"/>
<source>Moving time</source>
<translation>Čistý čas</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="369"/>
<location filename="../src/GUI/gui.cpp" line="372"/>
<source>Metric</source>
<translation>Metrické</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<location filename="../src/GUI/gui.cpp" line="377"/>
<source>Imperial</source>
<translation>Imperiální</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="379"/>
<location filename="../src/GUI/gui.cpp" line="382"/>
<source>Nautical</source>
<translation>Námořní</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="386"/>
<location filename="../src/GUI/gui.cpp" line="389"/>
<source>Decimal degrees (DD)</source>
<translation>Desetinné stupně (DD)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="391"/>
<location filename="../src/GUI/gui.cpp" line="394"/>
<source>Degrees and decimal minutes (DMM)</source>
<translation>Stupně a desetinné minuty (DMM)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="397"/>
<location filename="../src/GUI/gui.cpp" line="400"/>
<source>Degrees, minutes, seconds (DMS)</source>
<translation>Stupně, minuty, vteřiny (DMS)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="402"/>
<location filename="../src/GUI/gui.cpp" line="405"/>
<source>Fullscreen mode</source>
<translation>Celoobrazovkový režim</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="408"/>
<location filename="../src/GUI/gui.cpp" line="411"/>
<source>Options...</source>
<translation>Nastavení...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="414"/>
<location filename="../src/GUI/gui.cpp" line="417"/>
<source>Next</source>
<translation>Následující</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="417"/>
<location filename="../src/GUI/gui.cpp" line="420"/>
<source>Previous</source>
<translation>Předchozí</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="421"/>
<location filename="../src/GUI/gui.cpp" line="424"/>
<source>Last</source>
<translation>Poslední</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="424"/>
<location filename="../src/GUI/gui.cpp" line="427"/>
<source>First</source>
<translation>První</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="464"/>
<location filename="../src/GUI/gui.cpp" line="467"/>
<source>POI files</source>
<translation>POI soubory</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="476"/>
<location filename="../src/GUI/gui.cpp" line="479"/>
<source>Display</source>
<translation>Zobrazit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="491"/>
<source>Units</source>
<translation>Jednotky</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="492"/>
<location filename="../src/GUI/gui.cpp" line="495"/>
<source>Coordinates format</source>
<translation>Formát souřadnic</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="619"/>
<location filename="../src/GUI/gui.cpp" line="622"/>
<source>Append file</source>
<translation>Přidat soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="620"/>
<location filename="../src/GUI/gui.cpp" line="623"/>
<source>Next/Previous</source>
<translation>Následující/Předchozí</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="622"/>
<location filename="../src/GUI/gui.cpp" line="625"/>
<source>Toggle graph type</source>
<translation>Přepnout typ grafu</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="624"/>
<location filename="../src/GUI/gui.cpp" line="627"/>
<source>Toggle time type</source>
<translation>Přepnout typ času</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="628"/>
<location filename="../src/GUI/gui.cpp" line="631"/>
<source>Previous map</source>
<translation>Předchozí mapa</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="629"/>
<location filename="../src/GUI/gui.cpp" line="632"/>
<source>Zoom in</source>
<translation>Přiblížit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="631"/>
<location filename="../src/GUI/gui.cpp" line="634"/>
<source>Zoom out</source>
<translation>Oddálit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="633"/>
<location filename="../src/GUI/gui.cpp" line="636"/>
<source>Digital zoom</source>
<translation>Digitální zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="634"/>
<location filename="../src/GUI/gui.cpp" line="637"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1135"/>
<location filename="../src/GUI/gui.cpp" line="1152"/>
<source>Open map file</source>
<translation>Otevřít mapový soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1175"/>
<location filename="../src/GUI/gui.cpp" line="1192"/>
<source>No files loaded</source>
<translation>Nejsou načteny žádné soubory</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="920"/>
<location filename="../src/GUI/gui.cpp" line="923"/>
<location filename="../src/GUI/gui.cpp" line="939"/>
<location filename="../src/GUI/gui.cpp" line="942"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="432"/>
<location filename="../src/GUI/gui.cpp" line="435"/>
<source>&amp;File</source>
<translation>&amp;Soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="446"/>
<location filename="../src/GUI/gui.cpp" line="449"/>
<source>&amp;Map</source>
<translation>&amp;Mapa</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="454"/>
<location filename="../src/GUI/gui.cpp" line="457"/>
<source>&amp;Graph</source>
<translation>&amp;Graf</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="463"/>
<location filename="../src/GUI/gui.cpp" line="466"/>
<source>&amp;POI</source>
<translation>&amp;POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="475"/>
<location filename="../src/GUI/gui.cpp" line="478"/>
<source>&amp;Data</source>
<translation>&amp;Data</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="484"/>
<location filename="../src/GUI/gui.cpp" line="487"/>
<source>&amp;Settings</source>
<translation>&amp;Nastavení</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="502"/>
<location filename="../src/GUI/gui.cpp" line="505"/>
<source>&amp;Help</source>
<translation>N&amp;ápověda</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="647"/>
<location filename="../src/GUI/gui.cpp" line="650"/>
<source>Map directory:</source>
<translation>Adresář s mapami:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="649"/>
<location filename="../src/GUI/gui.cpp" line="652"/>
<source>POI directory:</source>
<translation>Adresář s POI body:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="651"/>
<location filename="../src/GUI/gui.cpp" line="654"/>
<source>GCS file:</source>
<translation>Soubor s GCS daty:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="652"/>
<location filename="../src/GUI/gui.cpp" line="655"/>
<source>PCS file:</source>
<translation>Soubor s PCS daty:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="654"/>
<location filename="../src/GUI/gui.cpp" line="657"/>
<source>Ellipsoids file:</source>
<translation>Soubor s daty elipsoidů:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="657"/>
<location filename="../src/GUI/gui.cpp" line="660"/>
<source>User override directory:</source>
<translation>Uživatelský adresář:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="912"/>
<location filename="../src/GUI/gui.cpp" line="931"/>
<source>Routes</source>
<translation>Trasy</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1164"/>
<location filename="../src/GUI/gui.cpp" line="1181"/>
<source>Error loading map:</source>
<translation>Mapu nelze načíst:</translation>
</message>
<message numerus="yes">
<location filename="../src/GUI/gui.cpp" line="1179"/>
<location filename="../src/GUI/gui.cpp" line="1196"/>
<source>%n files</source>
<translation>
<numerusform>%n soubor</numerusform>
@ -688,97 +688,97 @@
</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="613"/>
<location filename="../src/GUI/gui.cpp" line="616"/>
<source>Next file</source>
<translation>Následující soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="589"/>
<location filename="../src/GUI/gui.cpp" line="592"/>
<source>Version </source>
<translation>Verze </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="222"/>
<location filename="../src/GUI/gui.cpp" line="225"/>
<source>Print...</source>
<translation>Tisknout...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="227"/>
<location filename="../src/GUI/gui.cpp" line="230"/>
<source>Export to PDF...</source>
<translation>Exportovat do PDF...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="914"/>
<location filename="../src/GUI/gui.cpp" line="933"/>
<source>Waypoints</source>
<translation>Navigační body</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="614"/>
<location filename="../src/GUI/gui.cpp" line="617"/>
<source>Previous file</source>
<translation>Předchozí soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="314"/>
<location filename="../src/GUI/gui.cpp" line="317"/>
<source>Route waypoints</source>
<translation>Body tras</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="616"/>
<location filename="../src/GUI/gui.cpp" line="619"/>
<source>First file</source>
<translation>První soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="618"/>
<location filename="../src/GUI/gui.cpp" line="621"/>
<source>Last file</source>
<translation>Poslední soubor</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="746"/>
<location filename="../src/GUI/gui.cpp" line="763"/>
<source>Error loading data file:</source>
<translation>Datový soubor nelze načíst:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="749"/>
<location filename="../src/GUI/gui.cpp" line="776"/>
<location filename="../src/GUI/gui.cpp" line="766"/>
<location filename="../src/GUI/gui.cpp" line="793"/>
<source>Line: %1</source>
<translation>Řádka: %1</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="773"/>
<location filename="../src/GUI/gui.cpp" line="790"/>
<source>Error loading POI file:</source>
<translation>Soubor POI nelze načíst:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="906"/>
<location filename="../src/GUI/gui.cpp" line="925"/>
<source>Name</source>
<translation>Název</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="910"/>
<location filename="../src/GUI/gui.cpp" line="929"/>
<source>Tracks</source>
<translation>Cesty</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="588"/>
<location filename="../src/GUI/gui.cpp" line="214"/>
<location filename="../src/GUI/gui.cpp" line="591"/>
<source>About GPXSee</source>
<translation>O aplikaci GPXSee</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="526"/>
<location filename="../src/GUI/gui.cpp" line="529"/>
<source>Navigation</source>
<translation>Navigace</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="329"/>
<location filename="../src/GUI/gui.cpp" line="930"/>
<location filename="../src/GUI/gui.cpp" line="332"/>
<location filename="../src/GUI/gui.cpp" line="949"/>
<source>Distance</source>
<translation>Vzdálenost</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="335"/>
<location filename="../src/GUI/gui.cpp" line="485"/>
<location filename="../src/GUI/gui.cpp" line="932"/>
<location filename="../src/GUI/gui.cpp" line="338"/>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="951"/>
<source>Time</source>
<translation>Čas</translation>
</message>
@ -884,27 +884,32 @@
<context>
<name>MapList</name>
<message>
<location filename="../src/map/maplist.cpp" line="130"/>
<location filename="../src/map/maplist.cpp" line="111"/>
<source>Supported files</source>
<translation>Podporované soubory</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="131"/>
<location filename="../src/map/maplist.cpp" line="112"/>
<source>Garmin JNX maps</source>
<translation>Garmin JNX mapy</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="113"/>
<source>OziExplorer maps</source>
<translation>OziExplorer mapy</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="132"/>
<location filename="../src/map/maplist.cpp" line="114"/>
<source>TrekBuddy maps/atlases</source>
<translation>TrekBuddy mapy/atlasy</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="133"/>
<location filename="../src/map/maplist.cpp" line="115"/>
<source>GeoTIFF images</source>
<translation>GeoTIFF obrázky</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="134"/>
<location filename="../src/map/maplist.cpp" line="116"/>
<source>Online map sources</source>
<translation>Online mapové zdroje</translation>
</message>
@ -1005,7 +1010,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="55"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<source>General</source>
<translation>Obecné</translation>
</message>
@ -1140,6 +1145,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="303"/>
<location filename="../src/GUI/optionsdialog.cpp" line="437"/>
<source>s</source>
<translation>s</translation>
</message>
@ -1185,7 +1191,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="344"/>
<location filename="../src/GUI/optionsdialog.cpp" line="470"/>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<source>POI</source>
<translation>POI</translation>
</message>
@ -1265,33 +1271,38 @@
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="435"/>
<location filename="../src/GUI/optionsdialog.cpp" line="441"/>
<source>Image cache size:</source>
<translation>Mezipaměť obrázků:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Connection timeout:</source>
<translation>Časový limit připojení:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="455"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>System</source>
<translation>Systém</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="467"/>
<location filename="../src/GUI/optionsdialog.cpp" line="474"/>
<source>Appearance</source>
<translation>Vzhled</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<location filename="../src/GUI/optionsdialog.cpp" line="476"/>
<source>Data</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="471"/>
<location filename="../src/GUI/optionsdialog.cpp" line="478"/>
<source>Print &amp; Export</source>
<translation>Tisk a export</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="500"/>
<location filename="../src/GUI/optionsdialog.cpp" line="507"/>
<source>Options</source>
<translation>Nastavení</translation>
</message>
@ -1360,28 +1371,28 @@
<context>
<name>ScaleItem</name>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="83"/>
<location filename="../src/GUI/scaleitem.cpp" line="111"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="84"/>
<location filename="../src/GUI/scaleitem.cpp" line="87"/>
<location filename="../src/GUI/scaleitem.cpp" line="112"/>
<location filename="../src/GUI/scaleitem.cpp" line="115"/>
<source>ft</source>
<translation>ft</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="86"/>
<location filename="../src/GUI/scaleitem.cpp" line="114"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="89"/>
<location filename="../src/GUI/scaleitem.cpp" line="117"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="90"/>
<location filename="../src/GUI/scaleitem.cpp" line="118"/>
<source>m</source>
<translation>m</translation>
</message>
@ -1395,7 +1406,7 @@
<translation>Rychlost</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="96"/>
<location filename="../src/GUI/speedgraph.cpp" line="101"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -1430,12 +1441,12 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="90"/>
<location filename="../src/GUI/speedgraph.cpp" line="95"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="93"/>
<location filename="../src/GUI/speedgraph.cpp" line="98"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
@ -1512,12 +1523,12 @@
<translation>Maximum</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="76"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="82"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="80"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="86"/>
<source>F</source>
<translation>F</translation>
</message>

View File

@ -47,52 +47,52 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="112"/>
<location filename="../src/data/data.cpp" line="110"/>
<source>Supported files</source>
<translation>Unterstütze Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>CSV files</source>
<translation>CSV-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>FIT files</source>
<translation>FIT-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>GPX files</source>
<translation>GPX-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>IGC files</source>
<translation>IGC-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>KML files</source>
<translation>KML-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>NMEA files</source>
<translation>NMEA-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="117"/>
<location filename="../src/data/data.cpp" line="115"/>
<source>OziExplorer files</source>
<translation>OziExplorer-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>TCX files</source>
<translation>TCX-Dateien</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>All files</source>
<translation>Alle Dateien</translation>
</message>
@ -106,7 +106,7 @@
<translation>Höhe</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="122"/>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<source>m</source>
<translation>m</translation>
</message>
@ -126,7 +126,7 @@
<translation>Minimum</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<location filename="../src/GUI/elevationgraph.cpp" line="128"/>
<source>ft</source>
<translation>ft</translation>
</message>
@ -306,334 +306,334 @@
<context>
<name>GUI</name>
<message>
<location filename="../src/GUI/gui.cpp" line="592"/>
<location filename="../src/GUI/gui.cpp" line="595"/>
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
<translation>GPXSee wird unter der GNU General Public License version 3 vertrieben. Mehr Informationen zu GPXSee auf der Homepage </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="647"/>
<location filename="../src/GUI/gui.cpp" line="650"/>
<source>Map directory:</source>
<translation>Kartenverzeichnis:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="649"/>
<location filename="../src/GUI/gui.cpp" line="652"/>
<source>POI directory:</source>
<translation>POI-Verzeichnis:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="651"/>
<location filename="../src/GUI/gui.cpp" line="654"/>
<source>GCS file:</source>
<translation>GCS-Datei:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="652"/>
<location filename="../src/GUI/gui.cpp" line="655"/>
<source>PCS file:</source>
<translation>PCS-Datei:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="654"/>
<location filename="../src/GUI/gui.cpp" line="657"/>
<source>Ellipsoids file:</source>
<translation>Ellipsoidendatei:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="657"/>
<location filename="../src/GUI/gui.cpp" line="660"/>
<source>User override directory:</source>
<translation>Benutzerverzeichnis:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="666"/>
<location filename="../src/GUI/gui.cpp" line="669"/>
<source>Open file</source>
<translation>Datei öffnen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="757"/>
<location filename="../src/GUI/gui.cpp" line="774"/>
<source>Open POI file</source>
<translation>POI Datei öffnen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="199"/>
<location filename="../src/GUI/gui.cpp" line="202"/>
<source>Quit</source>
<translation>Beenden</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="208"/>
<location filename="../src/GUI/gui.cpp" line="609"/>
<location filename="../src/GUI/gui.cpp" line="610"/>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="612"/>
<location filename="../src/GUI/gui.cpp" line="613"/>
<source>Keyboard controls</source>
<translation>Tastaturkürzel</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="233"/>
<location filename="../src/GUI/gui.cpp" line="236"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="239"/>
<location filename="../src/GUI/gui.cpp" line="242"/>
<source>Reload</source>
<translation>Neu Laden</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="521"/>
<location filename="../src/GUI/gui.cpp" line="524"/>
<source>Show</source>
<translation>Ansicht</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="515"/>
<location filename="../src/GUI/gui.cpp" line="518"/>
<source>File</source>
<translation>Datei</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="250"/>
<location filename="../src/GUI/gui.cpp" line="253"/>
<source>Close POI files</source>
<translation>POI-Datei schließen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="252"/>
<location filename="../src/GUI/gui.cpp" line="255"/>
<source>Overlap POIs</source>
<translation>POI überlappen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="256"/>
<location filename="../src/GUI/gui.cpp" line="259"/>
<source>Show POI labels</source>
<translation>POI-Labels anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="261"/>
<location filename="../src/GUI/gui.cpp" line="264"/>
<source>Show POIs</source>
<translation>POIs anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="270"/>
<location filename="../src/GUI/gui.cpp" line="273"/>
<source>Show map</source>
<translation>Karte anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="280"/>
<location filename="../src/GUI/gui.cpp" line="283"/>
<source>Clear tile cache</source>
<translation>Tile-Cache bereinigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="217"/>
<location filename="../src/GUI/gui.cpp" line="220"/>
<source>Open...</source>
<translation>Öffnen...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="206"/>
<location filename="../src/GUI/gui.cpp" line="643"/>
<location filename="../src/GUI/gui.cpp" line="644"/>
<location filename="../src/GUI/gui.cpp" line="209"/>
<location filename="../src/GUI/gui.cpp" line="646"/>
<location filename="../src/GUI/gui.cpp" line="647"/>
<source>Paths</source>
<translation>Pfade</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="247"/>
<location filename="../src/GUI/gui.cpp" line="250"/>
<source>Load POI file...</source>
<translation>POI-Datei laden...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="278"/>
<location filename="../src/GUI/gui.cpp" line="281"/>
<source>Load map...</source>
<translation>Karte laden...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="284"/>
<location filename="../src/GUI/gui.cpp" line="288"/>
<location filename="../src/GUI/gui.cpp" line="626"/>
<location filename="../src/GUI/gui.cpp" line="287"/>
<location filename="../src/GUI/gui.cpp" line="291"/>
<location filename="../src/GUI/gui.cpp" line="629"/>
<source>Next map</source>
<translation>Nächste Karte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="298"/>
<location filename="../src/GUI/gui.cpp" line="301"/>
<source>Show tracks</source>
<translation>Strecken anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="302"/>
<location filename="../src/GUI/gui.cpp" line="305"/>
<source>Show routes</source>
<translation>Routen anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="306"/>
<location filename="../src/GUI/gui.cpp" line="309"/>
<source>Show waypoints</source>
<translation>Wegpunkte anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="310"/>
<location filename="../src/GUI/gui.cpp" line="313"/>
<source>Waypoint labels</source>
<translation>Wegpunkt Labels</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="321"/>
<location filename="../src/GUI/gui.cpp" line="324"/>
<source>Show graphs</source>
<translation>Graphen anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="341"/>
<location filename="../src/GUI/gui.cpp" line="344"/>
<source>Show grid</source>
<translation>Gitter anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="345"/>
<location filename="../src/GUI/gui.cpp" line="348"/>
<source>Show slider info</source>
<translation>Schieberinfo anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="351"/>
<location filename="../src/GUI/gui.cpp" line="354"/>
<source>Show toolbars</source>
<translation>Toolbars anzeigen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="357"/>
<location filename="../src/GUI/gui.cpp" line="360"/>
<source>Total time</source>
<translation>Gesamtzeit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="362"/>
<location filename="../src/GUI/gui.cpp" line="934"/>
<location filename="../src/GUI/gui.cpp" line="365"/>
<location filename="../src/GUI/gui.cpp" line="953"/>
<source>Moving time</source>
<translation>Bewegungszeit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="369"/>
<location filename="../src/GUI/gui.cpp" line="372"/>
<source>Metric</source>
<translation>Metrisch</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<location filename="../src/GUI/gui.cpp" line="377"/>
<source>Imperial</source>
<translation>Imperial</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="379"/>
<location filename="../src/GUI/gui.cpp" line="382"/>
<source>Nautical</source>
<translation>Nautisch</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="386"/>
<location filename="../src/GUI/gui.cpp" line="389"/>
<source>Decimal degrees (DD)</source>
<translation>Dezimalgrad (DD)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="391"/>
<location filename="../src/GUI/gui.cpp" line="394"/>
<source>Degrees and decimal minutes (DMM)</source>
<translation>Grad und Dezimalminuten (DMM)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="397"/>
<location filename="../src/GUI/gui.cpp" line="400"/>
<source>Degrees, minutes, seconds (DMS)</source>
<translation>Grad, Minuten, Sekunden (DMS)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="402"/>
<location filename="../src/GUI/gui.cpp" line="405"/>
<source>Fullscreen mode</source>
<translation>Vollbildmodus</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="408"/>
<location filename="../src/GUI/gui.cpp" line="411"/>
<source>Options...</source>
<translation>Einstellungen...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="414"/>
<location filename="../src/GUI/gui.cpp" line="417"/>
<source>Next</source>
<translation>Nächste</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="417"/>
<location filename="../src/GUI/gui.cpp" line="420"/>
<source>Previous</source>
<translation>Vorherige</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="421"/>
<location filename="../src/GUI/gui.cpp" line="424"/>
<source>Last</source>
<translation>Letzte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="424"/>
<location filename="../src/GUI/gui.cpp" line="427"/>
<source>First</source>
<translation>Erste</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="464"/>
<location filename="../src/GUI/gui.cpp" line="467"/>
<source>POI files</source>
<translation>POI-Dateien</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="476"/>
<location filename="../src/GUI/gui.cpp" line="479"/>
<source>Display</source>
<translation>Anzeige</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="491"/>
<source>Units</source>
<translation>Einheiten</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="492"/>
<location filename="../src/GUI/gui.cpp" line="495"/>
<source>Coordinates format</source>
<translation>Koordinatenformate</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="619"/>
<location filename="../src/GUI/gui.cpp" line="622"/>
<source>Append file</source>
<translation>An Datei anhängen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="620"/>
<location filename="../src/GUI/gui.cpp" line="623"/>
<source>Next/Previous</source>
<translation>Nächste/Vorherige</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="622"/>
<location filename="../src/GUI/gui.cpp" line="625"/>
<source>Toggle graph type</source>
<translation>Graphtyp umschalten</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="624"/>
<location filename="../src/GUI/gui.cpp" line="627"/>
<source>Toggle time type</source>
<translation>Zeittyp umschalten</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="628"/>
<location filename="../src/GUI/gui.cpp" line="631"/>
<source>Previous map</source>
<translation>Vorherige Karte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="629"/>
<location filename="../src/GUI/gui.cpp" line="632"/>
<source>Zoom in</source>
<translation>Hineinzoomen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="631"/>
<location filename="../src/GUI/gui.cpp" line="634"/>
<source>Zoom out</source>
<translation>Herauszoomen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="633"/>
<location filename="../src/GUI/gui.cpp" line="636"/>
<source>Digital zoom</source>
<translation>Digitaler Zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="634"/>
<location filename="../src/GUI/gui.cpp" line="637"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1135"/>
<location filename="../src/GUI/gui.cpp" line="1152"/>
<source>Open map file</source>
<translation>Karte Datei öffnen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1164"/>
<location filename="../src/GUI/gui.cpp" line="1181"/>
<source>Error loading map:</source>
<translation>Fehler beim Laden der Karte-Datei:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1175"/>
<location filename="../src/GUI/gui.cpp" line="1192"/>
<source>No files loaded</source>
<translation>Keine Dateien geladen</translation>
</message>
<message numerus="yes">
<location filename="../src/GUI/gui.cpp" line="1179"/>
<location filename="../src/GUI/gui.cpp" line="1196"/>
<source>%n files</source>
<translation>
<numerusform>%n Datei</numerusform>
@ -641,143 +641,143 @@
</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="920"/>
<location filename="../src/GUI/gui.cpp" line="923"/>
<location filename="../src/GUI/gui.cpp" line="939"/>
<location filename="../src/GUI/gui.cpp" line="942"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="912"/>
<location filename="../src/GUI/gui.cpp" line="931"/>
<source>Routes</source>
<translation>Routen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="613"/>
<location filename="../src/GUI/gui.cpp" line="616"/>
<source>Next file</source>
<translation>Nächste Datei</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="589"/>
<location filename="../src/GUI/gui.cpp" line="592"/>
<source>Version </source>
<translation>Version </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="222"/>
<location filename="../src/GUI/gui.cpp" line="225"/>
<source>Print...</source>
<translation>Drucken...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="227"/>
<location filename="../src/GUI/gui.cpp" line="230"/>
<source>Export to PDF...</source>
<translation>Als PDF exportieren...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="914"/>
<location filename="../src/GUI/gui.cpp" line="933"/>
<source>Waypoints</source>
<translation>Wegpunkte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="614"/>
<location filename="../src/GUI/gui.cpp" line="617"/>
<source>Previous file</source>
<translation>Vorherige Datei</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="314"/>
<location filename="../src/GUI/gui.cpp" line="317"/>
<source>Route waypoints</source>
<translation>Routen Wegpunkte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="432"/>
<location filename="../src/GUI/gui.cpp" line="435"/>
<source>&amp;File</source>
<translation>&amp;Datei</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="446"/>
<location filename="../src/GUI/gui.cpp" line="449"/>
<source>&amp;Map</source>
<translation>&amp;Map</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="454"/>
<location filename="../src/GUI/gui.cpp" line="457"/>
<source>&amp;Graph</source>
<translation>&amp;Graph</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="463"/>
<location filename="../src/GUI/gui.cpp" line="466"/>
<source>&amp;POI</source>
<translation>&amp;POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="475"/>
<location filename="../src/GUI/gui.cpp" line="478"/>
<source>&amp;Data</source>
<translation>D&amp;ata</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="484"/>
<location filename="../src/GUI/gui.cpp" line="487"/>
<source>&amp;Settings</source>
<translation>&amp;Einstellungen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="502"/>
<location filename="../src/GUI/gui.cpp" line="505"/>
<source>&amp;Help</source>
<translation>&amp;Hilfe</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="616"/>
<location filename="../src/GUI/gui.cpp" line="619"/>
<source>First file</source>
<translation>Erste Datei</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="618"/>
<location filename="../src/GUI/gui.cpp" line="621"/>
<source>Last file</source>
<translation>Letzte Datei</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="746"/>
<location filename="../src/GUI/gui.cpp" line="763"/>
<source>Error loading data file:</source>
<translation>Fehler beim Laden der Datei:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="749"/>
<location filename="../src/GUI/gui.cpp" line="776"/>
<location filename="../src/GUI/gui.cpp" line="766"/>
<location filename="../src/GUI/gui.cpp" line="793"/>
<source>Line: %1</source>
<translation>Linie: %1</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="773"/>
<location filename="../src/GUI/gui.cpp" line="790"/>
<source>Error loading POI file:</source>
<translation>Fehler beim Laden der POI-Datei:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="906"/>
<location filename="../src/GUI/gui.cpp" line="925"/>
<source>Name</source>
<translation>Name</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="910"/>
<location filename="../src/GUI/gui.cpp" line="929"/>
<source>Tracks</source>
<translation>Strecken</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="588"/>
<location filename="../src/GUI/gui.cpp" line="214"/>
<location filename="../src/GUI/gui.cpp" line="591"/>
<source>About GPXSee</source>
<translation>Über GPXSee</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="526"/>
<location filename="../src/GUI/gui.cpp" line="529"/>
<source>Navigation</source>
<translation>Navigation</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="329"/>
<location filename="../src/GUI/gui.cpp" line="930"/>
<location filename="../src/GUI/gui.cpp" line="332"/>
<location filename="../src/GUI/gui.cpp" line="949"/>
<source>Distance</source>
<translation>Distanz</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="335"/>
<location filename="../src/GUI/gui.cpp" line="485"/>
<location filename="../src/GUI/gui.cpp" line="932"/>
<location filename="../src/GUI/gui.cpp" line="338"/>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="951"/>
<source>Time</source>
<translation>Zeit</translation>
</message>
@ -883,27 +883,32 @@
<context>
<name>MapList</name>
<message>
<location filename="../src/map/maplist.cpp" line="130"/>
<location filename="../src/map/maplist.cpp" line="111"/>
<source>Supported files</source>
<translation>Unterstütze Dateien</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="131"/>
<location filename="../src/map/maplist.cpp" line="112"/>
<source>Garmin JNX maps</source>
<translation>Garmin JNX Karten</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="113"/>
<source>OziExplorer maps</source>
<translation>OziExplorer Karten</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="132"/>
<location filename="../src/map/maplist.cpp" line="114"/>
<source>TrekBuddy maps/atlases</source>
<translation>TrekBuddy Karten/Atlanten</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="133"/>
<location filename="../src/map/maplist.cpp" line="115"/>
<source>GeoTIFF images</source>
<translation>GeoTIFF Bilder</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="134"/>
<location filename="../src/map/maplist.cpp" line="116"/>
<source>Online map sources</source>
<translation>Online-Kartenquellen</translation>
</message>
@ -1004,7 +1009,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="55"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<source>General</source>
<translation>Allgemein</translation>
</message>
@ -1139,6 +1144,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="303"/>
<location filename="../src/GUI/optionsdialog.cpp" line="437"/>
<source>s</source>
<translation>sek</translation>
</message>
@ -1184,7 +1190,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="344"/>
<location filename="../src/GUI/optionsdialog.cpp" line="470"/>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<source>POI</source>
<translation>POI</translation>
</message>
@ -1264,33 +1270,38 @@
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="435"/>
<location filename="../src/GUI/optionsdialog.cpp" line="441"/>
<source>Image cache size:</source>
<translation>Bild-Cache größe:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Connection timeout:</source>
<translation>Verbindungs-Timeout:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="455"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>System</source>
<translation>System</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="467"/>
<location filename="../src/GUI/optionsdialog.cpp" line="474"/>
<source>Appearance</source>
<translation>Erscheinungsbild</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<location filename="../src/GUI/optionsdialog.cpp" line="476"/>
<source>Data</source>
<translation>Daten</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="471"/>
<location filename="../src/GUI/optionsdialog.cpp" line="478"/>
<source>Print &amp; Export</source>
<translation>Druck &amp; Export</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="500"/>
<location filename="../src/GUI/optionsdialog.cpp" line="507"/>
<source>Options</source>
<translation>Einstellungen</translation>
</message>
@ -1359,28 +1370,28 @@
<context>
<name>ScaleItem</name>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="83"/>
<location filename="../src/GUI/scaleitem.cpp" line="111"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="84"/>
<location filename="../src/GUI/scaleitem.cpp" line="87"/>
<location filename="../src/GUI/scaleitem.cpp" line="112"/>
<location filename="../src/GUI/scaleitem.cpp" line="115"/>
<source>ft</source>
<translation>ft</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="86"/>
<location filename="../src/GUI/scaleitem.cpp" line="114"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="89"/>
<location filename="../src/GUI/scaleitem.cpp" line="117"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="90"/>
<location filename="../src/GUI/scaleitem.cpp" line="118"/>
<source>m</source>
<translation>m</translation>
</message>
@ -1394,7 +1405,7 @@
<translation>Geschwindigkeit</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="96"/>
<location filename="../src/GUI/speedgraph.cpp" line="101"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -1429,12 +1440,12 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="90"/>
<location filename="../src/GUI/speedgraph.cpp" line="95"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="93"/>
<location filename="../src/GUI/speedgraph.cpp" line="98"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
@ -1511,12 +1522,12 @@
<translation>Maximum</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="76"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="82"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="80"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="86"/>
<source>F</source>
<translation>F</translation>
</message>

View File

@ -47,52 +47,52 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="112"/>
<location filename="../src/data/data.cpp" line="110"/>
<source>Supported files</source>
<translation>Tuetut tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>CSV files</source>
<translation>CSV-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>FIT files</source>
<translation>FIT-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>GPX files</source>
<translation>GPX-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>IGC files</source>
<translation>IGC-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>KML files</source>
<translation>KML-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>NMEA files</source>
<translation>NMEA-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="117"/>
<location filename="../src/data/data.cpp" line="115"/>
<source>OziExplorer files</source>
<translation>OziExplorer-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>TCX files</source>
<translation>TCX-tiedostot</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>All files</source>
<translation>Kaikki tiedostot</translation>
</message>
@ -106,7 +106,7 @@
<translation>Korkeus</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="122"/>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<source>m</source>
<translation>m</translation>
</message>
@ -126,7 +126,7 @@
<translation>Minimi</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<location filename="../src/GUI/elevationgraph.cpp" line="128"/>
<source>ft</source>
<translation>ft</translation>
</message>
@ -306,380 +306,380 @@
<context>
<name>GUI</name>
<message>
<location filename="../src/GUI/gui.cpp" line="592"/>
<location filename="../src/GUI/gui.cpp" line="595"/>
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
<translation>GPXSee levitetään GNU yleisen lisenssin version 3 alaisena. Voit katsoa lisätietoja GPXSee:stä projektin kotisivulla </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="666"/>
<location filename="../src/GUI/gui.cpp" line="669"/>
<source>Open file</source>
<translation>Avaa tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="757"/>
<location filename="../src/GUI/gui.cpp" line="774"/>
<source>Open POI file</source>
<translation>Avaa POI-tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="199"/>
<location filename="../src/GUI/gui.cpp" line="202"/>
<source>Quit</source>
<translation>Lopeta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="208"/>
<location filename="../src/GUI/gui.cpp" line="609"/>
<location filename="../src/GUI/gui.cpp" line="610"/>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="612"/>
<location filename="../src/GUI/gui.cpp" line="613"/>
<source>Keyboard controls</source>
<translation>Näppäimistön säätimet</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="233"/>
<location filename="../src/GUI/gui.cpp" line="236"/>
<source>Close</source>
<translation>Sulje</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="239"/>
<location filename="../src/GUI/gui.cpp" line="242"/>
<source>Reload</source>
<translation>Lataa uudelleen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="521"/>
<location filename="../src/GUI/gui.cpp" line="524"/>
<source>Show</source>
<translation>Näytä</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="515"/>
<location filename="../src/GUI/gui.cpp" line="518"/>
<source>File</source>
<translation>Tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="250"/>
<location filename="../src/GUI/gui.cpp" line="253"/>
<source>Close POI files</source>
<translation>Sulje POI-tiedostot</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="252"/>
<location filename="../src/GUI/gui.cpp" line="255"/>
<source>Overlap POIs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="256"/>
<location filename="../src/GUI/gui.cpp" line="259"/>
<source>Show POI labels</source>
<translation>Näytä POI:n nimiöt</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="261"/>
<location filename="../src/GUI/gui.cpp" line="264"/>
<source>Show POIs</source>
<translation>Näytä POI:t</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="270"/>
<location filename="../src/GUI/gui.cpp" line="273"/>
<source>Show map</source>
<translation>Näytä kartta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="280"/>
<location filename="../src/GUI/gui.cpp" line="283"/>
<source>Clear tile cache</source>
<translation>Tyhjennä välimuisti</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="217"/>
<location filename="../src/GUI/gui.cpp" line="220"/>
<source>Open...</source>
<translation>Avaa...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="206"/>
<location filename="../src/GUI/gui.cpp" line="643"/>
<location filename="../src/GUI/gui.cpp" line="644"/>
<location filename="../src/GUI/gui.cpp" line="209"/>
<location filename="../src/GUI/gui.cpp" line="646"/>
<location filename="../src/GUI/gui.cpp" line="647"/>
<source>Paths</source>
<translation>Tiedostopolut</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="247"/>
<location filename="../src/GUI/gui.cpp" line="250"/>
<source>Load POI file...</source>
<translation>Lataa POI-tiedosto...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="278"/>
<location filename="../src/GUI/gui.cpp" line="281"/>
<source>Load map...</source>
<translation>Lataa kartta...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="284"/>
<location filename="../src/GUI/gui.cpp" line="288"/>
<location filename="../src/GUI/gui.cpp" line="626"/>
<location filename="../src/GUI/gui.cpp" line="287"/>
<location filename="../src/GUI/gui.cpp" line="291"/>
<location filename="../src/GUI/gui.cpp" line="629"/>
<source>Next map</source>
<translation>Seuraava kartta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="298"/>
<location filename="../src/GUI/gui.cpp" line="301"/>
<source>Show tracks</source>
<translation>Näytä jäljet</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="302"/>
<location filename="../src/GUI/gui.cpp" line="305"/>
<source>Show routes</source>
<translation>Näytä reitit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="306"/>
<location filename="../src/GUI/gui.cpp" line="309"/>
<source>Show waypoints</source>
<translation>Näytä reittipisteet</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="310"/>
<location filename="../src/GUI/gui.cpp" line="313"/>
<source>Waypoint labels</source>
<translation>Reittipisteen nimiöt</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="321"/>
<location filename="../src/GUI/gui.cpp" line="324"/>
<source>Show graphs</source>
<translation>Näytä kaaviokuvat</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="341"/>
<location filename="../src/GUI/gui.cpp" line="344"/>
<source>Show grid</source>
<translation>Näytä ruudukko</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="345"/>
<location filename="../src/GUI/gui.cpp" line="348"/>
<source>Show slider info</source>
<translation>Näytä liukusäätimen arvo</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="351"/>
<location filename="../src/GUI/gui.cpp" line="354"/>
<source>Show toolbars</source>
<translation>Näytä työkalupalkit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="357"/>
<location filename="../src/GUI/gui.cpp" line="360"/>
<source>Total time</source>
<translation>Kokonaisaika</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="362"/>
<location filename="../src/GUI/gui.cpp" line="934"/>
<location filename="../src/GUI/gui.cpp" line="365"/>
<location filename="../src/GUI/gui.cpp" line="953"/>
<source>Moving time</source>
<translation>Liikkumisaika</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="369"/>
<location filename="../src/GUI/gui.cpp" line="372"/>
<source>Metric</source>
<translation>Metriset</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<location filename="../src/GUI/gui.cpp" line="377"/>
<source>Imperial</source>
<translation>Brittiläiset</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="379"/>
<location filename="../src/GUI/gui.cpp" line="382"/>
<source>Nautical</source>
<translation>Merelliset</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="386"/>
<location filename="../src/GUI/gui.cpp" line="389"/>
<source>Decimal degrees (DD)</source>
<translation>Desimaaliasteet (DD)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="391"/>
<location filename="../src/GUI/gui.cpp" line="394"/>
<source>Degrees and decimal minutes (DMM)</source>
<translation>Asteet, desimaaliminuutit (DMM)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="397"/>
<location filename="../src/GUI/gui.cpp" line="400"/>
<source>Degrees, minutes, seconds (DMS)</source>
<translation>Asteet, minuutit, sekunnit (DMS)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="402"/>
<location filename="../src/GUI/gui.cpp" line="405"/>
<source>Fullscreen mode</source>
<translation>Kokoruututila</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="408"/>
<location filename="../src/GUI/gui.cpp" line="411"/>
<source>Options...</source>
<translation>Valinnat...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="414"/>
<location filename="../src/GUI/gui.cpp" line="417"/>
<source>Next</source>
<translation>Seuraava</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="417"/>
<location filename="../src/GUI/gui.cpp" line="420"/>
<source>Previous</source>
<translation>Edellinen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="421"/>
<location filename="../src/GUI/gui.cpp" line="424"/>
<source>Last</source>
<translation>Viimeinen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="424"/>
<location filename="../src/GUI/gui.cpp" line="427"/>
<source>First</source>
<translation>Ensimmäinen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="464"/>
<location filename="../src/GUI/gui.cpp" line="467"/>
<source>POI files</source>
<translation>POI-tiedostot</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="476"/>
<location filename="../src/GUI/gui.cpp" line="479"/>
<source>Display</source>
<translation>Näytä</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="491"/>
<source>Units</source>
<translation>Yksiköt</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="492"/>
<location filename="../src/GUI/gui.cpp" line="495"/>
<source>Coordinates format</source>
<translation>Koordinaattien muoto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="619"/>
<location filename="../src/GUI/gui.cpp" line="622"/>
<source>Append file</source>
<translation>Lisää tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="620"/>
<location filename="../src/GUI/gui.cpp" line="623"/>
<source>Next/Previous</source>
<translation>Next/Previous</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="622"/>
<location filename="../src/GUI/gui.cpp" line="625"/>
<source>Toggle graph type</source>
<translation>Vaihda kaaviokuvan tyyppi</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="624"/>
<location filename="../src/GUI/gui.cpp" line="627"/>
<source>Toggle time type</source>
<translation>Vaihda ajan tyyppi</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="628"/>
<location filename="../src/GUI/gui.cpp" line="631"/>
<source>Previous map</source>
<translation>Edellinen kartta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="629"/>
<location filename="../src/GUI/gui.cpp" line="632"/>
<source>Zoom in</source>
<translation>Lähennä</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="631"/>
<location filename="../src/GUI/gui.cpp" line="634"/>
<source>Zoom out</source>
<translation>Loitonna</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="633"/>
<location filename="../src/GUI/gui.cpp" line="636"/>
<source>Digital zoom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="634"/>
<location filename="../src/GUI/gui.cpp" line="637"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1135"/>
<location filename="../src/GUI/gui.cpp" line="1152"/>
<source>Open map file</source>
<translation>Avaa karttatiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1175"/>
<location filename="../src/GUI/gui.cpp" line="1192"/>
<source>No files loaded</source>
<translation>Yhtään tiedostoja ei ladattu</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="920"/>
<location filename="../src/GUI/gui.cpp" line="923"/>
<location filename="../src/GUI/gui.cpp" line="939"/>
<location filename="../src/GUI/gui.cpp" line="942"/>
<source>Date</source>
<translation>Päivämäärä</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="432"/>
<location filename="../src/GUI/gui.cpp" line="435"/>
<source>&amp;File</source>
<translation>&amp;Tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="446"/>
<location filename="../src/GUI/gui.cpp" line="449"/>
<source>&amp;Map</source>
<translation>&amp;Kartat</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="454"/>
<location filename="../src/GUI/gui.cpp" line="457"/>
<source>&amp;Graph</source>
<translation>Kaa&amp;viokuva</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="463"/>
<location filename="../src/GUI/gui.cpp" line="466"/>
<source>&amp;POI</source>
<translation>&amp;POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="475"/>
<location filename="../src/GUI/gui.cpp" line="478"/>
<source>&amp;Data</source>
<translation>Tie&amp;dot</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="484"/>
<location filename="../src/GUI/gui.cpp" line="487"/>
<source>&amp;Settings</source>
<translation>&amp;Asetukset</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="502"/>
<location filename="../src/GUI/gui.cpp" line="505"/>
<source>&amp;Help</source>
<translation>&amp;Ohje</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="647"/>
<location filename="../src/GUI/gui.cpp" line="650"/>
<source>Map directory:</source>
<translation>Karttojen hakemisto:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="649"/>
<location filename="../src/GUI/gui.cpp" line="652"/>
<source>POI directory:</source>
<translation>POI:n hakemisto:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="651"/>
<location filename="../src/GUI/gui.cpp" line="654"/>
<source>GCS file:</source>
<translation>GCS-tiedosto:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="652"/>
<location filename="../src/GUI/gui.cpp" line="655"/>
<source>PCS file:</source>
<translation>PCS-tiedosto:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="654"/>
<location filename="../src/GUI/gui.cpp" line="657"/>
<source>Ellipsoids file:</source>
<translation>Ellipsoids-tiedosto:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="657"/>
<location filename="../src/GUI/gui.cpp" line="660"/>
<source>User override directory:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="912"/>
<location filename="../src/GUI/gui.cpp" line="931"/>
<source>Routes</source>
<translation>Reitit</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1164"/>
<location filename="../src/GUI/gui.cpp" line="1181"/>
<source>Error loading map:</source>
<translation>Virhe ladattaessa karttaa:</translation>
</message>
<message numerus="yes">
<location filename="../src/GUI/gui.cpp" line="1179"/>
<location filename="../src/GUI/gui.cpp" line="1196"/>
<source>%n files</source>
<translation>
<numerusform>%n tiedosto</numerusform>
@ -687,97 +687,97 @@
</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="613"/>
<location filename="../src/GUI/gui.cpp" line="616"/>
<source>Next file</source>
<translation>Seuraava tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="589"/>
<location filename="../src/GUI/gui.cpp" line="592"/>
<source>Version </source>
<translation>Versio </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="222"/>
<location filename="../src/GUI/gui.cpp" line="225"/>
<source>Print...</source>
<translation>Tulosta...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="227"/>
<location filename="../src/GUI/gui.cpp" line="230"/>
<source>Export to PDF...</source>
<translation>Vie PDF:ksi...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="914"/>
<location filename="../src/GUI/gui.cpp" line="933"/>
<source>Waypoints</source>
<translation>Reittipisteet</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="614"/>
<location filename="../src/GUI/gui.cpp" line="617"/>
<source>Previous file</source>
<translation>Edellinen tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="314"/>
<location filename="../src/GUI/gui.cpp" line="317"/>
<source>Route waypoints</source>
<translation>Reittipisteet</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="616"/>
<location filename="../src/GUI/gui.cpp" line="619"/>
<source>First file</source>
<translation>Ensimmäinen tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="618"/>
<location filename="../src/GUI/gui.cpp" line="621"/>
<source>Last file</source>
<translation>Viimeinen tiedosto</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="746"/>
<location filename="../src/GUI/gui.cpp" line="763"/>
<source>Error loading data file:</source>
<translation>Virhe ladattaessa datatiedostoa:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="749"/>
<location filename="../src/GUI/gui.cpp" line="776"/>
<location filename="../src/GUI/gui.cpp" line="766"/>
<location filename="../src/GUI/gui.cpp" line="793"/>
<source>Line: %1</source>
<translation>Rivi: %1</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="773"/>
<location filename="../src/GUI/gui.cpp" line="790"/>
<source>Error loading POI file:</source>
<translation>Virhe ladattaessa POI-tiedostoa:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="906"/>
<location filename="../src/GUI/gui.cpp" line="925"/>
<source>Name</source>
<translation>Nimi</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="910"/>
<location filename="../src/GUI/gui.cpp" line="929"/>
<source>Tracks</source>
<translation>Jäljet</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="588"/>
<location filename="../src/GUI/gui.cpp" line="214"/>
<location filename="../src/GUI/gui.cpp" line="591"/>
<source>About GPXSee</source>
<translation>Tietoja GPXSee:stä</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="526"/>
<location filename="../src/GUI/gui.cpp" line="529"/>
<source>Navigation</source>
<translation>Navigointi</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="329"/>
<location filename="../src/GUI/gui.cpp" line="930"/>
<location filename="../src/GUI/gui.cpp" line="332"/>
<location filename="../src/GUI/gui.cpp" line="949"/>
<source>Distance</source>
<translation>Etäisyys</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="335"/>
<location filename="../src/GUI/gui.cpp" line="485"/>
<location filename="../src/GUI/gui.cpp" line="932"/>
<location filename="../src/GUI/gui.cpp" line="338"/>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="951"/>
<source>Time</source>
<translation>Aika</translation>
</message>
@ -883,27 +883,32 @@
<context>
<name>MapList</name>
<message>
<location filename="../src/map/maplist.cpp" line="130"/>
<location filename="../src/map/maplist.cpp" line="111"/>
<source>Supported files</source>
<translation>Tuetut tiedostot</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="131"/>
<location filename="../src/map/maplist.cpp" line="112"/>
<source>Garmin JNX maps</source>
<translation>Garmin JNX -kartat</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="113"/>
<source>OziExplorer maps</source>
<translation>OziExplorer -kartat</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="132"/>
<location filename="../src/map/maplist.cpp" line="114"/>
<source>TrekBuddy maps/atlases</source>
<translation>TrekBuddy -kartat/kartastot</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="133"/>
<location filename="../src/map/maplist.cpp" line="115"/>
<source>GeoTIFF images</source>
<translation>GeoTIFF -kuvat</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="134"/>
<location filename="../src/map/maplist.cpp" line="116"/>
<source>Online map sources</source>
<translation>Online-karttojen lähteet</translation>
</message>
@ -1004,7 +1009,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="55"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<source>General</source>
<translation>Yleinen</translation>
</message>
@ -1139,6 +1144,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="303"/>
<location filename="../src/GUI/optionsdialog.cpp" line="437"/>
<source>s</source>
<translation>s</translation>
</message>
@ -1184,7 +1190,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="344"/>
<location filename="../src/GUI/optionsdialog.cpp" line="470"/>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<source>POI</source>
<translation>POI</translation>
</message>
@ -1264,33 +1270,38 @@
<translation>MT</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="435"/>
<location filename="../src/GUI/optionsdialog.cpp" line="441"/>
<source>Image cache size:</source>
<translation>Kuvavälimuistin koko:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Connection timeout:</source>
<translation>Yhteyden aikakatkaisu:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="455"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>System</source>
<translation>Järjestelmä</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="467"/>
<location filename="../src/GUI/optionsdialog.cpp" line="474"/>
<source>Appearance</source>
<translation>Ulkoasu</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<location filename="../src/GUI/optionsdialog.cpp" line="476"/>
<source>Data</source>
<translation>Tiedot</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="471"/>
<location filename="../src/GUI/optionsdialog.cpp" line="478"/>
<source>Print &amp; Export</source>
<translation>Tulostus &amp; vienti</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="500"/>
<location filename="../src/GUI/optionsdialog.cpp" line="507"/>
<source>Options</source>
<translation>Valinnat</translation>
</message>
@ -1359,28 +1370,28 @@
<context>
<name>ScaleItem</name>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="83"/>
<location filename="../src/GUI/scaleitem.cpp" line="111"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="84"/>
<location filename="../src/GUI/scaleitem.cpp" line="87"/>
<location filename="../src/GUI/scaleitem.cpp" line="112"/>
<location filename="../src/GUI/scaleitem.cpp" line="115"/>
<source>ft</source>
<translation>ft</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="86"/>
<location filename="../src/GUI/scaleitem.cpp" line="114"/>
<source>nmi</source>
<translation>mpk</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="89"/>
<location filename="../src/GUI/scaleitem.cpp" line="117"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="90"/>
<location filename="../src/GUI/scaleitem.cpp" line="118"/>
<source>m</source>
<translation>m</translation>
</message>
@ -1394,7 +1405,7 @@
<translation>Vauhti</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="96"/>
<location filename="../src/GUI/speedgraph.cpp" line="101"/>
<source>km/h</source>
<translation>km/t</translation>
</message>
@ -1429,12 +1440,12 @@
<translation>Tahti</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="90"/>
<location filename="../src/GUI/speedgraph.cpp" line="95"/>
<source>kn</source>
<translation>kn</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="93"/>
<location filename="../src/GUI/speedgraph.cpp" line="98"/>
<source>mi/h</source>
<translation>mph</translation>
</message>
@ -1511,12 +1522,12 @@
<translation>Maksimi</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="76"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="82"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="80"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="86"/>
<source>F</source>
<translation>F</translation>
</message>

View File

@ -47,52 +47,52 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="112"/>
<location filename="../src/data/data.cpp" line="110"/>
<source>Supported files</source>
<translation>Formats pris en charge</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>CSV files</source>
<translation>Données CSV</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>FIT files</source>
<translation>Données FIT</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>GPX files</source>
<translation>Données GPX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>IGC files</source>
<translation>Données IGC</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>KML files</source>
<translation>Données KML</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>NMEA files</source>
<translation>Données NMEA</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="117"/>
<location filename="../src/data/data.cpp" line="115"/>
<source>OziExplorer files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>TCX files</source>
<translation>Données TCX</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>All files</source>
<translation>Tous les fichiers</translation>
</message>
@ -106,7 +106,7 @@
<translation>Altitude</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="122"/>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<source>m</source>
<translation>m</translation>
</message>
@ -126,7 +126,7 @@
<translation>Minimum</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<location filename="../src/GUI/elevationgraph.cpp" line="128"/>
<source>ft</source>
<translation>pied</translation>
</message>
@ -306,334 +306,334 @@
<context>
<name>GUI</name>
<message>
<location filename="../src/GUI/gui.cpp" line="592"/>
<location filename="../src/GUI/gui.cpp" line="595"/>
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
<translation>GPXSee est distribué selon les termes de la licence publique générale GNU (version 3). Pour plus d&apos;information sur GPXSee, visiter le site du projet sur </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="647"/>
<location filename="../src/GUI/gui.cpp" line="650"/>
<source>Map directory:</source>
<translation>Dossier des cartes :</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="649"/>
<location filename="../src/GUI/gui.cpp" line="652"/>
<source>POI directory:</source>
<translation>Dossier des POI:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="651"/>
<location filename="../src/GUI/gui.cpp" line="654"/>
<source>GCS file:</source>
<translation>Fichier GCS :</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="652"/>
<location filename="../src/GUI/gui.cpp" line="655"/>
<source>PCS file:</source>
<translation>Fichier PCS :</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="654"/>
<location filename="../src/GUI/gui.cpp" line="657"/>
<source>Ellipsoids file:</source>
<translation>Fichier des ellipsoïdes :</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="657"/>
<location filename="../src/GUI/gui.cpp" line="660"/>
<source>User override directory:</source>
<translation>Dossier de l&apos;utilisateur :</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="666"/>
<location filename="../src/GUI/gui.cpp" line="669"/>
<source>Open file</source>
<translation>Ouvrir un fichier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="757"/>
<location filename="../src/GUI/gui.cpp" line="774"/>
<source>Open POI file</source>
<translation>Ouvrir un fichier POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="199"/>
<location filename="../src/GUI/gui.cpp" line="202"/>
<source>Quit</source>
<translation>Quitter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="208"/>
<location filename="../src/GUI/gui.cpp" line="609"/>
<location filename="../src/GUI/gui.cpp" line="610"/>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="612"/>
<location filename="../src/GUI/gui.cpp" line="613"/>
<source>Keyboard controls</source>
<translation>Raccourcis clavier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="233"/>
<location filename="../src/GUI/gui.cpp" line="236"/>
<source>Close</source>
<translation>Fermer</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="239"/>
<location filename="../src/GUI/gui.cpp" line="242"/>
<source>Reload</source>
<translation>Actualiser</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="521"/>
<location filename="../src/GUI/gui.cpp" line="524"/>
<source>Show</source>
<translation>Afficher</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="515"/>
<location filename="../src/GUI/gui.cpp" line="518"/>
<source>File</source>
<translation>Fichier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="250"/>
<location filename="../src/GUI/gui.cpp" line="253"/>
<source>Close POI files</source>
<translation>Fermer les fichiers POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="252"/>
<location filename="../src/GUI/gui.cpp" line="255"/>
<source>Overlap POIs</source>
<translation>Superposer les POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="256"/>
<location filename="../src/GUI/gui.cpp" line="259"/>
<source>Show POI labels</source>
<translation>Afficher les notes des POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="261"/>
<location filename="../src/GUI/gui.cpp" line="264"/>
<source>Show POIs</source>
<translation>Afficher les POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="270"/>
<location filename="../src/GUI/gui.cpp" line="273"/>
<source>Show map</source>
<translation>Afficher la carte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="280"/>
<location filename="../src/GUI/gui.cpp" line="283"/>
<source>Clear tile cache</source>
<translation>Effacer les tuiles en cache</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="217"/>
<location filename="../src/GUI/gui.cpp" line="220"/>
<source>Open...</source>
<translation>Ouvrir...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="206"/>
<location filename="../src/GUI/gui.cpp" line="643"/>
<location filename="../src/GUI/gui.cpp" line="644"/>
<location filename="../src/GUI/gui.cpp" line="209"/>
<location filename="../src/GUI/gui.cpp" line="646"/>
<location filename="../src/GUI/gui.cpp" line="647"/>
<source>Paths</source>
<translation>Chemin d&apos;accès</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="247"/>
<location filename="../src/GUI/gui.cpp" line="250"/>
<source>Load POI file...</source>
<translation>Charger un fichier POI...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="278"/>
<location filename="../src/GUI/gui.cpp" line="281"/>
<source>Load map...</source>
<translation>Charger une carte...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="284"/>
<location filename="../src/GUI/gui.cpp" line="288"/>
<location filename="../src/GUI/gui.cpp" line="626"/>
<location filename="../src/GUI/gui.cpp" line="287"/>
<location filename="../src/GUI/gui.cpp" line="291"/>
<location filename="../src/GUI/gui.cpp" line="629"/>
<source>Next map</source>
<translation>Carte suivante</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="298"/>
<location filename="../src/GUI/gui.cpp" line="301"/>
<source>Show tracks</source>
<translation>Afficher la trace</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="302"/>
<location filename="../src/GUI/gui.cpp" line="305"/>
<source>Show routes</source>
<translation>Afficher la route</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="306"/>
<location filename="../src/GUI/gui.cpp" line="309"/>
<source>Show waypoints</source>
<translation>Afficher les points de jalonnement</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="310"/>
<location filename="../src/GUI/gui.cpp" line="313"/>
<source>Waypoint labels</source>
<translation>Étiquettes des jalons</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="321"/>
<location filename="../src/GUI/gui.cpp" line="324"/>
<source>Show graphs</source>
<translation>Afficher les graphes</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="341"/>
<location filename="../src/GUI/gui.cpp" line="344"/>
<source>Show grid</source>
<translation>Afficher la grille</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="345"/>
<location filename="../src/GUI/gui.cpp" line="348"/>
<source>Show slider info</source>
<translation>Afficher les infos du curseur</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="351"/>
<location filename="../src/GUI/gui.cpp" line="354"/>
<source>Show toolbars</source>
<translation>Afficher la barre d&apos;outils</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="357"/>
<location filename="../src/GUI/gui.cpp" line="360"/>
<source>Total time</source>
<translation>Durée totale</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="362"/>
<location filename="../src/GUI/gui.cpp" line="934"/>
<location filename="../src/GUI/gui.cpp" line="365"/>
<location filename="../src/GUI/gui.cpp" line="953"/>
<source>Moving time</source>
<translation>Durée en déplacement</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="369"/>
<location filename="../src/GUI/gui.cpp" line="372"/>
<source>Metric</source>
<translation>Métrique</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<location filename="../src/GUI/gui.cpp" line="377"/>
<source>Imperial</source>
<translation>Impérial</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="379"/>
<location filename="../src/GUI/gui.cpp" line="382"/>
<source>Nautical</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="386"/>
<location filename="../src/GUI/gui.cpp" line="389"/>
<source>Decimal degrees (DD)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="391"/>
<location filename="../src/GUI/gui.cpp" line="394"/>
<source>Degrees and decimal minutes (DMM)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="397"/>
<location filename="../src/GUI/gui.cpp" line="400"/>
<source>Degrees, minutes, seconds (DMS)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="402"/>
<location filename="../src/GUI/gui.cpp" line="405"/>
<source>Fullscreen mode</source>
<translation>Mode plein écran</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="408"/>
<location filename="../src/GUI/gui.cpp" line="411"/>
<source>Options...</source>
<translation>Options...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="414"/>
<location filename="../src/GUI/gui.cpp" line="417"/>
<source>Next</source>
<translation>Suivant</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="417"/>
<location filename="../src/GUI/gui.cpp" line="420"/>
<source>Previous</source>
<translation>Précèdant</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="421"/>
<location filename="../src/GUI/gui.cpp" line="424"/>
<source>Last</source>
<translation>Dernier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="424"/>
<location filename="../src/GUI/gui.cpp" line="427"/>
<source>First</source>
<translation>Premier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="464"/>
<location filename="../src/GUI/gui.cpp" line="467"/>
<source>POI files</source>
<translation>Fichiers POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="476"/>
<location filename="../src/GUI/gui.cpp" line="479"/>
<source>Display</source>
<translation>Affichage</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="491"/>
<source>Units</source>
<translation>Système d&apos;unités</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="492"/>
<location filename="../src/GUI/gui.cpp" line="495"/>
<source>Coordinates format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="619"/>
<location filename="../src/GUI/gui.cpp" line="622"/>
<source>Append file</source>
<translation>Joindre un fichier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="620"/>
<location filename="../src/GUI/gui.cpp" line="623"/>
<source>Next/Previous</source>
<translation>Suivant/Précèdant</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="622"/>
<location filename="../src/GUI/gui.cpp" line="625"/>
<source>Toggle graph type</source>
<translation>Controler le type de graphe</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="624"/>
<location filename="../src/GUI/gui.cpp" line="627"/>
<source>Toggle time type</source>
<translation>Controler le type de durée</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="628"/>
<location filename="../src/GUI/gui.cpp" line="631"/>
<source>Previous map</source>
<translation>Carte précèdente</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="629"/>
<location filename="../src/GUI/gui.cpp" line="632"/>
<source>Zoom in</source>
<translation>Zoomer</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="631"/>
<location filename="../src/GUI/gui.cpp" line="634"/>
<source>Zoom out</source>
<translation>Dézoomer</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="633"/>
<location filename="../src/GUI/gui.cpp" line="636"/>
<source>Digital zoom</source>
<translation>Zoom numérique</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="634"/>
<location filename="../src/GUI/gui.cpp" line="637"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1135"/>
<location filename="../src/GUI/gui.cpp" line="1152"/>
<source>Open map file</source>
<translation>Ouvrir un fichier de carte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1164"/>
<location filename="../src/GUI/gui.cpp" line="1181"/>
<source>Error loading map:</source>
<translation>Erreur lors du chargement de la carte :</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1175"/>
<location filename="../src/GUI/gui.cpp" line="1192"/>
<source>No files loaded</source>
<translation>Aucun fichier chargé</translation>
</message>
<message numerus="yes">
<location filename="../src/GUI/gui.cpp" line="1179"/>
<location filename="../src/GUI/gui.cpp" line="1196"/>
<source>%n files</source>
<translation>
<numerusform>%n fichier</numerusform>
@ -641,143 +641,143 @@
</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="920"/>
<location filename="../src/GUI/gui.cpp" line="923"/>
<location filename="../src/GUI/gui.cpp" line="939"/>
<location filename="../src/GUI/gui.cpp" line="942"/>
<source>Date</source>
<translation>Date</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="912"/>
<location filename="../src/GUI/gui.cpp" line="931"/>
<source>Routes</source>
<translation>Routes</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="613"/>
<location filename="../src/GUI/gui.cpp" line="616"/>
<source>Next file</source>
<translation>Fichier suivant</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="589"/>
<location filename="../src/GUI/gui.cpp" line="592"/>
<source>Version </source>
<translation>Version </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="222"/>
<location filename="../src/GUI/gui.cpp" line="225"/>
<source>Print...</source>
<translation>Imprimer...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="227"/>
<location filename="../src/GUI/gui.cpp" line="230"/>
<source>Export to PDF...</source>
<translation>Exporter au format PDF...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="914"/>
<location filename="../src/GUI/gui.cpp" line="933"/>
<source>Waypoints</source>
<translation>Points de jalonnement</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="614"/>
<location filename="../src/GUI/gui.cpp" line="617"/>
<source>Previous file</source>
<translation>Fichier précédent</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="314"/>
<location filename="../src/GUI/gui.cpp" line="317"/>
<source>Route waypoints</source>
<translation>Jalons de route</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="432"/>
<location filename="../src/GUI/gui.cpp" line="435"/>
<source>&amp;File</source>
<translation>&amp;Fichier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="446"/>
<location filename="../src/GUI/gui.cpp" line="449"/>
<source>&amp;Map</source>
<translation>&amp;Carte</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="454"/>
<location filename="../src/GUI/gui.cpp" line="457"/>
<source>&amp;Graph</source>
<translation>&amp;Graphe</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="463"/>
<location filename="../src/GUI/gui.cpp" line="466"/>
<source>&amp;POI</source>
<translation>&amp;POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="475"/>
<location filename="../src/GUI/gui.cpp" line="478"/>
<source>&amp;Data</source>
<translation>&amp;Données</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="484"/>
<location filename="../src/GUI/gui.cpp" line="487"/>
<source>&amp;Settings</source>
<translation>Pa&amp;ramètres</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="502"/>
<location filename="../src/GUI/gui.cpp" line="505"/>
<source>&amp;Help</source>
<translation>&amp;Aide</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="616"/>
<location filename="../src/GUI/gui.cpp" line="619"/>
<source>First file</source>
<translation>Premier fichier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="618"/>
<location filename="../src/GUI/gui.cpp" line="621"/>
<source>Last file</source>
<translation>Dernier fichier</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="746"/>
<location filename="../src/GUI/gui.cpp" line="763"/>
<source>Error loading data file:</source>
<translation>Erreur lors du chargement des données:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="749"/>
<location filename="../src/GUI/gui.cpp" line="776"/>
<location filename="../src/GUI/gui.cpp" line="766"/>
<location filename="../src/GUI/gui.cpp" line="793"/>
<source>Line: %1</source>
<translation>Ligne : %1</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="773"/>
<location filename="../src/GUI/gui.cpp" line="790"/>
<source>Error loading POI file:</source>
<translation>Erreur lors du chargement du fichier POI :</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="906"/>
<location filename="../src/GUI/gui.cpp" line="925"/>
<source>Name</source>
<translation>Nom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="910"/>
<location filename="../src/GUI/gui.cpp" line="929"/>
<source>Tracks</source>
<translation>Traces</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="588"/>
<location filename="../src/GUI/gui.cpp" line="214"/>
<location filename="../src/GUI/gui.cpp" line="591"/>
<source>About GPXSee</source>
<translation>À propos de GPXSee</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="526"/>
<location filename="../src/GUI/gui.cpp" line="529"/>
<source>Navigation</source>
<translation>Navigation</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="329"/>
<location filename="../src/GUI/gui.cpp" line="930"/>
<location filename="../src/GUI/gui.cpp" line="332"/>
<location filename="../src/GUI/gui.cpp" line="949"/>
<source>Distance</source>
<translation>Distance</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="335"/>
<location filename="../src/GUI/gui.cpp" line="485"/>
<location filename="../src/GUI/gui.cpp" line="932"/>
<location filename="../src/GUI/gui.cpp" line="338"/>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="951"/>
<source>Time</source>
<translation>Temps</translation>
</message>
@ -883,27 +883,32 @@
<context>
<name>MapList</name>
<message>
<location filename="../src/map/maplist.cpp" line="130"/>
<location filename="../src/map/maplist.cpp" line="111"/>
<source>Supported files</source>
<translation>Formats pris en charge</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="131"/>
<location filename="../src/map/maplist.cpp" line="112"/>
<source>Garmin JNX maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="113"/>
<source>OziExplorer maps</source>
<translation>Cartes OziExplorer</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="132"/>
<location filename="../src/map/maplist.cpp" line="114"/>
<source>TrekBuddy maps/atlases</source>
<translation>Cartes ou atlas TrekBuddy</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="133"/>
<location filename="../src/map/maplist.cpp" line="115"/>
<source>GeoTIFF images</source>
<translation>Images GeoTIFF</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="134"/>
<location filename="../src/map/maplist.cpp" line="116"/>
<source>Online map sources</source>
<translation>Cartes en ligne</translation>
</message>
@ -1004,7 +1009,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="55"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<source>General</source>
<translation>Général</translation>
</message>
@ -1139,6 +1144,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="303"/>
<location filename="../src/GUI/optionsdialog.cpp" line="437"/>
<source>s</source>
<translation>s</translation>
</message>
@ -1184,7 +1190,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="344"/>
<location filename="../src/GUI/optionsdialog.cpp" line="470"/>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<source>POI</source>
<translation>POI</translation>
</message>
@ -1264,33 +1270,38 @@
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="435"/>
<location filename="../src/GUI/optionsdialog.cpp" line="441"/>
<source>Image cache size:</source>
<translation>Volume du cache à images :</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Connection timeout:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="455"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>System</source>
<translation>Système</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="467"/>
<location filename="../src/GUI/optionsdialog.cpp" line="474"/>
<source>Appearance</source>
<translation>Apparence</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<location filename="../src/GUI/optionsdialog.cpp" line="476"/>
<source>Data</source>
<translation>Données</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="471"/>
<location filename="../src/GUI/optionsdialog.cpp" line="478"/>
<source>Print &amp; Export</source>
<translation>Imprimer et exporter</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="500"/>
<location filename="../src/GUI/optionsdialog.cpp" line="507"/>
<source>Options</source>
<translation>Options</translation>
</message>
@ -1359,28 +1370,28 @@
<context>
<name>ScaleItem</name>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="83"/>
<location filename="../src/GUI/scaleitem.cpp" line="111"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="84"/>
<location filename="../src/GUI/scaleitem.cpp" line="87"/>
<location filename="../src/GUI/scaleitem.cpp" line="112"/>
<location filename="../src/GUI/scaleitem.cpp" line="115"/>
<source>ft</source>
<translation>pied</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="86"/>
<location filename="../src/GUI/scaleitem.cpp" line="114"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="89"/>
<location filename="../src/GUI/scaleitem.cpp" line="117"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="90"/>
<location filename="../src/GUI/scaleitem.cpp" line="118"/>
<source>m</source>
<translation>m</translation>
</message>
@ -1394,7 +1405,7 @@
<translation>Vitesse</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="96"/>
<location filename="../src/GUI/speedgraph.cpp" line="101"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -1429,12 +1440,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="90"/>
<location filename="../src/GUI/speedgraph.cpp" line="95"/>
<source>kn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="93"/>
<location filename="../src/GUI/speedgraph.cpp" line="98"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
@ -1511,12 +1522,12 @@
<translation>Maximum</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="76"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="82"/>
<source>C</source>
<translation>°C</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="80"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="86"/>
<source>F</source>
<translation>°F</translation>
</message>

1625
lang/gpxsee_pl.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@ -47,52 +47,52 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="112"/>
<location filename="../src/data/data.cpp" line="110"/>
<source>Supported files</source>
<translation>Все поддерживаемые файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>CSV files</source>
<translation>CSV файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>FIT files</source>
<translation>FIT файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>GPX files</source>
<translation>GPX файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>IGC files</source>
<translation>IGC файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>KML files</source>
<translation>KML файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>NMEA files</source>
<translation>NMEA файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="117"/>
<location filename="../src/data/data.cpp" line="115"/>
<source>OziExplorer files</source>
<translation>OziExplorer файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>TCX files</source>
<translation>TCX файлы</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>All files</source>
<translation>Все файлы</translation>
</message>
@ -106,7 +106,7 @@
<translation>Высота</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="122"/>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<source>m</source>
<translation>м</translation>
</message>
@ -126,7 +126,7 @@
<translation>Минимум</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<location filename="../src/GUI/elevationgraph.cpp" line="128"/>
<source>ft</source>
<translation>фт</translation>
</message>
@ -306,380 +306,380 @@
<context>
<name>GUI</name>
<message>
<location filename="../src/GUI/gui.cpp" line="592"/>
<location filename="../src/GUI/gui.cpp" line="595"/>
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
<translation>GPXSee распространяется в соответствиями с условиями версии 3 Стандартной Общественной Лицензии GNU. Для получения дополнительной информации о GPXSee посетите страницу проекта </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="666"/>
<location filename="../src/GUI/gui.cpp" line="669"/>
<source>Open file</source>
<translation>Открыть файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="757"/>
<location filename="../src/GUI/gui.cpp" line="774"/>
<source>Open POI file</source>
<translation>Открыть файл с точками POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="199"/>
<location filename="../src/GUI/gui.cpp" line="202"/>
<source>Quit</source>
<translation>Выход</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="208"/>
<location filename="../src/GUI/gui.cpp" line="609"/>
<location filename="../src/GUI/gui.cpp" line="610"/>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="612"/>
<location filename="../src/GUI/gui.cpp" line="613"/>
<source>Keyboard controls</source>
<translation>Управление с помощью клавиатуры</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="233"/>
<location filename="../src/GUI/gui.cpp" line="236"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="239"/>
<location filename="../src/GUI/gui.cpp" line="242"/>
<source>Reload</source>
<translation>Обновить</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="521"/>
<location filename="../src/GUI/gui.cpp" line="524"/>
<source>Show</source>
<translation>Показать</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="515"/>
<location filename="../src/GUI/gui.cpp" line="518"/>
<source>File</source>
<translation>Файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="250"/>
<location filename="../src/GUI/gui.cpp" line="253"/>
<source>Close POI files</source>
<translation>Закрыть файлы с точками POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="252"/>
<location filename="../src/GUI/gui.cpp" line="255"/>
<source>Overlap POIs</source>
<translation>Наложение точек POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="256"/>
<location filename="../src/GUI/gui.cpp" line="259"/>
<source>Show POI labels</source>
<translation>Показать подписи к точкам POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="261"/>
<location filename="../src/GUI/gui.cpp" line="264"/>
<source>Show POIs</source>
<translation>Показать точки POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="270"/>
<location filename="../src/GUI/gui.cpp" line="273"/>
<source>Show map</source>
<translation>Показать карту</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="280"/>
<location filename="../src/GUI/gui.cpp" line="283"/>
<source>Clear tile cache</source>
<translation>Очистить кэш</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="217"/>
<location filename="../src/GUI/gui.cpp" line="220"/>
<source>Open...</source>
<translation>Открыть...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="206"/>
<location filename="../src/GUI/gui.cpp" line="643"/>
<location filename="../src/GUI/gui.cpp" line="644"/>
<location filename="../src/GUI/gui.cpp" line="209"/>
<location filename="../src/GUI/gui.cpp" line="646"/>
<location filename="../src/GUI/gui.cpp" line="647"/>
<source>Paths</source>
<translation>Пути</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="247"/>
<location filename="../src/GUI/gui.cpp" line="250"/>
<source>Load POI file...</source>
<translation>Загрузить файл с точками POI...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="278"/>
<location filename="../src/GUI/gui.cpp" line="281"/>
<source>Load map...</source>
<translation>Загрузить карту...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="284"/>
<location filename="../src/GUI/gui.cpp" line="288"/>
<location filename="../src/GUI/gui.cpp" line="626"/>
<location filename="../src/GUI/gui.cpp" line="287"/>
<location filename="../src/GUI/gui.cpp" line="291"/>
<location filename="../src/GUI/gui.cpp" line="629"/>
<source>Next map</source>
<translation>Следующая карта</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="298"/>
<location filename="../src/GUI/gui.cpp" line="301"/>
<source>Show tracks</source>
<translation>Показать треки</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="302"/>
<location filename="../src/GUI/gui.cpp" line="305"/>
<source>Show routes</source>
<translation>Показать маршруты</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="306"/>
<location filename="../src/GUI/gui.cpp" line="309"/>
<source>Show waypoints</source>
<translation>Показать точки</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="310"/>
<location filename="../src/GUI/gui.cpp" line="313"/>
<source>Waypoint labels</source>
<translation>Подписи точек</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="321"/>
<location filename="../src/GUI/gui.cpp" line="324"/>
<source>Show graphs</source>
<translation>Показать графики</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="341"/>
<location filename="../src/GUI/gui.cpp" line="344"/>
<source>Show grid</source>
<translation>Показать сетку</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="345"/>
<location filename="../src/GUI/gui.cpp" line="348"/>
<source>Show slider info</source>
<translation>Показать значение на слайдере</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="351"/>
<location filename="../src/GUI/gui.cpp" line="354"/>
<source>Show toolbars</source>
<translation>Показывать панели инструментов</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="357"/>
<location filename="../src/GUI/gui.cpp" line="360"/>
<source>Total time</source>
<translation>Общее время</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="362"/>
<location filename="../src/GUI/gui.cpp" line="934"/>
<location filename="../src/GUI/gui.cpp" line="365"/>
<location filename="../src/GUI/gui.cpp" line="953"/>
<source>Moving time</source>
<translation>Время движения</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="369"/>
<location filename="../src/GUI/gui.cpp" line="372"/>
<source>Metric</source>
<translation>Метрические</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<location filename="../src/GUI/gui.cpp" line="377"/>
<source>Imperial</source>
<translation>Британские</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="379"/>
<location filename="../src/GUI/gui.cpp" line="382"/>
<source>Nautical</source>
<translation>Морские</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="386"/>
<location filename="../src/GUI/gui.cpp" line="389"/>
<source>Decimal degrees (DD)</source>
<translation>Десятичные градусы (DD)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="391"/>
<location filename="../src/GUI/gui.cpp" line="394"/>
<source>Degrees and decimal minutes (DMM)</source>
<translation>Градусы, десятичные минуты (DMM)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="397"/>
<location filename="../src/GUI/gui.cpp" line="400"/>
<source>Degrees, minutes, seconds (DMS)</source>
<translation>Градусы, минуты, секунды (DMS)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="402"/>
<location filename="../src/GUI/gui.cpp" line="405"/>
<source>Fullscreen mode</source>
<translation>Полноэкранный режим</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="408"/>
<location filename="../src/GUI/gui.cpp" line="411"/>
<source>Options...</source>
<translation>Параметры...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="414"/>
<location filename="../src/GUI/gui.cpp" line="417"/>
<source>Next</source>
<translation>Следующий</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="417"/>
<location filename="../src/GUI/gui.cpp" line="420"/>
<source>Previous</source>
<translation>Предыдущий</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="421"/>
<location filename="../src/GUI/gui.cpp" line="424"/>
<source>Last</source>
<translation>Последний</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="424"/>
<location filename="../src/GUI/gui.cpp" line="427"/>
<source>First</source>
<translation>Первый</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="464"/>
<location filename="../src/GUI/gui.cpp" line="467"/>
<source>POI files</source>
<translation>Файлы с точками POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="476"/>
<location filename="../src/GUI/gui.cpp" line="479"/>
<source>Display</source>
<translation>Отображать</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="491"/>
<source>Units</source>
<translation>Единицы</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="492"/>
<location filename="../src/GUI/gui.cpp" line="495"/>
<source>Coordinates format</source>
<translation>Формат координат</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="619"/>
<location filename="../src/GUI/gui.cpp" line="622"/>
<source>Append file</source>
<translation>Добавить файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="620"/>
<location filename="../src/GUI/gui.cpp" line="623"/>
<source>Next/Previous</source>
<translation>Next/Previous</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="622"/>
<location filename="../src/GUI/gui.cpp" line="625"/>
<source>Toggle graph type</source>
<translation>Переключить тип графика</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="624"/>
<location filename="../src/GUI/gui.cpp" line="627"/>
<source>Toggle time type</source>
<translation>Переключить тип времени</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="628"/>
<location filename="../src/GUI/gui.cpp" line="631"/>
<source>Previous map</source>
<translation>Предыдущая карта</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="629"/>
<location filename="../src/GUI/gui.cpp" line="632"/>
<source>Zoom in</source>
<translation>Увеличить</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="631"/>
<location filename="../src/GUI/gui.cpp" line="634"/>
<source>Zoom out</source>
<translation>Уменьшить</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="633"/>
<location filename="../src/GUI/gui.cpp" line="636"/>
<source>Digital zoom</source>
<translation>Цифровой зум</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="634"/>
<location filename="../src/GUI/gui.cpp" line="637"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1135"/>
<location filename="../src/GUI/gui.cpp" line="1152"/>
<source>Open map file</source>
<translation>Открыть файл карты</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1175"/>
<location filename="../src/GUI/gui.cpp" line="1192"/>
<source>No files loaded</source>
<translation>Нет загруженных файлов</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="920"/>
<location filename="../src/GUI/gui.cpp" line="923"/>
<location filename="../src/GUI/gui.cpp" line="939"/>
<location filename="../src/GUI/gui.cpp" line="942"/>
<source>Date</source>
<translation>Дата</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="432"/>
<location filename="../src/GUI/gui.cpp" line="435"/>
<source>&amp;File</source>
<translation>&amp;Файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="446"/>
<location filename="../src/GUI/gui.cpp" line="449"/>
<source>&amp;Map</source>
<translation>&amp;Карты</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="454"/>
<location filename="../src/GUI/gui.cpp" line="457"/>
<source>&amp;Graph</source>
<translation>&amp;График</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="463"/>
<location filename="../src/GUI/gui.cpp" line="466"/>
<source>&amp;POI</source>
<translation>&amp;Точки POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="475"/>
<location filename="../src/GUI/gui.cpp" line="478"/>
<source>&amp;Data</source>
<translation>&amp;Данные</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="484"/>
<location filename="../src/GUI/gui.cpp" line="487"/>
<source>&amp;Settings</source>
<translation>&amp;Параметры</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="502"/>
<location filename="../src/GUI/gui.cpp" line="505"/>
<source>&amp;Help</source>
<translation>&amp;Справка</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="647"/>
<location filename="../src/GUI/gui.cpp" line="650"/>
<source>Map directory:</source>
<translation>Директория с картами:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="649"/>
<location filename="../src/GUI/gui.cpp" line="652"/>
<source>POI directory:</source>
<translation>Директория с POI:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="651"/>
<location filename="../src/GUI/gui.cpp" line="654"/>
<source>GCS file:</source>
<translation>GCS файл:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="652"/>
<location filename="../src/GUI/gui.cpp" line="655"/>
<source>PCS file:</source>
<translation>PCS файл:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="654"/>
<location filename="../src/GUI/gui.cpp" line="657"/>
<source>Ellipsoids file:</source>
<translation>Ellipsoids файл:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="657"/>
<location filename="../src/GUI/gui.cpp" line="660"/>
<source>User override directory:</source>
<translation>Каталог пользовательских настроек:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="912"/>
<location filename="../src/GUI/gui.cpp" line="931"/>
<source>Routes</source>
<translation>Маршруты</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1164"/>
<location filename="../src/GUI/gui.cpp" line="1181"/>
<source>Error loading map:</source>
<translation>Ошибка загрузки карты:</translation>
</message>
<message numerus="yes">
<location filename="../src/GUI/gui.cpp" line="1179"/>
<location filename="../src/GUI/gui.cpp" line="1196"/>
<source>%n files</source>
<translation>
<numerusform>%n файл</numerusform>
@ -688,97 +688,97 @@
</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="613"/>
<location filename="../src/GUI/gui.cpp" line="616"/>
<source>Next file</source>
<translation>Следующий файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="589"/>
<location filename="../src/GUI/gui.cpp" line="592"/>
<source>Version </source>
<translation>Версия </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="222"/>
<location filename="../src/GUI/gui.cpp" line="225"/>
<source>Print...</source>
<translation>Печать...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="227"/>
<location filename="../src/GUI/gui.cpp" line="230"/>
<source>Export to PDF...</source>
<translation>Экспорт в PDF...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="914"/>
<location filename="../src/GUI/gui.cpp" line="933"/>
<source>Waypoints</source>
<translation>Точки</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="614"/>
<location filename="../src/GUI/gui.cpp" line="617"/>
<source>Previous file</source>
<translation>Предыдущий файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="314"/>
<location filename="../src/GUI/gui.cpp" line="317"/>
<source>Route waypoints</source>
<translation>Маршрутные точки</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="616"/>
<location filename="../src/GUI/gui.cpp" line="619"/>
<source>First file</source>
<translation>Первый файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="618"/>
<location filename="../src/GUI/gui.cpp" line="621"/>
<source>Last file</source>
<translation>Последний файл</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="746"/>
<location filename="../src/GUI/gui.cpp" line="763"/>
<source>Error loading data file:</source>
<translation>Ошибка загрузки файла данных:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="749"/>
<location filename="../src/GUI/gui.cpp" line="776"/>
<location filename="../src/GUI/gui.cpp" line="766"/>
<location filename="../src/GUI/gui.cpp" line="793"/>
<source>Line: %1</source>
<translation>Строка: %1</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="773"/>
<location filename="../src/GUI/gui.cpp" line="790"/>
<source>Error loading POI file:</source>
<translation>Ошибка загрузки файла с точками POI:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="906"/>
<location filename="../src/GUI/gui.cpp" line="925"/>
<source>Name</source>
<translation>Имя</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="910"/>
<location filename="../src/GUI/gui.cpp" line="929"/>
<source>Tracks</source>
<translation>Треки</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="588"/>
<location filename="../src/GUI/gui.cpp" line="214"/>
<location filename="../src/GUI/gui.cpp" line="591"/>
<source>About GPXSee</source>
<translation>О GPXSee</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="526"/>
<location filename="../src/GUI/gui.cpp" line="529"/>
<source>Navigation</source>
<translation>Навигация</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="329"/>
<location filename="../src/GUI/gui.cpp" line="930"/>
<location filename="../src/GUI/gui.cpp" line="332"/>
<location filename="../src/GUI/gui.cpp" line="949"/>
<source>Distance</source>
<translation>Расстояние</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="335"/>
<location filename="../src/GUI/gui.cpp" line="485"/>
<location filename="../src/GUI/gui.cpp" line="932"/>
<location filename="../src/GUI/gui.cpp" line="338"/>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="951"/>
<source>Time</source>
<translation>Время</translation>
</message>
@ -884,27 +884,32 @@
<context>
<name>MapList</name>
<message>
<location filename="../src/map/maplist.cpp" line="130"/>
<location filename="../src/map/maplist.cpp" line="111"/>
<source>Supported files</source>
<translation>Все поддерживаемые файлы</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="131"/>
<location filename="../src/map/maplist.cpp" line="112"/>
<source>Garmin JNX maps</source>
<translation>Garmin JNX карты</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="113"/>
<source>OziExplorer maps</source>
<translation>OziExplorer карты</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="132"/>
<location filename="../src/map/maplist.cpp" line="114"/>
<source>TrekBuddy maps/atlases</source>
<translation>TrekBuddy карты/атласы</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="133"/>
<location filename="../src/map/maplist.cpp" line="115"/>
<source>GeoTIFF images</source>
<translation>GeoTIFF изображения</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="134"/>
<location filename="../src/map/maplist.cpp" line="116"/>
<source>Online map sources</source>
<translation>Источники онлайн карт</translation>
</message>
@ -1005,7 +1010,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="55"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<source>General</source>
<translation>Общие</translation>
</message>
@ -1140,6 +1145,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="303"/>
<location filename="../src/GUI/optionsdialog.cpp" line="437"/>
<source>s</source>
<translation>с</translation>
</message>
@ -1185,7 +1191,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="344"/>
<location filename="../src/GUI/optionsdialog.cpp" line="470"/>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<source>POI</source>
<translation>Точки POI</translation>
</message>
@ -1265,33 +1271,38 @@
<translation>МБ</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="435"/>
<location filename="../src/GUI/optionsdialog.cpp" line="441"/>
<source>Image cache size:</source>
<translation>Размер кэша изображений:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Connection timeout:</source>
<translation>Таймаут соединения:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="455"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>System</source>
<translation>Система</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="467"/>
<location filename="../src/GUI/optionsdialog.cpp" line="474"/>
<source>Appearance</source>
<translation>Внешний вид</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<location filename="../src/GUI/optionsdialog.cpp" line="476"/>
<source>Data</source>
<translation>Данные</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="471"/>
<location filename="../src/GUI/optionsdialog.cpp" line="478"/>
<source>Print &amp; Export</source>
<translation>Печать и экспорт</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="500"/>
<location filename="../src/GUI/optionsdialog.cpp" line="507"/>
<source>Options</source>
<translation>Параметры</translation>
</message>
@ -1360,28 +1371,28 @@
<context>
<name>ScaleItem</name>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="83"/>
<location filename="../src/GUI/scaleitem.cpp" line="111"/>
<source>mi</source>
<translation>мл</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="84"/>
<location filename="../src/GUI/scaleitem.cpp" line="87"/>
<location filename="../src/GUI/scaleitem.cpp" line="112"/>
<location filename="../src/GUI/scaleitem.cpp" line="115"/>
<source>ft</source>
<translation>фт</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="86"/>
<location filename="../src/GUI/scaleitem.cpp" line="114"/>
<source>nmi</source>
<translation>мор. мл</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="89"/>
<location filename="../src/GUI/scaleitem.cpp" line="117"/>
<source>km</source>
<translation>км</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="90"/>
<location filename="../src/GUI/scaleitem.cpp" line="118"/>
<source>m</source>
<translation>м</translation>
</message>
@ -1395,7 +1406,7 @@
<translation>Скорость</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="96"/>
<location filename="../src/GUI/speedgraph.cpp" line="101"/>
<source>km/h</source>
<translation>км/ч</translation>
</message>
@ -1430,12 +1441,12 @@
<translation>Темп</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="90"/>
<location filename="../src/GUI/speedgraph.cpp" line="95"/>
<source>kn</source>
<translation>уз</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="93"/>
<location filename="../src/GUI/speedgraph.cpp" line="98"/>
<source>mi/h</source>
<translation>мл/ч</translation>
</message>
@ -1512,12 +1523,12 @@
<translation>Максимум</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="76"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="82"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="80"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="86"/>
<source>F</source>
<translation>F</translation>
</message>

View File

@ -47,52 +47,52 @@
<context>
<name>Data</name>
<message>
<location filename="../src/data/data.cpp" line="112"/>
<location filename="../src/data/data.cpp" line="110"/>
<source>Supported files</source>
<translation>Filer som stöds</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>CSV files</source>
<translation>CSV-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="114"/>
<location filename="../src/data/data.cpp" line="112"/>
<source>FIT files</source>
<translation>FIT-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>GPX files</source>
<translation>GPX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="115"/>
<location filename="../src/data/data.cpp" line="113"/>
<source>IGC files</source>
<translation>IGC-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>KML files</source>
<translation>KML-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="116"/>
<location filename="../src/data/data.cpp" line="114"/>
<source>NMEA files</source>
<translation>NMEA-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="117"/>
<location filename="../src/data/data.cpp" line="115"/>
<source>OziExplorer files</source>
<translation type="unfinished"></translation>
<translation>OziExplorer-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>TCX files</source>
<translation>TCX-filer</translation>
</message>
<message>
<location filename="../src/data/data.cpp" line="118"/>
<location filename="../src/data/data.cpp" line="116"/>
<source>All files</source>
<translation>Alla filer</translation>
</message>
@ -106,7 +106,7 @@
<translation>Höjd</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="122"/>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<source>m</source>
<translation>m</translation>
</message>
@ -126,7 +126,7 @@
<translation>Minimum</translation>
</message>
<message>
<location filename="../src/GUI/elevationgraph.cpp" line="125"/>
<location filename="../src/GUI/elevationgraph.cpp" line="128"/>
<source>ft</source>
<translation>ft</translation>
</message>
@ -306,334 +306,334 @@
<context>
<name>GUI</name>
<message>
<location filename="../src/GUI/gui.cpp" line="592"/>
<location filename="../src/GUI/gui.cpp" line="595"/>
<source>GPXSee is distributed under the terms of the GNU General Public License version 3. For more info about GPXSee visit the project homepage at </source>
<translation>GPXSee distribueras under vilkoren för GNU General Public License version 3. För mer info om GPXSee, besök hemsidan </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="647"/>
<location filename="../src/GUI/gui.cpp" line="650"/>
<source>Map directory:</source>
<translation>Kartmapp:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="649"/>
<location filename="../src/GUI/gui.cpp" line="652"/>
<source>POI directory:</source>
<translation>POI-mapp:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="651"/>
<location filename="../src/GUI/gui.cpp" line="654"/>
<source>GCS file:</source>
<translation>GCS-fil:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="652"/>
<location filename="../src/GUI/gui.cpp" line="655"/>
<source>PCS file:</source>
<translation>PCS-fil:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="654"/>
<location filename="../src/GUI/gui.cpp" line="657"/>
<source>Ellipsoids file:</source>
<translation>Ellipsoids-fil:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="657"/>
<location filename="../src/GUI/gui.cpp" line="660"/>
<source>User override directory:</source>
<translation>Användarspecificerad mapp:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="666"/>
<location filename="../src/GUI/gui.cpp" line="669"/>
<source>Open file</source>
<translation>Öppna fil</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="757"/>
<location filename="../src/GUI/gui.cpp" line="774"/>
<source>Open POI file</source>
<translation>Öppna POI-fil</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="199"/>
<location filename="../src/GUI/gui.cpp" line="202"/>
<source>Quit</source>
<translation>Avsluta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="208"/>
<location filename="../src/GUI/gui.cpp" line="609"/>
<location filename="../src/GUI/gui.cpp" line="610"/>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="612"/>
<location filename="../src/GUI/gui.cpp" line="613"/>
<source>Keyboard controls</source>
<translation>Snabbtangenter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="233"/>
<location filename="../src/GUI/gui.cpp" line="236"/>
<source>Close</source>
<translation>Stäng</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="239"/>
<location filename="../src/GUI/gui.cpp" line="242"/>
<source>Reload</source>
<translation>Uppdatera</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="521"/>
<location filename="../src/GUI/gui.cpp" line="524"/>
<source>Show</source>
<translation>Visa</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="515"/>
<location filename="../src/GUI/gui.cpp" line="518"/>
<source>File</source>
<translation>Arkiv</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="250"/>
<location filename="../src/GUI/gui.cpp" line="253"/>
<source>Close POI files</source>
<translation>Stäng POI-filer</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="252"/>
<location filename="../src/GUI/gui.cpp" line="255"/>
<source>Overlap POIs</source>
<translation>Överlappa POI:er</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="256"/>
<location filename="../src/GUI/gui.cpp" line="259"/>
<source>Show POI labels</source>
<translation>Visa POI-namn</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="261"/>
<location filename="../src/GUI/gui.cpp" line="264"/>
<source>Show POIs</source>
<translation>Visa POI:er</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="270"/>
<location filename="../src/GUI/gui.cpp" line="273"/>
<source>Show map</source>
<translation>Visa karta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="280"/>
<location filename="../src/GUI/gui.cpp" line="283"/>
<source>Clear tile cache</source>
<translation>Rensa kart-cache</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="217"/>
<location filename="../src/GUI/gui.cpp" line="220"/>
<source>Open...</source>
<translation>Öppna...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="206"/>
<location filename="../src/GUI/gui.cpp" line="643"/>
<location filename="../src/GUI/gui.cpp" line="644"/>
<location filename="../src/GUI/gui.cpp" line="209"/>
<location filename="../src/GUI/gui.cpp" line="646"/>
<location filename="../src/GUI/gui.cpp" line="647"/>
<source>Paths</source>
<translation>Sökvägar</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="247"/>
<location filename="../src/GUI/gui.cpp" line="250"/>
<source>Load POI file...</source>
<translation>Läs in POI-fil...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="278"/>
<location filename="../src/GUI/gui.cpp" line="281"/>
<source>Load map...</source>
<translation>Läs in karta...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="284"/>
<location filename="../src/GUI/gui.cpp" line="288"/>
<location filename="../src/GUI/gui.cpp" line="626"/>
<location filename="../src/GUI/gui.cpp" line="287"/>
<location filename="../src/GUI/gui.cpp" line="291"/>
<location filename="../src/GUI/gui.cpp" line="629"/>
<source>Next map</source>
<translation>Nästa karta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="298"/>
<location filename="../src/GUI/gui.cpp" line="301"/>
<source>Show tracks</source>
<translation>Visa spår</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="302"/>
<location filename="../src/GUI/gui.cpp" line="305"/>
<source>Show routes</source>
<translation>Visa rutter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="306"/>
<location filename="../src/GUI/gui.cpp" line="309"/>
<source>Show waypoints</source>
<translation>Visa vägpunkter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="310"/>
<location filename="../src/GUI/gui.cpp" line="313"/>
<source>Waypoint labels</source>
<translation>Vägpunktsnamn</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="321"/>
<location filename="../src/GUI/gui.cpp" line="324"/>
<source>Show graphs</source>
<translation>Visa diagram</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="341"/>
<location filename="../src/GUI/gui.cpp" line="344"/>
<source>Show grid</source>
<translation>Visa stödlinjer</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="345"/>
<location filename="../src/GUI/gui.cpp" line="348"/>
<source>Show slider info</source>
<translation>Visa reglageinfo</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="351"/>
<location filename="../src/GUI/gui.cpp" line="354"/>
<source>Show toolbars</source>
<translation>Visa verktygsfält</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="357"/>
<location filename="../src/GUI/gui.cpp" line="360"/>
<source>Total time</source>
<translation>Total tid</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="362"/>
<location filename="../src/GUI/gui.cpp" line="934"/>
<location filename="../src/GUI/gui.cpp" line="365"/>
<location filename="../src/GUI/gui.cpp" line="953"/>
<source>Moving time</source>
<translation>Förflyttningstid</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="369"/>
<location filename="../src/GUI/gui.cpp" line="372"/>
<source>Metric</source>
<translation>Meter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="374"/>
<location filename="../src/GUI/gui.cpp" line="377"/>
<source>Imperial</source>
<translation>Imperial</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="379"/>
<location filename="../src/GUI/gui.cpp" line="382"/>
<source>Nautical</source>
<translation>Nautiska</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="386"/>
<location filename="../src/GUI/gui.cpp" line="389"/>
<source>Decimal degrees (DD)</source>
<translation>Decimala grader (DD)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="391"/>
<location filename="../src/GUI/gui.cpp" line="394"/>
<source>Degrees and decimal minutes (DMM)</source>
<translation>Grader och decimala minuter (DMM)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="397"/>
<location filename="../src/GUI/gui.cpp" line="400"/>
<source>Degrees, minutes, seconds (DMS)</source>
<translation>Grader, minuter, sekunder (DMS)</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="402"/>
<location filename="../src/GUI/gui.cpp" line="405"/>
<source>Fullscreen mode</source>
<translation>Helskärmsläge</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="408"/>
<location filename="../src/GUI/gui.cpp" line="411"/>
<source>Options...</source>
<translation>Alternativ...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="414"/>
<location filename="../src/GUI/gui.cpp" line="417"/>
<source>Next</source>
<translation>Nästa</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="417"/>
<location filename="../src/GUI/gui.cpp" line="420"/>
<source>Previous</source>
<translation>Föregående</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="421"/>
<location filename="../src/GUI/gui.cpp" line="424"/>
<source>Last</source>
<translation>Sista</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="424"/>
<location filename="../src/GUI/gui.cpp" line="427"/>
<source>First</source>
<translation>Första</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="464"/>
<location filename="../src/GUI/gui.cpp" line="467"/>
<source>POI files</source>
<translation>POI-filer</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="476"/>
<location filename="../src/GUI/gui.cpp" line="479"/>
<source>Display</source>
<translation>Visa</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="491"/>
<source>Units</source>
<translation>Enhet</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="492"/>
<location filename="../src/GUI/gui.cpp" line="495"/>
<source>Coordinates format</source>
<translation>Koordinatformat</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="619"/>
<location filename="../src/GUI/gui.cpp" line="622"/>
<source>Append file</source>
<translation>Lägg till fil</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="620"/>
<location filename="../src/GUI/gui.cpp" line="623"/>
<source>Next/Previous</source>
<translation>Nästa/Föregående</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="622"/>
<location filename="../src/GUI/gui.cpp" line="625"/>
<source>Toggle graph type</source>
<translation>Växla diagramtyp</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="624"/>
<location filename="../src/GUI/gui.cpp" line="627"/>
<source>Toggle time type</source>
<translation>Växla tidstyp</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="628"/>
<location filename="../src/GUI/gui.cpp" line="631"/>
<source>Previous map</source>
<translation>Föregående karta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="629"/>
<location filename="../src/GUI/gui.cpp" line="632"/>
<source>Zoom in</source>
<translation>Zooma in</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="631"/>
<location filename="../src/GUI/gui.cpp" line="634"/>
<source>Zoom out</source>
<translation>Zooma ut</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="633"/>
<location filename="../src/GUI/gui.cpp" line="636"/>
<source>Digital zoom</source>
<translation>Digital zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="634"/>
<location filename="../src/GUI/gui.cpp" line="637"/>
<source>Zoom</source>
<translation>Zoom</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1135"/>
<location filename="../src/GUI/gui.cpp" line="1152"/>
<source>Open map file</source>
<translation>Öppna kartfil</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1164"/>
<location filename="../src/GUI/gui.cpp" line="1181"/>
<source>Error loading map:</source>
<translation>Fel vid inläsning av karta:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="1175"/>
<location filename="../src/GUI/gui.cpp" line="1192"/>
<source>No files loaded</source>
<translation>Inga filer inlästa</translation>
</message>
<message numerus="yes">
<location filename="../src/GUI/gui.cpp" line="1179"/>
<location filename="../src/GUI/gui.cpp" line="1196"/>
<source>%n files</source>
<translation>
<numerusform>%n filer</numerusform>
@ -641,143 +641,143 @@
</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="920"/>
<location filename="../src/GUI/gui.cpp" line="923"/>
<location filename="../src/GUI/gui.cpp" line="939"/>
<location filename="../src/GUI/gui.cpp" line="942"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="912"/>
<location filename="../src/GUI/gui.cpp" line="931"/>
<source>Routes</source>
<translation>Rutter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="613"/>
<location filename="../src/GUI/gui.cpp" line="616"/>
<source>Next file</source>
<translation>Nästa fil</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="589"/>
<location filename="../src/GUI/gui.cpp" line="592"/>
<source>Version </source>
<translation>Version </translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="222"/>
<location filename="../src/GUI/gui.cpp" line="225"/>
<source>Print...</source>
<translation>Skriv ut...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="227"/>
<location filename="../src/GUI/gui.cpp" line="230"/>
<source>Export to PDF...</source>
<translation>Exportera till PDF...</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="914"/>
<location filename="../src/GUI/gui.cpp" line="933"/>
<source>Waypoints</source>
<translation>Vägpunkter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="614"/>
<location filename="../src/GUI/gui.cpp" line="617"/>
<source>Previous file</source>
<translation>Föregående fil</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="314"/>
<location filename="../src/GUI/gui.cpp" line="317"/>
<source>Route waypoints</source>
<translation>Ruttvägpunkter</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="432"/>
<location filename="../src/GUI/gui.cpp" line="435"/>
<source>&amp;File</source>
<translation>&amp;Arkiv</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="446"/>
<location filename="../src/GUI/gui.cpp" line="449"/>
<source>&amp;Map</source>
<translation>&amp;Karta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="454"/>
<location filename="../src/GUI/gui.cpp" line="457"/>
<source>&amp;Graph</source>
<translation>&amp;Diagram</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="463"/>
<location filename="../src/GUI/gui.cpp" line="466"/>
<source>&amp;POI</source>
<translation>&amp;POI</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="475"/>
<location filename="../src/GUI/gui.cpp" line="478"/>
<source>&amp;Data</source>
<translation>Da&amp;ta</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="484"/>
<location filename="../src/GUI/gui.cpp" line="487"/>
<source>&amp;Settings</source>
<translation>&amp;Inställningar</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="502"/>
<location filename="../src/GUI/gui.cpp" line="505"/>
<source>&amp;Help</source>
<translation>&amp;Hjälp</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="616"/>
<location filename="../src/GUI/gui.cpp" line="619"/>
<source>First file</source>
<translation>Första filen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="618"/>
<location filename="../src/GUI/gui.cpp" line="621"/>
<source>Last file</source>
<translation>Sista filen</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="746"/>
<location filename="../src/GUI/gui.cpp" line="763"/>
<source>Error loading data file:</source>
<translation>Fel vid inläsning av datafil:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="749"/>
<location filename="../src/GUI/gui.cpp" line="776"/>
<location filename="../src/GUI/gui.cpp" line="766"/>
<location filename="../src/GUI/gui.cpp" line="793"/>
<source>Line: %1</source>
<translation>Rad: %1</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="773"/>
<location filename="../src/GUI/gui.cpp" line="790"/>
<source>Error loading POI file:</source>
<translation>Fel vid inläsning av POI-fil:</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="906"/>
<location filename="../src/GUI/gui.cpp" line="925"/>
<source>Name</source>
<translation>Namn</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="910"/>
<location filename="../src/GUI/gui.cpp" line="929"/>
<source>Tracks</source>
<translation>Spår</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="211"/>
<location filename="../src/GUI/gui.cpp" line="588"/>
<location filename="../src/GUI/gui.cpp" line="214"/>
<location filename="../src/GUI/gui.cpp" line="591"/>
<source>About GPXSee</source>
<translation>Om GPXSee</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="526"/>
<location filename="../src/GUI/gui.cpp" line="529"/>
<source>Navigation</source>
<translation>Navigation</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="329"/>
<location filename="../src/GUI/gui.cpp" line="930"/>
<location filename="../src/GUI/gui.cpp" line="332"/>
<location filename="../src/GUI/gui.cpp" line="949"/>
<source>Distance</source>
<translation>Avstånd</translation>
</message>
<message>
<location filename="../src/GUI/gui.cpp" line="335"/>
<location filename="../src/GUI/gui.cpp" line="485"/>
<location filename="../src/GUI/gui.cpp" line="932"/>
<location filename="../src/GUI/gui.cpp" line="338"/>
<location filename="../src/GUI/gui.cpp" line="488"/>
<location filename="../src/GUI/gui.cpp" line="951"/>
<source>Time</source>
<translation>Tid</translation>
</message>
@ -883,27 +883,32 @@
<context>
<name>MapList</name>
<message>
<location filename="../src/map/maplist.cpp" line="130"/>
<location filename="../src/map/maplist.cpp" line="111"/>
<source>Supported files</source>
<translation>Filer som stöds</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="131"/>
<location filename="../src/map/maplist.cpp" line="112"/>
<source>Garmin JNX maps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="113"/>
<source>OziExplorer maps</source>
<translation>OziExplorer-kartor</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="132"/>
<location filename="../src/map/maplist.cpp" line="114"/>
<source>TrekBuddy maps/atlases</source>
<translation>TrekBuddy-kartor/-atlaser</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="133"/>
<location filename="../src/map/maplist.cpp" line="115"/>
<source>GeoTIFF images</source>
<translation>GeoTIFF-bilder</translation>
</message>
<message>
<location filename="../src/map/maplist.cpp" line="134"/>
<location filename="../src/map/maplist.cpp" line="116"/>
<source>Online map sources</source>
<translation>Online-kartkällor</translation>
</message>
@ -1004,7 +1009,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="55"/>
<location filename="../src/GUI/optionsdialog.cpp" line="466"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<source>General</source>
<translation>Allmänt</translation>
</message>
@ -1139,6 +1144,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="303"/>
<location filename="../src/GUI/optionsdialog.cpp" line="437"/>
<source>s</source>
<translation>sek</translation>
</message>
@ -1155,7 +1161,7 @@
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="315"/>
<source>Filtering</source>
<translation>Filtrerar</translation>
<translation>Filtrering</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="316"/>
@ -1184,7 +1190,7 @@
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="344"/>
<location filename="../src/GUI/optionsdialog.cpp" line="470"/>
<location filename="../src/GUI/optionsdialog.cpp" line="477"/>
<source>POI</source>
<translation>POI</translation>
</message>
@ -1264,33 +1270,38 @@
<translation>MB</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="435"/>
<location filename="../src/GUI/optionsdialog.cpp" line="441"/>
<source>Image cache size:</source>
<translation>Cashe-storlek för bilder:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="448"/>
<location filename="../src/GUI/optionsdialog.cpp" line="473"/>
<location filename="../src/GUI/optionsdialog.cpp" line="442"/>
<source>Connection timeout:</source>
<translation>Anslutningens tidsgräns:</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="455"/>
<location filename="../src/GUI/optionsdialog.cpp" line="480"/>
<source>System</source>
<translation>System</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="467"/>
<location filename="../src/GUI/optionsdialog.cpp" line="474"/>
<source>Appearance</source>
<translation>Utseende</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="469"/>
<location filename="../src/GUI/optionsdialog.cpp" line="476"/>
<source>Data</source>
<translation>Data</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="471"/>
<location filename="../src/GUI/optionsdialog.cpp" line="478"/>
<source>Print &amp; Export</source>
<translation>Utskrift &amp; Export</translation>
</message>
<message>
<location filename="../src/GUI/optionsdialog.cpp" line="500"/>
<location filename="../src/GUI/optionsdialog.cpp" line="507"/>
<source>Options</source>
<translation>Alternativ</translation>
</message>
@ -1359,28 +1370,28 @@
<context>
<name>ScaleItem</name>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="83"/>
<location filename="../src/GUI/scaleitem.cpp" line="111"/>
<source>mi</source>
<translation>mi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="84"/>
<location filename="../src/GUI/scaleitem.cpp" line="87"/>
<location filename="../src/GUI/scaleitem.cpp" line="112"/>
<location filename="../src/GUI/scaleitem.cpp" line="115"/>
<source>ft</source>
<translation>ft</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="86"/>
<location filename="../src/GUI/scaleitem.cpp" line="114"/>
<source>nmi</source>
<translation>nmi</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="89"/>
<location filename="../src/GUI/scaleitem.cpp" line="117"/>
<source>km</source>
<translation>km</translation>
</message>
<message>
<location filename="../src/GUI/scaleitem.cpp" line="90"/>
<location filename="../src/GUI/scaleitem.cpp" line="118"/>
<source>m</source>
<translation>m</translation>
</message>
@ -1394,7 +1405,7 @@
<translation>Hastighet</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="96"/>
<location filename="../src/GUI/speedgraph.cpp" line="101"/>
<source>km/h</source>
<translation>km/h</translation>
</message>
@ -1429,12 +1440,12 @@
<translation>Tempo</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="90"/>
<location filename="../src/GUI/speedgraph.cpp" line="95"/>
<source>kn</source>
<translation>knop</translation>
</message>
<message>
<location filename="../src/GUI/speedgraph.cpp" line="93"/>
<location filename="../src/GUI/speedgraph.cpp" line="98"/>
<source>mi/h</source>
<translation>mi/h</translation>
</message>
@ -1511,12 +1522,12 @@
<translation>Max</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="76"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="82"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
<location filename="../src/GUI/temperaturegraph.cpp" line="80"/>
<location filename="../src/GUI/temperaturegraph.cpp" line="86"/>
<source>F</source>
<translation>F</translation>
</message>

View File

@ -3,6 +3,7 @@ Modified Airy,7002,6377340.189,299.3249646
Australian National,7003,6378160.0,298.25
Bessel 1841,7004,6377397.155,299.1528128
Bessel 1841 (Norway),7005,6377492.0176,299.1528
Clarke 1858,7007,6378293.645,294.26
Clarke 1866,7008,6378206.4,294.9786982
Clarke 1880 (Palestine),7010,6378300.789,293.466
Clarke 1880 (IGN),7011,6378249.2,293.466021
@ -11,9 +12,17 @@ Everest 1830 (1937 Adjustment),7015,6377276.345,300.8017
Everest 1830 Modified,7018,6377304.063,300.8017
GRS 80,7019,6378137.0,298.257222101
Helmert 1906,7020,6378200.0,298.3
Indonesian National Spheroid,7021,6378160.0,298.247
International 1924,7022,6378388.0,297.0
Krassovsky 1940,7024,6378245.0,298.3
War Office,7029,6378300.0,296.0
South American 1969,7036,6378160.0,298.25
WGS 72,7043,6378135.0,298.26
Everest 1830 (1962 Definition),7044,6377301.243,300.8017255
Everest 1830 (1975 Definition),7045,6377299.151,300.8017255
Bessel 1841 (Namibia),7046,6377483.865,299.1528128
GRS 1967 Modified,7050,6378160.0,298.25
Danish 1876,7051,6377019.27,300.0
Hough 1960,7053,6378270.0,297.0
Clarke 1880 (international foot),7055,6378306.370,293.4663077
PZ-90,7054,6378136.0,298.257839303

1 Airy 1830 7001 6377563.396 299.3249646
3 Australian National 7003 6378160.0 298.25
4 Bessel 1841 7004 6377397.155 299.1528128
5 Bessel 1841 (Norway) 7005 6377492.0176 299.1528
6 Clarke 1858 7007 6378293.645 294.26
7 Clarke 1866 7008 6378206.4 294.9786982
8 Clarke 1880 (Palestine) 7010 6378300.789 293.466
9 Clarke 1880 (IGN) 7011 6378249.2 293.466021
12 Everest 1830 Modified 7018 6377304.063 300.8017
13 GRS 80 7019 6378137.0 298.257222101
14 Helmert 1906 7020 6378200.0 298.3
15 Indonesian National Spheroid 7021 6378160.0 298.247
16 International 1924 7022 6378388.0 297.0
17 Krassovsky 1940 7024 6378245.0 298.3
18 War Office 7029 6378300.0 296.0
19 South American 1969 7036 6378160.0 298.25
20 WGS 72 7043 6378135.0 298.26
21 Everest 1830 (1962 Definition) 7044 6377301.243 300.8017255
22 Everest 1830 (1975 Definition) 7045 6377299.151 300.8017255
23 Bessel 1841 (Namibia) 7046 6377483.865 299.1528128
24 GRS 1967 Modified 7050 6378160.0 298.25
25 Danish 1876 7051 6377019.27 300.0
26 Hough 1960 7053 6378270.0 297.0
27 Clarke 1880 (international foot) 7055 6378306.370 293.4663077
28 PZ-90 7054 6378136.0 298.257839303

View File

@ -1,123 +1,374 @@
Adindan,4201,6201,9122,7012,8901,9603,-162,-12,206
Afgooye,4205,6205,9122,7024,8901,9603,-43,-163,45
Ain el Abd 1970,4204,6204,9122,7022,8901,9603,-150,-251,-2
Anna 1 Astro 1965,4708,6708,9122,7003,8901,9603,-491,-22,435
Arc 1950,4209,6209,9122,7012,8901,9603,-143,-90,-294
Arc 1960,4210,6210,9122,7012,8901,9603,-160,-8,-300
Ascension Island 1958,4712,6712,9122,7022,8901,9603,-207,107,52
Astro B4 Sorol Atoll,4707,6707,9122,7022,8901,9603,114,-116,-333
Astro Beacon 1945,4709,6709,9122,7022,8901,9603,145,75,-272
Astro DOS 71/4,4710,6710,9122,7022,8901,9603,-320,550,-494
Astronomic Stn 1952,4711,6711,9122,7022,8901,9603,124,-234,-25
Australian Geodetic 1966,4202,6202,9122,7003,8901,9603,-133,-48,148
Australian Geodetic 1984,4203,6203,9122,7003,8901,9603,-134,-48,149
Australian Geocentric 1994 (GDA94),4283,6283,9122,7019,8901,9603,0,0,0
Austrian,4312,6312,9122,7004,8901,9603,594,84,471
Bellevue (IGN),4714,6714,9122,7022,8901,9603,-127,-769,472
Bermuda 1957,4216,6216,9122,7008,8901,9603,-73,213,296
Bogota Observatory,4218,6218,9122,7022,8901,9603,307,304,-318
Campo Inchauspe,4221,6221,9122,7022,8901,9603,-148,136,90
Canton Astro 1966,4716,6716,9122,7022,8901,9603,298,-304,-375
Cape,4222,6222,9122,7012,8901,9603,-136,-108,-292
Cape Canaveral,4717,6717,9122,7008,8901,9603,-2,150,181
Carthage,4223,6223,9122,7012,8901,9603,-263,6,431
CH-1903,4149,6149,9122,7004,8901,9603,674.374,15.056,405.343
Chatham 1971,4672,6672,9122,7022,8901,9603,175,-38,113
Chua Astro,4224,6224,9122,7022,8901,9603,-134,229,-29
Corrego Alegre,4225,6225,9122,7022,8901,9603,-206,172,-6
Djakarta (Batavia),4211,6211,9122,7004,8901,9603,-377,681,-50
DOS 1968,,,9122,7022,8901,9603,230,-199,-752
Easter Island 1967,4719,6719,9122,7022,8901,9603,211,147,111
Egypt,4199,6199,9122,7022,8901,9603,-130,-117,-151
ETRS 89,4258,6258,9122,7019,8901,9603,0,0,0
European 1950,4230,6230,9122,7022,8901,9603,-87,-98,-121
European 1950 (Mean France),,,9122,7022,8901,9603,-87,-96,-120
European 1950 (Spain and Portugal),,,9122,7022,8901,9603,-84,-107,-120
European 1979,4668,6668,9122,7022,8901,9603,-86,-98,-119
Finland Hayford,4123,6123,9122,7022,8901,9603,-78,-231,-97
Gandajika Base,4233,6233,9122,7022,8901,9603,-133,-321,50
Geodetic Datum 1949,4272,6272,9122,7022,8901,9603,84,-22,209
GGRS 87,4121,6121,9122,7019,8901,9603,-199.87,74.79,246.62
Guam 1963,4675,6675,9122,7008,8901,9603,-100,-248,259
GUX 1 Astro,4718,6718,9122,7022,8901,9603,252,-209,-751
Hartebeeshoek94,4148,6148,9122,7030,8901,9603,0,0,0
Hermannskogel,3906,1031,9122,7004,8901,9603,653,-212,449
Hjorsey 1955,4658,6658,9122,7022,8901,9603,-73,46,-86
Hong Kong 1963,4739,6739,9122,7022,8901,9603,-156,-271,-189
Hu-Tzu-Shan,4236,6236,9122,7022,8901,9603,-634,-549,-201
Indian Bangladesh,4682,6682,9122,7015,8901,9603,289,734,257
Indian Thailand,4240,6240,9122,7015,8901,9603,214,836,303
Israeli,4281,6281,9122,7010,8901,9603,-235,-85,264
Ireland 1965,4299,6299,9122,7002,8901,9603,506,-122,611
ISTS 073 Astro 1969,4724,6724,9122,7022,8901,9603,208,-435,-229
Johnston Island,4725,6725,9122,7022,8901,9603,191,-77,-204
Kandawala,4244,6244,9122,7015,8901,9603,-97,787,86
Kerguelen Island,4698,6698,9122,7022,8901,9603,145,-187,103
Kertau 1948,4245,6245,9122,7018,8901,9603,-11,851,5
L.C. 5 Astro,4726,6726,9122,7008,8901,9603,42,124,147
Liberia 1964,4251,6251,9122,7012,8901,9603,-90,40,88
Luzon Mindanao,,,9122,7008,8901,9603,-133,-79,-72
Luzon Philippines,4253,6253,9122,7008,8901,9603,-133,-77,-51
Mahe 1971,4256,6256,9122,7012,8901,9603,41,-220,-134
Marco Astro,4616,6616,9122,7022,8901,9603,-289,-124,60
Massawa,4262,6262,9122,7004,8901,9603,639,405,60
Merchich,4261,6261,9122,7012,8901,9603,31,146,47
Midway Astro 1961,4727,6727,9122,7022,8901,9603,912,-58,1227
Minna,4263,6263,9122,7012,8901,9603,-92,-93,122
NAD27 Alaska,,,9122,7008,8901,9603,-5,135,172
NAD27 Bahamas,,,9122,7008,8901,9603,-4,154,178
NAD27 Canada,,,9122,7008,8901,9603,-10,158,187
NAD27 Canal Zone,,,9122,7008,8901,9603,0,125,201
NAD27 Caribbean,,,9122,7008,8901,9603,-3,142,183
NAD27 Central,,,9122,7008,8901,9603,0,125,194
NAD27 CONUS,4267,6267,9122,7008,8901,9603,-8,160,176
NAD27 Cuba,,,9122,7008,8901,9603,-9,152,178
NAD27 Greenland,,,9122,7008,8901,9603,11,114,195
NAD27 Mexico,,,9122,7008,8901,9603,-12,130,190
NAD27 San Salvador,,,9122,7008,8901,9603,1,140,165
NAD83,4269,6269,9122,7019,8901,9603,0,0,0
Nahrwn Masirah Ilnd,,,9122,7012,8901,9603,-247,-148,369
Nahrwn Saudi Arbia,,,9122,7012,8901,9603,-231,-196,482
Nahrwn United Arab,4270,6270,9122,7012,8901,9603,-249,-156,381
Naparima BWI,4271,6271,9122,7022,8901,9603,-2,374,172
NGO1948,4273,6273,9122,7005,8901,9603,315,-217,528
NTF France,4275,6275,9122,7011,8901,9603,-168,-60,320
Norsk,4817,6817,9122,7005,8913,9603,278,93,474
NZGD1949,4272,6272,9122,7022,8901,9603,84,-22,209
NZGD2000,4167,6167,9122,7030,8901,9603,0,0,0
Observatorio 1966,4182,6182,9122,7022,8901,9603,-425,-169,81
Old Egyptian,4229,6229,9122,7020,8901,9603,-130,110,-13
Old Hawaiian,4135,6135,9122,7008,8901,9603,61,-285,-181
Oman,4232,6232,9122,7012,8901,9603,-346,-1,224
Ord Srvy Grt Britn,4277,6277,9122,7001,8901,9603,375,-111,431
Pico De Las Nieves,4728,6728,9122,7022,8901,9603,-307,-92,127
Pitcairn Astro 1967,4729,6729,9122,7022,8901,9603,185,165,42
Potsdam Rauenberg DHDN,4314,6314,9122,7004,8901,9603,606,23,413
Prov So Amrican 1956,4248,6248,9122,7022,8901,9603,-288,175,-376
Prov So Chilean 1963,4254,6254,9122,7022,8901,9603,16,196,93
Puerto Rico,4139,6139,9122,7008,8901,9603,11,72,-101
Pulkovo 1942 (1),4284,6284,9122,7024,8901,9603,28,-130,-95
Pulkovo 1942 (2),,,9122,7024,8901,9603,28,-130,-95
Qatar National,4285,6285,9122,7022,8901,9603,-128,-283,22
Qornoq,4287,6287,9108,7022,8901,9603,164,138,-189
Reunion,4626,6626,9122,7022,8901,9603,94,-948,-1262
Rijksdriehoeksmeting,4289,6289,9122,7004,8901,9603,593,26,478
Rome 1940,4806,6806,9122,7022,8906,9603,-225,-65,9
RT 90,4124,6124,9122,7004,8901,9603,498,-36,568
S42,4179,6179,9122,7024,8901,9603,28,-121,-77
S42 (83),4178,6178,9122,7024,8901,9603,26,-121,-78
Santo (DOS),4730,6730,9122,7022,8901,9603,170,42,84
Sao Braz,4184,6184,9122,7022,8901,9603,-203,141,53
Sapper Hill 1943,4292,6292,9122,7022,8901,9603,-355,16,74
Schwarzeck,4293,6293,9122,7046,8901,9603,616,97,-251
South American 1969,4291,6291,9108,7036,8901,9603,-57,1,-41
Southeast Base,4615,6615,9122,7022,8901,9603,-499,-249,314
Southwest Base,4183,6183,9122,7022,8901,9603,-104,167,-38
Timbalai 1948,4298,6298,9122,7015,8901,9603,-689,691,-46
Tokyo,4301,6301,9122,7004,8901,9603,-128,481,664
Tristan Astro 1968,4734,6734,9122,7022,8901,9603,-632,438,-609
Viti Levu 1916,4731,6731,9122,7012,8901,9603,51,391,-36
Wake-Eniwetok 1960,4732,6732,9122,7053,8901,9603,101,52,-39
WGS 72,4322,6322,9122,7043,8901,9603,0,0,5
Yacare,4309,6309,9122,7022,8901,9603,-155,171,37
Zanderij,4311,6311,9122,7022,8901,9603,-265,120,-358
HD1909,3819,1024,9122,7004,8901,9607,595.48,121.69,515.35,-4.115,2.9383,-0.853,-3.408
TWD97,3824,1026,9122,7019,8901,9603,0,0,0,,,,
IGRS,3889,1029,9122,7019,8901,9603,0,0,0,,,,
Hermannskogel,3906,1031,9122,7004,8901,9603,653,-212,449,,,,
MOLDREF99,4023,1032,9122,7019,8901,9603,0,0,0,,,,
RGRDC 2005,4046,1033,9122,7019,8901,9603,0,0,0,,,,
SREF98,4075,1034,9122,7019,8901,9603,0,0,0,,,,
REGCAN95,4081,1035,9122,7019,8901,9603,0,0,0,,,,
GGRS 87,4121,6121,9122,7019,8901,9603,-199.87,74.79,246.62,,,,
Finland Hayford,4123,6123,9122,7022,8901,9603,-78,-231,-97,,,,
RT 90,4124,6124,9122,7004,8901,9603,498,-36,568,,,,
Samboja,4125,6125,9108,7004,8901,9603,-404.78,685.68,45.47,,,,
Tete,4127,6127,9122,7008,8901,9603,-80,-100,-228,,,,
Observatario,4129,6129,9122,7008,8901,9603,-132,-110,-335,,,,
Moznet,4130,6130,9122,7030,8901,9607,0,0,0,0,0,0,0
Indian 1960,4131,6131,9122,7015,8901,9603,198,881,317,,,,
FD58,4132,6132,9122,7012,8901,9603,-241.54,-163.64,396.06,,,,
EST92,4133,6133,9122,7019,8901,9607,0.055,-0.541,-0.185,-0.0183,0.0003,0.007,-0.014
PSD93,4134,6134,9122,7012,8901,9606,-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006
Old Hawaiian,4135,6135,9122,7008,8901,9603,61,-285,-181,,,,
Puerto Rico,4139,6139,9122,7008,8901,9603,11,72,-101,,,,
NAD83(CSRS98),4140,6140,9108,7019,8901,9603,0,0,0,,,,
Israel 1993,4141,6141,9122,7019,8901,9603,-48,55,52,,,,
Locodjo 1965,4142,6142,9122,7012,8901,9603,-125,53,467,,,,
Abidjan 1987,4143,6143,9122,7012,8901,9603,-124.76,53,466.79,,,,
Kalianpur 1937,4144,6144,9122,7015,8901,9603,214,804,268,,,,
Kalianpur 1962,4145,6145,9122,7044,8901,9603,283,682,231,,,,
Kalianpur 1975,4146,6146,9122,7045,8901,9603,295,736,257,,,,
Hanoi 1972,4147,6147,9122,7024,8901,9603,-17.51,-108.32,-62.39,,,,
Hartebeeshoek94,4148,6148,9122,7030,8901,9603,0,0,0,,,,
CH-1903,4149,6149,9122,7004,8901,9603,674.374,15.056,405.343,,,,
CH1903+,4150,6150,9122,7004,8901,9603,674.374,15.056,405.346,,,,
CHTRF95,4151,6151,9122,7019,8901,9603,0,0,0,,,,
NAD83(HARN),4152,6152,9122,7019,8901,9603,0,0,0,,,,
Rassadiran,4153,6153,9122,7022,8901,9603,-133.63,-157.5,-158.62,,,,
ED50(ED77),4154,6154,9122,7022,8901,9603,-117,-132,-164,,,,
Dabola 1981,4155,6155,9122,7011,8901,9603,-83,37,124,,,,
S-JTSK,4156,6156,9122,7004,8901,9603,589,76,480,,,,
Naparima 1955,4158,6158,9122,7022,8901,9603,-0.465,372.095,171.736,,,,
ELD79,4159,6159,9122,7022,8901,9603,-115.8543,-99.0583,-152.4616,,,,
Pampa del Castillo,4161,6161,9122,7022,8901,9603,27.5,14,186.4,,,,
Yemen NGN96,4163,6163,9122,7030,8901,9603,0,0,0,,,,
South Yemen,4164,6164,9122,7024,8901,9603,-76,-138,67,,,,
Bissau,4165,6165,9122,7022,8901,9603,-173,253,27,,,,
Korean 1995,4166,6166,9122,7030,8901,9603,0,0,0,,,,
NZGD2000,4167,6167,9122,7030,8901,9603,0,0,0,,,,
Accra,4168,6168,9122,7029,8901,9603,-199,32,322,,,,
American Samoa 1962,4169,6169,9122,7008,8901,9603,-115,118,426,,,,
SIRGAS 1995,4170,6170,9122,7019,8901,9603,0,0,0,,,,
RGF93,4171,6171,9122,7019,8901,9603,0,0,0,,,,
POSGAR,4172,6172,9108,7019,8901,9603,0,0,0,,,,
IRENET95,4173,6173,9122,7019,8901,9603,0,0,0,,,,
Sierra Leone 1968,4175,6175,9122,7012,8901,9603,-88,4,101,,,,
Australian Antarctic,4176,6176,9122,7019,8901,9603,0,0,0,,,,
S42 (83),4178,6178,9122,7024,8901,9603,26,-121,-78,,,,
S42,4179,6179,9122,7024,8901,9603,28,-121,-77,,,,
EST97,4180,6180,9122,7019,8901,9603,0,0,0,,,,
Luxembourg 1930,4181,6181,9122,7022,8901,9607,-189.6806,18.3463,-42.7695,0.33746,3.09264,-2.53861,0.4598
Observatorio 1966,4182,6182,9122,7022,8901,9603,-425,-169,81,,,,
Southwest Base,4183,6183,9122,7022,8901,9603,-104,167,-38,,,,
Sao Braz,4184,6184,9122,7022,8901,9603,-203,141,53,,,,
OSNI 1952,4188,6188,9122,7001,8901,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15
REGVEN,4189,6189,9122,7019,8901,9603,0,0,0,,,,
POSGAR 98,4190,6190,9122,7019,8901,9603,0,0,0,,,,
Albanian 1987,4191,6191,9122,7024,8901,9607,-44.183,-0.58,-38.489,-2.3867,-2.7072,3.5196,-8.2703
Douala 1948,4192,6192,9122,7022,8901,9603,-206.1,-174.7,-87.7,,,,
Manoca 1962,4193,6193,9122,7011,8901,9603,-70.9,-151.8,-41.4,,,,
Qornoq 1927,4194,6194,9122,7022,8901,9603,164,138,-189,,,,
Scoresbysund 1952,4195,6195,9122,7022,8901,9606,105,326,-102.5,0,0,0.814,-0.6
Ammassalik 1958,4196,6196,9122,7022,8901,9606,-45,417,-3.5,0,0,0.814,-0.6
Egypt,4199,6199,9122,7022,8901,9603,-130,-117,-151,,,,
Pulkovo 1995,4200,6200,9122,7024,8901,9607,24.47,-130.89,-81.56,0,0,-0.13,-0.22
Adindan,4201,6201,9122,7012,8901,9603,-162,-12,206,,,,
Australian Geodetic 1966,4202,6202,9122,7003,8901,9603,-133,-48,148,,,,
Australian Geodetic 1984,4203,6203,9122,7003,8901,9603,-134,-48,149,,,,
Ain el Abd 1970,4204,6204,9122,7022,8901,9603,-150,-251,-2,,,,
Afgooye,4205,6205,9122,7024,8901,9603,-43,-163,45,,,,
Lisbon,4207,6207,9122,7022,8901,9603,-304.046,-60.576,103.64,,,,
Aratu,4208,6208,9122,7022,8901,9603,-151.99,287.04,-147.45,,,,
Arc 1950,4209,6209,9122,7012,8901,9603,-143,-90,-294,,,,
Arc 1960,4210,6210,9122,7012,8901,9603,-160,-8,-300,,,,
Djakarta (Batavia),4211,6211,9122,7004,8901,9603,-377,681,-50,,,,
Barbados 1938,4212,6212,9122,7012,8901,9603,31.95,300.99,419.19,,,,
Beduaram,4213,6213,9122,7011,8901,9603,-106,-87,188,,,,
Beijing 1954,4214,6214,9122,7024,8901,9603,15.8,-154.4,-82.3,,,,
Bermuda 1957,4216,6216,9122,7008,8901,9603,-73,213,296,,,,
Bogota Observatory,4218,6218,9122,7022,8901,9603,307,304,-318,,,,
Bukit Rimpah,4219,6219,9122,7004,8901,9603,-384,664,-48,,,,
Camacupa,4220,6220,9122,7012,8901,9603,-50.9,-347.6,-231,,,,
Campo Inchauspe,4221,6221,9122,7022,8901,9603,-148,136,90,,,,
Cape,4222,6222,9122,7012,8901,9603,-136,-108,-292,,,,
Carthage,4223,6223,9122,7012,8901,9603,-263,6,431,,,,
Chua Astro,4224,6224,9122,7022,8901,9603,-134,229,-29,,,,
Corrego Alegre,4225,6225,9122,7022,8901,9603,-206,172,-6,,,,
Deir ez Zor,4227,6227,9122,7011,8901,9603,-190.421,8.532,238.69,,,,
Old Egyptian,4229,6229,9122,7020,8901,9603,-130,110,-13,,,,
European 1950,4230,6230,9122,7022,8901,9603,-87,-98,-121,,,,
ED87,4231,6231,9122,7022,8901,9606,-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218
Oman,4232,6232,9122,7012,8901,9603,-346,-1,224,,,,
Gandajika Base,4233,6233,9122,7022,8901,9603,-133,-321,50,,,,
Hu-Tzu-Shan,4236,6236,9122,7022,8901,9603,-634,-549,-201,,,,
HD72,4237,6237,9122,7036,8901,9603,52.17,-71.82,-14.9,,,,
ID74,4238,6238,9122,7021,8901,9603,-24,-15,5,,,,
Indian 1954,4239,6239,9122,7015,8901,9603,217,823,299,,,,
Indian Thailand,4240,6240,9122,7015,8901,9603,214,836,303,,,,
JAD69,4242,6242,9122,7008,8901,9603,70,207,389.5,,,,
Kandawala,4244,6244,9122,7015,8901,9603,-97,787,86,,,,
Kertau 1948,4245,6245,9122,7018,8901,9603,-11,851,5,,,,
KOC,4246,6246,9122,7012,8901,9603,-294.7,-200.1,525.5,,,,
La Canoa,4247,6247,9122,7022,8901,9603,-273.5,110.6,-357.9,,,,
Prov So Amrican 1956,4248,6248,9122,7022,8901,9603,-288,175,-376,,,,
Leigon,4250,6250,9122,7012,8901,9603,-130,29,364,,,,
Liberia 1964,4251,6251,9122,7012,8901,9603,-90,40,88,,,,
Luzon Philippines,4253,6253,9122,7008,8901,9603,-133,-77,-51,,,,
Prov So Chilean 1963,4254,6254,9122,7022,8901,9603,16,196,93,,,,
Herat North,4255,6255,9122,7022,8901,9603,-333,-222,114,,,,
Mahe 1971,4256,6256,9122,7012,8901,9603,41,-220,-134,,,,
Makassar,4257,6257,9122,7004,8901,9603,-587.8,519.75,145.76,,,,
ETRS 89,4258,6258,9122,7019,8901,9603,0,0,0,,,,
Malongo 1987,4259,6259,9122,7022,8901,9603,-254.1,-5.36,-100.29,,,,
Manoca,4260,6260,9108,7012,8901,9603,-70.9,-151.8,-41.4,,,,
Merchich,4261,6261,9122,7012,8901,9603,31,146,47,,,,
Massawa,4262,6262,9122,7004,8901,9603,639,405,60,,,,
Minna,4263,6263,9122,7012,8901,9603,-92,-93,122,,,,
Mhast,4264,6264,9122,7022,8901,9603,-252.95,-4.11,-96.38,,,,
Monte Mario,4265,6265,9122,7022,8901,9606,-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68
M'poraloko,4266,6266,9122,7011,8901,9603,-74,-130,42,,,,
NAD27 CONUS,4267,6267,9122,7008,8901,9603,-8,160,176,,,,
NAD83,4269,6269,9122,7019,8901,9603,0,0,0,,,,
Nahrwn United Arab,4270,6270,9122,7012,8901,9603,-249,-156,381,,,,
Naparima BWI,4271,6271,9122,7022,8901,9603,-2,374,172,,,,
Geodetic Datum 1949,4272,6272,9122,7022,8901,9603,84,-22,209,,,,
NZGD1949,4272,6272,9122,7022,8901,9603,84,-22,209,,,,
NGO1948,4273,6273,9122,7005,8901,9603,315,-217,528,,,,
Datum 73,4274,6274,9122,7022,8901,9603,-223.237,110.193,36.649,,,,
NTF France,4275,6275,9122,7011,8901,9603,-168,-60,320,,,,
Ord Srvy Grt Britn,4277,6277,9122,7001,8901,9603,375,-111,431,,,,
Israeli,4281,6281,9122,7010,8901,9603,-235,-85,264,,,,
Pointe Noire,4282,6282,9122,7011,8901,9603,-148,51,-291,,,,
Australian Geocentric 1994 (GDA94),4283,6283,9122,7019,8901,9603,0,0,0,,,,
Pulkovo 1942 (1),4284,6284,9122,7024,8901,9603,28,-130,-95,,,,
Qatar National,4285,6285,9122,7022,8901,9603,-128,-283,22,,,,
Qornoq,4287,6287,9108,7022,8901,9603,164,138,-189,,,,
Rijksdriehoeksmeting,4289,6289,9122,7004,8901,9603,593,26,478,,,,
South American 1969,4291,6291,9108,7036,8901,9603,-57,1,-41,,,,
Sapper Hill 1943,4292,6292,9122,7022,8901,9603,-355,16,74,,,,
Schwarzeck,4293,6293,9122,7046,8901,9603,616,97,-251,,,,
Segora,4294,6294,9108,7004,8901,9603,-403,684,41,,,,
Tananarive,4297,6297,9122,7022,8901,9603,-189,-242,-91,,,,
Timbalai 1948,4298,6298,9122,7015,8901,9603,-689,691,-46,,,,
Ireland 1965,4299,6299,9122,7002,8901,9603,506,-122,611,,,,
TM75,4300,6300,9122,7002,8901,9606,482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15
Tokyo,4301,6301,9122,7004,8901,9603,-128,481,664,,,,
Trinidad 1903,4302,6302,9122,7007,8901,9603,-61.702,284.488,472.052,,,,
Voirol 1875,4304,6304,9122,7011,8901,9603,-73,-247,227,,,,
Nord Sahara 1959,4307,6307,9122,7012,8901,9606,-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547
Yacare,4309,6309,9122,7022,8901,9603,-155,171,37,,,,
Yoff,4310,6310,9122,7011,8901,9603,-30,190,89,,,,
Zanderij,4311,6311,9122,7022,8901,9603,-265,120,-358,,,,
Austrian,4312,6312,9122,7004,8901,9603,594,84,471,,,,
Belge 1972,4313,6313,9122,7022,8901,9607,-106.8686,52.2978,-103.7239,-0.3366,0.457,-1.8422,-1.2747
Potsdam Rauenberg DHDN,4314,6314,9122,7004,8901,9603,606,23,413,,,,
Conakry 1905,4315,6315,9122,7011,8901,9603,-23,259,-9,,,,
Dealul Piscului 1930,4316,6316,9122,7022,8901,9603,103.25,-100.4,-307.19,,,,
Dealul Piscului 1970,4317,6317,9122,7024,8901,9603,28,-121,-77,,,,
NGN,4318,6318,9122,7030,8901,9603,-3.2,-5.7,2.8,,,,
KUDAMS,4319,6319,9122,7019,8901,9603,-20.8,11.3,2.4,,,,
WGS 72,4322,6322,9122,7043,8901,9603,0,0,5,,,,
WGS 72BE,4324,6324,9122,7043,8901,9606,0,0,1.9,0,0,0.814,-0.38
RGSPM06,4463,1038,9122,7019,8901,9603,0,0,0,,,,
RGM04,4470,1036,9122,7019,8901,9603,0,0,0,,,,
Cadastre 1997,4475,1037,9122,7022,8901,9603,-381.788,-57.501,-256.673,,,,
Mexico ITRF92,4483,1042,9122,7019,8901,9603,0,0,0,,,,
RRAF 1991,4558,1047,9122,7019,8901,9603,0,0,0,,,,
Antigua 1943,4601,6601,9122,7012,8901,9603,-255,-15,71,,,,
Dominica 1945,4602,6602,9122,7012,8901,9603,725,685,536,,,,
Grenada 1953,4603,6603,9122,7012,8901,9603,72,213.7,93,,,,
Montserrat 1958,4604,6604,9122,7012,8901,9603,174,359,365,,,,
St. Kitts 1955,4605,6605,9122,7012,8901,9603,9,183,236,,,,
St. Lucia 1955,4606,6606,9122,7012,8901,9603,-149,128,296,,,,
St. Vincent 1945,4607,6607,9122,7012,8901,9603,195.671,332.517,274.607,,,,
Hong Kong 1980,4611,6611,9122,7022,8901,9606,-162.619,-276.959,-161.764,0.067753,-2.243649,-1.158827,-1.094246
JGD2000,4612,6612,9122,7019,8901,9603,0,0,0,,,,
Segara,4613,6613,9122,7004,8901,9603,-403,684,41,,,,
QND95,4614,6614,9122,7022,8901,9606,-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065
Southeast Base,4615,6615,9122,7022,8901,9603,-499,-249,314,,,,
Marco Astro,4616,6616,9122,7022,8901,9603,-289,-124,60,,,,
NAD83(CSRS),4617,6140,9122,7019,8901,9603,0,0,0,,,,
SAD69,4618,6618,9122,7050,8901,9603,-66.87,4.37,-38.52,,,,
SWEREF99,4619,6619,9122,7019,8901,9603,0,0,0,,,,
Point 58,4620,6620,9122,7012,8901,9603,-106,-129,165,,,,
Fort Marigot,4621,6621,9122,7022,8901,9603,137,248,-430,,,,
Guadeloupe 1948,4622,6622,9122,7022,8901,9603,-467,-16,-300,,,,
CSG67,4623,6623,9122,7022,8901,9603,-186,230,110,,,,
RGFG95,4624,6624,9122,7019,8901,9603,0,0,0,,,,
Martinique 1938,4625,6625,9122,7022,8901,9603,186,482,151,,,,
Reunion,4626,6626,9122,7022,8901,9603,94,-948,-1262,,,,
RGR92,4627,6627,9122,7019,8901,9603,0,0,0,,,,
Tahiti 52,4628,6628,9122,7022,8901,9603,162,117,154,,,,
Tahaa 54,4629,6629,9122,7022,8901,9607,72.438,345.918,79.486,-1.6045,-0.8823,-0.5565,1.3746
IGN72 Nuku Hiva,4630,6630,9122,7022,8901,9603,84,274,65,,,,
K0 1949,4631,6631,9122,7022,8901,9603,145,-187,103,,,,
Combani 1950,4632,6632,9122,7022,8901,9603,-382,-59,-262,,,,
IGN56 Lifou,4633,6633,9122,7022,8901,9603,335.47,222.58,-230.94,,,,
IGN72 Grand Terre,4634,6634,9108,7022,8901,9603,-13,-348,292,,,,
ST87 Ouvea,4635,6635,9122,7022,8901,9606,-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798
Petrels 1972,4636,6636,9122,7022,8901,9603,365,194,166,,,,
Perroud 1950,4637,6637,9122,7022,8901,9603,325,154,172,,,,
Saint Pierre et Miquelon 1950,4638,6638,9122,7008,8901,9603,30,430,368,,,,
MOP78,4639,6639,9122,7022,8901,9603,253,-132,-127,,,,
RRAF 1991,4640,6640,9122,7030,8901,9603,0,0,0,,,,
IGN53 Mare,4641,6641,9122,7022,8901,9603,287.58,177.78,-135.41,,,,
ST84 Ile des Pins,4642,6642,9122,7022,8901,9603,-13,-348,292,,,,
ST71 Belep,4643,6643,9122,7022,8901,9606,-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002
NEA74 Noumea,4644,6644,9122,7022,8901,9603,-10.18,-350.43,291.37,,,,
RGNC 1991,4645,6645,9122,7022,8901,9603,0,0,0,,,,
Grand Comoros,4646,6646,9122,7022,8901,9603,-963,510,-359,,,,
Reykjavik 1900,4657,6657,9122,7051,8901,9603,-28,199,5,,,,
Hjorsey 1955,4658,6658,9122,7022,8901,9603,-73,46,-86,,,,
ISN93,4659,6659,9122,7019,8901,9603,0,0,0,,,,
Helle 1954,4660,6660,9122,7022,8901,9606,982.6087,552.753,-540.873,6.6816266,-31.6114924,-19.84816,16.805
LKS92,4661,6661,9122,7019,8901,9603,0,0,0,,,,
IGN72 Grande Terre,4662,6634,9122,7022,8901,9603,-11.64,-348.6,291.98,,,,
Porto Santo 1995,4663,6663,9122,7022,8901,9603,-502.862,-247.438,312.724,,,,
Azores Oriental 1995,4664,6664,9122,7022,8901,9603,-204.619,140.176,55.226,,,,
Azores Central 1995,4665,6665,9122,7022,8901,9603,-106.226,166.366,-37.893,,,,
Lisbon 1890,4666,6666,9122,7004,8901,9603,508.088,-191.042,565.223,,,,
IKBD-92,4667,6667,9122,7030,8901,9603,0,0,0,,,,
European 1979,4668,6668,9122,7022,8901,9603,-86,-98,-119,,,,
LKS94,4669,6126,9122,7019,8901,9603,0,0,0,,,,
IGM95,4670,6670,9122,7030,8901,9603,0,0,0,,,,
Chatham 1971,4672,6672,9122,7022,8901,9603,175,-38,113,,,,
Chatham Islands 1979,4673,6673,9122,7022,8901,9607,174.05,-25.49,112.57,0,0,-0.554,0.2263
SIRGAS 2000,4674,6674,9122,7019,8901,9603,0,0,0,,,,
Guam 1963,4675,6675,9122,7008,8901,9603,-100,-248,259,,,,
Lao 1997,4678,6678,9122,7024,8901,9603,44.585,-131.212,-39.544,,,,
Jouik 1961,4679,6679,9122,7012,8901,9603,-80.01,253.26,291.19,,,,
Nouakchott 1965,4680,6680,9122,7012,8901,9603,124.5,-63.5,-281,,,,
Indian Bangladesh,4682,6682,9122,7015,8901,9603,289,734,257,,,,
PRS92,4683,6683,9122,7008,8901,9607,-127.62,-67.24,-47.04,3.068,-4.903,-1.578,-1.06
Gan 1970,4684,6684,9122,7022,8901,9603,-133,-321,50,,,,
MAGNA-SIRGAS,4686,6686,9122,7019,8901,9603,0,0,0,,,,
RGPF,4687,6687,9122,7019,8901,9607,0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093
Fatu Iva 72,4688,6688,9122,7022,8901,9607,347.103,1078.125,2623.922,33.8875,-70.6773,9.3943,186.074
IGN63 Hiva Oa,4689,6689,9122,7022,8901,9607,410.721,55.049,80.746,-2.5779,-2.3514,-0.6664,17.3311
Tahiti 79,4690,6690,9122,7022,8901,9607,221.525,152.948,176.768,2.3847,1.3896,0.877,11.4741
Moorea 87,4691,6691,9122,7022,8901,9607,215.525,149.593,176.229,3.2624,1.692,1.1571,10.4773
Maupiti 83,4692,6692,9122,7022,8901,9603,217.037,86.959,23.956,,,,
Nakhl-e Ghanem,4693,6693,9122,7030,8901,9603,0,-0.15,0.68,,,,
POSGAR 94,4694,6694,9122,7030,8901,9603,0,0,0,,,,
Katanga 1955,4695,6695,9122,7008,8901,9603,-103.746,-9.614,-255.95,,,,
Kerguelen Island,4698,6698,9122,7022,8901,9603,145,-187,103,,,,
Le Pouce 1934,4699,6699,9122,7012,8901,9603,-770.1,158.4,-498.2,,,,
IGCB 1955,4701,6701,9122,7012,8901,9603,-79.9,-158,-168.9,,,,
Mauritania 1999,4702,6702,9122,7019,8901,9603,0,0,0,,,,
Egypt Gulf of Suez S-650 TL,4706,6706,9122,7020,8901,9603,-146.21,112.63,4.05,,,,
Astro B4 Sorol Atoll,4707,6707,9122,7022,8901,9603,114,-116,-333,,,,
Anna 1 Astro 1965,4708,6708,9122,7003,8901,9603,-491,-22,435,,,,
Astro Beacon 1945,4709,6709,9122,7022,8901,9603,145,75,-272,,,,
Astro DOS 71/4,4710,6710,9122,7022,8901,9603,-320,550,-494,,,,
Astronomic Stn 1952,4711,6711,9122,7022,8901,9603,124,-234,-25,,,,
Ascension Island 1958,4712,6712,9122,7022,8901,9603,-207,107,52,,,,
Ayabelle Lighthouse,4713,6713,9122,7012,8901,9603,-77,-128,142,,,,
Bellevue (IGN),4714,6714,9122,7022,8901,9603,-127,-769,472,,,,
Camp Area Astro,4715,6715,9122,7022,8901,9603,-104,-129,239,,,,
Canton Astro 1966,4716,6716,9122,7022,8901,9603,298,-304,-375,,,,
Cape Canaveral,4717,6717,9122,7008,8901,9603,-2,150,181,,,,
GUX 1 Astro,4718,6718,9122,7022,8901,9603,252,-209,-751,,,,
Easter Island 1967,4719,6719,9122,7022,8901,9603,211,147,111,,,,
Fiji 1986,4720,6720,9122,7043,8901,9606,0,0,4.5,0,0,0.554,0.2263
Fiji 1956,4721,6721,9122,7022,8901,9603,265.025,384.929,-194.046,,,,
South Georgia 1968,4722,6722,9122,7022,8901,9603,-794,119,-298,,,,
GCGD59,4723,6723,9122,7008,8901,9607,-179.483,-69.379,-27.584,7.862,-8.163,-6.042,-13.925
ISTS 073 Astro 1969,4724,6724,9122,7022,8901,9603,208,-435,-229,,,,
Johnston Island,4725,6725,9122,7022,8901,9603,191,-77,-204,,,,
L.C. 5 Astro,4726,6726,9122,7008,8901,9603,42,124,147,,,,
Midway Astro 1961,4727,6727,9122,7022,8901,9603,912,-58,1227,,,,
Pico De Las Nieves,4728,6728,9122,7022,8901,9603,-307,-92,127,,,,
Pitcairn Astro 1967,4729,6729,9122,7022,8901,9603,185,165,42,,,,
Santo (DOS),4730,6730,9122,7022,8901,9603,170,42,84,,,,
Viti Levu 1916,4731,6731,9122,7012,8901,9603,51,391,-36,,,,
Wake-Eniwetok 1960,4732,6732,9122,7053,8901,9603,101,52,-39,,,,
Wake Island 1952,4733,6733,9122,7022,8901,9603,276,-57,149,,,,
Tristan Astro 1968,4734,6734,9122,7022,8901,9603,-632,438,-609,,,,
Kusaie 1951,4735,6735,9122,7022,8901,9603,647,1777,-1124,,,,
Deception Island,4736,6736,9122,7012,8901,9603,260,12,-147,,,,
Korea 2000,4737,6737,9122,7019,8901,9603,0,0,0,,,,
Hong Kong 1963,4739,6739,9122,7022,8901,9603,-156,-271,-189,,,,
PZ-90,4740,6740,9122,7054,8901,9607,0,0,1.5,0,0,-0.076,0
Karbala 1979,4743,6743,9122,7012,8901,9603,70.995,-335.916,262.898,,,,
Nahrwan 1934,4744,6744,9122,7012,8901,9603,-242.2,-144.9,370.3,,,,
GR96,4747,6747,9122,7019,8901,9603,0,0,0,,,,
Vanua Levu 1915,4748,6748,9122,7055,8901,9603,51,391,-36,,,,
RGNC91-93,4749,6749,9122,7019,8901,9603,0,0,0,,,,
ST87 Ouvea,4750,6750,9122,7030,8901,9603,-56.263,16.136,-22.856,,,,
Viti Levu 1912,4752,6752,9122,7055,8901,9603,98,390,-22,,,,
LGD2006,4754,6754,9122,7022,8901,9603,-208.4058,-109.8777,-2.5764,,,,
DGN95,4755,6755,9122,7030,8901,9603,0,0,0,,,,
VN-2000,4756,6756,9122,7030,8901,9607,-191.90441429,-39.30318279,-111.45032835,-0.00928836,0.01975479,-0.00427372,0.252906278
JAD2001,4758,6758,9122,7030,8901,9603,0,0,0,,,,
NAD83(NSRS2007),4759,6759,9122,7019,8901,9603,0,0,0,,,,
HTRS96,4761,6761,9122,7019,8901,9603,0,0,0,,,,
BDA2000,4762,6762,9122,7030,8901,9603,0,0,0,,,,
Pitcairn 2006,4763,6763,9122,7030,8901,9603,0,0,0,,,,
RSRGD2000,4764,6764,9122,7019,8901,9603,0,0,0,,,,
Slovenia 1996,4765,6765,9122,7019,8901,9603,0,0,0,,,,
Bern 1898 (Bern),4801,6801,9122,7004,8907,9603,674.374,15.056,405.346,,,,
Bogota 1975 (Bogota),4802,6802,9122,7022,8904,9603,307,304,-318,,,,
Lisbon (Lisbon),4803,6803,9122,7022,8902,9603,-304.046,-60.576,103.64,,,,
Makassar (Jakarta),4804,6804,9122,7004,8908,9603,-587.8,519.75,145.76,,,,
MGI (Ferro),4805,6805,9122,7004,8909,9603,682,-203,480,,,,
Rome 1940,4806,6806,9122,7022,8906,9603,-225,-65,9,,,,
NTF (Paris),4807,6807,9105,7011,8903,9603,-168,-60,320,,,,
Tananarive (Paris),4810,6810,9105,7022,8903,9603,-189,-242,-91,,,,
Voirol 1875 (Paris),4811,6811,9105,7011,8903,9603,-73,-247,227,,,,
Batavia (Jakarta),4813,6813,9122,7004,8908,9603,-377,681,-50,,,,
Carthage (Paris),4816,6816,9105,7011,8903,9603,-263,6,431,,,,
Norsk,4817,6817,9122,7005,8913,9603,278,93,474,,,,
S-JTSK (Ferro),4818,6818,9122,7004,8909,9603,589,76,480,,,,
Nord Sahara 1959 (Paris),4819,6819,9105,7012,8903,9606,-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547
Segara (Jakarta),4820,6820,9122,7004,8908,9603,-403,684,41,,,,
Lisbon 1890 (Lisbon),4904,6904,9122,7004,8902,9603,508.088,-191.042,565.223,,,,
PTRA08,5013,1041,9122,7019,8901,9603,0,0,0,,,,
S-JTSK/05,5228,1052,9122,7004,8901,9607,572.213,85.334,461.94,-4.9732,-1.529,-5.2484,3.5378
S-JTSK/05 (Ferro),5229,1055,9122,7004,8909,9607,572.213,85.334,461.94,-4.9732,-1.529,-5.2484,3.5378
SLD99,5233,1053,9122,7015,8901,9607,-0.293,766.95,87.713,-0.195704,-1.695068,-3.473016,-0.039338
GDBD2009,5246,1056,9122,7019,8901,9603,0,0,0,,,,
TUREF,5252,1057,9122,7019,8901,9603,0,0,0,,,,
DRUKREF 03,5264,1058,9122,7019,8901,9603,0,0,0,,,,
ISN2004,5324,1060,9122,7019,8901,9603,0,0,0,,,,
POSGAR 2007,5340,1062,9122,7019,8901,9603,0,0,0,,,,
MARGEN,5354,1063,9122,7019,8901,9603,0,0,0,,,,
SIRGAS-Chile,5360,1064,9122,7019,8901,9603,0,0,0,,,,
CR05,5365,1065,9122,7030,8901,9603,0,0,0,,,,
MACARIO SOLIS,5371,1066,9122,7019,8901,9603,0,0,0,,,,
Peru96,5373,1067,9122,7019,8901,9603,0,0,0,,,,
SIRGAS-ROU98,5381,1068,9122,7030,8901,9603,0,0,0,,,,
SIRGAS_ES2007.8,5393,1069,9122,7019,8901,9603,0,0,0,,,,
Ocotepeque 1935,5451,1070,9122,7008,8901,9603,205,96,-98,,,,
RGAF09,5489,1073,9122,7019,8901,9603,0,0,0,,,,
SAD69(96),5527,1075,9122,7050,8901,9603,-67.35,3.88,-38.22,,,,
PNG94,5546,1076,9122,7019,8901,9603,0,0,0,,,,
UCS-2000,5561,1077,9122,7024,8901,9607,25,-141,-78.5,0,-0.35,-0.736,0
FEH2010,5593,1078,9122,7019,8901,9603,0,0,0,,,,
CIGD11,6135,1100,9122,7019,8901,9603,0,0,0,,,,
Nepal 1981,6207,1111,9122,7015,8901,9603,293.17,726.18,245.36,,,,
CGRS93,6311,1112,9122,7030,8901,9607,8.846,-4.394,-1.122,0.00237,0.146528,-0.130428,0.783926
Mexico ITRF2008,6365,1120,9122,7019,8901,9603,0,0,0,,,,
RDN2008,6706,1132,9122,7019,8901,9603,0,0,0,,,,
Aden 1925,6881,1135,9122,7012,8901,9603,-24,-203,268,,,,
Bekaa Valley 1920,6882,1137,9122,7012,8901,9603,-183,-15,273,,,,
Bioko,6883,1136,9122,7022,8901,9603,-235,-110,393,,,,
South East Island 1943,6892,1138,9122,7012,8901,9603,-43.685,-179.785,-267.721,,,,
Gambia,6894,1139,9122,7012,8901,9603,-63,176,185,,,,
ONGD14,7373,1147,9122,7019,8901,9603,0,0,0,,,,
St. Helena Tritan,7881,1173,9122,7030,8901,9603,-0.077,0.079,0.086,,,,
SHGD2015,7886,1174,9122,7019,8901,9603,0,0,0,,,,
DOS 1968,,,9122,7022,8901,9603,230,-199,-752,,,,
European 1950 (Mean France),,,9122,7022,8901,9603,-87,-96,-120,,,,
European 1950 (Spain and Portugal),,,9122,7022,8901,9603,-84,-107,-120,,,,
Luzon Mindanao,,,9122,7008,8901,9603,-133,-79,-72,,,,
NAD27 Alaska,,,9122,7008,8901,9603,-5,135,172,,,,
NAD27 Bahamas,,,9122,7008,8901,9603,-4,154,178,,,,
NAD27 Canada,,,9122,7008,8901,9603,-10,158,187,,,,
NAD27 Canal Zone,,,9122,7008,8901,9603,0,125,201,,,,
NAD27 Caribbean,,,9122,7008,8901,9603,-3,142,183,,,,
NAD27 Central,,,9122,7008,8901,9603,0,125,194,,,,
NAD27 Cuba,,,9122,7008,8901,9603,-9,152,178,,,,
NAD27 Greenland,,,9122,7008,8901,9603,11,114,195,,,,
NAD27 Mexico,,,9122,7008,8901,9603,-12,130,190,,,,
NAD27 San Salvador,,,9122,7008,8901,9603,1,140,165,,,,
Nahrwn Masirah Ilnd,,,9122,7012,8901,9603,-247,-148,369,,,,
Nahrwn Saudi Arbia,,,9122,7012,8901,9603,-231,-196,482,,,,
Pulkovo 1942 (2),,,9122,7024,8901,9603,28,-130,-95,,,,

1 Adindan HD1909 4201 3819 6201 1024 9122 7012 7004 8901 9603 9607 -162 595.48 -12 121.69 206 515.35 -4.115 2.9383 -0.853 -3.408
2 Afgooye TWD97 4205 3824 6205 1026 9122 7024 7019 8901 9603 -43 0 -163 0 45 0
3 Ain el Abd 1970 IGRS 4204 3889 6204 1029 9122 7022 7019 8901 9603 -150 0 -251 0 -2 0
4 Anna 1 Astro 1965 Hermannskogel 4708 3906 6708 1031 9122 7003 7004 8901 9603 -491 653 -22 -212 435 449
5 Arc 1950 MOLDREF99 4209 4023 6209 1032 9122 7012 7019 8901 9603 -143 0 -90 0 -294 0
6 Arc 1960 RGRDC 2005 4210 4046 6210 1033 9122 7012 7019 8901 9603 -160 0 -8 0 -300 0
7 Ascension Island 1958 SREF98 4712 4075 6712 1034 9122 7022 7019 8901 9603 -207 0 107 0 52 0
8 Astro B4 Sorol Atoll REGCAN95 4707 4081 6707 1035 9122 7022 7019 8901 9603 114 0 -116 0 -333 0
9 Astro Beacon 1945 GGRS 87 4709 4121 6709 6121 9122 7022 7019 8901 9603 145 -199.87 75 74.79 -272 246.62
10 Astro DOS 71/4 Finland Hayford 4710 4123 6710 6123 9122 7022 7022 8901 9603 -320 -78 550 -231 -494 -97
11 Astronomic Stn 1952 RT 90 4711 4124 6711 6124 9122 7022 7004 8901 9603 124 498 -234 -36 -25 568
12 Australian Geodetic 1966 Samboja 4202 4125 6202 6125 9122 9108 7003 7004 8901 9603 -133 -404.78 -48 685.68 148 45.47
13 Australian Geodetic 1984 Tete 4203 4127 6203 6127 9122 7003 7008 8901 9603 -134 -80 -48 -100 149 -228
14 Australian Geocentric 1994 (GDA94) Observatario 4283 4129 6283 6129 9122 7019 7008 8901 9603 0 -132 0 -110 0 -335
15 Austrian Moznet 4312 4130 6312 6130 9122 7004 7030 8901 9603 9607 594 0 84 0 471 0 0 0 0 0
16 Bellevue (IGN) Indian 1960 4714 4131 6714 6131 9122 7022 7015 8901 9603 -127 198 -769 881 472 317
17 Bermuda 1957 FD58 4216 4132 6216 6132 9122 7008 7012 8901 9603 -73 -241.54 213 -163.64 296 396.06
18 Bogota Observatory EST92 4218 4133 6218 6133 9122 7022 7019 8901 9603 9607 307 0.055 304 -0.541 -318 -0.185 -0.0183 0.0003 0.007 -0.014
19 Campo Inchauspe PSD93 4221 4134 6221 6134 9122 7022 7012 8901 9603 9606 -148 -180.624 136 -225.516 90 173.919 -0.81 -1.898 8.336 16.71006
20 Canton Astro 1966 Old Hawaiian 4716 4135 6716 6135 9122 7022 7008 8901 9603 298 61 -304 -285 -375 -181
21 Cape Puerto Rico 4222 4139 6222 6139 9122 7012 7008 8901 9603 -136 11 -108 72 -292 -101
22 Cape Canaveral NAD83(CSRS98) 4717 4140 6717 6140 9122 9108 7008 7019 8901 9603 -2 0 150 0 181 0
23 Carthage Israel 1993 4223 4141 6223 6141 9122 7012 7019 8901 9603 -263 -48 6 55 431 52
24 CH-1903 Locodjo 1965 4149 4142 6149 6142 9122 7004 7012 8901 9603 674.374 -125 15.056 53 405.343 467
25 Chatham 1971 Abidjan 1987 4672 4143 6672 6143 9122 7022 7012 8901 9603 175 -124.76 -38 53 113 466.79
26 Chua Astro Kalianpur 1937 4224 4144 6224 6144 9122 7022 7015 8901 9603 -134 214 229 804 -29 268
27 Corrego Alegre Kalianpur 1962 4225 4145 6225 6145 9122 7022 7044 8901 9603 -206 283 172 682 -6 231
28 Djakarta (Batavia) Kalianpur 1975 4211 4146 6211 6146 9122 7004 7045 8901 9603 -377 295 681 736 -50 257
29 DOS 1968 Hanoi 1972 4147 6147 9122 7022 7024 8901 9603 230 -17.51 -199 -108.32 -752 -62.39
30 Easter Island 1967 Hartebeeshoek94 4719 4148 6719 6148 9122 7022 7030 8901 9603 211 0 147 0 111 0
31 Egypt CH-1903 4199 4149 6199 6149 9122 7022 7004 8901 9603 -130 674.374 -117 15.056 -151 405.343
32 ETRS 89 CH1903+ 4258 4150 6258 6150 9122 7019 7004 8901 9603 0 674.374 0 15.056 0 405.346
33 European 1950 CHTRF95 4230 4151 6230 6151 9122 7022 7019 8901 9603 -87 0 -98 0 -121 0
34 European 1950 (Mean France) NAD83(HARN) 4152 6152 9122 7022 7019 8901 9603 -87 0 -96 0 -120 0
35 European 1950 (Spain and Portugal) Rassadiran 4153 6153 9122 7022 7022 8901 9603 -84 -133.63 -107 -157.5 -120 -158.62
36 European 1979 ED50(ED77) 4668 4154 6668 6154 9122 7022 7022 8901 9603 -86 -117 -98 -132 -119 -164
37 Finland Hayford Dabola 1981 4123 4155 6123 6155 9122 7022 7011 8901 9603 -78 -83 -231 37 -97 124
38 Gandajika Base S-JTSK 4233 4156 6233 6156 9122 7022 7004 8901 9603 -133 589 -321 76 50 480
39 Geodetic Datum 1949 Naparima 1955 4272 4158 6272 6158 9122 7022 7022 8901 9603 84 -0.465 -22 372.095 209 171.736
40 GGRS 87 ELD79 4121 4159 6121 6159 9122 7019 7022 8901 9603 -199.87 -115.8543 74.79 -99.0583 246.62 -152.4616
41 Guam 1963 Pampa del Castillo 4675 4161 6675 6161 9122 7008 7022 8901 9603 -100 27.5 -248 14 259 186.4
42 GUX 1 Astro Yemen NGN96 4718 4163 6718 6163 9122 7022 7030 8901 9603 252 0 -209 0 -751 0
43 Hartebeeshoek94 South Yemen 4148 4164 6148 6164 9122 7030 7024 8901 9603 0 -76 0 -138 0 67
44 Hermannskogel Bissau 3906 4165 1031 6165 9122 7004 7022 8901 9603 653 -173 -212 253 449 27
45 Hjorsey 1955 Korean 1995 4658 4166 6658 6166 9122 7022 7030 8901 9603 -73 0 46 0 -86 0
46 Hong Kong 1963 NZGD2000 4739 4167 6739 6167 9122 7022 7030 8901 9603 -156 0 -271 0 -189 0
47 Hu-Tzu-Shan Accra 4236 4168 6236 6168 9122 7022 7029 8901 9603 -634 -199 -549 32 -201 322
48 Indian Bangladesh American Samoa 1962 4682 4169 6682 6169 9122 7015 7008 8901 9603 289 -115 734 118 257 426
49 Indian Thailand SIRGAS 1995 4240 4170 6240 6170 9122 7015 7019 8901 9603 214 0 836 0 303 0
50 Israeli RGF93 4281 4171 6281 6171 9122 7010 7019 8901 9603 -235 0 -85 0 264 0
51 Ireland 1965 POSGAR 4299 4172 6299 6172 9122 9108 7002 7019 8901 9603 506 0 -122 0 611 0
52 ISTS 073 Astro 1969 IRENET95 4724 4173 6724 6173 9122 7022 7019 8901 9603 208 0 -435 0 -229 0
53 Johnston Island Sierra Leone 1968 4725 4175 6725 6175 9122 7022 7012 8901 9603 191 -88 -77 4 -204 101
54 Kandawala Australian Antarctic 4244 4176 6244 6176 9122 7015 7019 8901 9603 -97 0 787 0 86 0
55 Kerguelen Island S42 (83) 4698 4178 6698 6178 9122 7022 7024 8901 9603 145 26 -187 -121 103 -78
56 Kertau 1948 S42 4245 4179 6245 6179 9122 7018 7024 8901 9603 -11 28 851 -121 5 -77
57 L.C. 5 Astro EST97 4726 4180 6726 6180 9122 7008 7019 8901 9603 42 0 124 0 147 0
58 Liberia 1964 Luxembourg 1930 4251 4181 6251 6181 9122 7012 7022 8901 9603 9607 -90 -189.6806 40 18.3463 88 -42.7695 0.33746 3.09264 -2.53861 0.4598
59 Luzon Mindanao Observatorio 1966 4182 6182 9122 7008 7022 8901 9603 -133 -425 -79 -169 -72 81
60 Luzon Philippines Southwest Base 4253 4183 6253 6183 9122 7008 7022 8901 9603 -133 -104 -77 167 -51 -38
61 Mahe 1971 Sao Braz 4256 4184 6256 6184 9122 7012 7022 8901 9603 41 -203 -220 141 -134 53
62 Marco Astro OSNI 1952 4616 4188 6616 6188 9122 7022 7001 8901 9603 9606 -289 482.5 -124 -130.6 60 564.6 -1.042 -0.214 -0.631 8.15
63 Massawa REGVEN 4262 4189 6262 6189 9122 7004 7019 8901 9603 639 0 405 0 60 0
64 Merchich POSGAR 98 4261 4190 6261 6190 9122 7012 7019 8901 9603 31 0 146 0 47 0
65 Midway Astro 1961 Albanian 1987 4727 4191 6727 6191 9122 7022 7024 8901 9603 9607 912 -44.183 -58 -0.58 1227 -38.489 -2.3867 -2.7072 3.5196 -8.2703
66 Minna Douala 1948 4263 4192 6263 6192 9122 7012 7022 8901 9603 -92 -206.1 -93 -174.7 122 -87.7
67 NAD27 Alaska Manoca 1962 4193 6193 9122 7008 7011 8901 9603 -5 -70.9 135 -151.8 172 -41.4
68 NAD27 Bahamas Qornoq 1927 4194 6194 9122 7008 7022 8901 9603 -4 164 154 138 178 -189
69 NAD27 Canada Scoresbysund 1952 4195 6195 9122 7008 7022 8901 9603 9606 -10 105 158 326 187 -102.5 0 0 0.814 -0.6
70 NAD27 Canal Zone Ammassalik 1958 4196 6196 9122 7008 7022 8901 9603 9606 0 -45 125 417 201 -3.5 0 0 0.814 -0.6
71 NAD27 Caribbean Egypt 4199 6199 9122 7008 7022 8901 9603 -3 -130 142 -117 183 -151
72 NAD27 Central Pulkovo 1995 4200 6200 9122 7008 7024 8901 9603 9607 0 24.47 125 -130.89 194 -81.56 0 0 -0.13 -0.22
73 NAD27 CONUS Adindan 4267 4201 6267 6201 9122 7008 7012 8901 9603 -8 -162 160 -12 176 206
74 NAD27 Cuba Australian Geodetic 1966 4202 6202 9122 7008 7003 8901 9603 -9 -133 152 -48 178 148
75 NAD27 Greenland Australian Geodetic 1984 4203 6203 9122 7008 7003 8901 9603 11 -134 114 -48 195 149
76 NAD27 Mexico Ain el Abd 1970 4204 6204 9122 7008 7022 8901 9603 -12 -150 130 -251 190 -2
77 NAD27 San Salvador Afgooye 4205 6205 9122 7008 7024 8901 9603 1 -43 140 -163 165 45
78 NAD83 Lisbon 4269 4207 6269 6207 9122 7019 7022 8901 9603 0 -304.046 0 -60.576 0 103.64
79 Nahrwn Masirah Ilnd Aratu 4208 6208 9122 7012 7022 8901 9603 -247 -151.99 -148 287.04 369 -147.45
80 Nahrwn Saudi Arbia Arc 1950 4209 6209 9122 7012 7012 8901 9603 -231 -143 -196 -90 482 -294
81 Nahrwn United Arab Arc 1960 4270 4210 6270 6210 9122 7012 7012 8901 9603 -249 -160 -156 -8 381 -300
82 Naparima BWI Djakarta (Batavia) 4271 4211 6271 6211 9122 7022 7004 8901 9603 -2 -377 374 681 172 -50
83 NGO1948 Barbados 1938 4273 4212 6273 6212 9122 7005 7012 8901 9603 315 31.95 -217 300.99 528 419.19
84 NTF France Beduaram 4275 4213 6275 6213 9122 7011 7011 8901 9603 -168 -106 -60 -87 320 188
85 Norsk Beijing 1954 4817 4214 6817 6214 9122 7005 7024 8913 8901 9603 278 15.8 93 -154.4 474 -82.3
86 NZGD1949 Bermuda 1957 4272 4216 6272 6216 9122 7022 7008 8901 9603 84 -73 -22 213 209 296
87 NZGD2000 Bogota Observatory 4167 4218 6167 6218 9122 7030 7022 8901 9603 0 307 0 304 0 -318
88 Observatorio 1966 Bukit Rimpah 4182 4219 6182 6219 9122 7022 7004 8901 9603 -425 -384 -169 664 81 -48
89 Old Egyptian Camacupa 4229 4220 6229 6220 9122 7020 7012 8901 9603 -130 -50.9 110 -347.6 -13 -231
90 Old Hawaiian Campo Inchauspe 4135 4221 6135 6221 9122 7008 7022 8901 9603 61 -148 -285 136 -181 90
91 Oman Cape 4232 4222 6232 6222 9122 7012 7012 8901 9603 -346 -136 -1 -108 224 -292
92 Ord Srvy Grt Britn Carthage 4277 4223 6277 6223 9122 7001 7012 8901 9603 375 -263 -111 6 431 431
93 Pico De Las Nieves Chua Astro 4728 4224 6728 6224 9122 7022 7022 8901 9603 -307 -134 -92 229 127 -29
94 Pitcairn Astro 1967 Corrego Alegre 4729 4225 6729 6225 9122 7022 7022 8901 9603 185 -206 165 172 42 -6
95 Potsdam Rauenberg DHDN Deir ez Zor 4314 4227 6314 6227 9122 7004 7011 8901 9603 606 -190.421 23 8.532 413 238.69
96 Prov So Amrican 1956 Old Egyptian 4248 4229 6248 6229 9122 7022 7020 8901 9603 -288 -130 175 110 -376 -13
97 Prov So Chilean 1963 European 1950 4254 4230 6254 6230 9122 7022 7022 8901 9603 16 -87 196 -98 93 -121
98 Puerto Rico ED87 4139 4231 6139 6231 9122 7008 7022 8901 9603 9606 11 -83.11 72 -97.38 -101 -117.22 0.005693 -0.044698 0.044285 0.1218
99 Pulkovo 1942 (1) Oman 4284 4232 6284 6232 9122 7024 7012 8901 9603 28 -346 -130 -1 -95 224
100 Pulkovo 1942 (2) Gandajika Base 4233 6233 9122 7024 7022 8901 9603 28 -133 -130 -321 -95 50
101 Qatar National Hu-Tzu-Shan 4285 4236 6285 6236 9122 7022 7022 8901 9603 -128 -634 -283 -549 22 -201
102 Qornoq HD72 4287 4237 6287 6237 9108 9122 7022 7036 8901 9603 164 52.17 138 -71.82 -189 -14.9
103 Reunion ID74 4626 4238 6626 6238 9122 7022 7021 8901 9603 94 -24 -948 -15 -1262 5
104 Rijksdriehoeksmeting Indian 1954 4289 4239 6289 6239 9122 7004 7015 8901 9603 593 217 26 823 478 299
105 Rome 1940 Indian Thailand 4806 4240 6806 6240 9122 7022 7015 8906 8901 9603 -225 214 -65 836 9 303
106 RT 90 JAD69 4124 4242 6124 6242 9122 7004 7008 8901 9603 498 70 -36 207 568 389.5
107 S42 Kandawala 4179 4244 6179 6244 9122 7024 7015 8901 9603 28 -97 -121 787 -77 86
108 S42 (83) Kertau 1948 4178 4245 6178 6245 9122 7024 7018 8901 9603 26 -11 -121 851 -78 5
109 Santo (DOS) KOC 4730 4246 6730 6246 9122 7022 7012 8901 9603 170 -294.7 42 -200.1 84 525.5
110 Sao Braz La Canoa 4184 4247 6184 6247 9122 7022 7022 8901 9603 -203 -273.5 141 110.6 53 -357.9
111 Sapper Hill 1943 Prov So Amrican 1956 4292 4248 6292 6248 9122 7022 7022 8901 9603 -355 -288 16 175 74 -376
112 Schwarzeck Leigon 4293 4250 6293 6250 9122 7046 7012 8901 9603 616 -130 97 29 -251 364
113 South American 1969 Liberia 1964 4291 4251 6291 6251 9108 9122 7036 7012 8901 9603 -57 -90 1 40 -41 88
114 Southeast Base Luzon Philippines 4615 4253 6615 6253 9122 7022 7008 8901 9603 -499 -133 -249 -77 314 -51
115 Southwest Base Prov So Chilean 1963 4183 4254 6183 6254 9122 7022 7022 8901 9603 -104 16 167 196 -38 93
116 Timbalai 1948 Herat North 4298 4255 6298 6255 9122 7015 7022 8901 9603 -689 -333 691 -222 -46 114
117 Tokyo Mahe 1971 4301 4256 6301 6256 9122 7004 7012 8901 9603 -128 41 481 -220 664 -134
118 Tristan Astro 1968 Makassar 4734 4257 6734 6257 9122 7022 7004 8901 9603 -632 -587.8 438 519.75 -609 145.76
119 Viti Levu 1916 ETRS 89 4731 4258 6731 6258 9122 7012 7019 8901 9603 51 0 391 0 -36 0
120 Wake-Eniwetok 1960 Malongo 1987 4732 4259 6732 6259 9122 7053 7022 8901 9603 101 -254.1 52 -5.36 -39 -100.29
121 WGS 72 Manoca 4322 4260 6322 6260 9122 9108 7043 7012 8901 9603 0 -70.9 0 -151.8 5 -41.4
122 Yacare Merchich 4309 4261 6309 6261 9122 7022 7012 8901 9603 -155 31 171 146 37 47
123 Zanderij Massawa 4311 4262 6311 6262 9122 7022 7004 8901 9603 -265 639 120 405 -358 60
124 Minna 4263 6263 9122 7012 8901 9603 -92 -93 122
125 Mhast 4264 6264 9122 7022 8901 9603 -252.95 -4.11 -96.38
126 Monte Mario 4265 6265 9122 7022 8901 9606 -104.1 -49.1 -9.9 0.971 -2.917 0.714 -11.68
127 M'poraloko 4266 6266 9122 7011 8901 9603 -74 -130 42
128 NAD27 CONUS 4267 6267 9122 7008 8901 9603 -8 160 176
129 NAD83 4269 6269 9122 7019 8901 9603 0 0 0
130 Nahrwn United Arab 4270 6270 9122 7012 8901 9603 -249 -156 381
131 Naparima BWI 4271 6271 9122 7022 8901 9603 -2 374 172
132 Geodetic Datum 1949 4272 6272 9122 7022 8901 9603 84 -22 209
133 NZGD1949 4272 6272 9122 7022 8901 9603 84 -22 209
134 NGO1948 4273 6273 9122 7005 8901 9603 315 -217 528
135 Datum 73 4274 6274 9122 7022 8901 9603 -223.237 110.193 36.649
136 NTF France 4275 6275 9122 7011 8901 9603 -168 -60 320
137 Ord Srvy Grt Britn 4277 6277 9122 7001 8901 9603 375 -111 431
138 Israeli 4281 6281 9122 7010 8901 9603 -235 -85 264
139 Pointe Noire 4282 6282 9122 7011 8901 9603 -148 51 -291
140 Australian Geocentric 1994 (GDA94) 4283 6283 9122 7019 8901 9603 0 0 0
141 Pulkovo 1942 (1) 4284 6284 9122 7024 8901 9603 28 -130 -95
142 Qatar National 4285 6285 9122 7022 8901 9603 -128 -283 22
143 Qornoq 4287 6287 9108 7022 8901 9603 164 138 -189
144 Rijksdriehoeksmeting 4289 6289 9122 7004 8901 9603 593 26 478
145 South American 1969 4291 6291 9108 7036 8901 9603 -57 1 -41
146 Sapper Hill 1943 4292 6292 9122 7022 8901 9603 -355 16 74
147 Schwarzeck 4293 6293 9122 7046 8901 9603 616 97 -251
148 Segora 4294 6294 9108 7004 8901 9603 -403 684 41
149 Tananarive 4297 6297 9122 7022 8901 9603 -189 -242 -91
150 Timbalai 1948 4298 6298 9122 7015 8901 9603 -689 691 -46
151 Ireland 1965 4299 6299 9122 7002 8901 9603 506 -122 611
152 TM75 4300 6300 9122 7002 8901 9606 482.5 -130.6 564.6 -1.042 -0.214 -0.631 8.15
153 Tokyo 4301 6301 9122 7004 8901 9603 -128 481 664
154 Trinidad 1903 4302 6302 9122 7007 8901 9603 -61.702 284.488 472.052
155 Voirol 1875 4304 6304 9122 7011 8901 9603 -73 -247 227
156 Nord Sahara 1959 4307 6307 9122 7012 8901 9606 -209.3622 -87.8162 404.6198 0.0046 3.4784 0.5805 -1.4547
157 Yacare 4309 6309 9122 7022 8901 9603 -155 171 37
158 Yoff 4310 6310 9122 7011 8901 9603 -30 190 89
159 Zanderij 4311 6311 9122 7022 8901 9603 -265 120 -358
160 Austrian 4312 6312 9122 7004 8901 9603 594 84 471
161 Belge 1972 4313 6313 9122 7022 8901 9607 -106.8686 52.2978 -103.7239 -0.3366 0.457 -1.8422 -1.2747
162 Potsdam Rauenberg DHDN 4314 6314 9122 7004 8901 9603 606 23 413
163 Conakry 1905 4315 6315 9122 7011 8901 9603 -23 259 -9
164 Dealul Piscului 1930 4316 6316 9122 7022 8901 9603 103.25 -100.4 -307.19
165 Dealul Piscului 1970 4317 6317 9122 7024 8901 9603 28 -121 -77
166 NGN 4318 6318 9122 7030 8901 9603 -3.2 -5.7 2.8
167 KUDAMS 4319 6319 9122 7019 8901 9603 -20.8 11.3 2.4
168 WGS 72 4322 6322 9122 7043 8901 9603 0 0 5
169 WGS 72BE 4324 6324 9122 7043 8901 9606 0 0 1.9 0 0 0.814 -0.38
170 RGSPM06 4463 1038 9122 7019 8901 9603 0 0 0
171 RGM04 4470 1036 9122 7019 8901 9603 0 0 0
172 Cadastre 1997 4475 1037 9122 7022 8901 9603 -381.788 -57.501 -256.673
173 Mexico ITRF92 4483 1042 9122 7019 8901 9603 0 0 0
174 RRAF 1991 4558 1047 9122 7019 8901 9603 0 0 0
175 Antigua 1943 4601 6601 9122 7012 8901 9603 -255 -15 71
176 Dominica 1945 4602 6602 9122 7012 8901 9603 725 685 536
177 Grenada 1953 4603 6603 9122 7012 8901 9603 72 213.7 93
178 Montserrat 1958 4604 6604 9122 7012 8901 9603 174 359 365
179 St. Kitts 1955 4605 6605 9122 7012 8901 9603 9 183 236
180 St. Lucia 1955 4606 6606 9122 7012 8901 9603 -149 128 296
181 St. Vincent 1945 4607 6607 9122 7012 8901 9603 195.671 332.517 274.607
182 Hong Kong 1980 4611 6611 9122 7022 8901 9606 -162.619 -276.959 -161.764 0.067753 -2.243649 -1.158827 -1.094246
183 JGD2000 4612 6612 9122 7019 8901 9603 0 0 0
184 Segara 4613 6613 9122 7004 8901 9603 -403 684 41
185 QND95 4614 6614 9122 7022 8901 9606 -119.4248 -303.65872 -11.00061 1.164298 0.174458 1.096259 3.657065
186 Southeast Base 4615 6615 9122 7022 8901 9603 -499 -249 314
187 Marco Astro 4616 6616 9122 7022 8901 9603 -289 -124 60
188 NAD83(CSRS) 4617 6140 9122 7019 8901 9603 0 0 0
189 SAD69 4618 6618 9122 7050 8901 9603 -66.87 4.37 -38.52
190 SWEREF99 4619 6619 9122 7019 8901 9603 0 0 0
191 Point 58 4620 6620 9122 7012 8901 9603 -106 -129 165
192 Fort Marigot 4621 6621 9122 7022 8901 9603 137 248 -430
193 Guadeloupe 1948 4622 6622 9122 7022 8901 9603 -467 -16 -300
194 CSG67 4623 6623 9122 7022 8901 9603 -186 230 110
195 RGFG95 4624 6624 9122 7019 8901 9603 0 0 0
196 Martinique 1938 4625 6625 9122 7022 8901 9603 186 482 151
197 Reunion 4626 6626 9122 7022 8901 9603 94 -948 -1262
198 RGR92 4627 6627 9122 7019 8901 9603 0 0 0
199 Tahiti 52 4628 6628 9122 7022 8901 9603 162 117 154
200 Tahaa 54 4629 6629 9122 7022 8901 9607 72.438 345.918 79.486 -1.6045 -0.8823 -0.5565 1.3746
201 IGN72 Nuku Hiva 4630 6630 9122 7022 8901 9603 84 274 65
202 K0 1949 4631 6631 9122 7022 8901 9603 145 -187 103
203 Combani 1950 4632 6632 9122 7022 8901 9603 -382 -59 -262
204 IGN56 Lifou 4633 6633 9122 7022 8901 9603 335.47 222.58 -230.94
205 IGN72 Grand Terre 4634 6634 9108 7022 8901 9603 -13 -348 292
206 ST87 Ouvea 4635 6635 9122 7022 8901 9606 -122.383 -188.696 103.344 3.5107 -4.9668 -5.7047 4.4798
207 Petrels 1972 4636 6636 9122 7022 8901 9603 365 194 166
208 Perroud 1950 4637 6637 9122 7022 8901 9603 325 154 172
209 Saint Pierre et Miquelon 1950 4638 6638 9122 7008 8901 9603 30 430 368
210 MOP78 4639 6639 9122 7022 8901 9603 253 -132 -127
211 RRAF 1991 4640 6640 9122 7030 8901 9603 0 0 0
212 IGN53 Mare 4641 6641 9122 7022 8901 9603 287.58 177.78 -135.41
213 ST84 Ile des Pins 4642 6642 9122 7022 8901 9603 -13 -348 292
214 ST71 Belep 4643 6643 9122 7022 8901 9606 -480.26 -438.32 -643.429 16.3119 20.1721 -4.0349 -111.7002
215 NEA74 Noumea 4644 6644 9122 7022 8901 9603 -10.18 -350.43 291.37
216 RGNC 1991 4645 6645 9122 7022 8901 9603 0 0 0
217 Grand Comoros 4646 6646 9122 7022 8901 9603 -963 510 -359
218 Reykjavik 1900 4657 6657 9122 7051 8901 9603 -28 199 5
219 Hjorsey 1955 4658 6658 9122 7022 8901 9603 -73 46 -86
220 ISN93 4659 6659 9122 7019 8901 9603 0 0 0
221 Helle 1954 4660 6660 9122 7022 8901 9606 982.6087 552.753 -540.873 6.6816266 -31.6114924 -19.84816 16.805
222 LKS92 4661 6661 9122 7019 8901 9603 0 0 0
223 IGN72 Grande Terre 4662 6634 9122 7022 8901 9603 -11.64 -348.6 291.98
224 Porto Santo 1995 4663 6663 9122 7022 8901 9603 -502.862 -247.438 312.724
225 Azores Oriental 1995 4664 6664 9122 7022 8901 9603 -204.619 140.176 55.226
226 Azores Central 1995 4665 6665 9122 7022 8901 9603 -106.226 166.366 -37.893
227 Lisbon 1890 4666 6666 9122 7004 8901 9603 508.088 -191.042 565.223
228 IKBD-92 4667 6667 9122 7030 8901 9603 0 0 0
229 European 1979 4668 6668 9122 7022 8901 9603 -86 -98 -119
230 LKS94 4669 6126 9122 7019 8901 9603 0 0 0
231 IGM95 4670 6670 9122 7030 8901 9603 0 0 0
232 Chatham 1971 4672 6672 9122 7022 8901 9603 175 -38 113
233 Chatham Islands 1979 4673 6673 9122 7022 8901 9607 174.05 -25.49 112.57 0 0 -0.554 0.2263
234 SIRGAS 2000 4674 6674 9122 7019 8901 9603 0 0 0
235 Guam 1963 4675 6675 9122 7008 8901 9603 -100 -248 259
236 Lao 1997 4678 6678 9122 7024 8901 9603 44.585 -131.212 -39.544
237 Jouik 1961 4679 6679 9122 7012 8901 9603 -80.01 253.26 291.19
238 Nouakchott 1965 4680 6680 9122 7012 8901 9603 124.5 -63.5 -281
239 Indian Bangladesh 4682 6682 9122 7015 8901 9603 289 734 257
240 PRS92 4683 6683 9122 7008 8901 9607 -127.62 -67.24 -47.04 3.068 -4.903 -1.578 -1.06
241 Gan 1970 4684 6684 9122 7022 8901 9603 -133 -321 50
242 MAGNA-SIRGAS 4686 6686 9122 7019 8901 9603 0 0 0
243 RGPF 4687 6687 9122 7019 8901 9607 0.072 -0.507 -0.245 0.0183 -0.0003 0.007 -0.0093
244 Fatu Iva 72 4688 6688 9122 7022 8901 9607 347.103 1078.125 2623.922 33.8875 -70.6773 9.3943 186.074
245 IGN63 Hiva Oa 4689 6689 9122 7022 8901 9607 410.721 55.049 80.746 -2.5779 -2.3514 -0.6664 17.3311
246 Tahiti 79 4690 6690 9122 7022 8901 9607 221.525 152.948 176.768 2.3847 1.3896 0.877 11.4741
247 Moorea 87 4691 6691 9122 7022 8901 9607 215.525 149.593 176.229 3.2624 1.692 1.1571 10.4773
248 Maupiti 83 4692 6692 9122 7022 8901 9603 217.037 86.959 23.956
249 Nakhl-e Ghanem 4693 6693 9122 7030 8901 9603 0 -0.15 0.68
250 POSGAR 94 4694 6694 9122 7030 8901 9603 0 0 0
251 Katanga 1955 4695 6695 9122 7008 8901 9603 -103.746 -9.614 -255.95
252 Kerguelen Island 4698 6698 9122 7022 8901 9603 145 -187 103
253 Le Pouce 1934 4699 6699 9122 7012 8901 9603 -770.1 158.4 -498.2
254 IGCB 1955 4701 6701 9122 7012 8901 9603 -79.9 -158 -168.9
255 Mauritania 1999 4702 6702 9122 7019 8901 9603 0 0 0
256 Egypt Gulf of Suez S-650 TL 4706 6706 9122 7020 8901 9603 -146.21 112.63 4.05
257 Astro B4 Sorol Atoll 4707 6707 9122 7022 8901 9603 114 -116 -333
258 Anna 1 Astro 1965 4708 6708 9122 7003 8901 9603 -491 -22 435
259 Astro Beacon 1945 4709 6709 9122 7022 8901 9603 145 75 -272
260 Astro DOS 71/4 4710 6710 9122 7022 8901 9603 -320 550 -494
261 Astronomic Stn 1952 4711 6711 9122 7022 8901 9603 124 -234 -25
262 Ascension Island 1958 4712 6712 9122 7022 8901 9603 -207 107 52
263 Ayabelle Lighthouse 4713 6713 9122 7012 8901 9603 -77 -128 142
264 Bellevue (IGN) 4714 6714 9122 7022 8901 9603 -127 -769 472
265 Camp Area Astro 4715 6715 9122 7022 8901 9603 -104 -129 239
266 Canton Astro 1966 4716 6716 9122 7022 8901 9603 298 -304 -375
267 Cape Canaveral 4717 6717 9122 7008 8901 9603 -2 150 181
268 GUX 1 Astro 4718 6718 9122 7022 8901 9603 252 -209 -751
269 Easter Island 1967 4719 6719 9122 7022 8901 9603 211 147 111
270 Fiji 1986 4720 6720 9122 7043 8901 9606 0 0 4.5 0 0 0.554 0.2263
271 Fiji 1956 4721 6721 9122 7022 8901 9603 265.025 384.929 -194.046
272 South Georgia 1968 4722 6722 9122 7022 8901 9603 -794 119 -298
273 GCGD59 4723 6723 9122 7008 8901 9607 -179.483 -69.379 -27.584 7.862 -8.163 -6.042 -13.925
274 ISTS 073 Astro 1969 4724 6724 9122 7022 8901 9603 208 -435 -229
275 Johnston Island 4725 6725 9122 7022 8901 9603 191 -77 -204
276 L.C. 5 Astro 4726 6726 9122 7008 8901 9603 42 124 147
277 Midway Astro 1961 4727 6727 9122 7022 8901 9603 912 -58 1227
278 Pico De Las Nieves 4728 6728 9122 7022 8901 9603 -307 -92 127
279 Pitcairn Astro 1967 4729 6729 9122 7022 8901 9603 185 165 42
280 Santo (DOS) 4730 6730 9122 7022 8901 9603 170 42 84
281 Viti Levu 1916 4731 6731 9122 7012 8901 9603 51 391 -36
282 Wake-Eniwetok 1960 4732 6732 9122 7053 8901 9603 101 52 -39
283 Wake Island 1952 4733 6733 9122 7022 8901 9603 276 -57 149
284 Tristan Astro 1968 4734 6734 9122 7022 8901 9603 -632 438 -609
285 Kusaie 1951 4735 6735 9122 7022 8901 9603 647 1777 -1124
286 Deception Island 4736 6736 9122 7012 8901 9603 260 12 -147
287 Korea 2000 4737 6737 9122 7019 8901 9603 0 0 0
288 Hong Kong 1963 4739 6739 9122 7022 8901 9603 -156 -271 -189
289 PZ-90 4740 6740 9122 7054 8901 9607 0 0 1.5 0 0 -0.076 0
290 Karbala 1979 4743 6743 9122 7012 8901 9603 70.995 -335.916 262.898
291 Nahrwan 1934 4744 6744 9122 7012 8901 9603 -242.2 -144.9 370.3
292 GR96 4747 6747 9122 7019 8901 9603 0 0 0
293 Vanua Levu 1915 4748 6748 9122 7055 8901 9603 51 391 -36
294 RGNC91-93 4749 6749 9122 7019 8901 9603 0 0 0
295 ST87 Ouvea 4750 6750 9122 7030 8901 9603 -56.263 16.136 -22.856
296 Viti Levu 1912 4752 6752 9122 7055 8901 9603 98 390 -22
297 LGD2006 4754 6754 9122 7022 8901 9603 -208.4058 -109.8777 -2.5764
298 DGN95 4755 6755 9122 7030 8901 9603 0 0 0
299 VN-2000 4756 6756 9122 7030 8901 9607 -191.90441429 -39.30318279 -111.45032835 -0.00928836 0.01975479 -0.00427372 0.252906278
300 JAD2001 4758 6758 9122 7030 8901 9603 0 0 0
301 NAD83(NSRS2007) 4759 6759 9122 7019 8901 9603 0 0 0
302 HTRS96 4761 6761 9122 7019 8901 9603 0 0 0
303 BDA2000 4762 6762 9122 7030 8901 9603 0 0 0
304 Pitcairn 2006 4763 6763 9122 7030 8901 9603 0 0 0
305 RSRGD2000 4764 6764 9122 7019 8901 9603 0 0 0
306 Slovenia 1996 4765 6765 9122 7019 8901 9603 0 0 0
307 Bern 1898 (Bern) 4801 6801 9122 7004 8907 9603 674.374 15.056 405.346
308 Bogota 1975 (Bogota) 4802 6802 9122 7022 8904 9603 307 304 -318
309 Lisbon (Lisbon) 4803 6803 9122 7022 8902 9603 -304.046 -60.576 103.64
310 Makassar (Jakarta) 4804 6804 9122 7004 8908 9603 -587.8 519.75 145.76
311 MGI (Ferro) 4805 6805 9122 7004 8909 9603 682 -203 480
312 Rome 1940 4806 6806 9122 7022 8906 9603 -225 -65 9
313 NTF (Paris) 4807 6807 9105 7011 8903 9603 -168 -60 320
314 Tananarive (Paris) 4810 6810 9105 7022 8903 9603 -189 -242 -91
315 Voirol 1875 (Paris) 4811 6811 9105 7011 8903 9603 -73 -247 227
316 Batavia (Jakarta) 4813 6813 9122 7004 8908 9603 -377 681 -50
317 Carthage (Paris) 4816 6816 9105 7011 8903 9603 -263 6 431
318 Norsk 4817 6817 9122 7005 8913 9603 278 93 474
319 S-JTSK (Ferro) 4818 6818 9122 7004 8909 9603 589 76 480
320 Nord Sahara 1959 (Paris) 4819 6819 9105 7012 8903 9606 -209.3622 -87.8162 404.6198 0.0046 3.4784 0.5805 -1.4547
321 Segara (Jakarta) 4820 6820 9122 7004 8908 9603 -403 684 41
322 Lisbon 1890 (Lisbon) 4904 6904 9122 7004 8902 9603 508.088 -191.042 565.223
323 PTRA08 5013 1041 9122 7019 8901 9603 0 0 0
324 S-JTSK/05 5228 1052 9122 7004 8901 9607 572.213 85.334 461.94 -4.9732 -1.529 -5.2484 3.5378
325 S-JTSK/05 (Ferro) 5229 1055 9122 7004 8909 9607 572.213 85.334 461.94 -4.9732 -1.529 -5.2484 3.5378
326 SLD99 5233 1053 9122 7015 8901 9607 -0.293 766.95 87.713 -0.195704 -1.695068 -3.473016 -0.039338
327 GDBD2009 5246 1056 9122 7019 8901 9603 0 0 0
328 TUREF 5252 1057 9122 7019 8901 9603 0 0 0
329 DRUKREF 03 5264 1058 9122 7019 8901 9603 0 0 0
330 ISN2004 5324 1060 9122 7019 8901 9603 0 0 0
331 POSGAR 2007 5340 1062 9122 7019 8901 9603 0 0 0
332 MARGEN 5354 1063 9122 7019 8901 9603 0 0 0
333 SIRGAS-Chile 5360 1064 9122 7019 8901 9603 0 0 0
334 CR05 5365 1065 9122 7030 8901 9603 0 0 0
335 MACARIO SOLIS 5371 1066 9122 7019 8901 9603 0 0 0
336 Peru96 5373 1067 9122 7019 8901 9603 0 0 0
337 SIRGAS-ROU98 5381 1068 9122 7030 8901 9603 0 0 0
338 SIRGAS_ES2007.8 5393 1069 9122 7019 8901 9603 0 0 0
339 Ocotepeque 1935 5451 1070 9122 7008 8901 9603 205 96 -98
340 RGAF09 5489 1073 9122 7019 8901 9603 0 0 0
341 SAD69(96) 5527 1075 9122 7050 8901 9603 -67.35 3.88 -38.22
342 PNG94 5546 1076 9122 7019 8901 9603 0 0 0
343 UCS-2000 5561 1077 9122 7024 8901 9607 25 -141 -78.5 0 -0.35 -0.736 0
344 FEH2010 5593 1078 9122 7019 8901 9603 0 0 0
345 CIGD11 6135 1100 9122 7019 8901 9603 0 0 0
346 Nepal 1981 6207 1111 9122 7015 8901 9603 293.17 726.18 245.36
347 CGRS93 6311 1112 9122 7030 8901 9607 8.846 -4.394 -1.122 0.00237 0.146528 -0.130428 0.783926
348 Mexico ITRF2008 6365 1120 9122 7019 8901 9603 0 0 0
349 RDN2008 6706 1132 9122 7019 8901 9603 0 0 0
350 Aden 1925 6881 1135 9122 7012 8901 9603 -24 -203 268
351 Bekaa Valley 1920 6882 1137 9122 7012 8901 9603 -183 -15 273
352 Bioko 6883 1136 9122 7022 8901 9603 -235 -110 393
353 South East Island 1943 6892 1138 9122 7012 8901 9603 -43.685 -179.785 -267.721
354 Gambia 6894 1139 9122 7012 8901 9603 -63 176 185
355 ONGD14 7373 1147 9122 7019 8901 9603 0 0 0
356 St. Helena Tritan 7881 1173 9122 7030 8901 9603 -0.077 0.079 0.086
357 SHGD2015 7886 1174 9122 7019 8901 9603 0 0 0
358 DOS 1968 9122 7022 8901 9603 230 -199 -752
359 European 1950 (Mean France) 9122 7022 8901 9603 -87 -96 -120
360 European 1950 (Spain and Portugal) 9122 7022 8901 9603 -84 -107 -120
361 Luzon Mindanao 9122 7008 8901 9603 -133 -79 -72
362 NAD27 Alaska 9122 7008 8901 9603 -5 135 172
363 NAD27 Bahamas 9122 7008 8901 9603 -4 154 178
364 NAD27 Canada 9122 7008 8901 9603 -10 158 187
365 NAD27 Canal Zone 9122 7008 8901 9603 0 125 201
366 NAD27 Caribbean 9122 7008 8901 9603 -3 142 183
367 NAD27 Central 9122 7008 8901 9603 0 125 194
368 NAD27 Cuba 9122 7008 8901 9603 -9 152 178
369 NAD27 Greenland 9122 7008 8901 9603 11 114 195
370 NAD27 Mexico 9122 7008 8901 9603 -12 130 190
371 NAD27 San Salvador 9122 7008 8901 9603 1 140 165
372 Nahrwn Masirah Ilnd 9122 7012 8901 9603 -247 -148 369
373 Nahrwn Saudi Arbia 9122 7012 8901 9603 -231 -196 482
374 Pulkovo 1942 (2) 9122 7024 8901 9603 28 -130 -95

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,7 @@ Name=GPXSee
Comment=GPS log file viewer and analyzer
Comment[cz]=Prohlížeč a analyzátor GPS logů
Comment[fi]=Ohjelma GPS-lokien katseluun ja analysointiin
Comment[pl]=Przeglądarka i analizator plików dziennika GPS
Comment[ru]=Программа для просмотра и анализа GPS логов
Comment[sv]=GPS-loggfilsläsare och analysator
Exec=gpxsee %F

View File

@ -5,7 +5,7 @@
; The name of the installer
Name "GPXSee"
; Program version
!define VERSION "5.7"
!define VERSION "5.12"
; The file to write
OutFile "GPXSee-${VERSION}.exe"
@ -230,6 +230,11 @@ SectionGroup "Localization" SEC_LOCALIZATION
File /oname=translations\gpxsee_de.qm translations\gpxsee_de.qm
File /oname=translations\qt_de.qm translations\qt_de.qm
SectionEnd
Section "Polish"
CreateDirectory "$INSTDIR\translations"
File /oname=translations\gpxsee_pl.qm translations\gpxsee_pl.qm
File /oname=translations\qt_pl.qm translations\qt_pl.qm
SectionEnd
Section "Russian"
CreateDirectory "$INSTDIR\translations"
File /oname=translations\gpxsee_ru.qm translations\gpxsee_ru.qm

View File

@ -5,7 +5,7 @@
; The name of the installer
Name "GPXSee"
; Program version
!define VERSION "5.7"
!define VERSION "5.12"
; The file to write
OutFile "GPXSee-${VERSION}_x64.exe"
@ -232,6 +232,11 @@ SectionGroup "Localization" SEC_LOCALIZATION
File /oname=translations\gpxsee_de.qm translations\gpxsee_de.qm
File /oname=translations\qt_de.qm translations\qt_de.qm
SectionEnd
Section "Polish"
CreateDirectory "$INSTDIR\translations"
File /oname=translations\gpxsee_pl.qm translations\gpxsee_pl.qm
File /oname=translations\qt_pl.qm translations\qt_pl.qm
SectionEnd
Section "Russian"
CreateDirectory "$INSTDIR\translations"
File /oname=translations\gpxsee_ru.qm translations\gpxsee_ru.qm
@ -312,4 +317,4 @@ LangString DESC_LOCALIZATION ${LANG_ENGLISH} \
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_MSVC} $(DESC_MSVC)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_APP} $(DESC_APP)
!insertmacro MUI_DESCRIPTION_TEXT ${SEC_LOCALIZATION} $(DESC_LOCALIZATION)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
!insertmacro MUI_FUNCTION_DESCRIPTION_END

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.gpxsee.org/map/1">
<name>USGS Imagery</name>
<url>https://navigator.er.usgs.gov/tiles/aerial_Imagery.cgi/$z/$x/$y</url>
<url>https://basemap.nationalmap.gov/ArcGIS/rest/services/USGSImageryOnly/MapServer/tile/$z/$y/$x</url>
<copyright>Map services and data available from U.S. Geological Survey, National Geospatial Program.</copyright>
<zoom min="2" max="15"/>
<bounds bottom="0" top="74"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<map xmlns="http://www.gpxsee.org/map/1">
<name>USGS Topo</name>
<url>https://navigator.er.usgs.gov/tiles/tcr.cgi/$z/$x/$y.png</url>
<url>https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/$z/$y/$x</url>
<copyright>Map services and data available from U.S. Geological Survey, National Geospatial Program.</copyright>
<zoom min="2" max="15"/>
</map>

View File

@ -3,10 +3,8 @@
#include <QLocale>
#include <QFileOpenEvent>
#include <QNetworkProxyFactory>
#include <QNetworkAccessManager>
#include <QLibraryInfo>
#include "map/wmts.h"
#include "map/wms.h"
#include "map/tileloader.h"
#include "map/downloader.h"
#include "map/ellipsoid.h"
#include "map/gcs.h"
@ -38,10 +36,7 @@ App::App(int &argc, char **argv) : QApplication(argc, argv),
#endif // Q_OS_MAC
QNetworkProxyFactory::setUseSystemConfiguration(true);
Downloader *dl = new Downloader(this);
TileLoader::setDownloader(dl);
WMTS::setDownloader(dl);
WMS::setDownloader(dl);
Downloader::setNetworkAccessManager(new QNetworkAccessManager(this));
OPENGL_SET_SAMPLES(4);
loadDatums();
loadPCSs();

View File

@ -11,23 +11,28 @@
#define XTICKS 15
#define YTICKS 10
struct Label {
double min;
double max;
double d;
class Ticks
{
public:
Ticks(double minValue, double maxValue, int maxCount);
int count() const {return ((int)((_max - _min) / _d)) + 1;}
double val(int i) const {return _min + i * _d;}
double min() const {return _min;}
double max() const {return _max;}
private:
double _min;
double _max;
double _d;
};
static struct Label label(double min, double max, int ticks)
Ticks::Ticks(double minValue, double maxValue, int maxCount)
{
double range;
struct Label l;
range = niceNum(max - min, 0);
l.d = niceNum(range / ticks, 1);
l.min = ceil(min / l.d) * l.d;
l.max = floor(max / l.d) * l.d;
return l;
double range = niceNum(maxValue - minValue, 0);
_d = niceNum(range / maxCount, 1);
_min = ceil(minValue / _d) * _d;
_max = floor(maxValue / _d) * _d;
}
@ -36,6 +41,9 @@ AxisItem::AxisItem(Type type, QGraphicsItem *parent) : QGraphicsItem(parent)
_type = type;
_size = 0;
_font.setPixelSize(FONT_SIZE);
_font.setFamily(FONT_FAMILY);
#ifndef Q_OS_MAC
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
#endif // Q_OS_MAC
@ -45,6 +53,16 @@ void AxisItem::setRange(const RangeF &range)
{
prepareGeometryChange();
_range = range;
QFontMetrics fm(_font);
Ticks ticks(_range.min(), _range.max(), (_type == X) ? XTICKS : YTICKS);
_ticks = QVector<Tick>(ticks.count());
for (int i = 0; i < ticks.count(); i++) {
Tick &t = _ticks[i];
t.value = ticks.val(i);
t.boundingBox = fm.tightBoundingRect(QString::number(t.value));
}
updateBoundingRect();
update();
}
@ -60,42 +78,28 @@ void AxisItem::setSize(qreal size)
void AxisItem::setLabel(const QString& label)
{
prepareGeometryChange();
QFontMetrics fm(_font);
_label = label;
_labelBB = fm.tightBoundingRect(label);
updateBoundingRect();
update();
}
void AxisItem::updateBoundingRect()
{
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
QFontMetrics fm(font);
QRect ss, es, ls;
struct Label l;
l = label(_range.min(), _range.max(), (_type == X) ? XTICKS : YTICKS);
es = fm.tightBoundingRect(QString::number(l.max));
ss = fm.tightBoundingRect(QString::number(l.min));
ls = fm.tightBoundingRect(_label);
QFontMetrics fm(_font);
QRect es = _ticks.isEmpty() ? QRect() : _ticks.last().boundingBox;
QRect ss = _ticks.isEmpty() ? QRect() : _ticks.first().boundingBox;
QRect ls(_labelBB);
if (_type == X) {
_boundingRect = QRectF(-ss.width()/2, -TICK/2,
_size + es.width()/2 + ss.width()/2,
ls.height() + es.height() - fm.descent() + TICK + 2*PADDING + 1);
_boundingRect = QRectF(-ss.width()/2, -TICK/2, _size + es.width()/2
+ ss.width()/2, ls.height() + es.height() - fm.descent() + TICK
+ 2*PADDING + 1);
} else {
int mtw = 0;
QRect ts;
qreal val;
for (int i = 0; i < ((l.max - l.min) / l.d) + 1; i++) {
val = l.min + i * l.d;
QString str = QString::number(val);
ts = fm.tightBoundingRect(str);
mtw = qMax(ts.width(), mtw);
}
for (int i = 0; i < _ticks.count(); i++)
mtw = qMax(_ticks.at(i).boundingBox.width(), mtw);
_boundingRect = QRectF(-(ls.height() + mtw + 2*PADDING + TICK/2),
-(_size + es.height()/2 + fm.descent()), ls.height() + mtw + 2*PADDING
+ TICK, _size + es.height()/2 + fm.descent() + ss.height()/2);
@ -107,60 +111,50 @@ void AxisItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
{
Q_UNUSED(option);
Q_UNUSED(widget);
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
QFontMetrics fm(font);
QRect ts, ls;
struct Label l;
qreal range = _range.size();
qreal val;
QPen pen = QPen(Qt::black, AXIS_WIDTH);
QFontMetrics fm(_font);
QRect ts;
painter->setRenderHint(QPainter::Antialiasing, false);
painter->setFont(font);
painter->setPen(pen);
ls = fm.tightBoundingRect(_label);
painter->setFont(_font);
painter->setPen(QPen(Qt::black, AXIS_WIDTH));
if (_type == X) {
painter->drawLine(0, 0, _size, 0);
l = label(_range.min(), _range.max(), XTICKS);
for (int i = 0; i < ((l.max - l.min) / l.d) + 1; i++) {
val = l.min + i * l.d;
QString str = QString::number(val);
for (int i = 0; i < _ticks.count(); i++) {
qreal val = _ticks.at(i).value;
ts = _ticks.at(i).boundingBox;
painter->drawLine((_size/range) * (val - _range.min()), TICK/2,
(_size/range) * (val - _range.min()), -TICK/2);
ts = fm.tightBoundingRect(str);
painter->drawText(((_size/range) * (val - _range.min()))
- (ts.width()/2), ts.height() + TICK/2 + PADDING, str);
painter->drawLine((_size/_range.size()) * (val - _range.min()),
TICK/2, (_size/_range.size()) * (val - _range.min()), -TICK/2);
painter->drawText(((_size/_range.size()) * (val - _range.min()))
- (ts.width()/2), ts.height() + TICK/2 + PADDING,
QString::number(val));
}
painter->drawText(_size/2 - ls.width()/2, ls.height() + ts.height()
- 2*fm.descent() + TICK/2 + 2*PADDING, _label);
painter->drawText(_size/2 - _labelBB.width()/2, _labelBB.height()
+ ts.height() - 2*fm.descent() + TICK/2 + 2*PADDING, _label);
} else {
painter->drawLine(0, 0, 0, -_size);
l = label(_range.min(), _range.max(), YTICKS);
int mtw = 0;
for (int i = 0; i < ((l.max - l.min) / l.d) + 1; i++) {
val = l.min + i * l.d;
QString str = QString::number(val);
painter->drawLine(TICK/2, -((_size/range) * (val - _range.min())),
-TICK/2, -((_size/range) * (val - _range.min())));
ts = fm.tightBoundingRect(str);
for (int i = 0; i < _ticks.count(); i++) {
qreal val = _ticks.at(i).value;
ts = _ticks.at(i).boundingBox;
mtw = qMax(ts.width(), mtw);
painter->drawText(-(ts.width() + PADDING + TICK/2), -((_size/range)
* (val - _range.min())) + (ts.height()/2), str);
painter->drawLine(TICK/2, -((_size/_range.size())
* (val - _range.min())), -TICK/2, -((_size/_range.size())
* (val - _range.min())));
painter->drawText(-(ts.width() + PADDING + TICK/2),
-((_size/_range.size()) * (val - _range.min())) + (ts.height()/2),
QString::number(val));
}
painter->rotate(-90);
painter->drawText(_size/2 - ls.width()/2, -(mtw + 2*PADDING + TICK/2),
_label);
painter->drawText(_size/2 - _labelBB.width()/2, -(mtw + 2*PADDING
+ TICK/2), _label);
painter->rotate(90);
}
@ -172,46 +166,28 @@ void AxisItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QSizeF AxisItem::margin() const
{
QFont font;
font.setPixelSize(FONT_SIZE);
QFontMetrics fm(font);
QRect ss, es, ls;
struct Label l;
l = label(_range.min(), _range.max(), (_type == X) ? XTICKS : YTICKS);
es = fm.tightBoundingRect(QString::number(l.max));
ss = fm.tightBoundingRect(QString::number(l.min));
ls = fm.tightBoundingRect(_label);
QFontMetrics fm(_font);
QRect es = _ticks.isEmpty() ? QRect() : _ticks.last().boundingBox;
if (_type == X) {
return QSizeF(es.width()/2,
ls.height() + es.height() - fm.descent() + TICK/2 + 2*PADDING);
return QSizeF(es.width()/2, _labelBB.height() + es.height()
- fm.descent() + TICK/2 + 2*PADDING);
} else {
int mtw = 0;
QRect ts;
qreal val;
for (int i = 0; i < _ticks.count(); i++)
mtw = qMax(_ticks.at(i).boundingBox.width(), mtw);
for (int i = 0; i < ((l.max - l.min) / l.d) + 1; i++) {
val = l.min + i * l.d;
QString str = QString::number(val);
ts = fm.tightBoundingRect(str);
mtw = qMax(ts.width(), mtw);
}
return QSizeF(ls.height() -fm.descent() + mtw + 2*PADDING
return QSizeF(_labelBB.height() -fm.descent() + mtw + 2*PADDING
+ TICK/2, es.height()/2 + fm.descent());
}
}
QList<qreal> AxisItem::ticks() const
{
struct Label l;
QList<qreal> list;
l = label(_range.min(), _range.max(), (_type == X) ? XTICKS : YTICKS);
for (int i = 0; i < ((l.max - l.min) / l.d) + 1; i++)
list.append(((_size/_range.size()) * ((l.min + i * l.d)
for (int i = 0; i < _ticks.count(); i++)
list.append(((_size/_range.size()) * (_ticks.at(i).value
- _range.min())));
return list;

View File

@ -2,6 +2,7 @@
#define AXISITEM_H
#include <QGraphicsItem>
#include <QVector>
#include "common/range.h"
class AxisItem : public QGraphicsItem
@ -23,13 +24,21 @@ public:
QList<qreal> ticks() const;
private:
struct Tick {
double value;
QRect boundingBox;
};
void updateBoundingRect();
Type _type;
RangeF _range;
qreal _size;
QString _label;
QRect _labelBB;
QVector<Tick> _ticks;
QRectF _boundingRect;
QFont _font;
};
#endif // AXISITEM_H

View File

@ -24,28 +24,33 @@ void CadenceGraph::setInfo()
clearInfo();
}
void CadenceGraph::loadData(const Data &data, const QList<PathItem *> &paths)
QList<GraphItem*> CadenceGraph::loadData(const Data &data)
{
QList<GraphItem*> graphs;
for (int i = 0; i < data.tracks().count(); i++) {
const Graph &graph = data.tracks().at(i)->cadence();
if (graph.size() < 2) {
skipColor();
continue;
graphs.append(0);
} else {
CadenceGraphItem *gi = new CadenceGraphItem(graph, _graphType);
GraphView::addGraph(gi);
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
graphs.append(gi);
}
CadenceGraphItem *gi = new CadenceGraphItem(graph, _graphType);
GraphView::addGraph(gi, paths.at(i));
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
}
for (int i = 0; i < data.routes().count(); i++)
for (int i = 0; i < data.routes().count(); i++) {
skipColor();
graphs.append(0);
}
setInfo();
redraw();
return graphs;
}
qreal CadenceGraph::avg() const

View File

@ -11,7 +11,7 @@ public:
CadenceGraph(QWidget *parent = 0);
QString label() const {return tr("Cadence");}
void loadData(const Data &data, const QList<PathItem *> &paths);
QList<GraphItem*> loadData(const Data &data);
void clear();
void showTracks(bool show);
void showRoutes(bool show) {Q_UNUSED(show);}

View File

@ -65,15 +65,15 @@ void ElevationGraph::setInfo()
}
}
void ElevationGraph::loadGraph(const Graph &graph, Type type, PathItem *path)
GraphItem *ElevationGraph::loadGraph(const Graph &graph, Type type)
{
if (graph.size() < 2) {
skipColor();
return;
return 0;
}
ElevationGraphItem *gi = new ElevationGraphItem(graph, _graphType);
GraphView::addGraph(gi, path, type);
GraphView::addGraph(gi, type);
if (type == Track) {
_trackAscent += gi->ascent();
@ -86,20 +86,23 @@ void ElevationGraph::loadGraph(const Graph &graph, Type type, PathItem *path)
_routeMax = nMax(_routeMax, gi->max());
_routeMin = nMin(_routeMin, gi->min());
}
return gi;
}
void ElevationGraph::loadData(const Data &data, const QList<PathItem *> &paths)
QList<GraphItem*> ElevationGraph::loadData(const Data &data)
{
int p = 0;
QList<GraphItem*> graphs;
for (int i = 0; i < data.tracks().count(); i++)
loadGraph(data.tracks().at(i)->elevation(), Track, paths.at(p++));
graphs.append(loadGraph(data.tracks().at(i)->elevation(), Track));
for (int i = 0; i < data.routes().count(); i++)
loadGraph(data.routes().at(i)->elevation(), Route, paths.at(p++));
graphs.append(loadGraph(data.routes().at(i)->elevation(), Route));
setInfo();
redraw();
return graphs;
}
void ElevationGraph::clear()

View File

@ -11,7 +11,7 @@ public:
ElevationGraph(QWidget *parent = 0);
QString label() const {return tr("Elevation");}
void loadData(const Data &data, const QList<PathItem *> &paths);
QList<GraphItem*> loadData(const Data &data);
void clear();
void setUnits(enum Units units);
void showTracks(bool show);
@ -28,7 +28,7 @@ private:
void setYUnits(Units units);
void setInfo();
void loadGraph(const Graph &graph, Type type, PathItem *path);
GraphItem *loadGraph(const Graph &graph, Type type);
qreal _trackAscent, _trackDescent;
qreal _routeAscent, _routeDescent;

View File

@ -42,9 +42,9 @@ ExportDialog::ExportDialog(Export *exp, QWidget *parent)
_paperSize->setCurrentIndex(index);
_resolution = new QComboBox();
_resolution->addItem("150 DPI", 150);
_resolution->addItem("300 DPI", 300);
_resolution->addItem("600 DPI", 600);
_resolution->addItem("1200 DPI", 1200);
if ((index = _resolution->findData(_export->resolution)) >= 0)
_resolution->setCurrentIndex(index);

View File

@ -7,7 +7,7 @@
#include "timetype.h"
class Data;
class PathItem;
class GraphItem;
class GraphTab : public GraphView
{
@ -19,7 +19,7 @@ public:
virtual ~GraphTab() {}
virtual QString label() const = 0;
virtual void loadData(const Data &data, const QList<PathItem *> &paths) = 0;
virtual QList<GraphItem*> loadData(const Data &data) = 0;
virtual void clear() {GraphView::clear();}
virtual void setUnits(enum Units units) {GraphView::setUnits(units);}
virtual void setGraphType(GraphType type) {GraphView::setGraphType(type);}

View File

@ -187,7 +187,7 @@ void GraphView::showSliderInfo(bool show)
_sliderInfo->setVisible(show);
}
void GraphView::addGraph(GraphItem *graph, PathItem *path, int id)
void GraphView::addGraph(GraphItem *graph, int id)
{
QColor color(_palette.nextColor());
color.setAlpha(255);
@ -199,10 +199,6 @@ void GraphView::addGraph(GraphItem *graph, PathItem *path, int id)
connect(this, SIGNAL(sliderPositionChanged(qreal)), graph,
SLOT(emitSliderPositionChanged(qreal)));
connect(graph, SIGNAL(sliderPositionChanged(qreal)), path,
SLOT(moveMarker(qreal)));
connect(path, SIGNAL(selected(bool)), graph, SLOT(hover(bool)));
connect(graph, SIGNAL(selected(bool)), path, SLOT(hover(bool)));
_graphs.append(graph);
@ -312,6 +308,7 @@ void GraphView::redraw(const QSizeF &size)
if (r.height() < _minYRange * sy)
r.adjust(0, -(_minYRange/2 * sy - r.height()/2), 0,
(_minYRange/2) * sy - r.height()/2);
r = r.toRect();
_xAxis->setSize(r.width());
_yAxis->setSize(r.height());

View File

@ -44,7 +44,7 @@ signals:
void sliderPositionChanged(qreal);
protected:
void addGraph(GraphItem *graph, PathItem *path, int id = 0);
void addGraph(GraphItem *graph, int id = 0);
void showGraph(bool show, int id = 0);
void setGraphType(GraphType type);

View File

@ -4,13 +4,6 @@
#define GRID_WIDTH 0
GridItem::GridItem(QGraphicsItem *parent) : QGraphicsItem(parent)
{
#ifndef Q_OS_MAC
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
#endif // Q_OS_MAC
}
void GridItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget)
{

View File

@ -6,7 +6,7 @@
class GridItem : public QGraphicsItem
{
public:
GridItem(QGraphicsItem *parent = 0);
GridItem(QGraphicsItem *parent = 0): QGraphicsItem(parent) {}
QRectF boundingRect() const {return _boundingRect;}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,

View File

@ -25,6 +25,7 @@
#include "data/data.h"
#include "map/maplist.h"
#include "map/emptymap.h"
#include "map/downloader.h"
#include "config.h"
#include "icons.h"
#include "keys.h"
@ -40,6 +41,8 @@
#include "filebrowser.h"
#include "cpuarch.h"
#include "graphtab.h"
#include "graphitem.h"
#include "pathitem.h"
#include "gui.h"
@ -57,15 +60,15 @@ GUI::GUI()
createBrowser();
QSplitter *splitter = new QSplitter();
splitter->setOrientation(Qt::Vertical);
splitter->setChildrenCollapsible(false);
splitter->addWidget(_mapView);
splitter->addWidget(_graphTabWidget);
splitter->setContentsMargins(0, 0, 0, 0);
splitter->setStretchFactor(0, 255);
splitter->setStretchFactor(1, 1);
setCentralWidget(splitter);
_splitter = new QSplitter();
_splitter->setOrientation(Qt::Vertical);
_splitter->setChildrenCollapsible(false);
_splitter->addWidget(_mapView);
_splitter->addWidget(_graphTabWidget);
_splitter->setContentsMargins(0, 0, 0, 0);
_splitter->setStretchFactor(0, 255);
_splitter->setStretchFactor(1, 1);
setCentralWidget(_splitter);
setWindowIcon(QIcon(QPixmap(APP_ICON)));
setWindowTitle(APP_NAME);
@ -687,8 +690,6 @@ bool GUI::openFile(const QString &fileName)
updateNavigationActions();
updateStatusBarInfo();
updateWindowTitle();
updateGraphTabs();
updateMapView();
return true;
} else {
@ -702,13 +703,10 @@ bool GUI::openFile(const QString &fileName)
bool GUI::loadFile(const QString &fileName)
{
Data data;
QList<QList<GraphItem*> > graphs;
QList<PathItem*> paths;
if (data.loadFile(fileName)) {
paths = _mapView->loadData(data);
for (int i = 0; i < _tabs.count(); i++)
_tabs.at(i)->loadData(data, paths);
for (int i = 0; i < data.tracks().count(); i++) {
_trackDistance += data.tracks().at(i)->distance();
_time += data.tracks().at(i)->time();
@ -735,6 +733,25 @@ bool GUI::loadFile(const QString &fileName)
} else
_pathName = QString();
for (int i = 0; i < _tabs.count(); i++)
graphs.append(_tabs.at(i)->loadData(data));
if (updateGraphTabs() | updateMapView())
_splitter->refresh();
paths = _mapView->loadData(data);
for (int i = 0; i < paths.count(); i++) {
const PathItem *pi = paths.at(i);
for (int j = 0; j < graphs.count(); j++) {
const GraphItem *gi = graphs.at(j).at(i);
if (!gi)
continue;
connect(gi, SIGNAL(sliderPositionChanged(qreal)), pi,
SLOT(moveMarker(qreal)));
connect(pi, SIGNAL(selected(bool)), gi, SLOT(hover(bool)));
connect(gi, SIGNAL(selected(bool)), pi, SLOT(hover(bool)));
}
}
return true;
} else {
updateNavigationActions();
@ -855,6 +872,8 @@ void GUI::openOptions()
_poi->setRadius(options.poiRadius);
if (options.pixmapCache != _options.pixmapCache)
QPixmapCache::setCacheLimit(options.pixmapCache * 1024);
if (options.connectionTimeout != _options.connectionTimeout)
Downloader::setTimeout(options.connectionTimeout);
if (reload)
reloadFile();
@ -1007,8 +1026,6 @@ void GUI::reloadFile()
updateStatusBarInfo();
updateWindowTitle();
updateGraphTabs();
updateMapView();
if (_files.isEmpty())
_fileActionGroup->setEnabled(false);
else
@ -1273,10 +1290,11 @@ void GUI::updateNavigationActions()
}
}
void GUI::updateGraphTabs()
bool GUI::updateGraphTabs()
{
int index;
GraphTab *tab;
bool hidden = _graphTabWidget->isHidden();
for (int i = 0; i < _tabs.size(); i++) {
tab = _tabs.at(i);
@ -1300,14 +1318,20 @@ void GUI::updateGraphTabs()
_graphTabWidget->setHidden(true);
_showGraphsAction->setEnabled(false);
}
return (hidden != _graphTabWidget->isHidden());
}
void GUI::updateMapView()
bool GUI::updateMapView()
{
bool hidden = _mapView->isHidden();
if (_options.alwaysShowMap)
_mapView->setHidden(false);
else
_mapView->setHidden(!(_trackCount + _routeCount + _waypointCount));
return (hidden != _mapView->isHidden());
}
void GUI::setTimeType(TimeType type)
@ -1620,6 +1644,8 @@ void GUI::writeSettings()
settings.setValue(USE_OPENGL_SETTING, _options.useOpenGL);
if (_options.pixmapCache != PIXMAP_CACHE_DEFAULT)
settings.setValue(PIXMAP_CACHE_SETTING, _options.pixmapCache);
if (_options.connectionTimeout != CONNECTION_TIMEOUT_DEFAULT)
settings.setValue(CONNECTION_TIMEOUT_SETTING, _options.connectionTimeout);
if (_options.hiresPrint != HIRES_PRINT_DEFAULT)
settings.setValue(HIRES_PRINT_SETTING, _options.hiresPrint);
if (_options.printName != PRINT_NAME_DEFAULT)
@ -1848,6 +1874,8 @@ void GUI::readSettings()
.toBool();
_options.pixmapCache = settings.value(PIXMAP_CACHE_SETTING,
PIXMAP_CACHE_DEFAULT).toInt();
_options.connectionTimeout = settings.value(CONNECTION_TIMEOUT_SETTING,
CONNECTION_TIMEOUT_DEFAULT).toInt();
_options.hiresPrint = settings.value(HIRES_PRINT_SETTING,
HIRES_PRINT_DEFAULT).toBool();
_options.printName = settings.value(PRINT_NAME_SETTING, PRINT_NAME_DEFAULT)
@ -1907,6 +1935,7 @@ void GUI::readSettings()
_poi->setRadius(_options.poiRadius);
QPixmapCache::setCacheLimit(_options.pixmapCache * 1024);
Downloader::setTimeout(_options.connectionTimeout);
settings.endGroup();
}

View File

@ -20,6 +20,7 @@ class QTabWidget;
class QActionGroup;
class QAction;
class QLabel;
class QSplitter;
class QSignalMapper;
class QPrinter;
class FileBrowser;
@ -109,8 +110,8 @@ private:
void updateStatusBarInfo();
void updateWindowTitle();
void updateNavigationActions();
void updateGraphTabs();
void updateMapView();
bool updateGraphTabs();
bool updateMapView();
TimeType timeType() const;
Units units() const;
@ -196,6 +197,7 @@ private:
QLabel *_distanceLabel;
QLabel *_timeLabel;
QSplitter *_splitter;
MapView *_mapView;
QTabWidget *_graphTabWidget;
QList<GraphTab*> _tabs;

View File

@ -24,28 +24,33 @@ void HeartRateGraph::setInfo()
clearInfo();
}
void HeartRateGraph::loadData(const Data &data, const QList<PathItem *> &paths)
QList<GraphItem*> HeartRateGraph::loadData(const Data &data)
{
QList<GraphItem*> graphs;
for (int i = 0; i < data.tracks().count(); i++) {
const Graph &graph = data.tracks().at(i)->heartRate();
if (graph.size() < 2) {
skipColor();
continue;
graphs.append(0);
} else {
HeartRateGraphItem *gi = new HeartRateGraphItem(graph, _graphType);
GraphView::addGraph(gi);
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
graphs.append(gi);
}
HeartRateGraphItem *gi = new HeartRateGraphItem(graph, _graphType);
GraphView::addGraph(gi, paths.at(i));
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
}
for (int i = 0; i < data.routes().count(); i++)
for (int i = 0; i < data.routes().count(); i++) {
skipColor();
graphs.append(0);
}
setInfo();
redraw();
return graphs;
}
qreal HeartRateGraph::avg() const

View File

@ -11,7 +11,7 @@ public:
HeartRateGraph(QWidget *parent = 0);
QString label() const {return tr("Heart rate");}
void loadData(const Data &data, const QList<PathItem *> &paths);
QList<GraphItem*> loadData(const Data &data);
void clear();
void showTracks(bool show);

View File

@ -7,6 +7,9 @@
InfoItem::InfoItem(QGraphicsItem *parent) : QGraphicsItem(parent)
{
_font.setPixelSize(FONT_SIZE);
_font.setFamily(FONT_FAMILY);
#ifndef Q_OS_MAC
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
#endif // Q_OS_MAC
@ -14,16 +17,14 @@ InfoItem::InfoItem(QGraphicsItem *parent) : QGraphicsItem(parent)
void InfoItem::updateBoundingRect()
{
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
QFontMetrics fm(font);
QList<KV>::const_iterator i;
QFontMetrics fm(_font);
qreal width = 0;
for (i = _list.constBegin(); i != _list.constEnd(); i++) {
for (QList<KV>::const_iterator i = _list.constBegin();
i != _list.constEnd(); i++) {
width += fm.width(i->key + ": ");
width += fm.width(i->value) + ((i == _list.constEnd() - 1) ? 0 : PADDING);
width += fm.width(i->value) + ((i == _list.constEnd() - 1)
? 0 : PADDING);
}
_boundingRect = QRectF(0, 0, width, _list.isEmpty() ? 0 : fm.height());
@ -34,22 +35,19 @@ void InfoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
{
Q_UNUSED(option);
Q_UNUSED(widget);
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
painter->setFont(font);
QFontMetrics fm(font);
QList<KV>::const_iterator i;
QFontMetrics fm(_font);
int width = 0;
painter->setFont(_font);
painter->setRenderHint(QPainter::Antialiasing, false);
for (i = _list.constBegin(); i != _list.constEnd(); i++) {
for (QList<KV>::const_iterator i = _list.constBegin();
i != _list.constEnd(); i++) {
painter->drawText(width, fm.height() - fm.descent(), i->key + ": ");
width += fm.width(i->key + ": ");
painter->drawText(width, fm.height() - fm.descent(), i->value);
width += fm.width(i->value) + ((i == _list.constEnd() - 1) ? 0 : PADDING);
width += fm.width(i->value) + ((i == _list.constEnd() - 1)
? 0 : PADDING);
if (i != _list.constEnd() - 1) {
painter->save();
painter->setPen(Qt::gray);

View File

@ -33,6 +33,7 @@ private:
QList<KV> _list;
QRectF _boundingRect;
QFont _font;
};
#endif // INFOITEM_H

View File

@ -9,10 +9,8 @@
#define FIRST_KEY Qt::Key_Home
#define LAST_KEY Qt::Key_End
#define MODIFIER Qt::ShiftModifier
#define ZOOM_IN QKeySequence::ZoomIn
#define ZOOM_OUT QKeySequence::ZoomOut
#define ZOOM_IN Qt::Key_Plus
#define ZOOM_OUT Qt::Key_Minus
#define TOGGLE_GRAPH_TYPE_KEY Qt::Key_X
#define TOGGLE_TIME_TYPE_KEY Qt::Key_T

View File

@ -75,7 +75,6 @@ MapView::MapView(Map *map, POI *poi, QWidget *parent)
_plot = false;
_digitalZoom = 0;
_map->setBackgroundColor(_backgroundColor);
_res = _map->resolution(_map->bounds());
_scene->setSceneRect(_map->bounds());
@ -267,7 +266,6 @@ void MapView::setMap(Map *map)
_map = map;
_map->load();
_map->setBackgroundColor(_backgroundColor);
connect(_map, SIGNAL(loaded()), this, SLOT(reloadMap()));
digitalZoom(0);
@ -287,7 +285,9 @@ void MapView::setMap(Map *map)
it.value()->setMap(_map);
updatePOIVisibility();
centerOn(_map->ll2xy(cr.center()));
QPointF nc = QRectF(_map->ll2xy(cr.topLeft()),
_map->ll2xy(cr.bottomRight())).center();
centerOn(nc);
resetCachedContent();
QPixmapCache::clear();
@ -419,7 +419,7 @@ void MapView::digitalZoom(int zoom)
_mapScale->setDigitalZoom(_digitalZoom);
}
void MapView::zoom(int zoom, const QPoint &pos, const Coordinates &c)
void MapView::zoom(int zoom, const QPoint &pos)
{
bool shift = QApplication::keyboardModifiers() & Qt::ShiftModifier;
@ -431,9 +431,9 @@ void MapView::zoom(int zoom, const QPoint &pos, const Coordinates &c)
digitalZoom(zoom);
} else {
qreal os, ns;
os = _map->zoom();
ns = (zoom > 0) ? _map->zoomIn() : _map->zoomOut();
Coordinates c = _map->xy2ll(mapToScene(pos));
qreal os = _map->zoom();
qreal ns = (zoom > 0) ? _map->zoomIn() : _map->zoomOut();
if (ns != os) {
rescale();
@ -454,8 +454,7 @@ void MapView::wheelEvent(QWheelEvent *event)
return;
deg = 0;
Coordinates c = _map->xy2ll(mapToScene(event->pos()));
zoom((event->delta() > 0) ? 1 : -1, event->pos(), c);
zoom((event->delta() > 0) ? 1 : -1, event->pos());
}
void MapView::mouseDoubleClickEvent(QMouseEvent *event)
@ -463,8 +462,7 @@ void MapView::mouseDoubleClickEvent(QMouseEvent *event)
if (event->button() != Qt::LeftButton && event->button() != Qt::RightButton)
return;
Coordinates c = _map->xy2ll(mapToScene(event->pos()));
zoom((event->button() == Qt::LeftButton) ? 1 : -1, event->pos(), c);
zoom((event->button() == Qt::LeftButton) ? 1 : -1, event->pos());
}
void MapView::keyPressEvent(QKeyEvent *event)
@ -472,11 +470,10 @@ void MapView::keyPressEvent(QKeyEvent *event)
int z;
QPoint pos = viewport()->rect().center();
Coordinates c = _map->xy2ll(mapToScene(pos));
if (event->matches(ZOOM_IN))
if (event->key() == ZOOM_IN)
z = 1;
else if (event->matches(ZOOM_OUT))
else if (event->key() == ZOOM_OUT)
z = -1;
else if (_digitalZoom && event->key() == Qt::Key_Escape) {
digitalZoom(0);
@ -486,7 +483,7 @@ void MapView::keyPressEvent(QKeyEvent *event)
return;
}
zoom(z, pos, c);
zoom(z, pos);
}
void MapView::plot(QPainter *painter, const QRectF &target, qreal scale,
@ -495,13 +492,12 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale,
QRect orig, adj;
qreal ratio, diff, q;
QPointF origScene, origPos;
RectC origC;
int zoom;
// Enter plot mode
setUpdatesEnabled(false);
_plot = true;
_map->setBlockingMode(true);
// Compute sizes & ratios
orig = viewport()->rect();
@ -520,8 +516,8 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale,
// Adjust the view for printing
if (hires) {
zoom = _map->zoom();
QRectF vr(mapToScene(orig).boundingRect());
origC = RectC(_map->xy2ll(vr.topLeft()), _map->xy2ll(vr.bottomRight()));
origScene = vr.center();
QPointF s(painter->device()->logicalDpiX()
@ -536,12 +532,12 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale,
centerOn(center);
adj.moveCenter(mapFromScene(center));
_mapScale->setDigitalZoom(-log2(s.x() / q));
_mapScale->setDigitalZoom(_digitalZoom - log2(s.x() / q));
_mapScale->setPos(mapToScene(QPoint(adj.bottomRight() + QPoint(
-(SCALE_OFFSET + _mapScale->boundingRect().width()) * (s.x() / q),
-(SCALE_OFFSET + _mapScale->boundingRect().height()) * (s.x() / q)))));
} else {
_mapScale->setDigitalZoom(-log2(1.0 / q));
_mapScale->setDigitalZoom(_digitalZoom - log2(1.0 / q));
_mapScale->setPos(mapToScene(QPoint(adj.bottomRight() + QPoint(
-(SCALE_OFFSET + _mapScale->boundingRect().width()) / q ,
-(SCALE_OFFSET + _mapScale->boundingRect().height()) / q))));
@ -552,15 +548,14 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale,
// Revert view changes to display mode
if (hires) {
_map->zoomFit(orig.size(), origC);
_map->setZoom(zoom);
rescale();
centerOn(origScene);
}
_mapScale->setDigitalZoom(0);
_mapScale->setDigitalZoom(_digitalZoom);
_mapScale->setPos(origPos);
// Exit plot mode
_map->setBlockingMode(false);
_plot = false;
setUpdatesEnabled(true);
}
@ -749,7 +744,6 @@ void MapView::setMapOpacity(int opacity)
void MapView::setBackgroundColor(const QColor &color)
{
_backgroundColor = color;
_map->setBackgroundColor(color);
resetCachedContent();
}
@ -761,7 +755,7 @@ void MapView::drawBackground(QPainter *painter, const QRectF &rect)
QRectF ir = rect.intersected(_map->bounds());
if (_opacity < 1.0)
painter->setOpacity(_opacity);
_map->draw(painter, ir);
_map->draw(painter, ir, _plot);
}
}

View File

@ -22,6 +22,7 @@ class RouteItem;
class WaypointItem;
class ScaleItem;
class PathItem;
class GraphItem;
class MapView : public QGraphicsView
{
@ -30,7 +31,7 @@ class MapView : public QGraphicsView
public:
MapView(Map *map, POI *poi, QWidget *parent = 0);
QList<PathItem*> loadData(const Data &data);
QList<PathItem *> loadData(const Data &data);
void setPalette(const Palette &palette);
void setPOI(POI *poi);
@ -84,7 +85,7 @@ private:
QPointF contentCenter() const;
void rescale();
void centerOn(const QPointF &pos);
void zoom(int zoom, const QPoint &pos, const Coordinates &c);
void zoom(int zoom, const QPoint &pos);
void digitalZoom(int zoom);
void updatePOIVisibility();

View File

@ -431,16 +431,23 @@ QWidget *OptionsDialog::createSystemPage()
_pixmapCache->setSuffix(UNIT_SPACE + tr("MB"));
_pixmapCache->setValue(_options->pixmapCache);
QFormLayout *cacheLayout = new QFormLayout();
cacheLayout->addRow(tr("Image cache size:"), _pixmapCache);
_connectionTimeout = new QSpinBox();
_connectionTimeout->setMinimum(30);
_connectionTimeout->setMaximum(120);
_connectionTimeout->setSuffix(UNIT_SPACE + tr("s"));
_connectionTimeout->setValue(_options->connectionTimeout);
QFormLayout *openGLLayout = new QFormLayout();
openGLLayout->addWidget(_useOpenGL);
QFormLayout *formLayout = new QFormLayout();
formLayout->addRow(tr("Image cache size:"), _pixmapCache);
formLayout->addRow(tr("Connection timeout:"), _connectionTimeout);
QFormLayout *checkboxLayout = new QFormLayout();
checkboxLayout->addWidget(_useOpenGL);
QWidget *systemTab = new QWidget();
QVBoxLayout *systemTabLayout = new QVBoxLayout();
systemTabLayout->addLayout(cacheLayout);
systemTabLayout->addLayout(openGLLayout);
systemTabLayout->addLayout(formLayout);
systemTabLayout->addLayout(checkboxLayout);
systemTabLayout->addStretch();
systemTab->setLayout(systemTabLayout);
@ -545,6 +552,7 @@ void OptionsDialog::accept()
_options->useOpenGL = _useOpenGL->isChecked();
_options->pixmapCache = _pixmapCache->value();
_options->connectionTimeout = _connectionTimeout->value();
_options->hiresPrint = _hires->isChecked();
_options->printName = _name->isChecked();

View File

@ -48,6 +48,7 @@ struct Options {
// System
bool useOpenGL;
int pixmapCache;
int connectionTimeout;
// Print/Export
bool hiresPrint;
bool printName;
@ -113,6 +114,7 @@ private:
QDoubleSpinBox *_poiRadius;
// System
QSpinBox *_pixmapCache;
QSpinBox *_connectionTimeout;
QCheckBox *_useOpenGL;
// Print/Export
QRadioButton *_wysiwyg;

View File

@ -24,28 +24,33 @@ void PowerGraph::setInfo()
clearInfo();
}
void PowerGraph::loadData(const Data &data, const QList<PathItem *> &paths)
QList<GraphItem*> PowerGraph::loadData(const Data &data)
{
QList<GraphItem*> graphs;
for (int i = 0; i < data.tracks().count(); i++) {
const Graph &graph = data.tracks().at(i)->power();
if (graph.size() < 2) {
skipColor();
continue;
graphs.append(0);
} else {
PowerGraphItem *gi = new PowerGraphItem(graph, _graphType);
GraphView::addGraph(gi);
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
graphs.append(gi);
}
PowerGraphItem *gi = new PowerGraphItem(graph, _graphType);
GraphView::addGraph(gi, paths.at(i));
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
}
for (int i = 0; i < data.routes().count(); i++)
for (int i = 0; i < data.routes().count(); i++) {
skipColor();
graphs.append(0);
}
setInfo();
redraw();
return graphs;
}
qreal PowerGraph::avg() const

View File

@ -11,7 +11,7 @@ public:
PowerGraph(QWidget *parent = 0);
QString label() const {return tr("Power");}
void loadData(const Data &data, const QList<PathItem *> &paths);
QList<GraphItem*> loadData(const Data &data);
void clear();
void showTracks(bool show);

View File

@ -18,52 +18,34 @@ ScaleItem::ScaleItem(QGraphicsItem *parent) : QGraphicsItem(parent)
_res = 1.0;
_digitalZoom = 0;
_font.setPixelSize(FONT_SIZE);
_font.setFamily(FONT_FAMILY);
#ifndef Q_OS_MAC
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
#endif // Q_OS_MAC
}
void ScaleItem::updateBoundingRect()
{
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
QFontMetrics fm(font);
QRect ss, es, us;
ss = fm.tightBoundingRect(QString::number(0));
es = fm.tightBoundingRect(QString::number(_length * SEGMENTS));
us = fm.tightBoundingRect(units());
_boundingRect = QRectF(-ss.width()/2, 0, _width * SEGMENTS + ss.width()/2
+ qMax(us.width() + PADDING, es.width()/2) + 1, SCALE_HEIGHT + PADDING
+ ss.height() + 2*fm.descent());
}
void ScaleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
QFontMetrics fm(font);
QFontMetrics fm(_font);
QRect br;
QPen pen = QPen(Qt::black, BORDER_WIDTH);
painter->setRenderHint(QPainter::Antialiasing, false);
painter->setFont(font);
painter->setPen(pen);
painter->setFont(_font);
painter->setPen(QPen(Qt::black, BORDER_WIDTH));
for (int i = 0; i <= SEGMENTS; i++) {
QString label = QString::number(_length * i);
br = fm.tightBoundingRect(label);
painter->drawText(_width * i - br.width()/2, br.height() + 1, label);
for (int i = 0; i < _ticks.size(); i++) {
br = _ticks.at(i).boundingBox;
painter->drawText(_width * i - br.width()/2, br.height() + 1,
QString::number(_ticks.at(i).value));
}
painter->drawText(_width * SEGMENTS + PADDING, SCALE_HEIGHT + PADDING
+ br.height() + fm.descent(), units());
+ br.height() + fm.descent(), _unitsStr);
painter->drawRect(QRectF(0, br.height() + PADDING, SEGMENTS * _width,
SCALE_HEIGHT));
@ -77,19 +59,6 @@ void ScaleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
*/
}
QString ScaleItem::units() const
{
if (_units == Imperial)
return _scale ? qApp->translate("ScaleItem", "mi")
: qApp->translate("ScaleItem", "ft");
else if (_units == Nautical)
return _scale ? qApp->translate("ScaleItem", "nmi")
: qApp->translate("ScaleItem", "ft");
else
return _scale ? qApp->translate("ScaleItem", "km")
: qApp->translate("ScaleItem", "m");
}
void ScaleItem::computeScale()
{
qreal res = _res * pow(2, -_digitalZoom);
@ -127,21 +96,50 @@ void ScaleItem::computeScale()
}
}
void ScaleItem::updateCache()
{
QFontMetrics fm(_font);
_ticks = QVector<Tick>(SEGMENTS + 1);
for (int i = 0; i < _ticks.size(); i++) {
Tick &t = _ticks[i];
t.value = _length * i;
t.boundingBox = fm.tightBoundingRect(QString::number(t.value));
}
if (_units == Imperial)
_unitsStr = _scale ? qApp->translate("ScaleItem", "mi")
: qApp->translate("ScaleItem", "ft");
else if (_units == Nautical)
_unitsStr = _scale ? qApp->translate("ScaleItem", "nmi")
: qApp->translate("ScaleItem", "ft");
else
_unitsStr = _scale ? qApp->translate("ScaleItem", "km")
: qApp->translate("ScaleItem", "m");
_unitsBB = fm.tightBoundingRect(_unitsStr);
QRect ss = _ticks.isEmpty() ? QRect() : _ticks.first().boundingBox;
QRect es = _ticks.isEmpty() ? QRect() : _ticks.last().boundingBox;
_boundingRect = QRectF(-ss.width()/2, 0, _width * SEGMENTS + ss.width()/2
+ qMax(_unitsBB.width() + PADDING, es.width()/2) + 1, SCALE_HEIGHT
+ PADDING + ss.height() + 2*fm.descent());
}
void ScaleItem::setResolution(qreal res)
{
prepareGeometryChange();
_res = res;
computeScale();
updateBoundingRect();
updateCache();
update();
}
void ScaleItem::setUnits(enum Units units)
void ScaleItem::setUnits(Units units)
{
prepareGeometryChange();
_units = units;
computeScale();
updateBoundingRect();
updateCache();
update();
}
@ -150,7 +148,7 @@ void ScaleItem::setDigitalZoom(qreal zoom)
prepareGeometryChange();
_digitalZoom = zoom;
computeScale();
updateBoundingRect();
updateCache();
update();
setScale(pow(2, -_digitalZoom));

View File

@ -14,23 +14,29 @@ public:
QWidget *widget);
void setResolution(qreal res);
void setUnits(enum Units units);
void setUnits(Units units);
void setDigitalZoom(qreal zoom);
private:
void updateBoundingRect();
struct Tick {
double value;
QRect boundingBox;
};
void computeScale();
QString units() const;
void updateCache();
qreal _res;
qreal _width;
qreal _length;
Units _units;
bool _scale;
qreal _digitalZoom;
QRectF _boundingRect;
QFont _font;
QVector<Tick> _ticks;
QRect _unitsBB;
QString _unitsStr;
};
#endif // SCALEITEM_H

View File

@ -130,6 +130,8 @@
#define USE_OPENGL_DEFAULT false
#define PIXMAP_CACHE_SETTING "pixmapCache"
#define PIXMAP_CACHE_DEFAULT 64 /* MB */
#define CONNECTION_TIMEOUT_SETTING "connectionTimeout"
#define CONNECTION_TIMEOUT_DEFAULT 30 /* s */
#define HIRES_PRINT_SETTING "hiresPrint"
#define HIRES_PRINT_DEFAULT false
#define PRINT_NAME_SETTING "printName"

View File

@ -9,14 +9,14 @@ SliderInfoItem::SliderInfoItem(QGraphicsItem *parent) : QGraphicsItem(parent)
{
_side = Right;
_color = Qt::red;
_font.setPixelSize(FONT_SIZE);
_font.setFamily(FONT_FAMILY);
}
void SliderInfoItem::updateBoundingRect()
{
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
QFontMetrics fm(font);
QFontMetrics fm(_font);
qreal width = qMax(fm.width(_x), fm.width(_y));
qreal height = 2 * fm.height() - 2*fm.descent();
@ -31,10 +31,7 @@ void SliderInfoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
{
Q_UNUSED(option);
Q_UNUSED(widget);
QFont font;
font.setPixelSize(FONT_SIZE);
font.setFamily(FONT_FAMILY);
QFontMetrics fm(font);
QFontMetrics fm(_font);
QRectF rx, ry;
@ -57,7 +54,7 @@ void SliderInfoItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
painter->drawRect(rx);
painter->setBrush(Qt::NoBrush);
painter->setFont(font);
painter->setFont(_font);
painter->setRenderHint(QPainter::Antialiasing, false);
painter->setPen(_color);

View File

@ -25,6 +25,7 @@ private:
QString _x, _y;
QRectF _boundingRect;
QColor _color;
QFont _font;
};
#endif // SLIDERINFOITEM_H

View File

@ -34,32 +34,37 @@ void SpeedGraph::setInfo()
clearInfo();
}
void SpeedGraph::loadData(const Data &data, const QList<PathItem *> &paths)
QList<GraphItem*> SpeedGraph::loadData(const Data &data)
{
QList<GraphItem*> graphs;
for (int i = 0; i < data.tracks().count(); i++) {
const Track *track = data.tracks().at(i);
const Graph &graph = track->speed();
if (graph.size() < 2) {
skipColor();
continue;
graphs.append(0);
} else {
SpeedGraphItem *gi = new SpeedGraphItem(graph, _graphType,
track->movingTime());
gi->setTimeType(_timeType);
GraphView::addGraph(gi);
_avg.append(QPointF(track->distance(), gi->avg()));
_mavg.append(QPointF(track->distance(), gi->mavg()));
graphs.append(gi);
}
SpeedGraphItem *gi = new SpeedGraphItem(graph, _graphType,
track->movingTime());
gi->setTimeType(_timeType);
GraphView::addGraph(gi, paths.at(i));
_avg.append(QPointF(track->distance(), gi->avg()));
_mavg.append(QPointF(track->distance(), gi->mavg()));
}
for (int i = 0; i < data.routes().count(); i++)
for (int i = 0; i < data.routes().count(); i++) {
skipColor();
graphs.append(0);
}
setInfo();
redraw();
return graphs;
}
qreal SpeedGraph::avg() const

View File

@ -12,7 +12,7 @@ public:
SpeedGraph(QWidget *parent = 0);
QString label() const {return tr("Speed");}
void loadData(const Data &data, const QList<PathItem *> &paths);
QList<GraphItem*> loadData(const Data &data);
void clear();
void setUnits(Units units);
void setTimeType(TimeType type);

View File

@ -26,28 +26,34 @@ void TemperatureGraph::setInfo()
clearInfo();
}
void TemperatureGraph::loadData(const Data &data, const QList<PathItem *> &paths)
QList<GraphItem*> TemperatureGraph::loadData(const Data &data)
{
QList<GraphItem*> graphs;
for (int i = 0; i < data.tracks().count(); i++) {
const Graph &graph = data.tracks().at(i)->temperature();
if (graph.size() < 2) {
skipColor();
continue;
graphs.append(0);
} else {
TemperatureGraphItem *gi = new TemperatureGraphItem(graph,
_graphType);
GraphView::addGraph(gi);
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
graphs.append(gi);
}
TemperatureGraphItem *gi = new TemperatureGraphItem(graph, _graphType);
GraphView::addGraph(gi, paths.at(i));
_avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg()));
}
for (int i = 0; i < data.routes().count(); i++)
for (int i = 0; i < data.routes().count(); i++) {
skipColor();
graphs.append(0);
}
setInfo();
redraw();
return graphs;
}
qreal TemperatureGraph::avg() const

View File

@ -11,7 +11,7 @@ public:
TemperatureGraph(QWidget *parent = 0);
QString label() const {return tr("Temperature");}
void loadData(const Data &data, const QList<PathItem *> &paths);
QList<GraphItem*> loadData(const Data &data);
void clear();
void setUnits(enum Units units);
void showTracks(bool show);

View File

@ -36,11 +36,13 @@ WaypointItem::WaypointItem(const Waypoint &waypoint, Map *map,
{
_waypoint = waypoint;
_showLabel = true;
_hover = false;
_size = 8;
_color = Qt::black;
updateShape();
_font.setPixelSize(FS(_size));
_font.setFamily(FONT_FAMILY);
updateCache();
setPos(map->ll2xy(waypoint.coordinates()));
setToolTip(toolTip(Metric, DecimalDegrees));
@ -48,23 +50,18 @@ WaypointItem::WaypointItem(const Waypoint &waypoint, Map *map,
setAcceptHoverEvents(true);
}
void WaypointItem::updateShape()
void WaypointItem::updateCache()
{
QPainterPath p;
qreal pointSize = _hover ? HS(_size) : _size;
qreal pointSize = _font.bold() ? HS(_size) : _size;
if (_showLabel) {
QFont font;
font.setPixelSize(FS(_size));
font.setFamily(FONT_FAMILY);
if (_hover)
font.setBold(true);
QFontMetrics fm(font);
QRect ts = fm.tightBoundingRect(_waypoint.name());
QFontMetrics fm(_font);
_labelBB = fm.tightBoundingRect(_waypoint.name());
p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
p.addRect(pointSize/2, pointSize/2,
ts.width(), ts.height() + fm.descent());
p.addRect(pointSize/2, pointSize/2, _labelBB.width(), _labelBB.height()
+ fm.descent());
} else
p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
@ -76,23 +73,14 @@ void WaypointItem::paint(QPainter *painter,
{
Q_UNUSED(option);
Q_UNUSED(widget);
qreal pointSize = _hover ? HS(_size) : _size;
qreal pointSize = _font.bold() ? HS(_size) : _size;
painter->setPen(_color);
if (_showLabel) {
QFont font;
font.setPixelSize(FS(_size));
font.setFamily(FONT_FAMILY);
if (_hover)
font.setBold(true);
QFontMetrics fm(font);
QRect ts = fm.tightBoundingRect(_waypoint.name());
painter->setFont(font);
painter->drawText(pointSize/2 - qMax(ts.x(), 0), pointSize/2
+ ts.height(), _waypoint.name());
painter->setFont(_font);
painter->drawText(pointSize/2 - qMax(_labelBB.x(), 0), pointSize/2
+ _labelBB.height(), _waypoint.name());
}
painter->setBrush(QBrush(_color, Qt::SolidPattern));
@ -112,7 +100,8 @@ void WaypointItem::setSize(int size)
prepareGeometryChange();
_size = size;
updateShape();
_font.setPixelSize(FS(_size));
updateCache();
}
void WaypointItem::setColor(const QColor &color)
@ -136,7 +125,7 @@ void WaypointItem::showLabel(bool show)
prepareGeometryChange();
_showLabel = show;
updateShape();
updateCache();
}
void WaypointItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
@ -144,8 +133,8 @@ void WaypointItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
Q_UNUSED(event);
prepareGeometryChange();
_hover = true;
updateShape();
_font.setBold(true);
updateCache();
setZValue(zValue() + 1.0);
}
@ -154,7 +143,7 @@ void WaypointItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
Q_UNUSED(event);
prepareGeometryChange();
_hover = false;
updateShape();
_font.setBold(false);
updateCache();
setZValue(zValue() - 1.0);
}

View File

@ -31,16 +31,16 @@ private:
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
void updateShape();
void updateCache();
QString toolTip(Units units, CoordinatesFormat format);
QPainterPath _shape;
Waypoint _waypoint;
QPainterPath _shape;
QColor _color;
int _size;
bool _hover;
bool _showLabel;
QFont _font;
QRect _labelBB;
};
#endif // WAYPOINTITEM_H

View File

@ -4,9 +4,6 @@
#include <cmath>
#include <QDebug>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif // M_PI
#define deg2rad(d) (((d)*M_PI)/180.0)
#define rad2deg(d) (((d)*180.0)/M_PI)

View File

@ -20,10 +20,10 @@ RectC::RectC(const Coordinates &center, double radius)
double deltaLon = asin(sin(radDist) / cos(radlat));
minLon = radLon - deltaLon;
if (minLon < MIN_LON)
minLon += 2.0 * M_PI;
minLon += M_2_PI;
maxLon = radLon + deltaLon;
if (maxLon > MAX_LON)
maxLon -= 2.0 * M_PI;
maxLon -= M_2_PI;
} else {
// a pole is within the distance
minLat = qMax(minLat, MIN_LAT);

View File

@ -3,15 +3,9 @@
#include <cstdio>
#include <cmath>
#include <cassert>
#include <cstdlib>
#include <QtGlobal>
#define ASSERT assert // RTree uses ASSERT( condition )
#define Max(a,b) \
(((a) > (b)) ? (a) : (b))
#define Min(a,b) \
(((a) < (b)) ? (a) : (b))
#define RTREE_TEMPLATE template<class DATATYPE, class ELEMTYPE, int NUMDIMS, \
class ELEMTYPEREAL, int TMAXNODES, int TMINNODES>
@ -129,7 +123,7 @@ public:
/// Access the current data element.
DATATYPE& operator*()
{
ASSERT(IsNotNull());
Q_ASSERT(IsNotNull());
StackElement& curTos = m_stack[m_tos - 1];
return curTos.m_node->m_branch[curTos.m_branchIndex].m_data;
}
@ -137,7 +131,7 @@ public:
/// Access the current data element.
const DATATYPE& operator*() const
{
ASSERT(IsNotNull());
Q_ASSERT(IsNotNull());
StackElement& curTos = m_stack[m_tos - 1];
return curTos.m_node->m_branch[curTos.m_branchIndex].m_data;
}
@ -148,7 +142,7 @@ public:
/// Get the bounds for this node
void GetBounds(ELEMTYPE a_min[NUMDIMS], ELEMTYPE a_max[NUMDIMS])
{
ASSERT(IsNotNull());
Q_ASSERT(IsNotNull());
StackElement& curTos = m_stack[m_tos - 1];
Branch& curBranch = curTos.m_node->m_branch[curTos.m_branchIndex];
@ -206,13 +200,13 @@ public:
m_stack[m_tos].m_node = a_node;
m_stack[m_tos].m_branchIndex = a_branchIndex;
++m_tos;
ASSERT(m_tos <= MAX_STACK);
Q_ASSERT(m_tos <= MAX_STACK);
}
// Pop element off iteration stack
StackElement& Pop()
{
ASSERT(m_tos > 0);
Q_ASSERT(m_tos > 0);
--m_tos;
return m_stack[m_tos];
}
@ -356,12 +350,12 @@ protected:
RTREE_TEMPLATE
RTREE_QUAL::RTree()
{
ASSERT(MAXNODES > MINNODES);
ASSERT(MINNODES > 0);
Q_ASSERT(MAXNODES > MINNODES);
Q_ASSERT(MINNODES > 0);
// We only support machine word size simple data type eg. integer index or
// object pointer. Since we are storing as union with non data branch
ASSERT(sizeof(DATATYPE) == sizeof(void*) || sizeof(DATATYPE) == sizeof(int));
Q_ASSERT(sizeof(DATATYPE) == sizeof(void*) || sizeof(DATATYPE) == sizeof(int));
// Precomputed volumes of the unit spheres for the first few dimensions
const float UNIT_SPHERE_VOLUMES[] = {
@ -393,7 +387,7 @@ void RTREE_QUAL::Insert(const ELEMTYPE a_min[NUMDIMS],
{
#ifdef _DEBUG
for (int index=0; index<NUMDIMS; ++index)
ASSERT(a_min[index] <= a_max[index]);
Q_ASSERT(a_min[index] <= a_max[index]);
#endif //_DEBUG
Rect rect;
@ -413,7 +407,7 @@ void RTREE_QUAL::Remove(const ELEMTYPE a_min[NUMDIMS],
{
#ifdef _DEBUG
for (int index=0; index<NUMDIMS; ++index)
ASSERT(a_min[index] <= a_max[index]);
Q_ASSERT(a_min[index] <= a_max[index]);
#endif //_DEBUG
Rect rect;
@ -433,7 +427,7 @@ int RTREE_QUAL::Search(const ELEMTYPE a_min[NUMDIMS], const ELEMTYPE a_max[NUMDI
{
#ifdef _DEBUG
for (int index=0; index<NUMDIMS; ++index)
ASSERT(a_min[index] <= a_max[index]);
Q_ASSERT(a_min[index] <= a_max[index]);
#endif //_DEBUG
Rect rect;
@ -502,8 +496,8 @@ void RTREE_QUAL::Reset()
RTREE_TEMPLATE
void RTREE_QUAL::RemoveAllRec(Node* a_node)
{
ASSERT(a_node);
ASSERT(a_node->m_level >= 0);
Q_ASSERT(a_node);
Q_ASSERT(a_node->m_level >= 0);
if (a_node->IsInternalNode()) { // This is an internal node in the tree
for (int index=0; index < a_node->m_count; ++index)
@ -530,7 +524,7 @@ typename RTREE_QUAL::Node* RTREE_QUAL::AllocNode()
RTREE_TEMPLATE
void RTREE_QUAL::FreeNode(Node* a_node)
{
ASSERT(a_node);
Q_ASSERT(a_node);
#ifdef RTREE_DONT_USE_MEMPOOLS
delete a_node;
@ -593,8 +587,8 @@ RTREE_TEMPLATE
bool RTREE_QUAL::InsertRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node,
Node** a_newNode, int a_level)
{
ASSERT(a_rect && a_node && a_newNode);
ASSERT(a_level >= 0 && a_level <= a_node->m_level);
Q_ASSERT(a_rect && a_node && a_newNode);
Q_ASSERT(a_level >= 0 && a_level <= a_node->m_level);
int index;
Branch branch;
@ -621,7 +615,7 @@ bool RTREE_QUAL::InsertRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node,
return AddBranch(&branch, a_node, a_newNode);
} else {
// Should never occur
ASSERT(0);
Q_ASSERT(0);
return false;
}
}
@ -638,11 +632,11 @@ RTREE_TEMPLATE
bool RTREE_QUAL::InsertRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root,
int a_level)
{
ASSERT(a_rect && a_root);
ASSERT(a_level >= 0 && a_level <= (*a_root)->m_level);
Q_ASSERT(a_rect && a_root);
Q_ASSERT(a_level >= 0 && a_level <= (*a_root)->m_level);
#ifdef _DEBUG
for (int index=0; index < NUMDIMS; ++index)
ASSERT(a_rect->m_min[index] <= a_rect->m_max[index]);
Q_ASSERT(a_rect->m_min[index] <= a_rect->m_max[index]);
#endif //_DEBUG
Node* newRoot;
@ -672,7 +666,7 @@ bool RTREE_QUAL::InsertRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root,
RTREE_TEMPLATE
typename RTREE_QUAL::Rect RTREE_QUAL::NodeCover(Node* a_node)
{
ASSERT(a_node);
Q_ASSERT(a_node);
int firstTime = true;
Rect rect;
@ -698,8 +692,8 @@ typename RTREE_QUAL::Rect RTREE_QUAL::NodeCover(Node* a_node)
RTREE_TEMPLATE
bool RTREE_QUAL::AddBranch(Branch* a_branch, Node* a_node, Node** a_newNode)
{
ASSERT(a_branch);
ASSERT(a_node);
Q_ASSERT(a_branch);
Q_ASSERT(a_node);
if (a_node->m_count < MAXNODES) { // Split won't be necessary
a_node->m_branch[a_node->m_count] = *a_branch;
@ -707,7 +701,7 @@ bool RTREE_QUAL::AddBranch(Branch* a_branch, Node* a_node, Node** a_newNode)
return false;
} else {
ASSERT(a_newNode);
Q_ASSERT(a_newNode);
SplitNode(a_node, a_branch, a_newNode);
return true;
@ -721,8 +715,8 @@ bool RTREE_QUAL::AddBranch(Branch* a_branch, Node* a_node, Node** a_newNode)
RTREE_TEMPLATE
void RTREE_QUAL::DisconnectBranch(Node* a_node, int a_index)
{
ASSERT(a_node && (a_index >= 0) && (a_index < MAXNODES));
ASSERT(a_node->m_count > 0);
Q_ASSERT(a_node && (a_index >= 0) && (a_index < MAXNODES));
Q_ASSERT(a_node->m_count > 0);
// Remove element by swapping with the last element to prevent gaps in array
a_node->m_branch[a_index] = a_node->m_branch[a_node->m_count - 1];
@ -739,7 +733,7 @@ void RTREE_QUAL::DisconnectBranch(Node* a_node, int a_index)
RTREE_TEMPLATE
int RTREE_QUAL::PickBranch(Rect* a_rect, Node* a_node)
{
ASSERT(a_rect && a_node);
Q_ASSERT(a_rect && a_node);
bool firstTime = true;
ELEMTYPEREAL increase;
@ -774,13 +768,13 @@ int RTREE_QUAL::PickBranch(Rect* a_rect, Node* a_node)
RTREE_TEMPLATE
typename RTREE_QUAL::Rect RTREE_QUAL::CombineRect(Rect* a_rectA, Rect* a_rectB)
{
ASSERT(a_rectA && a_rectB);
Q_ASSERT(a_rectA && a_rectB);
Rect newRect;
for (int index = 0; index < NUMDIMS; ++index) {
newRect.m_min[index] = Min(a_rectA->m_min[index], a_rectB->m_min[index]);
newRect.m_max[index] = Max(a_rectA->m_max[index], a_rectB->m_max[index]);
newRect.m_min[index] = qMin(a_rectA->m_min[index], a_rectB->m_min[index]);
newRect.m_max[index] = qMax(a_rectA->m_max[index], a_rectB->m_max[index]);
}
return newRect;
@ -795,8 +789,8 @@ typename RTREE_QUAL::Rect RTREE_QUAL::CombineRect(Rect* a_rectA, Rect* a_rectB)
RTREE_TEMPLATE
void RTREE_QUAL::SplitNode(Node* a_node, Branch* a_branch, Node** a_newNode)
{
ASSERT(a_node);
ASSERT(a_branch);
Q_ASSERT(a_node);
Q_ASSERT(a_branch);
// Could just use local here, but member or external is faster since it is
// reused
@ -816,7 +810,7 @@ void RTREE_QUAL::SplitNode(Node* a_node, Branch* a_branch, Node** a_newNode)
(*a_newNode)->m_level = a_node->m_level = level;
LoadNodes(a_node, *a_newNode, parVars);
ASSERT((a_node->m_count + (*a_newNode)->m_count) == parVars->m_total);
Q_ASSERT((a_node->m_count + (*a_newNode)->m_count) == parVars->m_total);
}
@ -824,14 +818,14 @@ void RTREE_QUAL::SplitNode(Node* a_node, Branch* a_branch, Node** a_newNode)
RTREE_TEMPLATE
ELEMTYPEREAL RTREE_QUAL::RectVolume(Rect* a_rect)
{
ASSERT(a_rect);
Q_ASSERT(a_rect);
ELEMTYPEREAL volume = (ELEMTYPEREAL)1;
for (int index=0; index<NUMDIMS; ++index)
volume *= a_rect->m_max[index] - a_rect->m_min[index];
ASSERT(volume >= (ELEMTYPEREAL)0);
Q_ASSERT(volume >= (ELEMTYPEREAL)0);
return volume;
}
@ -841,7 +835,7 @@ ELEMTYPEREAL RTREE_QUAL::RectVolume(Rect* a_rect)
RTREE_TEMPLATE
ELEMTYPEREAL RTREE_QUAL::RectSphericalVolume(Rect* a_rect)
{
ASSERT(a_rect);
Q_ASSERT(a_rect);
ELEMTYPEREAL sumOfSquares = (ELEMTYPEREAL)0;
ELEMTYPEREAL radius;
@ -881,10 +875,10 @@ RTREE_TEMPLATE
void RTREE_QUAL::GetBranches(Node* a_node, Branch* a_branch,
PartitionVars* a_parVars)
{
ASSERT(a_node);
ASSERT(a_branch);
Q_ASSERT(a_node);
Q_ASSERT(a_branch);
ASSERT(a_node->m_count == MAXNODES);
Q_ASSERT(a_node->m_count == MAXNODES);
// Load the branch buffer
for (int index=0; index < MAXNODES; ++index)
@ -917,7 +911,7 @@ void RTREE_QUAL::GetBranches(Node* a_node, Branch* a_branch,
RTREE_TEMPLATE
void RTREE_QUAL::ChoosePartition(PartitionVars* a_parVars, int a_minFill)
{
ASSERT(a_parVars);
Q_ASSERT(a_parVars);
ELEMTYPEREAL biggestDiff;
int group, chosen = 0, betterGroup = 0;
@ -973,8 +967,8 @@ void RTREE_QUAL::ChoosePartition(PartitionVars* a_parVars, int a_minFill)
}
}
ASSERT((a_parVars->m_count[0] + a_parVars->m_count[1]) == a_parVars->m_total);
ASSERT((a_parVars->m_count[0] >= a_parVars->m_minFill) &&
Q_ASSERT((a_parVars->m_count[0] + a_parVars->m_count[1]) == a_parVars->m_total);
Q_ASSERT((a_parVars->m_count[0] >= a_parVars->m_minFill) &&
(a_parVars->m_count[1] >= a_parVars->m_minFill));
}
@ -983,12 +977,12 @@ void RTREE_QUAL::ChoosePartition(PartitionVars* a_parVars, int a_minFill)
RTREE_TEMPLATE
void RTREE_QUAL::LoadNodes(Node* a_nodeA, Node* a_nodeB, PartitionVars* a_parVars)
{
ASSERT(a_nodeA);
ASSERT(a_nodeB);
ASSERT(a_parVars);
Q_ASSERT(a_nodeA);
Q_ASSERT(a_nodeB);
Q_ASSERT(a_parVars);
for (int index=0; index < a_parVars->m_total; ++index) {
ASSERT(a_parVars->m_partition[index] == 0 || a_parVars->m_partition[index] == 1);
Q_ASSERT(a_parVars->m_partition[index] == 0 || a_parVars->m_partition[index] == 1);
if (a_parVars->m_partition[index] == 0)
AddBranch(&a_parVars->m_branchBuf[index], a_nodeA, NULL);
@ -1003,7 +997,7 @@ RTREE_TEMPLATE
void RTREE_QUAL::InitParVars(PartitionVars* a_parVars, int a_maxRects,
int a_minFill)
{
ASSERT(a_parVars);
Q_ASSERT(a_parVars);
a_parVars->m_count[0] = a_parVars->m_count[1] = 0;
a_parVars->m_area[0] = a_parVars->m_area[1] = (ELEMTYPEREAL)0;
@ -1049,8 +1043,8 @@ void RTREE_QUAL::PickSeeds(PartitionVars* a_parVars)
RTREE_TEMPLATE
void RTREE_QUAL::Classify(int a_index, int a_group, PartitionVars* a_parVars)
{
ASSERT(a_parVars);
ASSERT(!a_parVars->m_taken[a_index]);
Q_ASSERT(a_parVars);
Q_ASSERT(!a_parVars->m_taken[a_index]);
a_parVars->m_partition[a_index] = a_group;
a_parVars->m_taken[a_index] = true;
@ -1073,8 +1067,8 @@ void RTREE_QUAL::Classify(int a_index, int a_group, PartitionVars* a_parVars)
RTREE_TEMPLATE
bool RTREE_QUAL::RemoveRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root)
{
ASSERT(a_rect && a_root);
ASSERT(*a_root);
Q_ASSERT(a_rect && a_root);
Q_ASSERT(*a_root);
Node* tempNode;
ListNode* reInsertList = NULL;
@ -1100,7 +1094,7 @@ bool RTREE_QUAL::RemoveRect(Rect* a_rect, const DATATYPE& a_id, Node** a_root)
if ((*a_root)->m_count == 1 && (*a_root)->IsInternalNode()) {
tempNode = (*a_root)->m_branch[0].m_child;
ASSERT(tempNode);
Q_ASSERT(tempNode);
FreeNode(*a_root);
*a_root = tempNode;
}
@ -1119,8 +1113,8 @@ RTREE_TEMPLATE
bool RTREE_QUAL::RemoveRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node,
ListNode** a_listNode)
{
ASSERT(a_rect && a_node && a_listNode);
ASSERT(a_node->m_level >= 0);
Q_ASSERT(a_rect && a_node && a_listNode);
Q_ASSERT(a_node->m_level >= 0);
if (a_node->IsInternalNode()) { // not a leaf node
for (int index = 0; index < a_node->m_count; ++index) {
@ -1160,7 +1154,7 @@ bool RTREE_QUAL::RemoveRectRec(Rect* a_rect, const DATATYPE& a_id, Node* a_node,
RTREE_TEMPLATE
bool RTREE_QUAL::Overlap(Rect* a_rectA, Rect* a_rectB) const
{
ASSERT(a_rectA && a_rectB);
Q_ASSERT(a_rectA && a_rectB);
for (int index=0; index < NUMDIMS; ++index) {
if (a_rectA->m_min[index] > a_rectB->m_max[index] ||
@ -1193,9 +1187,9 @@ bool RTREE_QUAL::Search(Node* a_node, Rect* a_rect, int& a_foundCount,
bool (*a_resultCallback)(DATATYPE a_data, void* a_context),
void* a_context) const
{
ASSERT(a_node);
ASSERT(a_node->m_level >= 0);
ASSERT(a_rect);
Q_ASSERT(a_node);
Q_ASSERT(a_node->m_level >= 0);
Q_ASSERT(a_rect);
if (a_node->IsInternalNode()) { // This is an internal node in the tree
for (int index=0; index < a_node->m_count; ++index) {

View File

@ -51,6 +51,15 @@ Coordinates GPXParser::coordinates()
return Coordinates(lon, lat);
}
void GPXParser::rpExtension(TrackData *autoRoute)
{
while (_reader.readNextStartElement()) {
if (_reader.name() == "rpt")
autoRoute->append(Trackpoint(coordinates()));
_reader.skipCurrentElement();
}
}
void GPXParser::tpExtension(Trackpoint &trackpoint)
{
while (_reader.readNextStartElement()) {
@ -63,7 +72,17 @@ void GPXParser::tpExtension(Trackpoint &trackpoint)
}
}
void GPXParser::extensions(Trackpoint &trackpoint)
void GPXParser::rteptExtensions(TrackData *autoRoute)
{
while (_reader.readNextStartElement()) {
if (_reader.name() == "RoutePointExtension")
rpExtension(autoRoute);
else
_reader.skipCurrentElement();
}
}
void GPXParser::trkptExtensions(Trackpoint &trackpoint)
{
while (_reader.readNextStartElement()) {
if (_reader.name() == "speed")
@ -95,7 +114,7 @@ void GPXParser::trackpointData(Trackpoint &trackpoint)
else if (_reader.name() == "geoidheight")
gh = number();
else if (_reader.name() == "extensions")
extensions(trackpoint);
trkptExtensions(trackpoint);
else
_reader.skipCurrentElement();
}
@ -104,7 +123,7 @@ void GPXParser::trackpointData(Trackpoint &trackpoint)
trackpoint.setElevation(trackpoint.elevation() - gh);
}
void GPXParser::waypointData(Waypoint &waypoint)
void GPXParser::waypointData(Waypoint &waypoint, TrackData *autoRoute)
{
qreal gh = NAN;
@ -119,6 +138,8 @@ void GPXParser::waypointData(Waypoint &waypoint)
gh = number();
else if (_reader.name() == "time")
waypoint.setTimestamp(time());
else if (autoRoute && _reader.name() == "extensions")
rteptExtensions(autoRoute);
else
_reader.skipCurrentElement();
}
@ -138,12 +159,14 @@ void GPXParser::trackpoints(TrackData &track)
}
}
void GPXParser::routepoints(RouteData &route)
void GPXParser::routepoints(RouteData &route, QList<TrackData> &tracks)
{
TrackData autoRoute;
while (_reader.readNextStartElement()) {
if (_reader.name() == "rtept") {
route.append(Waypoint(coordinates()));
waypointData(route.last());
waypointData(route.last(), &autoRoute);
} else if (_reader.name() == "name")
route.setName(_reader.readElementText());
else if (_reader.name() == "desc")
@ -151,6 +174,12 @@ void GPXParser::routepoints(RouteData &route)
else
_reader.skipCurrentElement();
}
if (!autoRoute.isEmpty()) {
autoRoute.setName(route.name());
autoRoute.setDescription(route.description());
tracks.append(autoRoute);
}
}
void GPXParser::track(TrackData &track)
@ -176,7 +205,7 @@ void GPXParser::gpx(QList<TrackData> &tracks, QList<RouteData> &routes,
track(tracks.back());
} else if (_reader.name() == "rte") {
routes.append(RouteData());
routepoints(routes.back());
routepoints(routes.back(), tracks);
} else if (_reader.name() == "wpt") {
waypoints.append(Waypoint(coordinates()));
waypointData(waypoints.last());
@ -190,6 +219,7 @@ bool GPXParser::parse(QFile *file, QList<TrackData> &tracks,
{
_reader.clear();
_reader.setDevice(file);
_reader.setNamespaceProcessing(false);
if (_reader.readNextStartElement()) {
if (_reader.name() == "gpx")

View File

@ -18,11 +18,13 @@ private:
QList<Waypoint> &waypoints);
void track(TrackData &track);
void trackpoints(TrackData &track);
void routepoints(RouteData &route);
void routepoints(RouteData &route, QList<TrackData> &tracks);
void rpExtension(TrackData *autoRoute);
void tpExtension(Trackpoint &trackpoint);
void extensions(Trackpoint &trackpoint);
void trkptExtensions(Trackpoint &trackpoint);
void rteptExtensions(TrackData *autoRoute);
void trackpointData(Trackpoint &trackpoint);
void waypointData(Waypoint &waypoint);
void waypointData(Waypoint &waypoint, TrackData *autoRoute = 0);
qreal number();
QDateTime time();
Coordinates coordinates();

View File

@ -5,7 +5,7 @@
#include <QPointF>
#include <QString>
#include <QStringList>
#include "rtree.h"
#include "common/rtree.h"
#include "waypoint.h"
#include "path.h"

View File

@ -89,7 +89,7 @@ Track::Track(const TrackData &data) : _data(data)
_distance.append(ds);
if (_data.first().hasTimestamp() && _data.at(i).hasTimestamp()
&& _data.at(i).timestamp() > _data.at(last).timestamp()) {
&& _data.at(i).timestamp() >= _data.at(last).timestamp()) {
_time.append(_data.first().timestamp().msecsTo(
_data.at(i).timestamp()) / 1000.0);
last = i;

View File

@ -45,16 +45,12 @@ Defense.
#include "albersequal.h"
#ifndef M_PI_2
#define M_PI_2 1.57079632679489661923
#endif // M_PI_2
#define ONE_MINUS_SQR(x) (1.0 - (x) * (x))
#define ALBERS_Q(slat, one_minus_sqr_es_sin, es_sin) \
(_one_minus_es2 * ((slat) / (one_minus_sqr_es_sin) - \
(1 / (_two_es)) * log((1 - (es_sin)) / (1 + (es_sin)))))
#define ALBERS_M(clat, one_minus_sqr_es_sin) \
((clat) / sqrt(one_minus_sqr_es_sin))
#define ALBERS_Q(slat, one_minus_sqr_e_sin, es_sin) \
(_one_minus_es * ((slat) / (one_minus_sqr_e_sin) - \
(1 / (_two_e)) * log((1 - (es_sin)) / (1 + (es_sin)))))
#define ALBERS_M(clat, one_minus_sqr_e_sin) \
((clat) / sqrt(one_minus_sqr_e_sin))
AlbersEqual::AlbersEqual(const Ellipsoid *ellipsoid, double standardParallel1,
@ -64,8 +60,8 @@ AlbersEqual::AlbersEqual(const Ellipsoid *ellipsoid, double standardParallel1,
double sin_lat, sin_lat1, sin_lat2, cos_lat1, cos_lat2;
double m1, m2, sqr_m1, sqr_m2;
double q0, q1, q2;
double es_sin, es_sin1, es_sin2;
double one_minus_sqr_es_sin1, one_minus_sqr_es_sin2;
double e_sin, e_sin1, e_sin2;
double one_minus_sqr_e_sin1, one_minus_sqr_e_sin2;
double nq0;
double sp1, sp2;
@ -79,31 +75,30 @@ AlbersEqual::AlbersEqual(const Ellipsoid *ellipsoid, double standardParallel1,
sp2 = deg2rad(standardParallel2);
_a2 = ellipsoid->radius() * ellipsoid->radius();
_es2 = 2 * ellipsoid->flattening() - ellipsoid->flattening()
* ellipsoid->flattening();
_es = sqrt(_es2);
_one_minus_es2 = 1 - _es2;
_two_es = 2 * _es;
_es = ellipsoid->es();
_e = sqrt(_es);
_one_minus_es = 1 - _es;
_two_e = 2 * _e;
sin_lat = sin(_latitudeOrigin);
es_sin = _es * sin_lat;
q0 = ALBERS_Q(sin_lat, ONE_MINUS_SQR(es_sin), es_sin);
e_sin = _e * sin_lat;
q0 = ALBERS_Q(sin_lat, ONE_MINUS_SQR(e_sin), e_sin);
sin_lat1 = sin(sp1);
cos_lat1 = cos(sp1);
es_sin1 = _es * sin_lat1;
one_minus_sqr_es_sin1 = ONE_MINUS_SQR(es_sin1);
m1 = ALBERS_M(cos_lat1, one_minus_sqr_es_sin1);
q1 = ALBERS_Q(sin_lat1, one_minus_sqr_es_sin1, es_sin1);
e_sin1 = _e * sin_lat1;
one_minus_sqr_e_sin1 = ONE_MINUS_SQR(e_sin1);
m1 = ALBERS_M(cos_lat1, one_minus_sqr_e_sin1);
q1 = ALBERS_Q(sin_lat1, one_minus_sqr_e_sin1, e_sin1);
sqr_m1 = m1 * m1;
if (fabs(sp1 - sp2) > 1.0e-10) {
sin_lat2 = sin(sp2);
cos_lat2 = cos(sp2);
es_sin2 = _es * sin_lat2;
one_minus_sqr_es_sin2 = ONE_MINUS_SQR(es_sin2);
m2 = ALBERS_M(cos_lat2, one_minus_sqr_es_sin2);
q2 = ALBERS_Q(sin_lat2, one_minus_sqr_es_sin2, es_sin2);
e_sin2 = _e * sin_lat2;
one_minus_sqr_e_sin2 = ONE_MINUS_SQR(e_sin2);
m2 = ALBERS_M(cos_lat2, one_minus_sqr_e_sin2);
q2 = ALBERS_Q(sin_lat2, one_minus_sqr_e_sin2, e_sin2);
sqr_m2 = m2 * m2;
_n = (sqr_m1 - sqr_m2) / (q2 - q1);
} else
@ -119,7 +114,7 @@ PointD AlbersEqual::ll2xy(const Coordinates &c) const
{
double dlam;
double sin_lat;
double es_sin;
double e_sin;
double q;
double rho;
double theta;
@ -128,13 +123,13 @@ PointD AlbersEqual::ll2xy(const Coordinates &c) const
dlam = deg2rad(c.lon()) - _longitudeOrigin;
if (dlam > M_PI)
dlam -= 2.0 * M_PI;
dlam -= M_2_PI;
if (dlam < -M_PI)
dlam += 2.0 * M_PI;
dlam += M_2_PI;
sin_lat = sin(deg2rad(c.lat()));
es_sin = _es * sin_lat;
q = ALBERS_Q(sin_lat, ONE_MINUS_SQR(es_sin), es_sin);
e_sin = _e * sin_lat;
q = ALBERS_Q(sin_lat, ONE_MINUS_SQR(e_sin), e_sin);
nq = _n * q;
rho = (_C < nq) ? 0 : _a_over_n * sqrt(_C - nq);
theta = _n * dlam;
@ -151,7 +146,7 @@ Coordinates AlbersEqual::xy2ll(const PointD &p) const
double rho, rho_n;
double phi, delta_phi = 1.0;
double sin_phi;
double es_sin, one_minus_sqr_es_sin;
double e_sin, one_minus_sqr_e_sin;
double theta = 0.0;
int count = 30;
double tolerance = 4.85e-10;
@ -174,7 +169,7 @@ Coordinates AlbersEqual::xy2ll(const PointD &p) const
theta = atan2(dx, rho0_minus_dy);
rho_n = rho * _n;
q = (_C - (rho_n * rho_n) / _a2) / _n;
qc = 1 - ((_one_minus_es2) / (_two_es)) * log((1.0 - _es) / (1.0 + _es));
qc = 1 - ((_one_minus_es) / (_two_e)) * log((1.0 - _e) / (1.0 + _e));
if (fabs(fabs(qc) - fabs(q)) > 1.0e-6) {
q_over_2 = q / 2.0;
if (q_over_2 > 1.0)
@ -183,17 +178,17 @@ Coordinates AlbersEqual::xy2ll(const PointD &p) const
lat = -M_PI_2;
else {
phi = asin(q_over_2);
if (_es < 1.0e-10)
if (_e < 1.0e-10)
lat = phi;
else {
while ((fabs(delta_phi) > tolerance) && count) {
sin_phi = sin(phi);
es_sin = _es * sin_phi;
one_minus_sqr_es_sin = ONE_MINUS_SQR(es_sin);
delta_phi = (one_minus_sqr_es_sin * one_minus_sqr_es_sin)
/ (2.0 * cos(phi)) * (q / (_one_minus_es2) - sin_phi
/ one_minus_sqr_es_sin + (log((1.0 - es_sin)
/ (1.0 + es_sin)) / (_two_es)));
e_sin = _e * sin_phi;
one_minus_sqr_e_sin = ONE_MINUS_SQR(e_sin);
delta_phi = (one_minus_sqr_e_sin * one_minus_sqr_e_sin)
/ (2.0 * cos(phi)) * (q / (_one_minus_es) - sin_phi
/ one_minus_sqr_e_sin + (log((1.0 - e_sin)
/ (1.0 + e_sin)) / (_two_e)));
phi += delta_phi;
count --;
}
@ -216,9 +211,9 @@ Coordinates AlbersEqual::xy2ll(const PointD &p) const
lon = _longitudeOrigin + theta / _n;
if (lon > M_PI)
lon -= M_PI * 2;
lon -= M_2_PI;
if (lon < -M_PI)
lon += M_PI * 2;
lon += M_2_PI;
if (lon > M_PI)
lon = M_PI;

View File

@ -27,11 +27,11 @@ private:
double _rho0;
double _C;
double _n;
double _e;
double _es;
double _es2;
double _a_over_n;
double _one_minus_es2;
double _two_es;
double _one_minus_es;
double _two_e;
};
#endif // ALBERSEQUAL_H

View File

@ -36,13 +36,13 @@ void Atlas::computeZooms()
{
qSort(_maps.begin(), _maps.end(), resCmp);
_zooms.append(QPair<int, int>(0, _maps.count() - 1));
_zooms.append(Zoom(0, _maps.count() - 1));
for (int i = 1; i < _maps.count(); i++) {
qreal last = _maps.at(i-1)->resolution(_maps.at(i)->bounds());
qreal cur = _maps.at(i)->resolution(_maps.at(i)->bounds());
if (cur < last * ZOOM_THRESHOLD) {
_zooms.last().second = i-1;
_zooms.append(QPair<int, int>(i, _maps.count() - 1));
_zooms.last().last = i-1;
_zooms.append(Zoom(i, _maps.count() - 1));
}
}
}
@ -56,7 +56,7 @@ void Atlas::computeBounds()
for (int z = 0; z < _zooms.count(); z++) {
QList<OfflineMap*> m;
for (int i = _zooms.at(z).first; i <= _zooms.at(z).second; i++)
for (int i = _zooms.at(z).first; i <= _zooms.at(z).last; i++)
m.append(_maps.at(i));
qSort(m.begin(), m.end(), xCmp);
@ -75,9 +75,8 @@ void Atlas::computeBounds()
}
for (int i = 0; i < _maps.count(); i++)
_bounds.append(QPair<QRectF, QRectF>(QRectF(TL(_maps.at(i)).toPointF(),
BR(_maps.at(i)).toPointF()), QRectF(offsets.at(i),
_maps.at(i)->bounds().size())));
_bounds.append(Bounds(RectD(TL(_maps.at(i)), BR(_maps.at(i))),
QRectF(offsets.at(i), _maps.at(i)->bounds().size())));
}
Atlas::Atlas(const QString &fileName, QObject *parent)
@ -152,11 +151,11 @@ QRectF Atlas::bounds() const
{
QSizeF s(0, 0);
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).second; i++) {
if (_bounds.at(i).second.right() > s.width())
s.setWidth(_bounds.at(i).second.right());
if (_bounds.at(i).second.bottom() > s.height())
s.setHeight(_bounds.at(i).second.bottom());
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) {
if (_bounds.at(i).xy.right() > s.width())
s.setWidth(_bounds.at(i).xy.right());
if (_bounds.at(i).xy.bottom() > s.height())
s.setHeight(_bounds.at(i).xy.bottom());
}
return QRectF(QPointF(0, 0), s);
@ -166,9 +165,8 @@ qreal Atlas::resolution(const QRectF &rect) const
{
int idx = _zooms.at(_zoom).first;
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).second; i++) {
if (_bounds.at(i).second.contains(_maps.at(i)->xy2pp(rect.center())
.toPointF())) {
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) {
if (_bounds.at(i).xy.contains(rect.center())) {
idx = i;
break;
}
@ -188,9 +186,8 @@ int Atlas::zoomFit(const QSize &size, const RectC &br)
}
for (int z = 0; z < _zooms.count(); z++) {
for (int i = _zooms.at(z).first; i <= _zooms.at(z).second; i++) {
if (!_bounds.at(i).first.contains(_maps.at(i)->ll2pp(br.center())
.toPointF()))
for (int i = _zooms.at(z).first; i <= _zooms.at(z).last; i++) {
if (!_bounds.at(i).pp.contains(_maps.at(i)->ll2pp(br.center())))
continue;
QRect sbr = QRectF(_maps.at(i)->ll2xy(br.topLeft()),
@ -208,6 +205,12 @@ int Atlas::zoomFit(const QSize &size, const RectC &br)
return _zoom;
}
void Atlas::setZoom(int zoom)
{
_mapIndex = -1;
_zoom = zoom;
}
int Atlas::zoomIn()
{
_zoom = qMin(_zoom + 1, _zooms.size() - 1);
@ -226,15 +229,15 @@ int Atlas::zoomOut()
QPointF Atlas::ll2xy(const Coordinates &c)
{
QPointF pp;
PointD pp;
if (_mapIndex >= 0)
pp = _maps.at(_mapIndex)->ll2pp(c).toPointF();
if (_mapIndex < 0 || !_bounds.at(_mapIndex).first.contains(pp)) {
pp = _maps.at(_mapIndex)->ll2pp(c);
if (_mapIndex < 0 || !_bounds.at(_mapIndex).pp.contains(pp)) {
_mapIndex = _zooms.at(_zoom).first;
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).second; i++) {
pp = _maps.at(i)->ll2pp(c).toPointF();
if (_bounds.at(i).first.contains(pp)) {
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) {
pp = _maps.at(i)->ll2pp(c);
if (_bounds.at(i).pp.contains(pp)) {
_mapIndex = i;
break;
}
@ -242,38 +245,39 @@ QPointF Atlas::ll2xy(const Coordinates &c)
}
QPointF p = _maps.at(_mapIndex)->pp2xy(pp);
return p + _bounds.at(_mapIndex).second.topLeft();
return p + _bounds.at(_mapIndex).xy.topLeft();
}
Coordinates Atlas::xy2ll(const QPointF &p)
{
int idx = _zooms.at(_zoom).first;
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).second; i++) {
if (_bounds.at(i).second.contains(_maps.at(i)->xy2pp(p).toPointF())) {
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) {
if (_bounds.at(i).xy.contains(p)) {
idx = i;
break;
}
}
QPointF p2 = p - _bounds.at(idx).second.topLeft();
QPointF p2 = p - _bounds.at(idx).xy.topLeft();
return _maps.at(idx)->xy2ll(p2);
}
void Atlas::draw(QPainter *painter, const QRectF &rect)
void Atlas::draw(QPainter *painter, const QRectF &rect, bool block)
{
Q_UNUSED(block);
// All in one map
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).second; i++) {
if (_bounds.at(i).second.contains(rect)) {
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) {
if (_bounds.at(i).xy.contains(rect)) {
draw(painter, rect, i);
return;
}
}
// Multiple maps
painter->fillRect(rect, _backgroundColor);
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).second; i++) {
QRectF ir = rect.intersected(_bounds.at(i).second);
for (int i = _zooms.at(_zoom).first; i <= _zooms.at(_zoom).last; i++) {
QRectF ir = rect.intersected(_bounds.at(i).xy);
if (!ir.isNull())
draw(painter, ir, i);
}
@ -282,13 +286,13 @@ void Atlas::draw(QPainter *painter, const QRectF &rect)
void Atlas::draw(QPainter *painter, const QRectF &rect, int mapIndex)
{
OfflineMap *map = _maps.at(mapIndex);
const QPointF offset = _bounds.at(mapIndex).second.topLeft();
const QPointF offset = _bounds.at(mapIndex).xy.topLeft();
QRectF pr = QRectF(rect.topLeft() - offset, rect.size());
map->load();
painter->translate(offset);
map->draw(painter, pr);
map->draw(painter, pr, true);
painter->translate(-offset);
}

View File

@ -2,6 +2,7 @@
#define ATLAS_H
#include "map.h"
#include "rectd.h"
class OfflineMap;
@ -18,6 +19,7 @@ public:
qreal resolution(const QRectF &rect) const;
int zoom() const {return _zoom;}
void setZoom(int zoom);
int zoomFit(const QSize &size, const RectC &br);
int zoomIn();
int zoomOut();
@ -25,7 +27,7 @@ public:
QPointF ll2xy(const Coordinates &c);
Coordinates xy2ll(const QPointF &p);
void draw(QPainter *painter, const QRectF &rect);
void draw(QPainter *painter, const QRectF &rect, bool block);
void unload();
@ -35,6 +37,22 @@ public:
static bool isAtlas(const QString &path);
private:
struct Zoom {
int first;
int last;
Zoom() : first(-1), last(-1) {}
Zoom(int first, int last) : first(first), last(last) {}
};
struct Bounds {
RectD pp;
QRectF xy;
Bounds() {}
Bounds(const RectD &pp, const QRectF &xy) : pp(pp), xy(xy) {}
};
void draw(QPainter *painter, const QRectF &rect, int mapIndex);
void computeZooms();
void computeBounds();
@ -42,8 +60,8 @@ private:
QString _name;
QList<OfflineMap*> _maps;
QVector<QPair<int, int> > _zooms;
QVector<QPair<QRectF, QRectF> > _bounds;
QVector<Zoom> _zooms;
QVector<Bounds> _bounds;
int _zoom;
int _mapIndex;

View File

@ -7,6 +7,9 @@ CoordinateSystem::CoordinateSystem(int code)
case 1035:
case 1039:
case 4400:
case 4402:
case 4404:
case 4405:
case 4409:
case 4463:
case 4464:

View File

@ -12,6 +12,7 @@ public:
CoordinateSystem(AxisOrder axisOrder) : _axisOrder(axisOrder) {}
CoordinateSystem(int code);
bool isNull() const {return (_axisOrder == Unknown);}
bool isValid() const {return (_axisOrder != Unknown);}
AxisOrder axisOrder() const {return _axisOrder;}

View File

@ -1,11 +1,15 @@
#include <cmath>
#include "common/wgs84.h"
#include "datum.h"
#define as2rad(x) ((x) * (M_PI/648000.0))
#define rad2as(x) ((x) * (648000.0/M_PI))
#define ds2scale(x) (1.0 + (x) * 1e-6)
#define scale2ds(x) (((x) - 1.0) / 1e-6)
static Ellipsoid WGS84e = Ellipsoid(WGS84_RADIUS, WGS84_FLATTENING);
static Datum WGS84 = Datum(&WGS84e, 0.0, 0.0, 0.0);
// Abridged Molodensky transformation
static Coordinates molodensky(const Coordinates &c, const Datum &from,
const Datum &to)
{
@ -32,40 +36,90 @@ static Coordinates molodensky(const Coordinates &c, const Datum &from,
double adb = 1.0 / (1.0 - from_f);
double rn = from_a / sqrt(1 - from_esq * ssqlat);
double rm = from_a * (1 - from_esq) / pow((1 - from_esq * ssqlat), 1.5);
double from_h = 0.0;
double dlat = (-dx * slat * clon - dy * slat * slon + dz * clat + da
* rn * from_esq * slat * clat / from_a + df * (rm * adb + rn / adb) * slat
* clat) / (rm + from_h);
* clat) / rm;
double dlon = (-dx * slon + dy * clon) / ((rn + from_h) * clat);
double dlon = (-dx * slon + dy * clon) / (rn * clat);
return Coordinates(c.lon() + rad2deg(dlon), c.lat() + rad2deg(dlat));
}
Datum::Datum(const Ellipsoid *ellipsoid, double dx, double dy, double dz)
: _ellipsoid(ellipsoid), _dx(dx), _dy(dy), _dz(dz)
Point3D Datum::helmert(const Point3D &p) const
{
_WGS84 = (_ellipsoid->radius() == WGS84_RADIUS
&& _ellipsoid->flattening() == WGS84_FLATTENING && _dx == 0.0
&& _dy == 0.0 && _dz == 0.0) ? true : false;
return Point3D(_scale * (p.x() + _rz * p.y() -_ry * p.z()) + _dx,
_scale * (-_rz * p.x() + p.y() + _rx * p.z()) + _dy,
_scale * (_ry * p.x() -_rx * p.y() + p.z()) + _dz);
}
Point3D Datum::helmertr(const Point3D &p) const
{
double x = (p.x() - _dx) / _scale;
double y = (p.y() - _dy) / _scale;
double z = (p.z() - _dz) / _scale;
return Point3D(x -_rz * y + _ry * z, _rz * x + y + -_rx * z, -_ry * x + _rx
* y + z);
}
Datum::Datum(const Ellipsoid *ellipsoid, double dx, double dy, double dz,
double rx, double ry, double rz, double ds)
: _ellipsoid(ellipsoid), _dx(dx), _dy(dy), _dz(dz), _rx(as2rad(rx)),
_ry(as2rad(ry)), _rz(as2rad(rz)), _scale(ds2scale(ds))
{
if (_ellipsoid->radius() == WGS84_RADIUS && _ellipsoid->flattening()
== WGS84_FLATTENING && _dx == 0.0 && _dy == 0.0 && _dz == 0.0
&& _rx == 0.0 && _ry == 0.0 && _rz == 0.0 && ds == 0.0)
_transformation = None;
else
_transformation = Helmert;
}
Datum::Datum(const Ellipsoid *ellipsoid, double dx, double dy, double dz)
: _ellipsoid(ellipsoid), _dx(dx), _dy(dy), _dz(dz), _rx(0.0), _ry(0.0),
_rz(0.0), _scale(1.0)
{
if (_ellipsoid->radius() == WGS84_RADIUS && _ellipsoid->flattening()
== WGS84_FLATTENING && _dx == 0.0 && _dy == 0.0 && _dz == 0.0)
_transformation = None;
else
_transformation = Molodensky;
}
Coordinates Datum::toWGS84(const Coordinates &c) const
{
return _WGS84 ? c : molodensky(c, *this, WGS84);
switch (_transformation) {
case Helmert:
return Geocentric::toGeodetic(helmert(Geocentric::fromGeodetic(c,
ellipsoid())), WGS84.ellipsoid());
case Molodensky:
return molodensky(c, *this, WGS84);
default:
return c;
}
}
Coordinates Datum::fromWGS84(const Coordinates &c) const
{
return _WGS84 ? c : molodensky(c, WGS84, *this);
switch (_transformation) {
case Helmert:
return Geocentric::toGeodetic(helmertr(Geocentric::fromGeodetic(c,
WGS84.ellipsoid())), ellipsoid());
case Molodensky:
return molodensky(c, WGS84, *this);
default:
return c;
}
}
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const Datum &datum)
{
dbg.nospace() << "Datum(" << *datum.ellipsoid() << ", " << datum.dx()
<< ", " << datum.dy() << ", " << datum.dz() << ")";
<< ", " << datum.dy() << ", " << datum.dz() << ", " << rad2as(datum.rx())
<< ", " << rad2as(datum.ry()) << ", " << rad2as(datum.rz()) << ", "
<< scale2ds(datum.scale()) << ")";
return dbg.space();
}
#endif // QT_NO_DEBUG

View File

@ -2,42 +2,58 @@
#define DATUM_H
#include <cmath>
#include <QList>
#include <QDebug>
#include "ellipsoid.h"
#include "common/coordinates.h"
#include "ellipsoid.h"
#include "geocentric.h"
class Datum
{
public:
Datum() : _ellipsoid(0), _dx(NAN), _dy(NAN), _dz(NAN),
_WGS84(false) {}
Datum() : _ellipsoid(0), _transformation(None), _dx(NAN), _dy(NAN),
_dz(NAN), _rx(NAN), _ry(NAN), _rz(NAN), _scale(NAN) {}
Datum(const Ellipsoid *ellipsoid, double dx, double dy, double dz,
double rx, double ry, double rz, double ds);
Datum(const Ellipsoid *ellipsoid, double dx, double dy, double dz);
const Ellipsoid *ellipsoid() const {return _ellipsoid;}
double dx() const {return _dx;}
double dy() const {return _dy;}
double dz() const {return _dz;}
double rx() const {return _rx;}
double ry() const {return _ry;}
double rz() const {return _rz;}
double scale() const {return _scale;}
bool isNull() const
{return (!_ellipsoid && std::isnan(_dx) && std::isnan(_dy)
&& std::isnan(_dz));}
{return !_ellipsoid;}
bool isValid() const
{return (_ellipsoid && !std::isnan(_dx) && !std::isnan(_dy)
&& !std::isnan(_dz));}
&& !std::isnan(_dz) && !std::isnan(_scale) && !std::isnan(_rx)
&& !std::isnan(_ry) && !std::isnan(_rz));}
Coordinates toWGS84(const Coordinates &c) const;
Coordinates fromWGS84(const Coordinates &c) const;
private:
enum TransformationType {
None,
Molodensky,
Helmert
};
Point3D helmert(const Point3D &p) const;
Point3D helmertr(const Point3D &p) const;
const Ellipsoid *_ellipsoid;
double _dx, _dy, _dz;
bool _WGS84;
TransformationType _transformation;
double _dx, _dy, _dz, _rx, _ry, _rz, _scale;
};
inline bool operator==(const Datum &d1, const Datum &d2)
{return (d1.ellipsoid() == d2.ellipsoid() && d1.dx() == d2.dx()
&& d1.dy() == d2.dy() && d1.dz() == d2.dz());}
{return (*d1.ellipsoid() == *d2.ellipsoid() && d1.dx() == d2.dx()
&& d1.dy() == d2.dy() && d1.dz() == d2.dz() && d1.rx() == d2.rx()
&& d1.ry() == d2.ry() && d1.rz() == d2.rz() && d1.scale() == d2.scale());}
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const Datum &datum);

View File

@ -1,7 +1,6 @@
#include <QFile>
#include <QFileInfo>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QBasicTimer>
#include "config.h"
#include "downloader.h"
@ -26,7 +25,7 @@
#define ATTR_LEVEL (QNetworkRequest::Attribute)(QNetworkRequest::User + 2)
#define MAX_REDIRECT_LEVEL 5
#define TIMEOUT 30 /* s */
#define RETRIES 3
Authorization::Authorization(const QString &username, const QString &password)
@ -80,20 +79,24 @@ private:
};
Downloader::Downloader(QObject *parent) : QObject(parent)
{
connect(&_manager, SIGNAL(finished(QNetworkReply*)),
SLOT(downloadFinished(QNetworkReply*)));
}
QNetworkAccessManager *Downloader::_manager = 0;
int Downloader::_timeout = 30;
bool Downloader::doDownload(const Download &dl,
const QByteArray &authorization, const Redirect *redirect)
{
QUrl url(dl.url());
if (_errorDownloads.contains(url))
if (!url.isValid() || !(url.scheme() == "http" || url.scheme() == "https")) {
qWarning("%s: Invalid URL\n", qPrintable(url.toString()));
if (redirect)
_errorDownloads.insert(redirect->origin(), RETRIES);
return false;
if (_currentDownloads.contains(url))
}
if (_errorDownloads.value(url) >= RETRIES)
return false;
if (_currentDownloads.contains(url) && !redirect)
return false;
QNetworkRequest request(url);
@ -106,16 +109,24 @@ bool Downloader::doDownload(const Download &dl,
if (!authorization.isNull())
request.setRawHeader("Authorization", authorization);
QNetworkReply *reply = _manager.get(request);
if (reply) {
QNetworkReply *reply = _manager->get(request);
if (reply && reply->isRunning()) {
_currentDownloads.insert(url);
ReplyTimeout::setTimeout(reply, TIMEOUT);
} else
ReplyTimeout::setTimeout(reply, _timeout);
connect(reply, SIGNAL(finished()), this, SLOT(emitFinished()));
} else if (reply)
downloadFinished(reply);
else
return false;
return true;
}
void Downloader::emitFinished()
{
downloadFinished(static_cast<QNetworkReply*>(sender()));
}
bool Downloader::saveToDisk(const QString &filename, QIODevice *data)
{
QFile file(filename);
@ -132,18 +143,27 @@ bool Downloader::saveToDisk(const QString &filename, QIODevice *data)
return true;
}
void Downloader::insertError(const QUrl &url, QNetworkReply::NetworkError error)
{
if (error == QNetworkReply::OperationCanceledError)
_errorDownloads.insert(url, _errorDownloads.value(url) + 1);
else
_errorDownloads.insert(url, RETRIES);
}
void Downloader::downloadFinished(QNetworkReply *reply)
{
QUrl url = reply->request().url();
QNetworkReply::NetworkError error = reply->error();
if (reply->error()) {
if (error) {
QUrl origin = reply->request().attribute(ATTR_ORIGIN).toUrl();
if (origin.isEmpty()) {
_errorDownloads.insert(url);
insertError(url, error);
qWarning("Error downloading file: %s: %s\n",
url.toEncoded().constData(), qPrintable(reply->errorString()));
} else {
_errorDownloads.insert(origin);
insertError(origin, error);
qWarning("Error downloading file: %s -> %s: %s\n",
origin.toEncoded().constData(), url.toEncoded().constData(),
qPrintable(reply->errorString()));
@ -157,24 +177,29 @@ void Downloader::downloadFinished(QNetworkReply *reply)
QUrl origin = reply->request().attribute(ATTR_ORIGIN).toUrl();
int level = reply->request().attribute(ATTR_LEVEL).toInt();
if (location == url) {
_errorDownloads.insert(url);
if (level >= MAX_REDIRECT_LEVEL) {
_errorDownloads.insert(origin, RETRIES);
qWarning("Error downloading file: %s: "
"redirect loop\n", url.toEncoded().constData());
} else if (level >= MAX_REDIRECT_LEVEL) {
_errorDownloads.insert(origin);
qWarning("Error downloading file: %s: "
"redirect level limit reached\n",
"redirect level limit reached (redirect loop?)\n",
origin.toEncoded().constData());
} else {
QUrl redirectUrl;
if (location.isRelative()) {
QString path = QDir::isAbsolutePath(location.path())
? location.path() : "/" + location.path();
redirectUrl = QUrl(url.scheme() + "://" + url.host() + path);
} else
redirectUrl = location;
Redirect redirect(origin.isEmpty() ? url : origin, level + 1);
Download dl(location, filename);
Download dl(redirectUrl, filename);
doDownload(dl, reply->request().rawHeader("Authorization"),
&redirect);
}
} else
} else {
if (!saveToDisk(filename, reply))
_errorDownloads.insert(url);
_errorDownloads.insert(url, RETRIES);
}
}
_currentDownloads.remove(url);

View File

@ -1,12 +1,13 @@
#ifndef DOWNLOADER_H
#ifndef DOWNLOADER_H
#define DOWNLOADER_H
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QUrl>
#include <QList>
#include <QSet>
#include <QHash>
class QNetworkReply;
class Download
{
@ -38,29 +39,37 @@ class Downloader : public QObject
Q_OBJECT
public:
Downloader(QObject *parent = 0);
Downloader(QObject *parent = 0) : QObject(parent) {}
bool get(const QList<Download> &list, const Authorization &authorization
= Authorization());
void clearErrors() {_errorDownloads.clear();}
static void setTimeout(int timeout) {_timeout = timeout;}
static void setNetworkAccessManager(QNetworkAccessManager *manager)
{_manager = manager;}
signals:
void finished();
private slots:
void emitFinished();
void downloadFinished(QNetworkReply *reply);
private:
class Redirect;
class ReplyTimeout;
void insertError(const QUrl &url, QNetworkReply::NetworkError error);
bool doDownload(const Download &dl, const QByteArray &authorization,
const Redirect *redirect = 0);
bool saveToDisk(const QString &filename, QIODevice *data);
QNetworkAccessManager _manager;
QSet<QUrl> _currentDownloads;
QSet<QUrl> _errorDownloads;
QHash<QUrl, int> _errorDownloads;
static int _timeout;
static QNetworkAccessManager *_manager;
};
#endif // DOWNLOADER_H

View File

@ -66,6 +66,14 @@ void Ellipsoid::loadList(const QString &path)
}
}
Ellipsoid::Ellipsoid(double radius, double flattening)
: _radius(radius), _flattening(flattening)
{
_es = 2.0 * flattening - flattening * flattening;
_e2s = (1.0 / (1.0 - _es)) - 1.0;
_b = radius * (1.0 - flattening);
}
#ifndef QT_NO_DEBUG
QDebug operator<<(QDebug dbg, const Ellipsoid &ellipsoid)
{

View File

@ -9,12 +9,14 @@
class Ellipsoid
{
public:
Ellipsoid() : _radius(NAN), _flattening(NAN) {}
Ellipsoid(double radius, double flattening)
: _radius(radius), _flattening(flattening) {}
Ellipsoid() : _radius(NAN), _flattening(NAN), _es(NAN), _b(NAN) {}
Ellipsoid(double radius, double flattening);
double radius() const {return _radius;}
double flattening() const {return _flattening;}
double es() const {return _es;}
double e2s() const {return _e2s;}
double b() const {return _b;}
bool isNull() const
{return (std::isnan(_radius) && std::isnan(_flattening));}
@ -27,6 +29,7 @@ public:
private:
double _radius;
double _flattening;
double _es, _e2s, _b;
static QMap<int, Ellipsoid> WGS84();
static QMap<int, Ellipsoid> _ellipsoids;

View File

@ -12,12 +12,12 @@
static QPointF ll2m(const Coordinates &c)
{
return QPointF(c.lon(), rad2deg(log(tan(M_PI/4.0 + deg2rad(c.lat())/2.0))));
return QPointF(c.lon(), rad2deg(log(tan(M_PI_4 + deg2rad(c.lat())/2.0))));
}
static Coordinates m2ll(const QPointF &p)
{
return Coordinates(p.x(), rad2deg(2 * atan(exp(deg2rad(p.y()))) - M_PI/2));
return Coordinates(p.x(), rad2deg(2.0 * atan(exp(deg2rad(p.y()))) - M_PI_2));
}
static qreal zoom2scale(int zoom)
@ -85,9 +85,11 @@ int EmptyMap::zoomOut()
return _zoom;
}
void EmptyMap::draw(QPainter *painter, const QRectF &rect)
void EmptyMap::draw(QPainter *painter, const QRectF &rect, bool block)
{
painter->fillRect(rect, _backgroundColor);
Q_UNUSED(painter);
Q_UNUSED(rect);
Q_UNUSED(block);
}
QPointF EmptyMap::ll2xy(const Coordinates &c) const

View File

@ -16,6 +16,7 @@ public:
qreal resolution(const QRectF &rect) const;
int zoom() const {return _zoom;}
void setZoom(int zoom) {_zoom = zoom;}
int zoomFit(const QSize &size, const RectC &rect);
int zoomIn();
int zoomOut();
@ -25,7 +26,7 @@ public:
Coordinates xy2ll(const QPointF &p)
{return static_cast<const EmptyMap &>(*this).xy2ll(p);}
void draw(QPainter *painter, const QRectF &rect);
void draw(QPainter *painter, const QRectF &rect, bool block);
private:
QPointF ll2xy(const Coordinates &c) const;

View File

@ -33,6 +33,18 @@ static int parameter(const QString &str, bool *res)
return field.toInt(res);
}
static double parameterd(const QString &str, bool *res)
{
QString field = str.trimmed();
if (field.isEmpty()) {
*res = true;
return NAN;
}
return field.toDouble(res);
}
QList<GCS::Entry> GCS::_gcss = WGS84();
QList<GCS::Entry> GCS::WGS84()
@ -91,7 +103,7 @@ void GCS::loadList(const QString &path)
QByteArray line = file.readLine();
QList<QByteArray> list = line.split(',');
if (list.size() < 10) {
if (list.size() != 14) {
qWarning("%s:%d: Format error", qPrintable(path), ln);
continue;
}
@ -145,6 +157,26 @@ void GCS::loadList(const QString &path)
qWarning("%s:%d: Invalid dz", qPrintable(path), ln);
continue;
}
double rx = parameterd(list[10], &res);
if (!res) {
qWarning("%s:%d: Invalid rx", qPrintable(path), ln);
continue;
}
double ry = parameterd(list[11], &res);
if (!res) {
qWarning("%s:%d: Invalid ry", qPrintable(path), ln);
continue;
}
double rz = parameterd(list[12], &res);
if (!res) {
qWarning("%s:%d: Invalid rz", qPrintable(path), ln);
continue;
}
double ds = parameterd(list[13], &res);
if (!res) {
qWarning("%s:%d: Invalid ds", qPrintable(path), ln);
continue;
}
if (!(e = Ellipsoid::ellipsoid(el))) {
qWarning("%s:%d: Unknown ellipsoid code", qPrintable(path), ln);
@ -156,11 +188,22 @@ void GCS::loadList(const QString &path)
case 9603:
datum = Datum(e, dx, dy, dz);
break;
case 9606:
datum = Datum(e, dx, dy, dz, -rx, -ry, -rz, ds);
break;
case 9607:
datum = Datum(e, dx, dy, dz, rx, ry, rz, ds);
break;
default:
qWarning("%s:%d: Unknown coordinates transformation method",
qPrintable(path), ln);
continue;
}
if (!datum.isValid()) {
qWarning("%s:%d: Invalid coordinates transformation parameters",
qPrintable(path), ln);
continue;
}
GCS gcs(datum, pm, au);
if (gcs.isValid())

106
src/map/geocentric.cpp Normal file
View File

@ -0,0 +1,106 @@
/*
* Based on libgeotrans with the following Source Code Disclaimer:
1. The GEOTRANS source code ("the software") is provided free of charge by
the National Imagery and Mapping Agency (NIMA) of the United States
Department of Defense. Although NIMA makes no copyright claim under Title 17
U.S.C., NIMA claims copyrights in the source code under other legal regimes.
NIMA hereby grants to each user of the software a license to use and
distribute the software, and develop derivative works.
2. Warranty Disclaimer: The software was developed to meet only the internal
requirements of the U.S. National Imagery and Mapping Agency. The software
is provided "as is," and no warranty, express or implied, including but not
limited to the implied warranties of merchantability and fitness for
particular purpose or arising by statute or otherwise in law or from a
course of dealing or usage in trade, is made by NIMA as to the accuracy and
functioning of the software.
3. NIMA and its personnel are not required to provide technical support or
general assistance with respect to the software.
4. Neither NIMA nor its personnel will be liable for any claims, losses, or
damages arising from or connected with the use of the software. The user
agrees to hold harmless the United States National Imagery and Mapping
Agency. The user's sole and exclusive remedy is to stop using the software.
5. NIMA requests that products developed using the software credit the
source of the software with the following statement, "The product was
developed using GEOTRANS, a product of the National Imagery and Mapping
Agency and U.S. Army Engineering Research and Development Center."
6. For any products developed using the software, NIMA requires a disclaimer
that use of the software does not indicate endorsement or approval of the
product by the Secretary of Defense or the National Imagery and Mapping
Agency. Pursuant to the United States Code, 10 U.S.C. Sec. 2797, the name of
the National Imagery and Mapping Agency, the initials "NIMA", the seal of
the National Imagery and Mapping Agency, or any colorable imitation thereof
shall not be used to imply approval, endorsement, or authorization of a
product without prior written permission from United States Secretary of
Defense.
*/
#include "ellipsoid.h"
#include "geocentric.h"
#define AD_C 1.0026000
Point3D Geocentric::fromGeodetic(const Coordinates &c, const Ellipsoid *e)
{
double lat = deg2rad(c.lat());
double lon = deg2rad(c.lon());
double slat = sin(lat);
double slat2 = slat * slat;
double clat = cos(lat);
double Rn = e->radius() / (sqrt(1.0 - e->es() * slat2));
if (lon > M_PI)
lon -= M_2_PI;
return Point3D(Rn * clat * cos(lon), Rn * clat * sin(lon),
(Rn * (1 - e->es())) * slat);
}
Coordinates Geocentric::toGeodetic(const Point3D &p, const Ellipsoid *e)
{
bool pole = false;
double lat, lon;
if (p.x() == 0.0) {
if (p.y() > 0)
lon = M_PI_2;
else if (p.y() < 0)
lon = -M_PI_2;
else {
pole = true;
lon = 0.0;
if (p.z() > 0.0)
lat = M_PI_2;
else if (p.z() < 0.0)
lat = -M_PI_2;
else
return Coordinates(rad2deg(lon), rad2deg(M_PI_2));
}
} else
lon = atan2(p.y(), p.x());
double W2 = p.x()*p.x() + p.y()*p.y();
double W = sqrt(W2);
double T0 = p.z() * AD_C;
double S0 = sqrt(T0 * T0 + W2);
double Sin_B0 = T0 / S0;
double Cos_B0 = W / S0;
double Sin3_B0 = Sin_B0 * Sin_B0 * Sin_B0;
double T1 = p.z() + e->b() * e->e2s() * Sin3_B0;
double Sum = W - e->radius() * e->es() * Cos_B0 * Cos_B0 * Cos_B0;
double S1 = sqrt(T1*T1 + Sum * Sum);
double Sin_p1 = T1 / S1;
double Cos_p1 = Sum / S1;
if (!pole)
lat = atan(Sin_p1 / Cos_p1);
return Coordinates(rad2deg(lon), rad2deg(lat));
}

29
src/map/geocentric.h Normal file
View File

@ -0,0 +1,29 @@
#ifndef GEOCENTRIC_H
#define GEOCENTRIC_H
#include <cmath>
#include "common/coordinates.h"
class Ellipsoid;
class Point3D {
public:
Point3D() : _x(NAN), _y(NAN), _z(NAN) {}
Point3D(double x, double y, double z) : _x(x), _y(y), _z(z) {}
double x() const {return _x;}
double y() const {return _y;}
double z() const {return _z;}
private:
double _x;
double _y;
double _z;
};
namespace Geocentric {
Point3D fromGeodetic(const Coordinates &c, const Ellipsoid *e);
Coordinates toGeodetic(const Point3D &p, const Ellipsoid *e);
}
#endif // GEOCENTRIC_H

View File

@ -1,5 +1,3 @@
#include <QFileInfo>
#include <QtEndian>
#include "pcs.h"
#include "tifffile.h"
#include "geotiff.h"
@ -9,48 +7,51 @@
#define TIFF_SHORT 3
#define TIFF_LONG 4
#define ModelPixelScaleTag 33550
#define ModelTiepointTag 33922
#define ModelTransformationTag 34264
#define GeoKeyDirectoryTag 34735
#define GeoDoubleParamsTag 34736
#define ModelPixelScaleTag 33550
#define ModelTiepointTag 33922
#define ModelTransformationTag 34264
#define GeoKeyDirectoryTag 34735
#define GeoDoubleParamsTag 34736
#define GTModelTypeGeoKey 1024
#define GTRasterTypeGeoKey 1025
#define GeographicTypeGeoKey 2048
#define GeogGeodeticDatumGeoKey 2050
#define GeogPrimeMeridianGeoKey 2051
#define GeogAngularUnitsGeoKey 2054
#define GeogEllipsoidGeoKey 2056
#define GeogAzimuthUnitsGeoKey 2060
#define ProjectedCSTypeGeoKey 3072
#define ProjectionGeoKey 3074
#define ProjCoordTransGeoKey 3075
#define ProjLinearUnitsGeoKey 3076
#define ProjStdParallel1GeoKey 3078
#define ProjStdParallel2GeoKey 3079
#define ProjNatOriginLongGeoKey 3080
#define ProjNatOriginLatGeoKey 3081
#define ProjFalseEastingGeoKey 3082
#define ProjFalseNorthingGeoKey 3083
#define ProjCenterLongGeoKey 3088
#define ProjCenterLatGeoKey 3089
#define ProjScaleAtNatOriginGeoKey 3092
#define ProjScaleAtCenterGeoKey 3093
#define ProjAzimuthAngleGeoKey 3094
#define ProjRectifiedGridAngleGeoKey 3096
#define GTModelTypeGeoKey 1024
#define GTRasterTypeGeoKey 1025
#define GeographicTypeGeoKey 2048
#define GeogGeodeticDatumGeoKey 2050
#define GeogPrimeMeridianGeoKey 2051
#define GeogAngularUnitsGeoKey 2054
#define GeogEllipsoidGeoKey 2056
#define GeogAzimuthUnitsGeoKey 2060
#define ProjectedCSTypeGeoKey 3072
#define ProjectionGeoKey 3074
#define ProjCoordTransGeoKey 3075
#define ProjLinearUnitsGeoKey 3076
#define ProjStdParallel1GeoKey 3078
#define ProjStdParallel2GeoKey 3079
#define ProjNatOriginLongGeoKey 3080
#define ProjNatOriginLatGeoKey 3081
#define ProjFalseEastingGeoKey 3082
#define ProjFalseNorthingGeoKey 3083
#define ProjFalseOriginLatGeoKey 3085
#define ProjCenterLongGeoKey 3088
#define ProjCenterLatGeoKey 3089
#define ProjCenterEastingGeoKey 3090
#define ProjFalseOriginNorthingGeoKey 3091
#define ProjScaleAtNatOriginGeoKey 3092
#define ProjScaleAtCenterGeoKey 3093
#define ProjAzimuthAngleGeoKey 3094
#define ProjRectifiedGridAngleGeoKey 3096
#define ModelTypeProjected 1
#define ModelTypeGeographic 2
#define ModelTypeGeocentric 3
#define ModelTypeProjected 1
#define ModelTypeGeographic 2
#define ModelTypeGeocentric 3
#define CT_TransverseMercator 1
#define CT_ObliqueMercator 3
#define CT_Mercator 7
#define CT_LambertConfConic_2SP 8
#define CT_LambertConfConic_1SP 9
#define CT_LambertAzimEqualArea 10
#define CT_AlbersEqualArea 11
#define CT_TransverseMercator 1
#define CT_ObliqueMercator 3
#define CT_Mercator 7
#define CT_LambertConfConic_2SP 8
#define CT_LambertConfConic_1SP 9
#define CT_LambertAzimEqualArea 10
#define CT_AlbersEqualArea 11
#define IS_SET(map, key) \
@ -251,6 +252,9 @@ bool GeoTIFF::readKeys(TIFFFile &file, Ctx &ctx, QMap<quint16, Value> &kv) const
case ProjScaleAtCenterGeoKey:
case ProjAzimuthAngleGeoKey:
case ProjRectifiedGridAngleGeoKey:
case ProjFalseOriginLatGeoKey:
case ProjCenterEastingGeoKey:
case ProjFalseOriginNorthingGeoKey:
if (!readGeoValue(file, ctx.values, entry.ValueOffset,
value.DOUBLE))
return false;
@ -325,7 +329,7 @@ Projection::Method GeoTIFF::method(QMap<quint16, Value> &kv)
case CT_ObliqueMercator:
return Projection::Method(9815);
case CT_Mercator:
return Projection::Method(1024);
return Projection::Method(9804);
case CT_LambertConfConic_2SP:
return Projection::Method(9802);
case CT_LambertConfConic_1SP:
@ -389,6 +393,8 @@ bool GeoTIFF::projectedModel(QMap<quint16, Value> &kv)
lat0 = au.toDegrees(kv.value(ProjNatOriginLatGeoKey).DOUBLE);
else if (kv.contains(ProjCenterLatGeoKey))
lat0 = au.toDegrees(kv.value(ProjCenterLatGeoKey).DOUBLE);
else if (kv.contains(ProjFalseOriginLatGeoKey))
lat0 = au.toDegrees(kv.value(ProjFalseOriginLatGeoKey).DOUBLE);
else
lat0 = NAN;
if (kv.contains(ProjNatOriginLongGeoKey))
@ -417,10 +423,14 @@ bool GeoTIFF::projectedModel(QMap<quint16, Value> &kv)
sp2 = NAN;
if (kv.contains(ProjFalseNorthingGeoKey))
fn = lu.toMeters(kv.value(ProjFalseNorthingGeoKey).DOUBLE);
else if (kv.contains(ProjFalseOriginNorthingGeoKey))
fn = lu.toMeters(kv.value(ProjFalseOriginNorthingGeoKey).DOUBLE);
else
fn = NAN;
if (kv.contains(ProjFalseEastingGeoKey))
fe = lu.toMeters(kv.value(ProjFalseEastingGeoKey).DOUBLE);
else if (kv.contains(ProjCenterEastingGeoKey))
fe = lu.toMeters(kv.value(ProjCenterEastingGeoKey).DOUBLE);
else
fe = NAN;

249
src/map/jnxmap.cpp Normal file
View File

@ -0,0 +1,249 @@
#include <QtEndian>
#include <QPainter>
#include <QFileInfo>
#include "transform.h"
#include "rectd.h"
#include "jnxmap.h"
#define ic2dc(x) ((x) * 180.0 / 0x7FFFFFFF)
struct Level {
quint32 count;
quint32 offset;
quint32 scale;
};
struct Ctx {
QPainter *painter;
QFile *file;
Ctx(QPainter *painter, QFile *file) : painter(painter), file(file) {}
};
template<class T> bool JNXMap::readValue(T &val)
{
T data;
if (_file.read((char*)&data, sizeof(T)) < (qint64)sizeof(T))
return false;
if (sizeof(T) > 1)
val = qFromLittleEndian(data);
else
val = data;
return true;
}
bool JNXMap::readString(QByteArray& ba)
{
char byte;
while (true) {
if (!_file.getChar(&byte))
return false;
else if (!byte)
return true;
else
ba += byte;
}
}
bool JNXMap::readTiles()
{
qint32 lat1, lon2, lat2, lon1;
quint32 version, dummy, levels;
if (!(readValue(version) && readValue(dummy) && readValue(lat1)
&& readValue(lon2) && readValue(lat2) && readValue(lon1)
&& readValue(levels)))
return false;
_bounds = RectC(Coordinates(ic2dc(lon1), ic2dc(lat1)),
Coordinates(ic2dc(lon2), ic2dc(lat2)));
if (!levels || !_bounds.isValid())
return false;
if (!_file.seek(version > 3 ? 0x34 : 0x30))
return false;
QVector<Level> lh(levels);
for (int i = 0; i < lh.count(); i++) {
Level &l = lh[i];
if (!(readValue(l.count) && readValue(l.offset) && readValue(l.scale)))
return false;
if (version > 3) {
QByteArray ba;
if (!(readValue(dummy) && readString(ba)))
return false;
}
}
_zooms = QVector<Zoom>(lh.size());
for (int i = 0; i < lh.count(); i++) {
Zoom &z = _zooms[i];
const Level &l = lh.at(i);
if (!_file.seek(l.offset))
return false;
z.tiles = QVector<Tile>(l.count);
for (quint32 j = 0; j < l.count; j++) {
Tile &tile = z.tiles[j];
qint32 top, right, bottom, left;
quint16 width, height;
if (!(readValue(top) && readValue(right) && readValue(bottom)
&& readValue(left) && readValue(width)
&& readValue(height) && readValue(tile.size)
&& readValue(tile.offset)))
return false;
RectD rect(PointD(ic2dc(left), ic2dc(top)), PointD(ic2dc(right),
ic2dc(bottom)));
if (j == 0) {
ReferencePoint tl(PointD(0, 0), rect.topLeft());
ReferencePoint br(PointD(width, height), rect.bottomRight());
z.transform = Transform(tl, br);
}
QRectF trect(z.transform.proj2img(rect.topLeft()),
z.transform.proj2img(rect.bottomRight()));
tile.pos = trect.topLeft();
qreal min[2], max[2];
min[0] = trect.left();
min[1] = trect.top();
max[0] = trect.right();
max[1] = trect.bottom();
z.tree.Insert(min, max, &tile);
}
}
return true;
}
JNXMap::JNXMap(const QString &fileName, QObject *parent)
: Map(parent), _file(fileName), _zoom(0), _valid(false)
{
_name = QFileInfo(fileName).fileName();
if (!_file.open(QIODevice::ReadOnly)) {
_errorString = QString("%1: Error opening file").arg(fileName);
return;
}
if (!readTiles()) {
_errorString = "JNX file format error";
return;
}
_valid = true;
}
QPointF JNXMap::ll2xy(const Coordinates &c) const
{
const Transform &t = _zooms.at(_zoom).transform;
return t.proj2img(PointD(c.lon(), c.lat()));
}
Coordinates JNXMap::xy2ll(const QPointF &p) const
{
const Transform &t = _zooms.at(_zoom).transform;
PointD pp(t.img2proj(p));
return Coordinates(pp.x(), pp.y());
}
QRectF JNXMap::bounds() const
{
const Transform &t = _zooms.at(_zoom).transform;
return QRectF(t.proj2img(PointD(_bounds.topLeft().lon(),
_bounds.topLeft().lat())), t.proj2img(PointD(_bounds.bottomRight().lon(),
_bounds.bottomRight().lat())));
}
qreal JNXMap::resolution(const QRectF &rect) const
{
Coordinates tl = xy2ll((rect.topLeft()));
Coordinates br = xy2ll(rect.bottomRight());
qreal ds = tl.distanceTo(br);
qreal ps = QLineF(rect.topLeft(), rect.bottomRight()).length();
return ds/ps;
}
int JNXMap::zoomFit(const QSize &size, const RectC &rect)
{
if (!rect.isValid())
_zoom = _zooms.size() - 1;
else {
for (int i = 1; i < _zooms.count(); i++) {
_zoom = i;
QRect sbr(QPoint(ll2xy(rect.topLeft()).toPoint()),
QPoint(ll2xy(rect.bottomRight()).toPoint()));
if (sbr.size().width() >= size.width() || sbr.size().height()
>= size.height()) {
_zoom--;
break;
}
}
}
return _zoom;
}
int JNXMap::zoomIn()
{
_zoom = qMin(_zoom + 1, _zooms.size() - 1);
return _zoom;
}
int JNXMap::zoomOut()
{
_zoom = qMax(_zoom - 1, 0);
return _zoom;
}
QPixmap JNXMap::pixmap(const Tile *tile, QFile *file)
{
QByteArray ba;
ba.resize(tile->size + 2);
ba[0] = (char)0xFF;
ba[1] = (char)0xD8;
char *data = ba.data() + 2;
if (!file->seek(tile->offset))
return QPixmap();
if (!file->read(data, tile->size))
return QPixmap();
return QPixmap::fromImage(QImage::fromData(ba));
}
bool JNXMap::cb(Tile *tile, void *context)
{
Ctx *ctx = static_cast<Ctx*>(context);
ctx->painter->drawPixmap(tile->pos, pixmap(tile, ctx->file));
return true;
}
void JNXMap::draw(QPainter *painter, const QRectF &rect, bool block)
{
Q_UNUSED(block);
const RTree<Tile*, qreal, 2> &tree = _zooms.at(_zoom).tree;
Ctx ctx(painter, &_file);
qreal min[2], max[2];
min[0] = rect.left();
min[1] = rect.top();
max[0] = rect.right();
max[1] = rect.bottom();
tree.Search(min, max, cb, &ctx);
}

73
src/map/jnxmap.h Normal file
View File

@ -0,0 +1,73 @@
#ifndef JNXMAP_H
#define JNXMAP_H
#include <QFile>
#include <QVector>
#include "common/rtree.h"
#include "common/rectc.h"
#include "transform.h"
#include "map.h"
class JNXMap : public Map
{
public:
Q_OBJECT
public:
JNXMap(const QString &fileName, QObject *parent = 0);
const QString &name() const {return _name;}
QRectF bounds() const;
qreal resolution(const QRectF &rect) const;
int zoom() const {return _zoom;}
void setZoom(int zoom) {_zoom = zoom;}
int zoomFit(const QSize &size, const RectC &rect);
int zoomIn();
int zoomOut();
QPointF ll2xy(const Coordinates &c)
{return static_cast<const JNXMap &>(*this).ll2xy(c);}
Coordinates xy2ll(const QPointF &p)
{return static_cast<const JNXMap &>(*this).xy2ll(p);}
void draw(QPainter *painter, const QRectF &rect, bool block);
bool isValid() const {return _valid;}
QString errorString() const {return _errorString;}
private:
struct Tile {
QPointF pos;
quint32 size;
quint32 offset;
};
struct Zoom {
Transform transform;
QVector<Tile> tiles;
RTree<Tile*, qreal, 2> tree;
};
QPointF ll2xy(const Coordinates &c) const;
Coordinates xy2ll(const QPointF &p) const;
template<class T> bool readValue(T &val);
bool readString(QByteArray &ba);
bool readTiles();
static bool cb(Tile *tile, void *context);
static QPixmap pixmap(const Tile *tile, QFile *file);
QString _name;
QFile _file;
QVector<Zoom> _zooms;
int _zoom;
RectC _bounds;
bool _valid;
QString _errorString;
};
#endif // JNXMAP_H

View File

@ -16,19 +16,17 @@ LambertAzimuthal::LambertAzimuthal(const Ellipsoid *ellipsoid,
_lon0 = deg2rad(longitudeOrigin);
_a = ellipsoid->radius();
_es = ellipsoid->es();
_e = sqrt(_es);
_es2 = 2.0 * ellipsoid->flattening() - ellipsoid->flattening()
* ellipsoid->flattening();
_es = sqrt(_es2);
double q0 = (1.0 - _es2) * ((sin(lat0) / (1.0 - _es2 * sin2(lat0)))
- ((1.0/(2.0*_es)) * log((1.0 - _es * sin(lat0)) / (1.0 + _es
double q0 = (1.0 - _es) * ((sin(lat0) / (1.0 - _es * sin2(lat0)))
- ((1.0/(2.0*_e)) * log((1.0 - _e * sin(lat0)) / (1.0 + _e
* sin(lat0)))));
_qP = (1.0 - _es2) * ((1.0 / (1.0 - _es2)) - ((1.0/(2.0*_es))
* log((1.0 - _es) / (1.0 + _es))));
_qP = (1.0 - _es) * ((1.0 / (1.0 - _es)) - ((1.0/(2.0*_e))
* log((1.0 - _e) / (1.0 + _e))));
_beta0 = asin(q0 / _qP);
_Rq = _a * sqrt(_qP / 2.0);
_D = _a * (cos(lat0) / sqrt(1.0 - _es2 * sin2(lat0))) / (_Rq * cos(_beta0));
_D = _a * (cos(lat0) / sqrt(1.0 - _es * sin2(lat0))) / (_Rq * cos(_beta0));
}
PointD LambertAzimuthal::ll2xy(const Coordinates &c) const
@ -36,8 +34,8 @@ PointD LambertAzimuthal::ll2xy(const Coordinates &c) const
double lon = deg2rad(c.lon());
double lat = deg2rad(c.lat());
double q = (1.0 - _es2) * ((sin(lat) / (1.0 - _es2 * sin2(lat)))
- ((1.0/(2.0*_es)) * log((1.0 - _es * sin(lat)) / (1.0 + _es
double q = (1.0 - _es) * ((sin(lat) / (1.0 - _es * sin2(lat)))
- ((1.0/(2.0*_e)) * log((1.0 - _e * sin(lat)) / (1.0 + _e
* sin(lat)))));
double beta = asin(q / _qP);
double B = _Rq * sqrt(2.0 / (1.0 + sin(_beta0) * sin(beta) + (cos(_beta0)
@ -52,8 +50,8 @@ PointD LambertAzimuthal::ll2xy(const Coordinates &c) const
Coordinates LambertAzimuthal::xy2ll(const PointD &p) const
{
double es4 = _es2 * _es2;
double es6 = _es2 * es4;
double es4 = _es * _es;
double es6 = _es * es4;
double rho = sqrt(sqr((p.x() - _falseEasting) / _D) + sqr(_D * (p.y()
- _falseNorthing)));
@ -64,7 +62,7 @@ Coordinates LambertAzimuthal::xy2ll(const PointD &p) const
double lon = _lon0 + atan((p.x() - _falseEasting) * sin(C) / (_D * rho
* cos(_beta0) * cos(C) - sqr(_D) * (p.y() - _falseNorthing) * sin(_beta0)
* sin(C)));
double lat = betaS + ((_es2/3.0 + 31.0*es4/180.0 + 517.0*es6/5040.0)
double lat = betaS + ((_es/3.0 + 31.0*es4/180.0 + 517.0*es6/5040.0)
* sin(2.0*betaS)) + ((23.0*es4/360.0 + 251.0*es6/3780.0) * sin(4.0*betaS))
+ ((761.0*es6/45360.0)*sin(6.0*betaS));

View File

@ -20,7 +20,7 @@ private:
double _lon0;
double _falseNorthing;
double _falseEasting;
double _a, _es, _es2, _qP, _beta0, _Rq, _D;
double _a, _e, _es, _qP, _beta0, _Rq, _D;
};
#endif // LAMBERTAZIMUTHAL_H

View File

@ -45,12 +45,6 @@ Defense.
#include "ellipsoid.h"
#include "lambertconic.h"
#ifndef M_PI_2
#define M_PI_2 1.57079632679489661923
#endif // M_PI_2
#ifndef M_PI_4
#define M_PI_4 0.785398163397448309616
#endif /* M_PI_4 */
#define LAMBERT_m(clat, essin) (clat / sqrt(1.0 - essin * essin))
#define LAMBERT2_t(lat, essin, es_over_2) \
@ -63,8 +57,7 @@ LambertConic1::LambertConic1(const Ellipsoid *ellipsoid, double latitudeOrigin,
double longitudeOrigin, double scale, double falseEasting,
double falseNorthing)
{
double es2;
double es_sin;
double e_sin;
double m0;
double lat_orig;
@ -72,21 +65,19 @@ LambertConic1::LambertConic1(const Ellipsoid *ellipsoid, double latitudeOrigin,
lat_orig = deg2rad(latitudeOrigin);
_longitudeOrigin = deg2rad(longitudeOrigin);
if (_longitudeOrigin > M_PI)
_longitudeOrigin -= 2 * M_PI;
_longitudeOrigin -= M_2_PI;
_falseEasting = falseEasting;
_falseNorthing = falseNorthing;
es2 = 2.0 * ellipsoid->flattening() - ellipsoid->flattening()
* ellipsoid->flattening();
_es = sqrt(es2);
_es_over_2 = _es / 2.0;
_e = sqrt(ellipsoid->es());
_e_over_2 = _e / 2.0;
_n = sin(lat_orig);
es_sin = _es * sin(lat_orig);
m0 = LAMBERT_m(cos(lat_orig), es_sin);
_t0 = LAMBERT1_t(lat_orig, es_sin, _es_over_2);
e_sin = _e * sin(lat_orig);
m0 = LAMBERT_m(cos(lat_orig), e_sin);
_t0 = LAMBERT1_t(lat_orig, e_sin, _e_over_2);
_rho0 = ellipsoid->radius() * scale * m0 / _n;
@ -103,7 +94,7 @@ PointD LambertConic1::ll2xy(const Coordinates &c) const
if (fabs(fabs(lat) - M_PI_2) > 1.0e-10) {
t = LAMBERT1_t(lat, _es * sin(lat), _es_over_2);
t = LAMBERT1_t(lat, _e * sin(lat), _e_over_2);
rho = _rho0 * pow(t / _t0, _n);
} else
rho = 0.0;
@ -111,9 +102,9 @@ PointD LambertConic1::ll2xy(const Coordinates &c) const
dlam = deg2rad(c.lon()) - _longitudeOrigin;
if (dlam > M_PI)
dlam -= 2 * M_PI;
dlam -= M_2_PI;
if (dlam < -M_PI)
dlam += 2 * M_PI;
dlam += M_2_PI;
theta = _n * dlam;
@ -154,9 +145,9 @@ Coordinates LambertConic1::xy2ll(const PointD &p) const
PHI = M_PI_2 - 2.0 * atan(t);
while (fabs(PHI - tempPHI) > tolerance && count) {
tempPHI = PHI;
es_sin = _es * sin(PHI);
es_sin = _e * sin(PHI);
PHI = M_PI_2 - 2.0 * atan(t * pow((1.0 - es_sin) / (1.0 + es_sin),
_es_over_2));
_e_over_2));
count--;
}
@ -177,13 +168,13 @@ Coordinates LambertConic1::xy2ll(const PointD &p) const
if (lon - M_PI < 3.5e-6)
lon = M_PI;
else
lon -= 2 * M_PI;
lon -= M_2_PI;
}
if (lon < -M_PI) {
if (fabs(lon + M_PI) < 3.5e-6)
lon = -M_PI;
else
lon += 2 * M_PI;
lon += M_2_PI;
}
if (fabs(lon) < 2.0e-7)
@ -207,7 +198,7 @@ LambertConic2::LambertConic2(const Ellipsoid *ellipsoid,
double standardParallel1, double standardParallel2, double latitudeOrigin,
double longitudeOrigin, double falseEasting, double falseNorthing)
{
double es, es_over_2, es2, es_sin;
double e, e_over_2, e_sin;
double lat0;
double k0;
double t0;
@ -227,29 +218,27 @@ LambertConic2::LambertConic2(const Ellipsoid *ellipsoid,
sp2 = deg2rad(standardParallel2);
if (fabs(sp1 - sp2) > 1.0e-10) {
es2 = 2 * ellipsoid->flattening() - ellipsoid->flattening()
* ellipsoid->flattening();
es = sqrt(es2);
es_over_2 = es / 2.0;
e = sqrt(ellipsoid->es());
e_over_2 = e / 2.0;
es_sin = es * sin(lat_orig);
t_olat = LAMBERT2_t(lat_orig, es_sin, es_over_2);
e_sin = e * sin(lat_orig);
t_olat = LAMBERT2_t(lat_orig, e_sin, e_over_2);
es_sin = es * sin(sp1);
m1 = LAMBERT_m(cos(sp1), es_sin);
t1 = LAMBERT2_t(sp1, es_sin, es_over_2);
e_sin = e * sin(sp1);
m1 = LAMBERT_m(cos(sp1), e_sin);
t1 = LAMBERT2_t(sp1, e_sin, e_over_2);
es_sin = es * sin(sp2);
m2 = LAMBERT_m(cos(sp2), es_sin);
t2 = LAMBERT2_t(sp2, es_sin, es_over_2);
e_sin = e * sin(sp2);
m2 = LAMBERT_m(cos(sp2), e_sin);
t2 = LAMBERT2_t(sp2, e_sin, e_over_2);
n = log(m1 / m2) / log(t1 / t2);
lat0 = asin(n);
es_sin = es * sin(lat0);
m0 = LAMBERT_m(cos(lat0), es_sin);
t0 = LAMBERT2_t(lat0, es_sin, es_over_2);
e_sin = e * sin(lat0);
m0 = LAMBERT_m(cos(lat0), e_sin);
t0 = LAMBERT2_t(lat0, e_sin, e_over_2);
k0 = (m1 / m0) * (pow(t0 / t1, n));

View File

@ -23,8 +23,8 @@ private:
double _falseEasting;
double _falseNorthing;
double _es;
double _es_over_2;
double _e;
double _e_over_2;
double _n;
double _t0;
double _rho0;

View File

@ -15,6 +15,15 @@ LinearUnits::LinearUnits(int code)
case 9040:
_f = 36.0 / 39.370147;
break;
case 9041:
_f = 12.0 / 39.370147;
break;
case 9042:
_f = 792.0 / 39.370147;
break;
case 9094:
_f = 6378300.0 / 20926201.0;
break;
default:
_f = NAN;
}

View File

@ -15,7 +15,7 @@ class Map : public QObject
Q_OBJECT
public:
Map(QObject *parent = 0) : QObject(parent), _backgroundColor(Qt::white) {}
Map(QObject *parent = 0) : QObject(parent) {}
virtual ~Map() {}
virtual const QString &name() const = 0;
@ -24,6 +24,7 @@ public:
virtual qreal resolution(const QRectF &rect) const = 0;
virtual int zoom() const = 0;
virtual void setZoom(int zoom) = 0;
virtual int zoomFit(const QSize &size, const RectC &rect) = 0;
virtual int zoomIn() = 0;
virtual int zoomOut() = 0;
@ -31,23 +32,17 @@ public:
virtual QPointF ll2xy(const Coordinates &c) = 0;
virtual Coordinates xy2ll(const QPointF &p) = 0;
virtual void draw(QPainter *painter, const QRectF &rect) = 0;
virtual void draw(QPainter *painter, const QRectF &rect, bool block) = 0;
virtual void setBlockingMode(bool block) {Q_UNUSED(block);}
virtual void clearCache() {}
virtual void load() {}
virtual void unload() {}
void setBackgroundColor(const QColor &color) {_backgroundColor = color;}
virtual bool isValid() const {return true;}
virtual QString errorString() const {return QString();}
signals:
void loaded();
protected:
QColor _backgroundColor;
};
#endif // MAP_H

View File

@ -3,33 +3,13 @@
#include "atlas.h"
#include "offlinemap.h"
#include "onlinemap.h"
#include "jnxmap.h"
#include "mapsource.h"
#include "maplist.h"
bool MapList::loadSource(const QString &path, bool dir)
bool MapList::loadMap(Map* map, const QString &path, bool dir)
{
MapSource ms;
Map *map;
if (!(map = ms.loadFile(path))) {
if (dir)
_errorString += path + ": " + ms.errorString() + "\n";
else
_errorString = ms.errorString();
return false;
}
map->setParent(this);
_maps.append(map);
return true;
}
bool MapList::loadMap(const QString &path, bool dir)
{
OfflineMap *map = new OfflineMap(path, this);
if (map->isValid()) {
_maps.append(map);
return true;
@ -38,26 +18,27 @@ bool MapList::loadMap(const QString &path, bool dir)
_errorString += path + ": " + map->errorString() + "\n";
else
_errorString = map->errorString();
delete map;
return false;
}
}
bool MapList::loadAtlas(const QString &path, bool dir)
bool MapList::loadSource(const QString &path, bool dir)
{
Atlas *atlas = new Atlas(path, this);
QString err;
Map *map = MapSource::loadMap(path, err);
if (atlas->isValid()) {
_maps.append(atlas);
return true;
} else {
if (!map) {
if (dir)
_errorString += path + ": " + atlas->errorString() + "\n";
_errorString += path + ": " + err + "\n";
else
_errorString = atlas->errorString();
delete atlas;
_errorString = err;
return false;
}
map->setParent(this);
return loadMap(map, path, dir);
}
bool MapList::loadFile(const QString &path, bool *atlas, bool dir)
@ -67,14 +48,13 @@ bool MapList::loadFile(const QString &path, bool *atlas, bool dir)
if (Atlas::isAtlas(path)) {
*atlas = true;
return loadAtlas(path, dir);
} else if (suffix == "xml") {
*atlas = false;
return loadMap(new Atlas(path, this), path, dir);
} else if (suffix == "xml")
return loadSource(path, dir);
} else {
*atlas = false;
return loadMap(path, dir);
}
else if (suffix == "jnx")
return loadMap(new JNXMap(path, this), path, dir);
else
return loadMap(new OfflineMap(path, this), path, dir);
}
bool MapList::loadDirR(const QString &path)
@ -83,11 +63,12 @@ bool MapList::loadDirR(const QString &path)
md.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
md.setSorting(QDir::DirsLast);
QFileInfoList ml = md.entryInfoList();
bool atlas, ret = true;
bool ret = true;
for (int i = 0; i < ml.size(); i++) {
const QFileInfo &fi = ml.at(i);
QString suffix = fi.suffix().toLower();
bool atlas = false;
if (fi.isDir() && fi.fileName() != "set") {
if (!loadDirR(fi.absoluteFilePath()))
@ -127,7 +108,8 @@ void MapList::clear()
QString MapList::formats()
{
return
tr("Supported files") + " (*.map *.tar *.tba *.tif *.tiff *.xml);;"
tr("Supported files") + " (*.jnx *.map *.tar *.tba *.tif *.tiff *.xml);;"
+ tr("Garmin JNX maps") + " (*.jnx);;"
+ tr("OziExplorer maps") + " (*.map);;"
+ tr("TrekBuddy maps/atlases") + " (*.tar *.tba);;"
+ tr("GeoTIFF images") + " (*.tif *.tiff);;"
@ -137,6 +119,7 @@ QString MapList::formats()
QStringList MapList::filter()
{
QStringList filter;
filter << "*.map" << "*.tba" << "*.tar" << "*.xml" << "*.tif" << "*.tiff";
filter << "*.jnx *.map" << "*.tba" << "*.tar" << "*.xml" << "*.tif"
<< "*.tiff";
return filter;
}

View File

@ -26,12 +26,8 @@ public:
private:
bool loadFile(const QString &path, bool *atlas, bool dir);
bool loadDirR(const QString &path);
Map *loadListEntry(const QByteArray &line);
bool loadSource(const QString &path, bool dir);
bool loadMap(const QString &path, bool dir);
bool loadAtlas(const QString &path, bool dir);
bool loadMap(Map *map, const QString &path, bool dir);
QList<Map*> _maps;
QString _errorString;

View File

@ -164,20 +164,18 @@ void MapSource::map(QXmlStreamReader &reader, Config &config)
}
}
Map *MapSource::loadFile(const QString &path)
Map *MapSource::loadMap(const QString &path, QString &errorString)
{
QFile file(path);
QXmlStreamReader reader;
Config config;
Map *m;
QFile file(path);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
_errorString = file.errorString();
errorString = file.errorString();
return 0;
}
reader.setDevice(&file);
QXmlStreamReader reader(&file);
if (reader.readNextStartElement()) {
if (reader.name() == "map")
map(reader, config);
@ -185,58 +183,51 @@ Map *MapSource::loadFile(const QString &path)
reader.raiseError("Not an online map source file");
}
if (reader.error()) {
_errorString = QString("%1: %2").arg(reader.lineNumber())
errorString = QString("%1: %2").arg(reader.lineNumber())
.arg(reader.errorString());
return 0;
}
if (config.name.isEmpty()) {
_errorString = "Missing name definition";
errorString = "Missing name definition";
return 0;
}
if (config.url.isEmpty()) {
_errorString = "Missing URL definition";
errorString = "Missing URL definition";
return 0;
}
if (config.type == WMTS || config.type == WMS) {
if (config.layer.isEmpty()) {
_errorString = "Missing layer definition";
errorString = "Missing layer definition";
return 0;
}
if (config.format.isEmpty()) {
_errorString = "Missing format definition";
errorString = "Missing format definition";
return 0;
}
}
if (config.type == WMTS) {
if (config.set.isEmpty()) {
_errorString = "Missing set definiton";
errorString = "Missing set definiton";
return 0;
}
}
if (config.type == WMS) {
if (config.crs.isEmpty()) {
_errorString = "Missing CRS definiton";
errorString = "Missing CRS definiton";
return 0;
}
}
if (config.type == WMTS)
m = new WMTSMap(config.name, WMTS::Setup(config.url, config.layer,
return new WMTSMap(config.name, WMTS::Setup(config.url, config.layer,
config.set, config.style, config.format, config.rest,
config.coordinateSystem, config.dimensions, config.authorization));
else if (config.type == WMS)
m = new WMSMap(config.name, WMS::Setup(config.url, config.layer,
return new WMSMap(config.name, WMS::Setup(config.url, config.layer,
config.style, config.format, config.crs, config.coordinateSystem,
config.dimensions, config.authorization));
else
m = new OnlineMap(config.name, config.url, config.zooms, config.bounds);
if (!m->isValid()) {
_errorString = m->errorString();
delete m;
return 0;
}
return m;
return new OnlineMap(config.name, config.url, config.zooms,
config.bounds, config.authorization);
}

View File

@ -13,8 +13,7 @@ class QXmlStreamReader;
class MapSource
{
public:
Map *loadFile(const QString &path);
const QString &errorString() const {return _errorString;}
static Map *loadMap(const QString &path, QString &errorString);
private:
enum Type {
@ -42,11 +41,9 @@ private:
Config();
};
RectC bounds(QXmlStreamReader &reader);
Range zooms(QXmlStreamReader &reader);
void map(QXmlStreamReader &reader, Config &config);
QString _errorString;
static RectC bounds(QXmlStreamReader &reader);
static Range zooms(QXmlStreamReader &reader);
static void map(QXmlStreamReader &reader, Config &config);
};
#endif // MAPSOURCE_H

View File

@ -1,16 +1,123 @@
#include <cmath>
#include "common/coordinates.h"
#include "common/wgs84.h"
/*
* Based on libgeotrans with the following Source Code Disclaimer:
1. The GEOTRANS source code ("the software") is provided free of charge by
the National Imagery and Mapping Agency (NIMA) of the United States
Department of Defense. Although NIMA makes no copyright claim under Title 17
U.S.C., NIMA claims copyrights in the source code under other legal regimes.
NIMA hereby grants to each user of the software a license to use and
distribute the software, and develop derivative works.
2. Warranty Disclaimer: The software was developed to meet only the internal
requirements of the U.S. National Imagery and Mapping Agency. The software
is provided "as is," and no warranty, express or implied, including but not
limited to the implied warranties of merchantability and fitness for
particular purpose or arising by statute or otherwise in law or from a
course of dealing or usage in trade, is made by NIMA as to the accuracy and
functioning of the software.
3. NIMA and its personnel are not required to provide technical support or
general assistance with respect to the software.
4. Neither NIMA nor its personnel will be liable for any claims, losses, or
damages arising from or connected with the use of the software. The user
agrees to hold harmless the United States National Imagery and Mapping
Agency. The user's sole and exclusive remedy is to stop using the software.
5. NIMA requests that products developed using the software credit the
source of the software with the following statement, "The product was
developed using GEOTRANS, a product of the National Imagery and Mapping
Agency and U.S. Army Engineering Research and Development Center."
6. For any products developed using the software, NIMA requires a disclaimer
that use of the software does not indicate endorsement or approval of the
product by the Secretary of Defense or the National Imagery and Mapping
Agency. Pursuant to the United States Code, 10 U.S.C. Sec. 2797, the name of
the National Imagery and Mapping Agency, the initials "NIMA", the seal of
the National Imagery and Mapping Agency, or any colorable imitation thereof
shall not be used to imply approval, endorsement, or authorization of a
product without prior written permission from United States Secretary of
Defense.
*/
#include "ellipsoid.h"
#include "mercator.h"
Mercator::Mercator(const Ellipsoid *ellipsoid, double latitudeOrigin,
double longitudeOrigin, double falseEasting, double falseNorthing)
{
double es = ellipsoid->es();
double es2;
double es3;
double es4;
double sin_olat;
_latitudeOrigin = deg2rad(latitudeOrigin);
_longitudeOrigin = deg2rad(longitudeOrigin);
if (_longitudeOrigin > M_PI)
_longitudeOrigin -= M_2_PI;
_falseNorthing = falseNorthing;
_falseEasting = falseEasting;
_a = ellipsoid->radius();
_e = sqrt(es);
sin_olat = sin(_latitudeOrigin);
_scaleFactor = 1.0 / (sqrt(1.e0 - es * sin_olat * sin_olat)
/ cos(_latitudeOrigin));
es2 = es * es;
es3 = es2 * es;
es4 = es3 * es;
_ab = es / 2.e0 + 5.e0 * es2 / 24.e0 + es3 / 12.e0 + 13.e0 * es4 / 360.e0;
_bb = 7.e0 * es2 / 48.e0 + 29.e0 * es3 / 240.e0 + 811.e0 * es4 / 11520.e0;
_cb = 7.e0 * es3 / 120.e0 + 81.e0 * es4 / 1120.e0;
_db = 4279.e0 * es4 / 161280.e0;
}
PointD Mercator::ll2xy(const Coordinates &c) const
{
return PointD(deg2rad(c.lon()) * WGS84_RADIUS,
log(tan(M_PI/4.0 + deg2rad(c.lat())/2.0)) * WGS84_RADIUS);
double lon = deg2rad(c.lon());
double lat = deg2rad(c.lat());
double ctanz2;
double e_x_sinlat;
double delta_lon;
double tan_temp;
double pow_temp;
if (lon > M_PI)
lon -= M_2_PI;
e_x_sinlat = _e * sin(lat);
tan_temp = tan(M_PI_4 + lat / 2.e0);
pow_temp = pow((1.e0 - e_x_sinlat) / (1.e0 + e_x_sinlat), _e / 2.e0);
ctanz2 = tan_temp * pow_temp;
delta_lon = lon - _longitudeOrigin;
if (delta_lon > M_PI)
delta_lon -= M_2_PI;
if (delta_lon < -M_PI)
delta_lon += M_2_PI;
return PointD(_scaleFactor * _a * delta_lon + _falseEasting,
_scaleFactor * _a * log(ctanz2) + _falseNorthing);
}
Coordinates Mercator::xy2ll(const PointD &p) const
{
return Coordinates(rad2deg(p.x() / WGS84_RADIUS),
rad2deg(2 * atan(exp(p.y() / WGS84_RADIUS)) - M_PI/2));
double dx;
double dy;
double xphi;
double lat, lon;
dy = p.y() - _falseNorthing;
dx = p.x() - _falseEasting;
lon = _longitudeOrigin + dx / (_scaleFactor * _a);
xphi = M_PI_2 - 2.e0 * atan(1.e0 / exp(dy / (_scaleFactor * _a)));
lat = xphi + _ab * sin(2.e0 * xphi) + _bb * sin(4.e0 * xphi)
+ _cb * sin(6.e0 * xphi) + _db * sin(8.e0 * xphi);
if (lon > M_PI)
lon -= M_2_PI;
if (lon < -M_PI)
lon += M_2_PI;
return Coordinates(rad2deg(lon), rad2deg(lat));
}

View File

@ -3,13 +3,27 @@
#include "ct.h"
class Ellipsoid;
class Mercator : public CT
{
public:
Mercator(const Ellipsoid *ellipsoid, double latitudeOrigin,
double longitudeOrigin, double falseEasting, double falseNorthing);
virtual CT *clone() const {return new Mercator(*this);}
virtual PointD ll2xy(const Coordinates &c) const;
virtual Coordinates xy2ll(const PointD &p) const;
private:
double _a, _e;
double _latitudeOrigin;
double _longitudeOrigin;
double _falseNorthing;
double _falseEasting;
double _scaleFactor;
double _ab, _bb, _cb, _db;
};
#endif // MERCATOR_H

View File

@ -262,12 +262,10 @@ void OfflineMap::drawTiled(QPainter *painter, const QRectF &rect) const
} else
pixmap = QPixmap(tileName);
if (pixmap.isNull()) {
if (pixmap.isNull())
qWarning("%s: error loading tile image", qPrintable(
_tile.path.arg(QString::number(x), QString::number(y))));
painter->fillRect(QRectF(QPoint(x, y), _tile.size),
_backgroundColor);
} else
else
painter->drawPixmap(QPoint(x, y), pixmap);
}
}
@ -294,11 +292,9 @@ void OfflineMap::drawOZF(QPainter *painter, const QRectF &rect) const
QPixmapCache::insert(key, pixmap);
}
if (pixmap.isNull()) {
if (pixmap.isNull())
qWarning("%s: error loading tile image", qPrintable(key));
painter->fillRect(QRectF(QPoint(x, y), _ozf->tileSize()),
_backgroundColor);
} else
else
painter->drawPixmap(QPoint(x, y), pixmap);
}
}
@ -311,16 +307,16 @@ void OfflineMap::drawImage(QPainter *painter, const QRectF &rect) const
r.width(), r.height());
}
void OfflineMap::draw(QPainter *painter, const QRectF &rect)
void OfflineMap::draw(QPainter *painter, const QRectF &rect, bool block)
{
Q_UNUSED(block);
if (_ozf)
drawOZF(painter, rect);
else if (_tile.isValid())
drawTiled(painter, rect);
else if (_img && !_img->isNull())
drawImage(painter, rect);
else
painter->fillRect(rect, _backgroundColor);
}
QPointF OfflineMap::ll2xy(const Coordinates &c) const

View File

@ -24,6 +24,7 @@ public:
qreal resolution(const QRectF &rect) const;
int zoom() const {return _zoom;}
void setZoom(int zoom) {_zoom = zoom;}
int zoomFit(const QSize &size, const RectC &rect);
int zoomIn();
int zoomOut();
@ -33,7 +34,7 @@ public:
Coordinates xy2ll(const QPointF &p)
{return static_cast<const OfflineMap &>(*this).xy2ll(p);}
void draw(QPainter *painter, const QRectF &rect);
void draw(QPainter *painter, const QRectF &rect, bool block);
void load();
void unload();

View File

@ -8,15 +8,16 @@
#define TILE_SIZE 256
#define EPSILON 1e-6
static QPointF ll2m(const Coordinates &c)
{
return QPointF(c.lon(), rad2deg(log(tan(M_PI/4.0 + deg2rad(c.lat())/2.0))));
return QPointF(c.lon(), rad2deg(log(tan(M_PI_4 + deg2rad(c.lat())/2.0))));
}
static Coordinates m2ll(const QPointF &p)
{
return Coordinates(p.x(), rad2deg(2 * atan(exp(deg2rad(p.y()))) - M_PI/2));
return Coordinates(p.x(), rad2deg(2.0 * atan(exp(deg2rad(p.y()))) - M_PI_2));
}
static QPoint mercator2tile(const QPointF &m, int z)
@ -36,19 +37,24 @@ static qreal zoom2scale(int zoom)
static int scale2zoom(qreal scale)
{
return (int)log2(360.0/(scale * (qreal)TILE_SIZE));
return (int)(log2(360.0/(scale * (qreal)TILE_SIZE)) + EPSILON);
}
OnlineMap::OnlineMap(const QString &name, const QString &url,
const Range &zooms, const RectC &bounds, QObject *parent) :
Map(parent), _name(name), _zooms(zooms), _bounds(bounds), _block(false),
const Range &zooms, const RectC &bounds, const Authorization &authorization,
QObject *parent) : Map(parent), _name(name), _zooms(zooms), _bounds(bounds),
_valid(false)
{
QString dir(TILES_DIR + "/" + _name);
_zoom = _zooms.max();
_tileLoader = TileLoader(url, dir);
_tileLoader = new TileLoader(this);
_tileLoader->setUrl(url);
_tileLoader->setDir(dir);
_tileLoader->setAuthorization(authorization);
connect(_tileLoader, SIGNAL(finished()), this, SIGNAL(loaded()));
if (!QDir().mkpath(dir)) {
_errorString = "Error creating tiles dir";
@ -58,23 +64,6 @@ OnlineMap::OnlineMap(const QString &name, const QString &url,
_valid = true;
}
void OnlineMap::load()
{
connect(TileLoader::downloader(), SIGNAL(finished()), this,
SLOT(emitLoaded()));
}
void OnlineMap::unload()
{
disconnect(TileLoader::downloader(), SIGNAL(finished()), this,
SLOT(emitLoaded()));
}
void OnlineMap::emitLoaded()
{
emit loaded();
}
QRectF OnlineMap::bounds() const
{
return QRectF(ll2xy(_bounds.topLeft()), ll2xy(_bounds.bottomRight()));
@ -123,7 +112,7 @@ int OnlineMap::zoomOut()
return _zoom;
}
void OnlineMap::draw(QPainter *painter, const QRectF &rect)
void OnlineMap::draw(QPainter *painter, const QRectF &rect, bool block)
{
qreal scale = zoom2scale(_zoom);
@ -138,19 +127,16 @@ void OnlineMap::draw(QPainter *painter, const QRectF &rect)
for (int j = 0; j < ceil(s.height() / TILE_SIZE); j++)
tiles.append(Tile(QPoint(tile.x() + i, tile.y() + j), _zoom));
if (_block)
_tileLoader.loadTilesSync(tiles);
if (block)
_tileLoader->loadTilesSync(tiles);
else
_tileLoader.loadTilesAsync(tiles);
_tileLoader->loadTilesAsync(tiles);
for (int i = 0; i < tiles.count(); i++) {
Tile &t = tiles[i];
QPoint tp(tl.x() + (t.xy().x() - tile.x()) * TILE_SIZE,
tl.y() + (t.xy().y() - tile.y()) * TILE_SIZE);
if (t.pixmap().isNull())
painter->fillRect(QRect(tp, QSize(TILE_SIZE, TILE_SIZE)),
_backgroundColor);
else
if (!t.pixmap().isNull())
painter->drawPixmap(tp, t.pixmap());
}
}

View File

@ -12,7 +12,8 @@ class OnlineMap : public Map
public:
OnlineMap(const QString &name, const QString &url, const Range &zooms,
const RectC &bounds, QObject *parent = 0);
const RectC &bounds, const Authorization &authorization,
QObject *parent = 0);
const QString &name() const {return _name;}
@ -20,6 +21,7 @@ public:
qreal resolution(const QRectF &rect) const;
int zoom() const {return _zoom;}
void setZoom(int zoom) {_zoom = zoom;}
int zoomFit(const QSize &size, const RectC &rect);
int zoomIn();
int zoomOut();
@ -29,31 +31,23 @@ public:
Coordinates xy2ll(const QPointF &p)
{return static_cast<const OnlineMap &>(*this).xy2ll(p);}
void draw(QPainter *painter, const QRectF &rect);
void draw(QPainter *painter, const QRectF &rect, bool block);
void setBlockingMode(bool block) {_block = block;}
void clearCache() {_tileLoader.clearCache();}
void load();
void unload();
void clearCache() {_tileLoader->clearCache();}
bool isValid() const {return _valid;}
QString errorString() const {return _errorString;}
private slots:
void emitLoaded();
private:
QPointF ll2xy(const Coordinates &c) const;
Coordinates xy2ll(const QPointF &p) const;
int limitZoom(int zoom) const;
TileLoader _tileLoader;
TileLoader *_tileLoader;
QString _name;
Range _zooms;
RectC _bounds;
int _zoom;
bool _block;
bool _valid;
QString _errorString;

View File

@ -25,10 +25,11 @@ public:
const CoordinateSystem &coordinateSystem() const {return _cs;}
bool isNull() const
{return (_gcs->isNull() && _units.isNull() && _method.isNull()
&& _setup.isNull());}
{return (!_gcs && _units.isNull() && _method.isNull() && _setup.isNull()
&& _cs.isNull());}
bool isValid() const
{return (_gcs->isValid() && _units.isValid() && _method.isValid());}
{return (_gcs && _gcs->isValid() && _units.isValid()
&& _method.isValid() && _cs.isValid());}
static void loadList(const QString &path);
static const PCS *pcs(int id);

View File

@ -19,7 +19,7 @@ public:
bool isNull() const {return std::isnan(_x) && std::isnan(_y);}
QPointF toPointF() const {return QPointF(_x, _y);}
QPointF toPointF() const {return QPointF((qreal)_x, (qreal)_y);}
private:
double _x, _y;

Some files were not shown because too many files have changed in this diff Show More