diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-05-18 10:01:53 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-05-18 10:01:53 +0000 |
commit | 0b74d7f4ee6d448ac811e2741e8cb1ed04f5ce76 (patch) | |
tree | be7bb1cb1020f4022e41c004e2fa9d561ea3580d /navit/tools | |
parent | f46eb419c46011d6d103b7f06cb2c842a2cbe6c9 (diff) | |
download | navit-0b74d7f4ee6d448ac811e2741e8cb1ed04f5ce76.tar.gz |
Fix:Core:Renamed src to navit for cleanup of includes
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@1059 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/tools')
36 files changed, 12097 insertions, 0 deletions
diff --git a/navit/tools/gpx2navit_txt/AUTHORS b/navit/tools/gpx2navit_txt/AUTHORS new file mode 100644 index 000000000..06a46c26d --- /dev/null +++ b/navit/tools/gpx2navit_txt/AUTHORS @@ -0,0 +1,9 @@ +AUTHORS +======== +Toshihiro Hiraoka <washitoshi at yahoo.co.jp> + maintainer +Petter Reinholdtsen <pere at hungry.com> + bug fix, debian package and advices + +bodenseepingu bodenseepingu at user.sourceforge.net + for modifications towards gpx2navit_txt diff --git a/navit/tools/gpx2navit_txt/COPYING b/navit/tools/gpx2navit_txt/COPYING new file mode 100644 index 000000000..514d6c73f --- /dev/null +++ b/navit/tools/gpx2navit_txt/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330, Boston, MA 02111 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/navit/tools/gpx2navit_txt/ChangeLog b/navit/tools/gpx2navit_txt/ChangeLog new file mode 100644 index 000000000..431aa18be --- /dev/null +++ b/navit/tools/gpx2navit_txt/ChangeLog @@ -0,0 +1,21 @@ +0.1 new version gpx2navit_txt + +0.69 + by Petter Reinholdsen + - Add configure option "--enable-coverage". + - Add few check targets. + - Patch for compile warning in DBFWriteAttribute(). + - Patch for compile warning in createParseData(). + by Toshihiro Hiraoka + - Bug (Debian Bug #292514: Segfaults when called only with -v) fix + - Delete few unused functions from utils.c + +0.68-1 +====== + by Petter Reinholdtsen + - New debian package gpx2shp_0.68-1_i386.deb. + - Update debian releted files. + debian/watch, control, changelog + - Delete src/configure.ac. + - Delete libz check entry from configure.ac. + diff --git a/navit/tools/gpx2navit_txt/INSTALL b/navit/tools/gpx2navit_txt/INSTALL new file mode 100644 index 000000000..b5dbb9e31 --- /dev/null +++ b/navit/tools/gpx2navit_txt/INSTALL @@ -0,0 +1,17 @@ +Requirements +============== +- proj >ver4.0 +- expat >ver2.0 +- gpsbabel If you want to convert from GPS to shp directory but the + future is not stable yet. + +Installation +============== +It's not special. Just type below like others. + + ./configure + make + su + make install + +gpx2navit_txt image will be at /usr/local/bin. diff --git a/navit/tools/gpx2navit_txt/Makefile.am b/navit/tools/gpx2navit_txt/Makefile.am new file mode 100644 index 000000000..05f1ce1a0 --- /dev/null +++ b/navit/tools/gpx2navit_txt/Makefile.am @@ -0,0 +1,27 @@ +SUBDIRS = src man + +EXTRA_DIST = gps2shp pinatest2.gpx debian develop + +debian-dist: + dpkg-buildpackage -rfakeroot -d -tc -us -uc + +CLEANFILES = \ + pinatest2_wpt.shx \ + pinatest2_wpt.shp \ + pinatest2_wpt.dbf \ + pinatest2_trk.shx \ + pinatest2_trk.shp \ + pinatest2_trk.dbf \ + pinatest2_rte.shx \ + pinatest2_rte.shp \ + pinatest2_rte.dbf \ + pinatest2_meta.txt + +GPX2SHP=src/gpx2shp +check: $(GPX2SHP) + $(GPX2SHP) || true + $(GPX2SHP) --version + $(GPX2SHP) -s pinatest2.gpx + $(GPX2SHP) -e pinatest2.gpx + $(GPX2SHP) -p pinatest2.gpx + $(GPX2SHP) -v pinatest2.gpx > /dev/null diff --git a/navit/tools/gpx2navit_txt/NEWS b/navit/tools/gpx2navit_txt/NEWS new file mode 100644 index 000000000..7bd167323 --- /dev/null +++ b/navit/tools/gpx2navit_txt/NEWS @@ -0,0 +1,64 @@ +0.69 +==== + by Petter Reinholdtsen + - Add compile check options + - Compile warning fixes + by Toshihiro Hiraoka + - Bug fix + +0.68-1 +====== + by Petter Reinholdtsen + - Add debian files + by Susumu Murakami + - RPM package for Vine 3.1 + +0.68 +==== + by Toshihiro Hiraoka + - Change XML parser from libxml2 to expat for big file support + - Remake almost all strucutes. + - Rewrite almost all sources. + - Add three path check options --min-points, --min-length and + --min-time to reduce the noise. + - Add -b, --basix-columns option + - Add -g, --gpxline option + - Add -f, --fast option + - README + - AUTHORS + - Change comment style to javadoc style. + - Structures flow + - Error code + +0.65-1 +====== + by Petter Reinholdtsen + - Add some debian missing files. + - Added config.sub and config.guess. + - debian package available now! + + by Toshihiro Hiraoka + - Stop to use strange version number. + +0.65a +===== + by Petter Reinholdtsen + - Add configure script etc. + - Get rid of some warnings about loosing the 'const'-ness of the + variable. + - Remove unused include <math.h>. + - Add include to find prototype for geod_set(). + - Fix handling of output filename, to make sure it handles + './foo.gpx' (used to give random filename). + - Correct the prototype of closeFiles(). + - Add files in debian/ to make debian package. This is just a + framework, and need more work. The package description and a lot + of the support files are from the dh-make package, and should be + edited or removed. To build the package, run debuild from the + devscripts package. + - Solve some memory leaks and complaints. + + by Toshihiro Hiraoka + - Restruct directory + - Add many prototypes etc. + diff --git a/navit/tools/gpx2navit_txt/README b/navit/tools/gpx2navit_txt/README new file mode 100644 index 000000000..afa985313 --- /dev/null +++ b/navit/tools/gpx2navit_txt/README @@ -0,0 +1,117 @@ +============== +gpx2navit_txt README +============== +bodenseepingu +4/01/2008 + +What's This +=========== + gpx2navit_txt is a converter from GPX file to Navit Text map format + +For gpx2navit_txt was the original code from gpx2shp used and modified. +This is a output of Metro Manila Transit Map Project by JOCV (Japan +Overseas Cooperation Volunteers) program of JICA (Japan International +Cooperation Agency in 2004. It is provided you on GPL2. + + +How to Use +========== +- Basic + There are three types of data on GPX that are waypoint, trkpoint and +route. gpx2navit_txt converts the data to navit file(s) +Please try to convert a sample file "pinatest2.gpx" in this archive. + + prompt> gpx2navit_txt pinatest2.gpx + prompt> ls + pinatest2.gpx (source gpx) + pinatest2_meta.txt (meta data may be there) + + You can convert only a certain type of data like only waypoint or +track point using option '-w' (waypoint), '-t' (trackpoint) or '-r' +(route). + + prompt> gpx2navit_txt -r pinatest2.gpx + +- Convert path data to points and etc + As default, track point and route data is converted as a arc data but +you can convert it other ways using option '-p'(convert as point) and +'-e' (as edge). The edge file has '_edg' in the filename and the point +file has '_pnt' in the filename. + + prompt> gpx2navit_txt -p -e pinatest2.gpx + +- Statistics + If you add '-s' option you can see a conversion summery. + + prompt> gpx2navit_txt -s pinatest2.gpx + Track Points: + track count: 4 + point count: 658 + total length: 156565.627989 + unconverted: 0( 0.00%) + Routes: + route count: 1 + point count: 323 + total length: 9258.618971 + unconverted: 0( 0.00%) + Waypoints: + point count: 118 + +- Noise reduction + gpx2navit_txt has several thresholds to reduct the noise path data. The +value can set as '--min-points', '--min-length' and '--min-time'. Please +try a example below. + + prompt> gpx2navit_txt --min-points 6 -s pinatest2.gpx + gpx2navit_txt:../pinatest3.gpx:3962 track was not converted because of + less then 6 points. (<- this path is not converted because the path + has only 5 points) + Track Points: + track count: 3 + point count: 653 + total length: 156439.490642 + unconverted: 1(25.00%) + Routes: + route count: 1 + point count: 323 + total length: 9258.618971 + unconverted: 0( 0.00%) + Waypoints: + point count: 118 + + +- Length and time units + You can choose any length related units that are supported by proj4 +for attribute table using + '--length-unit' (for length column, default: m), + '--time-unit' (for time column, default: sec), + '--speed-length-unit' (for speed column, default: km), + '--speed-time-unit' (for speed column, default: hour) and + '--length-ellipsoid' (for length calculation, default: UGS84). + You can see the supported units by 'geod -lu' and 'geod -le' command. + Supported time unit are 'sec', 'min', 'hour' and 'day'. + +- Other futures + There are other futures in gpx2navit_txt. Please check the option list using + + gpx2navit_txt --help + +Problem or Suggestion +===================== +Please let me know about your opinion in English by e-mail. + bodenseepingu at users.sourceforge.net + navit on sourceforge.net + http://gpx2shp.sourceforge.jp/ for original gpx2shp + todo for gpx2navit_txt + +Acknowledgments +=============== +NEDA (National Economic and Development Authority) Region IV-B office + My generous counter part +Yoshio Tanaka + My project leader gpx2shp +Petter Reinholdtsen + Many support to develop this +Frank Warmerdam and the team + shapelib and proj4 +bodenseepingu for modifications towards navit diff --git a/navit/tools/gpx2navit_txt/TODO b/navit/tools/gpx2navit_txt/TODO new file mode 100644 index 000000000..de50135f8 --- /dev/null +++ b/navit/tools/gpx2navit_txt/TODO @@ -0,0 +1 @@ +....to be filled diff --git a/navit/tools/gpx2navit_txt/config.guess b/navit/tools/gpx2navit_txt/config.guess new file mode 100644 index 000000000..822947132 --- /dev/null +++ b/navit/tools/gpx2navit_txt/config.guess @@ -0,0 +1,1453 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + +timestamp='2004-11-12' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner <per@bothner.com>. +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amd64:OpenBSD:*:*) + echo x86_64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + cats:OpenBSD:*:*) + echo arm-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + luna88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit 0 ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit 0 ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include <stdio.h> /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit 0 ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <features.h> + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` + echo ${UNAME_MACHINE}-pc-isc$UNAME_REL + elif /bin/uname -X 2>/dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes <hewes@openmarket.com>. + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + *86) UNAME_PROCESSOR=i686 ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms && exit 0 ;; + I*) echo ia64-dec-vms && exit 0 ;; + V*) echo vax-dec-vms && exit 0 ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c <<EOF +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/utsname.h> +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include <sys/param.h> + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include <sys/param.h> +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 <<EOF +$0: unable to guess system type + +This script, last modified $timestamp, has failed to recognize +the operating system you are using. It is advised that you +download the most up to date version of the config scripts from + + ftp://ftp.gnu.org/pub/gnu/config/ + +If the version you run ($0) is already up to date, please +send the following data and any information you think might be +pertinent to <config-patches@gnu.org> in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/navit/tools/gpx2navit_txt/config.sub b/navit/tools/gpx2navit_txt/config.sub new file mode 100644 index 000000000..0f84ac2c5 --- /dev/null +++ b/navit/tools/gpx2navit_txt/config.sub @@ -0,0 +1,1566 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + +timestamp='2004-11-30' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to <config-patches@gnu.org>. Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <config-patches@gnu.org>." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/navit/tools/gpx2navit_txt/configure.ac b/navit/tools/gpx2navit_txt/configure.ac new file mode 100644 index 000000000..c34753222 --- /dev/null +++ b/navit/tools/gpx2navit_txt/configure.ac @@ -0,0 +1,47 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.57) +AC_INIT(gpx2shp, 0.69, kogame at gmail.com) +AM_INIT_AUTOMAKE(gpx2shp, 0.69) +AC_CONFIG_SRCDIR(src/main.c) +AM_CONFIG_HEADER(src/config.h) + +# Checks for programs. +AC_PROG_CC +AC_PROG_MAKE_SET + +# Ask GCC to give us heaps of warnings +if eval "test x$GCC = xyes"; then + CFLAGS="$CFLAGS -W -Wall -Wcast-align -Wcast-qual" + CFLAGS="$CFLAGS -Wmissing-declarations -Wmissing-prototypes" + CFLAGS="$CFLAGS -Wstrict-prototypes -Wpointer-arith -Wreturn-type" + AC_SUBST(CFLAGS) +fi + +AC_ARG_ENABLE(coverage, +[ --enable-coverage compile with coverage testing enabled], + CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage") + +# Checks for libraries. +AC_CHECK_LIB(proj, pj_param) +AC_CHECK_LIB(proj, pj_init, [], [ echo "Error you need lib proj4" && exit -1]) +AC_CHECK_LIB(expat, XML_SetUserData) +AC_CHECK_LIB(m, cos) + +# Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(limits.h stdlib.h string.h unistd.h) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_STRUCT_TM + +# Checks for library functions. +AC_FUNC_MALLOC +AC_FUNC_MKTIME +AC_FUNC_REALLOC +AC_CHECK_FUNCS(memset sqrt) + +AC_CONFIG_FILES(Makefile src/Makefile man/Makefile) +AC_OUTPUT diff --git a/navit/tools/gpx2navit_txt/depcomp b/navit/tools/gpx2navit_txt/depcomp new file mode 100755 index 000000000..807b991f4 --- /dev/null +++ b/navit/tools/gpx2navit_txt/depcomp @@ -0,0 +1,423 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. We will use -o /dev/null later, + # however we can't do the remplacement now because + # `-o $object' might simply not be used + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + -*) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/navit/tools/gpx2navit_txt/develop/structures.gif b/navit/tools/gpx2navit_txt/develop/structures.gif Binary files differnew file mode 100644 index 000000000..ba0c18aba --- /dev/null +++ b/navit/tools/gpx2navit_txt/develop/structures.gif diff --git a/navit/tools/gpx2navit_txt/install-sh b/navit/tools/gpx2navit_txt/install-sh new file mode 100755 index 000000000..11870f1b0 --- /dev/null +++ b/navit/tools/gpx2navit_txt/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + : + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + : + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/navit/tools/gpx2navit_txt/man/Makefile.am b/navit/tools/gpx2navit_txt/man/Makefile.am new file mode 100644 index 000000000..71f0f055d --- /dev/null +++ b/navit/tools/gpx2navit_txt/man/Makefile.am @@ -0,0 +1,2 @@ +man_MANS = gpx2navit_txt.1 +EXTRA_DIST = $(man_MANS) diff --git a/navit/tools/gpx2navit_txt/man/gpx2navit_txt.1 b/navit/tools/gpx2navit_txt/man/gpx2navit_txt.1 new file mode 100644 index 000000000..26edd281f --- /dev/null +++ b/navit/tools/gpx2navit_txt/man/gpx2navit_txt.1 @@ -0,0 +1,103 @@ +.\" +.TH "gpx2navit_txt" "1" "0.1" "bodenseepingu" "" +.SH "NAME" +gpx2navit_txt \- Convert GPX files to navit txt files +.SH "SYNOPSIS" +gpx2navit_txt [options] [\-o output file] gpxfile +.SH "DESCRIPTION" +gpx2navit_txt is a converter from GPX file to navit txt file +The original gpx2shp was used for that program. +This is a output of Metro Manila Transit Map Project by JOCV (Japan Overseas Cooperation Volunteers) program of JICA (Japan International Cooperation Agency) in 2004. It is provided you on GPL2. +.SH "OPTIONS" +.TP +.B \-o, \-\-output +Sets output basename. The default is (source file name) \- (extention name) +.TP +.B \-w, \-\-waypoints +Converts only waypoints data from a gpx file. +.TP +.B \-t, \-\-trackpoints +Converts only trackpoints data from a gpx file. +.TP +.B \-r, \-\-routes +Converts only routes data from a gpx file. +.TP +.B \-a, \-\-all +Converts all types of data from a gpx file.(default) +.TP +.B \-e, \-\-as\-edge +Makes a separated output by each edges. +.TP +.B \-p, \-\-as\-point +Makes a separated output by each points. +.TP +.B \-s, \-\-stats +Shows simple statistics of the outputs. +.TP +.B \-b, \-\-basic\-columns +Stores only basic data as attribures to reduce memory and storage usage. (ele, name, cmt, type, time, fix, sym and number). +.TP +.B \-L, \-\-no\-length +Removes length column from a waypoint or trackpoint attribute table. +.TP +.B \-S, \-\-no\-speed +Removes speed column from a waypoint or trackpoint attribute table. +.TP +.B \-T, \-\-no\-time +Removes time column from an attribute table. +.TP +.B \-g, \-\-gpxline +Adds line number of GPX file as attribures. +.TP +.B \-f, \-\-fast +Make it faster without any checks. +.TP +.B \-3, \-\-3d +Converts data using 3d format. (It's not compatible for Arcview 3.x.) +.TP +.B \-\-min\-points +Sets path minimum points to convert for noise reduction. Default is 2. +.TP +.B \-\-min\-length +Sets path minimum length to convert for noise reduction. Default is 0. +.TP +.B \-\-min\-time +Sets path minimum time period to convert for noise reduction. Default is 0. +.TP +.B \-\-length\-unit +Sets length unit from m,km,feet,mi and etc. The default is m. You can see the unit list from "geod \-lu" command. +.TP +.B \-\-time\-unit +Sets time unit. The default is sec. You can set from day, hour, min and sec. +.TP +.B \-\-speed\-length\-unit +Sets length unit for speed. The default is km. You can see the unit list from "geod \-lu" command. +.TP +.B \-\-speed\-time\-unit +Sets time unit for speed calulation. Default is hour. You can set from day, hour, min and sec. +.TP +.B \-\-length\-ellipsoid +Sets length ellipsoid like UGS84, clrk66. The default is UGS84. You can see the unit list from "geod \-le" command. +.TP +.B \-v, \-\-verbose +Gives many messages. +.TP +.B \-\-version +Shows version. +.TP +.B \-h, \-\-help +Shows this list. +.SH "AUTHORS" +Toshihiro Hiraoka +.br +Petter Reinholdtsen + +.SH "BUGS or OPINIONS" +Please e\-mail your bugs or opinions to +.br +washitoshi at yahoo.co.jp + +.SH "SEE ALSO" +gpx2shp / gps2shp homepage +.br +http://gpx2shp.sourceforge.jp diff --git a/navit/tools/gpx2navit_txt/missing b/navit/tools/gpx2navit_txt/missing new file mode 100755 index 000000000..6a37006e8 --- /dev/null +++ b/navit/tools/gpx2navit_txt/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/navit/tools/gpx2navit_txt/mkinstalldirs b/navit/tools/gpx2navit_txt/mkinstalldirs new file mode 100755 index 000000000..8ab885ec9 --- /dev/null +++ b/navit/tools/gpx2navit_txt/mkinstalldirs @@ -0,0 +1,99 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman <friedman@prep.ai.mit.edu> +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) # -h for help + echo "${usage}" 1>&2; exit 0 ;; + -m ) # -m PERM arg + shift + test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } + dirmode="${1}" + shift ;; + -- ) shift; break ;; # stop option processing + -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option + * ) break ;; # first non-opt arg + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in +0) exit 0 ;; +esac + +case $dirmode in +'') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi ;; +*) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 3 +# End: +# mkinstalldirs ends here diff --git a/navit/tools/gpx2navit_txt/pinatest2.gpx b/navit/tools/gpx2navit_txt/pinatest2.gpx new file mode 100644 index 000000000..3d99f4064 --- /dev/null +++ b/navit/tools/gpx2navit_txt/pinatest2.gpx @@ -0,0 +1,4790 @@ +<?xml version="1.0"?> +<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="Toshihiro Hiraoka" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"> + <metadata> +<name>Manila to Mt. Pinatubo</name> +<copyright>Toshihiro Hiraoka</copyright> +<author>Toshihiro Hiraoka</author> +<keyword>Manila Mt. Pinatubo gpx2shp</keyword> +<link>http://gpx2shp.sourceforge.jp</link> +<description>This is test data for gpx2shp.</description> + <time>2004-12-29T08:23:55Z</time> + </metadata> +<trk> +<name>07-SEP-04</name> +<number>1</number> +<trkseg> +<trkpt lat="14.585381" lon="121.056118"> +<ele>42.916016</ele> +<time>2004-09-06T15:35:56Z</time> +</trkpt> +<trkpt lat="14.595809" lon="121.059465"> +<ele>48.203369</ele> +<time>2004-09-06T15:37:14Z</time> +</trkpt> +<trkpt lat="14.598942" lon="121.059852"> +<ele>49.645264</ele> +<time>2004-09-06T15:37:39Z</time> +</trkpt> +<trkpt lat="14.602568" lon="121.058972"> +<ele>51.567871</ele> +<time>2004-09-06T15:38:06Z</time> +</trkpt> +<trkpt lat="14.604285" lon="121.058199"> +<ele>48.683960</ele> +<time>2004-09-06T15:38:21Z</time> +</trkpt> +<trkpt lat="14.606109" lon="121.057341"> +<ele>51.087158</ele> +<time>2004-09-06T15:38:38Z</time> +</trkpt> +<trkpt lat="14.608727" lon="121.056161"> +<ele>46.280640</ele> +<time>2004-09-06T15:39:01Z</time> +</trkpt> +<trkpt lat="14.610808" lon="121.055152"> +<ele>52.529175</ele> +<time>2004-09-06T15:39:18Z</time> +</trkpt> +<trkpt lat="14.630678" lon="121.046162"> +<ele>39.551270</ele> +<time>2004-09-06T15:42:59Z</time> +</trkpt> +<trkpt lat="14.632244" lon="121.045668"> +<ele>47.241821</ele> +<time>2004-09-06T15:43:45Z</time> +</trkpt> +<trkpt lat="14.632373" lon="121.046140"> +<ele>46.280640</ele> +<time>2004-09-06T15:43:53Z</time> +</trkpt> +<trkpt lat="14.633574" lon="121.046312"> +<ele>48.683960</ele> +<time>2004-09-06T15:44:40Z</time> +</trkpt> +<trkpt lat="14.637222" lon="121.042707"> +<ele>69.352295</ele> +<time>2004-09-07T06:03:25Z</time> +</trkpt> +<trkpt lat="14.637179" lon="121.042664"> +<ele>54.451782</ele> +<time>2004-09-07T06:05:36Z</time> +</trkpt> +<trkpt lat="14.637437" lon="121.042578"> +<ele>53.009766</ele> +<time>2004-09-07T06:05:57Z</time> +</trkpt> +<trkpt lat="14.637587" lon="121.042728"> +<ele>52.529175</ele> +<time>2004-09-07T06:06:14Z</time> +</trkpt> +<trkpt lat="14.638424" lon="121.044037"> +<ele>52.048584</ele> +<time>2004-09-07T06:08:18Z</time> +</trkpt> +<trkpt lat="14.638982" lon="121.044188"> +<ele>50.125977</ele> +<time>2004-09-07T06:09:31Z</time> +</trkpt> +<trkpt lat="14.640076" lon="121.043093"> +<ele>48.203369</ele> +<time>2004-09-07T06:10:47Z</time> +</trkpt> +<trkpt lat="14.640591" lon="121.043158"> +<ele>49.645264</ele> +<time>2004-09-07T06:12:27Z</time> +</trkpt> +<trkpt lat="14.639797" lon="121.043286"> +<ele>48.683960</ele> +<time>2004-09-07T06:16:48Z</time> +</trkpt> +<trkpt lat="14.639003" lon="121.043801"> +<ele>50.606567</ele> +<time>2004-09-07T06:18:13Z</time> +</trkpt> +<trkpt lat="14.638467" lon="121.043994"> +<ele>48.683960</ele> +<time>2004-09-07T06:19:05Z</time> +</trkpt> +<trkpt lat="14.637415" lon="121.042600"> +<ele>52.529175</ele> +<time>2004-09-07T06:21:33Z</time> +</trkpt> +<trkpt lat="14.636300" lon="121.043329"> +<ele>53.490479</ele> +<time>2004-09-07T06:23:19Z</time> +</trkpt> +<trkpt lat="14.633617" lon="121.046076"> +<ele>48.203369</ele> +<time>2004-09-07T09:36:53Z</time> +</trkpt> +<trkpt lat="14.633617" lon="121.046526"> +<ele>49.645264</ele> +<time>2004-09-07T09:37:26Z</time> +</trkpt> +<trkpt lat="14.634218" lon="121.046612"> +<ele>50.125977</ele> +<time>2004-09-07T09:38:15Z</time> +</trkpt> +<trkpt lat="14.634390" lon="121.045625"> +<ele>47.241821</ele> +<time>2004-09-07T09:39:43Z</time> +</trkpt> +<trkpt lat="14.633360" lon="121.045196"> +<ele>44.838623</ele> +<time>2004-09-07T09:41:07Z</time> +</trkpt> +<trkpt lat="14.632695" lon="121.044123"> +<ele>47.241821</ele> +<time>2004-09-07T09:43:22Z</time> +</trkpt> +<trkpt lat="14.624047" lon="121.049724"> +<ele>34.264160</ele> +<time>2004-09-07T12:47:09Z</time> +</trkpt> +<trkpt lat="14.623339" lon="121.049616"> +<ele>25.131714</ele> +<time>2004-09-07T12:51:01Z</time> +</trkpt> +<trkpt lat="14.629004" lon="121.047277"> +<ele>25.131714</ele> +<time>2004-09-07T12:51:05Z</time> +</trkpt> +<trkpt lat="14.629219" lon="121.046762"> +<ele>25.612305</ele> +<time>2004-09-07T12:51:13Z</time> +</trkpt> +<trkpt lat="14.632995" lon="121.045239"> +<ele>39.551270</ele> +<time>2004-09-07T12:51:52Z</time> +</trkpt> +<trkpt lat="14.636257" lon="121.043308"> +<ele>34.264160</ele> +<time>2004-09-07T12:52:26Z</time> +</trkpt> +<trkpt lat="14.645784" lon="121.036763"> +<ele>34.264160</ele> +<time>2004-09-07T12:54:07Z</time> +</trkpt> +<trkpt lat="14.651492" lon="121.033201"> +<ele>28.015503</ele> +<time>2004-09-07T12:55:29Z</time> +</trkpt> +<trkpt lat="14.651191" lon="121.033094"> +<ele>28.496216</ele> +<time>2004-09-07T12:56:22Z</time> +</trkpt> +<trkpt lat="14.655526" lon="121.030240"> +<ele>26.092896</ele> +<time>2004-09-07T12:59:59Z</time> +</trkpt> +<trkpt lat="14.656255" lon="121.028244"> +<ele>25.612305</ele> +<time>2004-09-07T13:01:05Z</time> +</trkpt> +<trkpt lat="14.656920" lon="121.028695"> +<ele>26.573608</ele> +<time>2004-09-07T13:01:27Z</time> +</trkpt> +<trkpt lat="14.656448" lon="121.027966"> +<ele>26.573608</ele> +<time>2004-09-07T13:06:14Z</time> +</trkpt> +<trkpt lat="14.656942" lon="121.025476"> +<ele>24.170288</ele> +<time>2004-09-07T13:06:59Z</time> +</trkpt> +<trkpt lat="14.657843" lon="121.020477"> +<ele>15.037720</ele> +<time>2004-09-07T13:09:56Z</time> +</trkpt> +<trkpt lat="14.658144" lon="121.020391"> +<ele>15.518433</ele> +<time>2004-09-07T13:10:00Z</time> +</trkpt> +<trkpt lat="14.657779" lon="121.020477"> +<ele>15.999023</ele> +<time>2004-09-07T13:10:22Z</time> +</trkpt> +<trkpt lat="14.657822" lon="121.019275"> +<ele>9.269897</ele> +<time>2004-09-07T13:12:39Z</time> +</trkpt> +<trkpt lat="14.657586" lon="121.009920"> +<ele>17.441162</ele> +<time>2004-09-07T13:14:54Z</time> +</trkpt> +<trkpt lat="14.657156" lon="120.984557"> +<ele>13.595825</ele> +<time>2004-09-07T13:18:26Z</time> +</trkpt> +<trkpt lat="14.657350" lon="120.983698"> +<ele>13.115112</ele> +<time>2004-09-07T13:18:44Z</time> +</trkpt> +<trkpt lat="14.655440" lon="120.984449"> +<ele>13.595825</ele> +<time>2004-09-07T13:19:43Z</time> +</trkpt> +<trkpt lat="14.655933" lon="120.983613"> +<ele>15.518433</ele> +<time>2004-09-07T13:31:26Z</time> +</trkpt> +<trkpt lat="14.655633" lon="120.983505"> +<ele>13.115112</ele> +<time>2004-09-07T13:31:56Z</time> +</trkpt> +<trkpt lat="14.655633" lon="120.983484"> +<ele>5.905273</ele> +<time>2004-09-07T13:32:07Z</time> +</trkpt> +<trkpt lat="14.655912" lon="120.983698"> +<ele>6.385864</ele> +<time>2004-09-07T13:35:30Z</time> +</trkpt> +<trkpt lat="14.655762" lon="120.983140"> +<ele>8.308594</ele> +<time>2004-09-07T13:38:04Z</time> +</trkpt> +<trkpt lat="14.655590" lon="120.981896"> +<ele>5.424561</ele> +<time>2004-09-07T13:39:07Z</time> +</trkpt> +<trkpt lat="14.656706" lon="120.981231"> +<ele>4.943848</ele> +<time>2004-09-07T13:39:08Z</time> +</trkpt> +<trkpt lat="14.657135" lon="120.982304"> +<ele>11.192505</ele> +<time>2004-09-07T13:39:24Z</time> +</trkpt> +<trkpt lat="14.657028" lon="120.983655"> +<ele>12.634399</ele> +<time>2004-09-07T13:39:50Z</time> +</trkpt> +<trkpt lat="14.656749" lon="120.984600"> +<ele>11.673218</ele> +<time>2004-09-07T13:40:21Z</time> +</trkpt> +<trkpt lat="14.657006" lon="120.989149"> +<ele>15.999023</ele> +<time>2004-09-07T13:41:24Z</time> +</trkpt> +<trkpt lat="14.657071" lon="120.990865"> +<ele>12.153809</ele> +<time>2004-09-07T13:41:47Z</time> +</trkpt> +<trkpt lat="14.657114" lon="120.993268"> +<ele>21.286377</ele> +<time>2004-09-07T13:42:04Z</time> +</trkpt> +<trkpt lat="14.657199" lon="120.999985"> +<ele>17.441162</ele> +<time>2004-09-07T13:43:09Z</time> +</trkpt> +<trkpt lat="14.657092" lon="121.000950"> +<ele>15.518433</ele> +<time>2004-09-07T13:43:24Z</time> +</trkpt> +<trkpt lat="14.656620" lon="121.000907"> +<ele>14.557007</ele> +<time>2004-09-07T13:43:32Z</time> +</trkpt> +<trkpt lat="14.656234" lon="121.000628"> +<ele>12.634399</ele> +<time>2004-09-07T13:43:43Z</time> +</trkpt> +<trkpt lat="14.656298" lon="121.000242"> +<ele>13.115112</ele> +<time>2004-09-07T13:44:05Z</time> +</trkpt> +<trkpt lat="14.657629" lon="121.000350"> +<ele>11.192505</ele> +<time>2004-09-07T13:44:42Z</time> +</trkpt> +<trkpt lat="14.666641" lon="121.000328"> +<ele>22.247559</ele> +<time>2004-09-07T13:48:40Z</time> +</trkpt> +<trkpt lat="14.667950" lon="121.000371"> +<ele>20.324951</ele> +<time>2004-09-07T13:48:56Z</time> +</trkpt> +<trkpt lat="14.671898" lon="121.000693"> +<ele>27.534912</ele> +<time>2004-09-07T13:52:48Z</time> +</trkpt> +<trkpt lat="14.678614" lon="121.000371"> +<ele>11.673218</ele> +<time>2004-09-07T13:54:13Z</time> +</trkpt> +<trkpt lat="14.687476" lon="121.000907"> +<ele>10.711792</ele> +<time>2004-09-07T13:55:15Z</time> +</trkpt> +<trkpt lat="14.689107" lon="121.000950"> +<ele>17.921753</ele> +<time>2004-09-07T13:55:34Z</time> +</trkpt> +<trkpt lat="14.694450" lon="121.000178"> +<ele>15.037720</ele> +<time>2004-09-07T13:56:30Z</time> +</trkpt> +<trkpt lat="14.702561" lon="120.996058"> +<ele>18.883057</ele> +<time>2004-09-07T13:57:48Z</time> +</trkpt> +<trkpt lat="14.708569" lon="120.992861"> +<ele>10.231201</ele> +<time>2004-09-07T13:58:45Z</time> +</trkpt> +<trkpt lat="14.716787" lon="120.988290"> +<ele>24.170288</ele> +<time>2004-09-07T13:59:54Z</time> +</trkpt> +<trkpt lat="14.719920" lon="120.986595"> +<ele>12.153809</ele> +<time>2004-09-07T14:00:19Z</time> +</trkpt> +<trkpt lat="14.722559" lon="120.985200"> +<ele>14.557007</ele> +<time>2004-09-07T14:00:40Z</time> +</trkpt> +<trkpt lat="14.726958" lon="120.982926"> +<ele>14.076416</ele> +<time>2004-09-07T14:01:07Z</time> +</trkpt> +<trkpt lat="14.730091" lon="120.981209"> +<ele>11.192505</ele> +<time>2004-09-07T14:01:27Z</time> +</trkpt> +<trkpt lat="14.749510" lon="120.970716"> +<ele>22.728271</ele> +<time>2004-09-07T14:03:10Z</time> +</trkpt> +<trkpt lat="14.754295" lon="120.968163"> +<ele>10.711792</ele> +<time>2004-09-07T14:03:36Z</time> +</trkpt> +<trkpt lat="14.762986" lon="120.963421"> +<ele>22.247559</ele> +<time>2004-09-07T14:04:31Z</time> +</trkpt> +<trkpt lat="14.771633" lon="120.958786"> +<ele>10.711792</ele> +<time>2004-09-07T14:05:15Z</time> +</trkpt> +<trkpt lat="14.787319" lon="120.950353"> +<ele>22.247559</ele> +<time>2004-09-07T14:06:46Z</time> +</trkpt> +<trkpt lat="14.797447" lon="120.944839"> +<ele>10.231201</ele> +<time>2004-09-07T14:07:39Z</time> +</trkpt> +<trkpt lat="14.799614" lon="120.943723"> +<ele>8.308594</ele> +<time>2004-09-07T14:07:52Z</time> +</trkpt> +<trkpt lat="14.802597" lon="120.943186"> +<ele>8.308594</ele> +<time>2004-09-07T14:08:12Z</time> +</trkpt> +<trkpt lat="14.803669" lon="120.942543"> +<ele>9.750610</ele> +<time>2004-09-07T14:08:20Z</time> +</trkpt> +<trkpt lat="14.805365" lon="120.940611"> +<ele>9.269897</ele> +<time>2004-09-07T14:08:36Z</time> +</trkpt> +<trkpt lat="14.808626" lon="120.938745"> +<ele>13.595825</ele> +<time>2004-09-07T14:08:56Z</time> +</trkpt> +<trkpt lat="14.815836" lon="120.934582"> +<ele>7.827881</ele> +<time>2004-09-07T14:09:39Z</time> +</trkpt> +<trkpt lat="14.817102" lon="120.933187"> +<ele>7.827881</ele> +<time>2004-09-07T14:09:51Z</time> +</trkpt> +<trkpt lat="14.818990" lon="120.929883"> +<ele>7.347168</ele> +<time>2004-09-07T14:10:14Z</time> +</trkpt> +<trkpt lat="14.826264" lon="120.916150"> +<ele>14.076416</ele> +<time>2004-09-07T14:11:29Z</time> +</trkpt> +<trkpt lat="14.831479" lon="120.906429"> +<ele>7.827881</ele> +<time>2004-09-07T14:12:22Z</time> +</trkpt> +<trkpt lat="14.833839" lon="120.902760"> +<ele>10.711792</ele> +<time>2004-09-07T14:12:51Z</time> +</trkpt> +<trkpt lat="14.833324" lon="120.899284"> +<ele>15.037720</ele> +<time>2004-09-07T14:13:15Z</time> +</trkpt> +<trkpt lat="14.833410" lon="120.889478"> +<ele>16.479736</ele> +<time>2004-09-07T14:14:01Z</time> +</trkpt> +<trkpt lat="14.836650" lon="120.872955"> +<ele>17.441162</ele> +<time>2004-09-07T14:15:13Z</time> +</trkpt> +<trkpt lat="14.837337" lon="120.867591"> +<ele>9.269897</ele> +<time>2004-09-07T14:18:15Z</time> +</trkpt> +<trkpt lat="14.837852" lon="120.866561"> +<ele>8.308594</ele> +<time>2004-09-07T14:18:38Z</time> +</trkpt> +<trkpt lat="14.839118" lon="120.860767"> +<ele>9.269897</ele> +<time>2004-09-07T14:20:34Z</time> +</trkpt> +<trkpt lat="14.839053" lon="120.860360"> +<ele>9.269897</ele> +<time>2004-09-07T14:21:15Z</time> +</trkpt> +<trkpt lat="14.838860" lon="120.860660"> +<ele>10.231201</ele> +<time>2004-09-07T14:21:30Z</time> +</trkpt> +<trkpt lat="14.838710" lon="120.861325"> +<ele>9.269897</ele> +<time>2004-09-07T14:21:42Z</time> +</trkpt> +<trkpt lat="14.837701" lon="120.861926"> +<ele>12.153809</ele> +<time>2004-09-07T14:22:02Z</time> +</trkpt> +<trkpt lat="14.837379" lon="120.862892"> +<ele>13.115112</ele> +<time>2004-09-07T14:22:36Z</time> +</trkpt> +<trkpt lat="14.838173" lon="120.862656"> +<ele>16.479736</ele> +<time>2004-09-07T14:23:19Z</time> +</trkpt> +<trkpt lat="14.845898" lon="120.859780"> +<ele>8.308594</ele> +<time>2004-09-07T14:25:33Z</time> +</trkpt> +<trkpt lat="14.847894" lon="120.859609"> +<ele>13.115112</ele> +<time>2004-09-07T14:26:00Z</time> +</trkpt> +<trkpt lat="14.853001" lon="120.860939"> +<ele>15.037720</ele> +<time>2004-09-07T14:26:40Z</time> +</trkpt> +<trkpt lat="14.853837" lon="120.861003"> +<ele>9.750610</ele> +<time>2004-09-07T14:26:52Z</time> +</trkpt> +<trkpt lat="14.856155" lon="120.859973"> +<ele>14.557007</ele> +<time>2004-09-07T14:27:36Z</time> +</trkpt> +<trkpt lat="14.860318" lon="120.858858"> +<ele>10.231201</ele> +<time>2004-09-07T14:28:17Z</time> +</trkpt> +<trkpt lat="14.861755" lon="120.858729"> +<ele>17.921753</ele> +<time>2004-09-07T14:28:38Z</time> +</trkpt> +<trkpt lat="14.863901" lon="120.859437"> +<ele>8.789185</ele> +<time>2004-09-07T14:29:22Z</time> +</trkpt> +<trkpt lat="14.862356" lon="120.859716"> +<ele>12.153809</ele> +<time>2004-09-07T14:30:04Z</time> +</trkpt> +<trkpt lat="14.864266" lon="120.856261"> +<ele>18.402344</ele> +<time>2004-09-07T14:30:35Z</time> +</trkpt> +<trkpt lat="14.867806" lon="120.851369"> +<ele>21.286377</ele> +<time>2004-09-07T14:31:06Z</time> +</trkpt> +<trkpt lat="14.872677" lon="120.845790"> +<ele>20.324951</ele> +<time>2004-09-07T14:31:39Z</time> +</trkpt> +<trkpt lat="14.878299" lon="120.840554"> +<ele>19.844360</ele> +<time>2004-09-07T14:32:16Z</time> +</trkpt> +<trkpt lat="14.880359" lon="120.838838"> +<ele>25.131714</ele> +<time>2004-09-07T14:32:28Z</time> +</trkpt> +<trkpt lat="14.888406" lon="120.832958"> +<ele>19.844360</ele> +<time>2004-09-07T14:33:14Z</time> +</trkpt> +<trkpt lat="14.894006" lon="120.829332"> +<ele>22.728271</ele> +<time>2004-09-07T14:33:46Z</time> +</trkpt> +<trkpt lat="14.902847" lon="120.822079"> +<ele>23.689575</ele> +<time>2004-09-07T14:34:36Z</time> +</trkpt> +<trkpt lat="14.906366" lon="120.818989"> +<ele>15.999023</ele> +<time>2004-09-07T14:35:03Z</time> +</trkpt> +<trkpt lat="14.908404" lon="120.818152"> +<ele>9.269897</ele> +<time>2004-09-07T14:36:31Z</time> +</trkpt> +<trkpt lat="14.904649" lon="120.776439"> +<ele>13.115112</ele> +<time>2004-09-07T14:45:12Z</time> +</trkpt> +<trkpt lat="14.905465" lon="120.773413"> +<ele>9.269897</ele> +<time>2004-09-07T14:46:20Z</time> +</trkpt> +<trkpt lat="14.907653" lon="120.767405"> +<ele>13.115112</ele> +<time>2004-09-07T14:47:30Z</time> +</trkpt> +<trkpt lat="14.908297" lon="120.766890"> +<ele>10.711792</ele> +<time>2004-09-07T14:47:48Z</time> +</trkpt> +<trkpt lat="14.909606" lon="120.766697"> +<ele>14.076416</ele> +<time>2004-09-07T14:48:16Z</time> +</trkpt> +<trkpt lat="14.911773" lon="120.766611"> +<ele>8.789185</ele> +<time>2004-09-07T14:49:01Z</time> +</trkpt> +<trkpt lat="14.920807" lon="120.765774"> +<ele>12.153809</ele> +<time>2004-09-07T14:51:39Z</time> +</trkpt> +<trkpt lat="14.928145" lon="120.764079"> +<ele>18.883057</ele> +<time>2004-09-07T14:52:47Z</time> +</trkpt> +<trkpt lat="14.932373" lon="120.762062"> +<ele>16.960449</ele> +<time>2004-09-07T14:53:18Z</time> +</trkpt> +<trkpt lat="14.934025" lon="120.760860"> +<ele>16.960449</ele> +<time>2004-09-07T14:53:35Z</time> +</trkpt> +<trkpt lat="14.934497" lon="120.759938"> +<ele>15.037720</ele> +<time>2004-09-07T14:53:48Z</time> +</trkpt> +<trkpt lat="14.935355" lon="120.758286"> +<ele>16.479736</ele> +<time>2004-09-07T14:54:24Z</time> +</trkpt> +<trkpt lat="14.935892" lon="120.757234"> +<ele>13.595825</ele> +<time>2004-09-07T14:55:05Z</time> +</trkpt> +<trkpt lat="14.936578" lon="120.756419"> +<ele>16.960449</ele> +<time>2004-09-07T14:55:34Z</time> +</trkpt> +<trkpt lat="14.938166" lon="120.755861"> +<ele>17.441162</ele> +<time>2004-09-07T14:55:49Z</time> +</trkpt> +<trkpt lat="14.948165" lon="120.758972"> +<ele>13.595825</ele> +<time>2004-09-07T14:57:10Z</time> +</trkpt> +<trkpt lat="14.949260" lon="120.758865"> +<ele>10.711792</ele> +<time>2004-09-07T14:57:25Z</time> +</trkpt> +<trkpt lat="14.965503" lon="120.757878"> +<ele>19.363770</ele> +<time>2004-09-07T15:00:36Z</time> +</trkpt> +<trkpt lat="14.969988" lon="120.757577"> +<ele>15.037720</ele> +<time>2004-09-07T15:01:05Z</time> +</trkpt> +<trkpt lat="14.972456" lon="120.756633"> +<ele>15.518433</ele> +<time>2004-09-07T15:01:24Z</time> +</trkpt> +<trkpt lat="14.972885" lon="120.756462"> +<ele>13.595825</ele> +<time>2004-09-07T15:01:28Z</time> +</trkpt> +<trkpt lat="14.977026" lon="120.754616"> +<ele>17.921753</ele> +<time>2004-09-07T15:02:06Z</time> +</trkpt> +<trkpt lat="14.978828" lon="120.753822"> +<ele>10.231201</ele> +<time>2004-09-07T15:02:30Z</time> +</trkpt> +<trkpt lat="14.984064" lon="120.751483"> +<ele>13.595825</ele> +<time>2004-09-07T15:03:45Z</time> +</trkpt> +<trkpt lat="14.985566" lon="120.750132"> +<ele>15.999023</ele> +<time>2004-09-07T15:04:00Z</time> +</trkpt> +<trkpt lat="14.987884" lon="120.747600"> +<ele>12.634399</ele> +<time>2004-09-07T15:04:54Z</time> +</trkpt> +<trkpt lat="14.988506" lon="120.748243"> +<ele>13.115112</ele> +<time>2004-09-07T15:05:16Z</time> +</trkpt> +<trkpt lat="14.989879" lon="120.749488"> +<ele>20.805664</ele> +<time>2004-09-07T15:05:43Z</time> +</trkpt> +<trkpt lat="14.990823" lon="120.750260"> +<ele>17.921753</ele> +<time>2004-09-07T15:06:02Z</time> +</trkpt> +<trkpt lat="14.991982" lon="120.749295"> +<ele>14.076416</ele> +<time>2004-09-07T15:06:36Z</time> +</trkpt> +<trkpt lat="15.002947" lon="120.742192"> +<ele>31.380127</ele> +<time>2004-09-07T15:07:54Z</time> +</trkpt> +<trkpt lat="15.010028" lon="120.736871"> +<ele>29.457520</ele> +<time>2004-09-07T15:08:36Z</time> +</trkpt> +<trkpt lat="15.016336" lon="120.731528"> +<ele>30.899536</ele> +<time>2004-09-07T15:09:11Z</time> +</trkpt> +<trkpt lat="15.020499" lon="120.727558"> +<ele>31.380127</ele> +<time>2004-09-07T15:09:34Z</time> +</trkpt> +<trkpt lat="15.027838" lon="120.719898"> +<ele>25.131714</ele> +<time>2004-09-07T15:10:29Z</time> +</trkpt> +<trkpt lat="15.039017" lon="120.705822"> +<ele>34.264160</ele> +<time>2004-09-07T15:11:42Z</time> +</trkpt> +<trkpt lat="15.046914" lon="120.697410"> +<ele>27.054321</ele> +<time>2004-09-07T15:12:27Z</time> +</trkpt> +<trkpt lat="15.049381" lon="120.695136"> +<ele>20.324951</ele> +<time>2004-09-07T15:12:44Z</time> +</trkpt> +<trkpt lat="15.051098" lon="120.693870"> +<ele>16.960449</ele> +<time>2004-09-07T15:13:03Z</time> +</trkpt> +<trkpt lat="15.051613" lon="120.693891"> +<ele>18.402344</ele> +<time>2004-09-07T15:13:09Z</time> +</trkpt> +<trkpt lat="15.051506" lon="120.695093"> +<ele>15.518433</ele> +<time>2004-09-07T15:13:28Z</time> +</trkpt> +<trkpt lat="15.050840" lon="120.695887"> +<ele>14.557007</ele> +<time>2004-09-07T15:14:27Z</time> +</trkpt> +<trkpt lat="15.050454" lon="120.695908"> +<ele>15.999023</ele> +<time>2004-09-07T15:14:55Z</time> +</trkpt> +<trkpt lat="15.049403" lon="120.694900"> +<ele>22.728271</ele> +<time>2004-09-07T15:15:33Z</time> +</trkpt> +<trkpt lat="15.046442" lon="120.691445"> +<ele>22.247559</ele> +<time>2004-09-07T15:16:50Z</time> +</trkpt> +<trkpt lat="15.042257" lon="120.684750"> +<ele>25.131714</ele> +<time>2004-09-07T15:17:38Z</time> +</trkpt> +<trkpt lat="15.040562" lon="120.682325"> +<ele>15.999023</ele> +<time>2004-09-07T15:18:05Z</time> +</trkpt> +<trkpt lat="15.039082" lon="120.680845"> +<ele>23.689575</ele> +<time>2004-09-07T15:19:25Z</time> +</trkpt> +<trkpt lat="15.038245" lon="120.680051"> +<ele>17.921753</ele> +<time>2004-09-07T15:19:40Z</time> +</trkpt> +<trkpt lat="15.038095" lon="120.679793"> +<ele>17.921753</ele> +<time>2004-09-07T15:21:17Z</time> +</trkpt> +<trkpt lat="15.036163" lon="120.678570"> +<ele>26.092896</ele> +<time>2004-09-07T15:21:44Z</time> +</trkpt> +<trkpt lat="15.027580" lon="120.673742"> +<ele>21.286377</ele> +<time>2004-09-07T15:23:02Z</time> +</trkpt> +<trkpt lat="15.024319" lon="120.671489"> +<ele>19.363770</ele> +<time>2004-09-07T15:23:41Z</time> +</trkpt> +<trkpt lat="15.020478" lon="120.668035"> +<ele>28.015503</ele> +<time>2004-09-07T15:24:55Z</time> +</trkpt> +<trkpt lat="15.018547" lon="120.665781"> +<ele>31.380127</ele> +<time>2004-09-07T15:25:11Z</time> +</trkpt> +<trkpt lat="15.014706" lon="120.660696"> +<ele>24.170288</ele> +<time>2004-09-07T15:25:53Z</time> +</trkpt> +<trkpt lat="15.011380" lon="120.656211"> +<ele>35.706055</ele> +<time>2004-09-07T15:26:34Z</time> +</trkpt> +<trkpt lat="14.997926" lon="120.639024"> +<ele>30.899536</ele> +<time>2004-09-07T15:28:46Z</time> +</trkpt> +<trkpt lat="14.993334" lon="120.633316"> +<ele>18.402344</ele> +<time>2004-09-07T15:29:47Z</time> +</trkpt> +<trkpt lat="14.988334" lon="120.627201"> +<ele>25.612305</ele> +<time>2004-09-07T15:30:58Z</time> +</trkpt> +<trkpt lat="14.986897" lon="120.625398"> +<ele>13.595825</ele> +<time>2004-09-07T15:31:23Z</time> +</trkpt> +<trkpt lat="14.984944" lon="120.623016"> +<ele>16.960449</ele> +<time>2004-09-07T15:31:58Z</time> +</trkpt> +<trkpt lat="14.984772" lon="120.622716"> +<ele>15.999023</ele> +<time>2004-09-07T15:33:17Z</time> +</trkpt> +<trkpt lat="14.983528" lon="120.623167"> +<ele>15.037720</ele> +<time>2004-09-07T15:33:57Z</time> +</trkpt> +<trkpt lat="14.976103" lon="120.627544"> +<ele>20.324951</ele> +<time>2004-09-07T15:35:09Z</time> +</trkpt> +<trkpt lat="14.968400" lon="120.632050"> +<ele>16.960449</ele> +<time>2004-09-07T15:36:48Z</time> +</trkpt> +<trkpt lat="14.968143" lon="120.632329"> +<ele>14.557007</ele> +<time>2004-09-07T15:37:01Z</time> +</trkpt> +<trkpt lat="14.970181" lon="120.634131"> +<ele>14.076416</ele> +<time>2004-09-07T15:37:42Z</time> +</trkpt> +<trkpt lat="14.969666" lon="120.634646"> +<ele>15.037720</ele> +<time>2004-09-07T15:37:59Z</time> +</trkpt> +<trkpt lat="14.966791" lon="120.632479"> +<ele>15.037720</ele> +<time>2004-09-07T15:39:05Z</time> +</trkpt> +<trkpt lat="14.966061" lon="120.633101"> +<ele>14.076416</ele> +<time>2004-09-07T15:39:20Z</time> +</trkpt> +<trkpt lat="14.965847" lon="120.632651"> +<ele>13.595825</ele> +<time>2004-09-07T15:40:09Z</time> +</trkpt> +<trkpt lat="14.964538" lon="120.630612"> +<ele>16.479736</ele> +<time>2004-09-07T15:40:37Z</time> +</trkpt> +<trkpt lat="14.964087" lon="120.629411"> +<ele>15.999023</ele> +<time>2004-09-07T15:40:50Z</time> +</trkpt> +<trkpt lat="14.964130" lon="120.628166"> +<ele>16.479736</ele> +<time>2004-09-07T15:41:05Z</time> +</trkpt> +<trkpt lat="14.965310" lon="120.624433"> +<ele>18.883057</ele> +<time>2004-09-07T15:41:37Z</time> +</trkpt> +<trkpt lat="14.966726" lon="120.622780"> +<ele>19.844360</ele> +<time>2004-09-07T15:41:53Z</time> +</trkpt> +<trkpt lat="14.968765" lon="120.620978"> +<ele>21.766968</ele> +<time>2004-09-07T15:42:11Z</time> +</trkpt> +<trkpt lat="14.969687" lon="120.620055"> +<ele>20.324951</ele> +<time>2004-09-07T15:42:20Z</time> +</trkpt> +<trkpt lat="14.970138" lon="120.618939"> +<ele>17.921753</ele> +<time>2004-09-07T15:42:29Z</time> +</trkpt> +<trkpt lat="14.970138" lon="120.618703"> +<ele>15.999023</ele> +<time>2004-09-07T15:42:32Z</time> +</trkpt> +<trkpt lat="14.969366" lon="120.617223"> +<ele>18.402344</ele> +<time>2004-09-07T15:42:51Z</time> +</trkpt> +<trkpt lat="14.967628" lon="120.614820"> +<ele>19.844360</ele> +<time>2004-09-07T15:43:15Z</time> +</trkpt> +<trkpt lat="14.967284" lon="120.614026"> +<ele>14.076416</ele> +<time>2004-09-07T15:43:31Z</time> +</trkpt> +<trkpt lat="14.965761" lon="120.611258"> +<ele>17.921753</ele> +<time>2004-09-07T15:45:03Z</time> +</trkpt> +<trkpt lat="14.964902" lon="120.610592"> +<ele>19.363770</ele> +<time>2004-09-07T15:45:12Z</time> +</trkpt> +<trkpt lat="14.963551" lon="120.610206"> +<ele>20.805664</ele> +<time>2004-09-07T15:45:22Z</time> +</trkpt> +<trkpt lat="14.961598" lon="120.609798"> +<ele>14.076416</ele> +<time>2004-09-07T15:45:52Z</time> +</trkpt> +<trkpt lat="14.959388" lon="120.609198"> +<ele>20.324951</ele> +<time>2004-09-07T15:46:39Z</time> +</trkpt> +<trkpt lat="14.957714" lon="120.608404"> +<ele>13.595825</ele> +<time>2004-09-07T15:47:39Z</time> +</trkpt> +<trkpt lat="14.956083" lon="120.607502"> +<ele>17.921753</ele> +<time>2004-09-07T15:48:04Z</time> +</trkpt> +<trkpt lat="14.953079" lon="120.604520"> +<ele>21.286377</ele> +<time>2004-09-07T15:48:38Z</time> +</trkpt> +<trkpt lat="14.950418" lon="120.601280"> +<ele>14.076416</ele> +<time>2004-09-07T15:49:24Z</time> +</trkpt> +<trkpt lat="14.947844" lon="120.597610"> +<ele>21.286377</ele> +<time>2004-09-07T15:50:05Z</time> +</trkpt> +<trkpt lat="14.946878" lon="120.596902"> +<ele>17.921753</ele> +<time>2004-09-07T15:50:15Z</time> +</trkpt> +<trkpt lat="14.945741" lon="120.596859"> +<ele>19.363770</ele> +<time>2004-09-07T15:50:24Z</time> +</trkpt> +<trkpt lat="14.944882" lon="120.597246"> +<ele>14.557007</ele> +<time>2004-09-07T15:50:42Z</time> +</trkpt> +<trkpt lat="14.943552" lon="120.597653"> +<ele>17.921753</ele> +<time>2004-09-07T15:51:34Z</time> +</trkpt> +<trkpt lat="14.942050" lon="120.597546"> +<ele>20.324951</ele> +<time>2004-09-07T15:51:46Z</time> +</trkpt> +<trkpt lat="14.939368" lon="120.596216"> +<ele>14.557007</ele> +<time>2004-09-07T15:52:19Z</time> +</trkpt> +<trkpt lat="14.929519" lon="120.591066"> +<ele>20.805664</ele> +<time>2004-09-07T15:54:35Z</time> +</trkpt> +<trkpt lat="14.928167" lon="120.589843"> +<ele>22.728271</ele> +<time>2004-09-07T15:54:47Z</time> +</trkpt> +<trkpt lat="14.923275" lon="120.582397"> +<ele>15.037720</ele> +<time>2004-09-07T15:56:01Z</time> +</trkpt> +<trkpt lat="14.915378" lon="120.570059"> +<ele>24.651001</ele> +<time>2004-09-07T15:59:05Z</time> +</trkpt> +<trkpt lat="14.912031" lon="120.564802"> +<ele>15.518433</ele> +<time>2004-09-07T16:00:07Z</time> +</trkpt> +<trkpt lat="14.876862" lon="120.509870"> +<ele>32.822266</ele> +<time>2004-09-07T16:07:31Z</time> +</trkpt> +<trkpt lat="14.853859" lon="120.474057"> +<ele>17.921753</ele> +<time>2004-09-07T16:11:57Z</time> +</trkpt> +<trkpt lat="14.854009" lon="120.473478"> +<ele>17.441162</ele> +<time>2004-09-07T16:12:07Z</time> +</trkpt> +<trkpt lat="14.859738" lon="120.471246"> +<ele>24.651001</ele> +<time>2004-09-07T16:12:51Z</time> +</trkpt> +<trkpt lat="14.869137" lon="120.467620"> +<ele>16.479736</ele> +<time>2004-09-07T16:14:12Z</time> +</trkpt> +<trkpt lat="14.870489" lon="120.466933"> +<ele>17.441162</ele> +<time>2004-09-07T16:14:44Z</time> +</trkpt> +<trkpt lat="14.869673" lon="120.463951"> +<ele>23.208984</ele> +<time>2004-09-07T16:15:12Z</time> +</trkpt> +<trkpt lat="14.868343" lon="120.459852"> +<ele>24.170288</ele> +<time>2004-09-07T16:15:41Z</time> +</trkpt> +<trkpt lat="14.867785" lon="120.458200"> +<ele>17.921753</ele> +<time>2004-09-07T16:16:05Z</time> +</trkpt> +<trkpt lat="14.866691" lon="120.454788"> +<ele>26.092896</ele> +<time>2004-09-07T16:16:39Z</time> +</trkpt> +<trkpt lat="14.864802" lon="120.448909"> +<ele>19.363770</ele> +<time>2004-09-07T16:17:22Z</time> +</trkpt> +<trkpt lat="14.863622" lon="120.445240"> +<ele>27.534912</ele> +<time>2004-09-07T16:17:56Z</time> +</trkpt> +<trkpt lat="14.862678" lon="120.442729"> +<ele>28.976929</ele> +<time>2004-09-07T16:18:12Z</time> +</trkpt> +<trkpt lat="14.861240" lon="120.440433"> +<ele>31.860718</ele> +<time>2004-09-07T16:18:27Z</time> +</trkpt> +<trkpt lat="14.858644" lon="120.436506"> +<ele>29.457520</ele> +<time>2004-09-07T16:18:52Z</time> +</trkpt> +<trkpt lat="14.857228" lon="120.434361"> +<ele>33.783447</ele> +<time>2004-09-07T16:19:07Z</time> +</trkpt> +<trkpt lat="14.846971" lon="120.420542"> +<ele>29.457520</ele> +<time>2004-09-07T16:20:43Z</time> +</trkpt> +<trkpt lat="14.846563" lon="120.419362"> +<ele>29.457520</ele> +<time>2004-09-07T16:20:52Z</time> +</trkpt> +<trkpt lat="14.847507" lon="120.413740"> +<ele>31.860718</ele> +<time>2004-09-07T16:21:25Z</time> +</trkpt> +<trkpt lat="14.846048" lon="120.406015"> +<ele>37.148071</ele> +<time>2004-09-07T16:22:10Z</time> +</trkpt> +<trkpt lat="14.845533" lon="120.402646"> +<ele>41.473999</ele> +<time>2004-09-07T16:22:35Z</time> +</trkpt> +<trkpt lat="14.845469" lon="120.401359"> +<ele>35.225464</ele> +<time>2004-09-07T16:22:45Z</time> +</trkpt> +<trkpt lat="14.848516" lon="120.401444"> +<ele>31.380127</ele> +<time>2004-09-07T16:22:52Z</time> +</trkpt> +<trkpt lat="14.848065" lon="120.398333"> +<ele>27.054321</ele> +<time>2004-09-07T16:23:39Z</time> +</trkpt> +<trkpt lat="14.847851" lon="120.394514"> +<ele>34.744873</ele> +<time>2004-09-07T16:24:23Z</time> +</trkpt> +<trkpt lat="14.850490" lon="120.390844"> +<ele>36.186768</ele> +<time>2004-09-07T16:24:53Z</time> +</trkpt> +<trkpt lat="14.849482" lon="120.388377"> +<ele>46.761230</ele> +<time>2004-09-07T16:25:15Z</time> +</trkpt> +<trkpt lat="14.849696" lon="120.387089"> +<ele>49.645264</ele> +<time>2004-09-07T16:25:27Z</time> +</trkpt> +<trkpt lat="14.850962" lon="120.386596"> +<ele>46.761230</ele> +<time>2004-09-07T16:25:37Z</time> +</trkpt> +<trkpt lat="14.851627" lon="120.385909"> +<ele>42.435425</ele> +<time>2004-09-07T16:25:44Z</time> +</trkpt> +<trkpt lat="14.851649" lon="120.385158"> +<ele>41.473999</ele> +<time>2004-09-07T16:25:50Z</time> +</trkpt> +<trkpt lat="14.850833" lon="120.383635"> +<ele>40.032104</ele> +<time>2004-09-07T16:26:02Z</time> +</trkpt> +<trkpt lat="14.851005" lon="120.383141"> +<ele>36.186768</ele> +<time>2004-09-07T16:26:59Z</time> +</trkpt> +<trkpt lat="14.853323" lon="120.379772"> +<ele>51.087158</ele> +<time>2004-09-07T16:27:44Z</time> +</trkpt> +<trkpt lat="14.851863" lon="120.376725"> +<ele>44.358032</ele> +<time>2004-09-07T16:28:25Z</time> +</trkpt> +<trkpt lat="14.851499" lon="120.374644"> +<ele>54.932373</ele> +<time>2004-09-07T16:29:01Z</time> +</trkpt> +<trkpt lat="14.854825" lon="120.365160"> +<ele>76.081421</ele> +<time>2004-09-07T16:30:31Z</time> +</trkpt> +<trkpt lat="14.849653" lon="120.365310"> +<ele>75.600830</ele> +<time>2004-09-07T16:30:39Z</time> +</trkpt> +<trkpt lat="14.847744" lon="120.364966"> +<ele>75.120239</ele> +<time>2004-09-07T16:30:47Z</time> +</trkpt> +<trkpt lat="14.847314" lon="120.364301"> +<ele>71.755493</ele> +<time>2004-09-07T16:30:54Z</time> +</trkpt> +<trkpt lat="14.846799" lon="120.363443"> +<ele>75.600830</ele> +<time>2004-09-07T16:31:03Z</time> +</trkpt> +<trkpt lat="14.846177" lon="120.359645"> +<ele>87.136597</ele> +<time>2004-09-07T16:31:33Z</time> +</trkpt> +<trkpt lat="14.845490" lon="120.358572"> +<ele>90.981934</ele> +<time>2004-09-07T16:31:42Z</time> +</trkpt> +<trkpt lat="14.845276" lon="120.357971"> +<ele>95.307739</ele> +<time>2004-09-07T16:31:47Z</time> +</trkpt> +<trkpt lat="14.845641" lon="120.356576"> +<ele>102.517700</ele> +<time>2004-09-07T16:31:59Z</time> +</trkpt> +<trkpt lat="14.846349" lon="120.355546"> +<ele>107.324341</ele> +<time>2004-09-07T16:32:09Z</time> +</trkpt> +<trkpt lat="14.847121" lon="120.354195"> +<ele>111.169556</ele> +<time>2004-09-07T16:32:20Z</time> +</trkpt> +<trkpt lat="14.847422" lon="120.349817"> +<ele>137.605835</ele> +<time>2004-09-07T16:32:57Z</time> +</trkpt> +<trkpt lat="14.847078" lon="120.348916"> +<ele>143.373657</ele> +<time>2004-09-07T16:33:07Z</time> +</trkpt> +<trkpt lat="14.845684" lon="120.347843"> +<ele>152.025757</ele> +<time>2004-09-07T16:33:49Z</time> +</trkpt> +<trkpt lat="14.845233" lon="120.346255"> +<ele>153.467651</ele> +<time>2004-09-07T16:34:06Z</time> +</trkpt> +<trkpt lat="14.845126" lon="120.345354"> +<ele>150.103027</ele> +<time>2004-09-07T16:34:15Z</time> +</trkpt> +<trkpt lat="14.845576" lon="120.344346"> +<ele>142.893066</ele> +<time>2004-09-07T16:34:28Z</time> +</trkpt> +<trkpt lat="14.847250" lon="120.344667"> +<ele>136.163940</ele> +<time>2004-09-07T16:34:49Z</time> +</trkpt> +<trkpt lat="14.847572" lon="120.344367"> +<ele>132.799316</ele> +<time>2004-09-07T16:34:56Z</time> +</trkpt> +<trkpt lat="14.847400" lon="120.343659"> +<ele>129.915283</ele> +<time>2004-09-07T16:35:06Z</time> +</trkpt> +<trkpt lat="14.847314" lon="120.343444"> +<ele>127.031372</ele> +<time>2004-09-07T16:35:09Z</time> +</trkpt> +<trkpt lat="14.847314" lon="120.342844"> +<ele>126.069946</ele> +<time>2004-09-07T16:35:16Z</time> +</trkpt> +<trkpt lat="14.847507" lon="120.341578"> +<ele>115.495605</ele> +<time>2004-09-07T16:35:35Z</time> +</trkpt> +<trkpt lat="14.848623" lon="120.340140"> +<ele>103.479004</ele> +<time>2004-09-07T16:36:10Z</time> +</trkpt> +<trkpt lat="14.847229" lon="120.340869"> +<ele>90.501343</ele> +<time>2004-09-07T16:36:36Z</time> +</trkpt> +<trkpt lat="14.845684" lon="120.340719"> +<ele>78.484741</ele> +<time>2004-09-07T16:36:59Z</time> +</trkpt> +<trkpt lat="14.845448" lon="120.339904"> +<ele>75.600830</ele> +<time>2004-09-07T16:37:08Z</time> +</trkpt> +<trkpt lat="14.845555" lon="120.339410"> +<ele>69.832886</ele> +<time>2004-09-07T16:37:13Z</time> +</trkpt> +<trkpt lat="14.848194" lon="120.338616"> +<ele>74.639526</ele> +<time>2004-09-07T16:37:41Z</time> +</trkpt> +<trkpt lat="14.848945" lon="120.337994"> +<ele>81.849365</ele> +<time>2004-09-07T16:37:52Z</time> +</trkpt> +<trkpt lat="14.847980" lon="120.335376"> +<ele>84.733398</ele> +<time>2004-09-07T16:38:15Z</time> +</trkpt> +<trkpt lat="14.848237" lon="120.335033"> +<ele>84.733398</ele> +<time>2004-09-07T16:38:20Z</time> +</trkpt> +<trkpt lat="14.849718" lon="120.335119"> +<ele>91.462524</ele> +<time>2004-09-07T16:38:36Z</time> +</trkpt> +<trkpt lat="14.851413" lon="120.333982"> +<ele>100.114502</ele> +<time>2004-09-07T16:38:55Z</time> +</trkpt> +<trkpt lat="14.852507" lon="120.334175"> +<ele>103.959717</ele> +<time>2004-09-07T16:39:20Z</time> +</trkpt> +<trkpt lat="14.851542" lon="120.333402"> +<ele>113.572998</ele> +<time>2004-09-07T16:39:46Z</time> +</trkpt> +<trkpt lat="14.850254" lon="120.332909"> +<ele>121.263550</ele> +<time>2004-09-07T16:40:01Z</time> +</trkpt> +<trkpt lat="14.849782" lon="120.332179"> +<ele>122.224731</ele> +<time>2004-09-07T16:40:10Z</time> +</trkpt> +<trkpt lat="14.850469" lon="120.329626"> +<ele>131.837891</ele> +<time>2004-09-07T16:40:34Z</time> +</trkpt> +<trkpt lat="14.850318" lon="120.327802"> +<ele>139.528442</ele> +<time>2004-09-07T16:40:58Z</time> +</trkpt> +<trkpt lat="14.849954" lon="120.326729"> +<ele>141.451050</ele> +<time>2004-09-07T16:41:15Z</time> +</trkpt> +<trkpt lat="14.849675" lon="120.325935"> +<ele>141.451050</ele> +<time>2004-09-07T16:41:29Z</time> +</trkpt> +<trkpt lat="14.848645" lon="120.325484"> +<ele>134.721924</ele> +<time>2004-09-07T16:41:51Z</time> +</trkpt> +<trkpt lat="14.849095" lon="120.323918"> +<ele>123.186157</ele> +<time>2004-09-07T16:42:15Z</time> +</trkpt> +<trkpt lat="14.848623" lon="120.323725"> +<ele>119.340820</ele> +<time>2004-09-07T16:42:23Z</time> +</trkpt> +<trkpt lat="14.847229" lon="120.324862"> +<ele>110.688843</ele> +<time>2004-09-07T16:42:46Z</time> +</trkpt> +<trkpt lat="14.846435" lon="120.324969"> +<ele>105.882446</ele> +<time>2004-09-07T16:42:58Z</time> +</trkpt> +<trkpt lat="14.845984" lon="120.324025"> +<ele>98.191895</ele> +<time>2004-09-07T16:43:10Z</time> +</trkpt> +<trkpt lat="14.845963" lon="120.323038"> +<ele>90.981934</ele> +<time>2004-09-07T16:43:22Z</time> +</trkpt> +<trkpt lat="14.846306" lon="120.322587"> +<ele>87.136597</ele> +<time>2004-09-07T16:43:29Z</time> +</trkpt> +<trkpt lat="14.846585" lon="120.322394"> +<ele>85.694580</ele> +<time>2004-09-07T16:43:34Z</time> +</trkpt> +<trkpt lat="14.847400" lon="120.322394"> +<ele>79.446045</ele> +<time>2004-09-07T16:43:46Z</time> +</trkpt> +<trkpt lat="14.848194" lon="120.322373"> +<ele>76.081421</ele> +<time>2004-09-07T16:43:57Z</time> +</trkpt> +<trkpt lat="14.847958" lon="120.321000"> +<ele>67.910278</ele> +<time>2004-09-07T16:44:14Z</time> +</trkpt> +<trkpt lat="14.848216" lon="120.319304"> +<ele>61.181030</ele> +<time>2004-09-07T16:44:39Z</time> +</trkpt> +<trkpt lat="14.848859" lon="120.318768"> +<ele>56.855103</ele> +<time>2004-09-07T16:44:53Z</time> +</trkpt> +<trkpt lat="14.848816" lon="120.318296"> +<ele>54.932373</ele> +<time>2004-09-07T16:45:01Z</time> +</trkpt> +<trkpt lat="14.848688" lon="120.317116"> +<ele>46.280640</ele> +<time>2004-09-07T16:45:35Z</time> +</trkpt> +<trkpt lat="14.849052" lon="120.316386"> +<ele>45.799927</ele> +<time>2004-09-07T16:45:47Z</time> +</trkpt> +<trkpt lat="14.849117" lon="120.314691"> +<ele>38.109375</ele> +<time>2004-09-07T16:46:07Z</time> +</trkpt> +<trkpt lat="14.848709" lon="120.313275"> +<ele>31.860718</ele> +<time>2004-09-07T16:46:25Z</time> +</trkpt> +<trkpt lat="14.848258" lon="120.307438"> +<ele>26.092896</ele> +<time>2004-09-07T16:47:29Z</time> +</trkpt> +<trkpt lat="14.850082" lon="120.303125"> +<ele>28.976929</ele> +<time>2004-09-07T16:48:11Z</time> +</trkpt> +<trkpt lat="14.849954" lon="120.300765"> +<ele>27.054321</ele> +<time>2004-09-07T16:48:31Z</time> +</trkpt> +<trkpt lat="14.846971" lon="120.295444"> +<ele>30.418823</ele> +<time>2004-09-07T16:49:20Z</time> +</trkpt> +<trkpt lat="14.846756" lon="120.292568"> +<ele>27.054321</ele> +<time>2004-09-07T16:49:42Z</time> +</trkpt> +<trkpt lat="14.843323" lon="120.288556"> +<ele>23.689575</ele> +<time>2004-09-07T16:50:26Z</time> +</trkpt> +<trkpt lat="14.842551" lon="120.288255"> +<ele>23.689575</ele> +<time>2004-09-07T16:50:29Z</time> +</trkpt> +<trkpt lat="14.841328" lon="120.286925"> +<ele>23.689575</ele> +<time>2004-09-07T16:50:43Z</time> +</trkpt> +<trkpt lat="14.839911" lon="120.285337"> +<ele>18.883057</ele> +<time>2004-09-07T16:51:00Z</time> +</trkpt> +<trkpt lat="14.840298" lon="120.285788"> +<ele>19.844360</ele> +<time>2004-09-07T16:51:28Z</time> +</trkpt> +<trkpt lat="14.840491" lon="120.285079"> +<ele>18.883057</ele> +<time>2004-09-07T16:51:50Z</time> +</trkpt> +<trkpt lat="14.839718" lon="120.284178"> +<ele>17.441162</ele> +<time>2004-09-07T16:55:42Z</time> +</trkpt> +<trkpt lat="14.975588" lon="120.155540"> +<ele>29.938110</ele> +<time>2004-09-08T02:02:19Z</time> +</trkpt> +<trkpt lat="14.975159" lon="120.157127"> +<ele>36.186768</ele> +<time>2004-09-08T02:47:04Z</time> +</trkpt> +<trkpt lat="14.975181" lon="120.157149"> +<ele>42.916016</ele> +<time>2004-09-08T02:47:26Z</time> +</trkpt> +<trkpt lat="14.975867" lon="120.169616"> +<ele>50.606567</ele> +<time>2004-09-08T02:55:08Z</time> +</trkpt> +<trkpt lat="14.975502" lon="120.174830"> +<ele>54.451782</ele> +<time>2004-09-08T02:56:01Z</time> +</trkpt> +<trkpt lat="14.979751" lon="120.190022"> +<ele>60.700317</ele> +<time>2004-09-08T02:58:47Z</time> +</trkpt> +<trkpt lat="14.980502" lon="120.193992"> +<ele>63.103638</ele> +<time>2004-09-08T03:02:22Z</time> +</trkpt> +<trkpt lat="14.980674" lon="120.196137"> +<ele>77.042847</ele> +<time>2004-09-08T03:16:27Z</time> +</trkpt> +<trkpt lat="14.982047" lon="120.196846"> +<ele>65.026367</ele> +<time>2004-09-08T03:18:11Z</time> +</trkpt> +<trkpt lat="14.984407" lon="120.199678"> +<ele>68.871582</ele> +<time>2004-09-08T03:22:57Z</time> +</trkpt> +<trkpt lat="14.985566" lon="120.200622"> +<ele>68.871582</ele> +<time>2004-09-08T03:25:05Z</time> +</trkpt> +<trkpt lat="14.988184" lon="120.202982"> +<ele>75.600830</ele> +<time>2004-09-08T03:34:23Z</time> +</trkpt> +<trkpt lat="14.992883" lon="120.206931"> +<ele>79.926636</ele> +<time>2004-09-08T03:43:48Z</time> +</trkpt> +<trkpt lat="14.996316" lon="120.209484"> +<ele>82.810791</ele> +<time>2004-09-08T03:51:12Z</time> +</trkpt> +<trkpt lat="14.997883" lon="120.209827"> +<ele>84.252686</ele> +<time>2004-09-08T03:55:15Z</time> +</trkpt> +<trkpt lat="14.998097" lon="120.210900"> +<ele>85.213989</ele> +<time>2004-09-08T03:58:17Z</time> +</trkpt> +<trkpt lat="14.999664" lon="120.212381"> +<ele>85.213989</ele> +<time>2004-09-08T04:01:25Z</time> +</trkpt> +<trkpt lat="15.003011" lon="120.213647"> +<ele>87.136597</ele> +<time>2004-09-08T04:07:25Z</time> +</trkpt> +<trkpt lat="15.006766" lon="120.216758"> +<ele>91.943237</ele> +<time>2004-09-08T04:16:18Z</time> +</trkpt> +<trkpt lat="15.009899" lon="120.217338"> +<ele>95.788452</ele> +<time>2004-09-08T04:20:50Z</time> +</trkpt> +<trkpt lat="15.012367" lon="120.219333"> +<ele>94.827148</ele> +<time>2004-09-08T04:24:59Z</time> +</trkpt> +<trkpt lat="15.013268" lon="120.221393"> +<ele>95.307739</ele> +<time>2004-09-08T04:27:52Z</time> +</trkpt> +<trkpt lat="15.013804" lon="120.221758"> +<ele>94.827148</ele> +<time>2004-09-08T04:28:46Z</time> +</trkpt> +<trkpt lat="15.014405" lon="120.222144"> +<ele>92.904541</ele> +<time>2004-09-08T04:29:57Z</time> +</trkpt> +<trkpt lat="15.014727" lon="120.222208"> +<ele>90.981934</ele> +<time>2004-09-08T04:30:42Z</time> +</trkpt> +<trkpt lat="15.014770" lon="120.222445"> +<ele>86.656006</ele> +<time>2004-09-08T04:31:03Z</time> +</trkpt> +<trkpt lat="15.014749" lon="120.222487"> +<ele>93.385132</ele> +<time>2004-09-08T04:31:09Z</time> +</trkpt> +<trkpt lat="15.014877" lon="120.223088"> +<ele>90.501343</ele> +<time>2004-09-08T04:32:14Z</time> +</trkpt> +<trkpt lat="15.015070" lon="120.223367"> +<ele>90.501343</ele> +<time>2004-09-08T04:32:47Z</time> +</trkpt> +<trkpt lat="15.016572" lon="120.224397"> +<ele>93.865845</ele> +<time>2004-09-08T04:46:16Z</time> +</trkpt> +<trkpt lat="15.019448" lon="120.225148"> +<ele>92.423950</ele> +<time>2004-09-08T04:51:28Z</time> +</trkpt> +<trkpt lat="15.021250" lon="120.226822"> +<ele>94.827148</ele> +<time>2004-09-08T04:55:35Z</time> +</trkpt> +<trkpt lat="15.022924" lon="120.227702"> +<ele>98.191895</ele> +<time>2004-09-08T04:58:14Z</time> +</trkpt> +<trkpt lat="15.024319" lon="120.227852"> +<ele>100.114502</ele> +<time>2004-09-08T05:01:58Z</time> +</trkpt> +<trkpt lat="15.025413" lon="120.228431"> +<ele>98.672485</ele> +<time>2004-09-08T05:05:57Z</time> +</trkpt> +<trkpt lat="15.028589" lon="120.228946"> +<ele>105.882446</ele> +<time>2004-09-08T05:12:08Z</time> +</trkpt> +<trkpt lat="15.029683" lon="120.229611"> +<ele>108.766235</ele> +<time>2004-09-08T05:15:30Z</time> +</trkpt> +<trkpt lat="15.031443" lon="120.230169"> +<ele>110.208252</ele> +<time>2004-09-08T05:18:16Z</time> +</trkpt> +<trkpt lat="15.032752" lon="120.231757"> +<ele>117.418213</ele> +<time>2004-09-08T05:22:13Z</time> +</trkpt> +<trkpt lat="15.033288" lon="120.233452"> +<ele>119.821411</ele> +<time>2004-09-08T05:25:00Z</time> +</trkpt> +<trkpt lat="15.034060" lon="120.234547"> +<ele>124.628052</ele> +<time>2004-09-08T05:26:57Z</time> +</trkpt> +<trkpt lat="15.034661" lon="120.235448"> +<ele>122.224731</ele> +<time>2004-09-08T05:28:32Z</time> +</trkpt> +<trkpt lat="15.034940" lon="120.236714"> +<ele>129.434692</ele> +<time>2004-09-08T05:31:45Z</time> +</trkpt> +<trkpt lat="15.035219" lon="120.236328"> +<ele>129.915283</ele> +<time>2004-09-08T05:32:35Z</time> +</trkpt> +<trkpt lat="15.037129" lon="120.236349"> +<ele>154.909546</ele> +<time>2004-09-08T06:40:26Z</time> +</trkpt> +<trkpt lat="15.037301" lon="120.236542"> +<ele>144.815796</ele> +<time>2004-09-08T06:43:49Z</time> +</trkpt> +<trkpt lat="15.037901" lon="120.236928"> +<ele>152.506348</ele> +<time>2004-09-08T06:46:06Z</time> +</trkpt> +<trkpt lat="15.038202" lon="120.237036"> +<ele>156.351563</ele> +<time>2004-09-08T06:48:26Z</time> +</trkpt> +<trkpt lat="15.038309" lon="120.237186"> +<ele>157.793579</ele> +<time>2004-09-08T06:48:47Z</time> +</trkpt> +<trkpt lat="15.042386" lon="120.246134"> +<ele>185.191162</ele> +<time>2004-09-08T07:16:13Z</time> +</trkpt> +<trkpt lat="15.043287" lon="120.254095"> +<ele>204.417480</ele> +<time>2004-09-08T07:37:30Z</time> +</trkpt> +<trkpt lat="15.043287" lon="120.254095"> +<ele>209.224121</ele> +<time>2004-09-08T07:37:31Z</time> +</trkpt> +</trkseg> +</trk> +<trk> + <name>08-SEP-04</name> +<number>2</number> +<trkseg> +<trkpt lat="15.043309" lon="120.254095"> +<ele>206.340088</ele> +<time>2004-09-08T07:39:34Z</time> +</trkpt> +<trkpt lat="15.043309" lon="120.254095"> +<ele>209.704834</ele> +<time>2004-09-08T07:39:38Z</time> +</trkpt> +<trkpt lat="15.043330" lon="120.254717"> +<ele>210.666016</ele> +<time>2004-09-08T07:41:08Z</time> +</trkpt> +<trkpt lat="15.043309" lon="120.254695"> +<ele>210.185425</ele> +<time>2004-09-08T07:41:21Z</time> +</trkpt> +<trkpt lat="15.043201" lon="120.253429"> +<ele>207.301392</ele> +<time>2004-09-08T07:43:06Z</time> +</trkpt> +<trkpt lat="15.043116" lon="120.253193"> +<ele>207.301392</ele> +<time>2004-09-08T07:43:27Z</time> +</trkpt> +<trkpt lat="15.043073" lon="120.252485"> +<ele>205.378784</ele> +<time>2004-09-08T07:45:17Z</time> +</trkpt> +<trkpt lat="15.043008" lon="120.251842"> +<ele>202.014282</ele> +<time>2004-09-08T07:46:09Z</time> +</trkpt> +<trkpt lat="15.042858" lon="120.249889"> +<ele>195.765625</ele> +<time>2004-09-08T07:48:50Z</time> +</trkpt> +<trkpt lat="15.042708" lon="120.249052"> +<ele>191.439575</ele> +<time>2004-09-08T07:49:59Z</time> +</trkpt> +<trkpt lat="15.042601" lon="120.248537"> +<ele>190.478394</ele> +<time>2004-09-08T07:50:41Z</time> +</trkpt> +<trkpt lat="15.042558" lon="120.247958"> +<ele>188.075073</ele> +<time>2004-09-08T07:51:27Z</time> +</trkpt> +<trkpt lat="15.042579" lon="120.247872"> +<ele>188.555786</ele> +<time>2004-09-08T07:51:46Z</time> +</trkpt> +<trkpt lat="15.042558" lon="120.247378"> +<ele>187.113770</ele> +<time>2004-09-08T07:52:44Z</time> +</trkpt> +<trkpt lat="15.042408" lon="120.246606"> +<ele>185.191162</ele> +<time>2004-09-08T07:54:58Z</time> +</trkpt> +<trkpt lat="15.042365" lon="120.246305"> +<ele>185.671753</ele> +<time>2004-09-08T07:55:23Z</time> +</trkpt> +<trkpt lat="15.042236" lon="120.245962"> +<ele>184.710571</ele> +<time>2004-09-08T07:56:05Z</time> +</trkpt> +<trkpt lat="15.042171" lon="120.245984"> +<ele>184.710571</ele> +<time>2004-09-08T07:56:23Z</time> +</trkpt> +<trkpt lat="15.042236" lon="120.245941"> +<ele>184.710571</ele> +<time>2004-09-08T07:57:01Z</time> +</trkpt> +<trkpt lat="15.042150" lon="120.245748"> +<ele>183.749023</ele> +<time>2004-09-08T07:57:20Z</time> +</trkpt> +<trkpt lat="15.041893" lon="120.245233"> +<ele>182.307129</ele> +<time>2004-09-08T07:58:05Z</time> +</trkpt> +<trkpt lat="15.041807" lon="120.245147"> +<ele>182.307129</ele> +<time>2004-09-08T07:58:23Z</time> +</trkpt> +<trkpt lat="15.041785" lon="120.245018"> +<ele>180.865234</ele> +<time>2004-09-08T07:58:42Z</time> +</trkpt> +<trkpt lat="15.041528" lon="120.244396"> +<ele>179.903809</ele> +<time>2004-09-08T08:00:10Z</time> +</trkpt> +<trkpt lat="15.041463" lon="120.244160"> +<ele>179.423218</ele> +<time>2004-09-08T08:00:31Z</time> +</trkpt> +<trkpt lat="15.041399" lon="120.243988"> +<ele>178.461914</ele> +<time>2004-09-08T08:00:46Z</time> +</trkpt> +<trkpt lat="15.041378" lon="120.243838"> +<ele>178.942627</ele> +<time>2004-09-08T08:02:01Z</time> +</trkpt> +<trkpt lat="15.041356" lon="120.243838"> +<ele>178.942627</ele> +<time>2004-09-08T08:02:20Z</time> +</trkpt> +<trkpt lat="15.041313" lon="120.243623"> +<ele>177.981201</ele> +<time>2004-09-08T08:03:02Z</time> +</trkpt> +<trkpt lat="15.041227" lon="120.243387"> +<ele>177.981201</ele> +<time>2004-09-08T08:03:27Z</time> +</trkpt> +<trkpt lat="15.041227" lon="120.243387"> +<ele>176.539307</ele> +<time>2004-09-08T08:03:37Z</time> +</trkpt> +<trkpt lat="15.040991" lon="120.243044"> +<ele>177.981201</ele> +<time>2004-09-08T08:04:37Z</time> +</trkpt> +<trkpt lat="15.040519" lon="120.241756"> +<ele>177.020020</ele> +<time>2004-09-08T08:06:26Z</time> +</trkpt> +<trkpt lat="15.040219" lon="120.241263"> +<ele>176.058594</ele> +<time>2004-09-08T08:08:06Z</time> +</trkpt> +<trkpt lat="15.040004" lon="120.240855"> +<ele>174.135864</ele> +<time>2004-09-08T08:09:00Z</time> +</trkpt> +<trkpt lat="15.039854" lon="120.240426"> +<ele>174.616577</ele> +<time>2004-09-08T08:10:08Z</time> +</trkpt> +<trkpt lat="15.039704" lon="120.240104"> +<ele>174.135864</ele> +<time>2004-09-08T08:10:37Z</time> +</trkpt> +<trkpt lat="15.039532" lon="120.239868"> +<ele>173.655273</ele> +<time>2004-09-08T08:11:01Z</time> +</trkpt> +<trkpt lat="15.039361" lon="120.239718"> +<ele>173.174683</ele> +<time>2004-09-08T08:11:20Z</time> +</trkpt> +<trkpt lat="15.039318" lon="120.239675"> +<ele>173.174683</ele> +<time>2004-09-08T08:11:41Z</time> +</trkpt> +<trkpt lat="15.039318" lon="120.239697"> +<ele>173.174683</ele> +<time>2004-09-08T08:12:08Z</time> +</trkpt> +<trkpt lat="15.039210" lon="120.239546"> +<ele>171.732666</ele> +<time>2004-09-08T08:12:25Z</time> +</trkpt> +<trkpt lat="15.038974" lon="120.238903"> +<ele>169.810059</ele> +<time>2004-09-08T08:15:01Z</time> +</trkpt> +<trkpt lat="15.038953" lon="120.238860"> +<ele>169.810059</ele> +<time>2004-09-08T08:15:17Z</time> +</trkpt> +<trkpt lat="15.038974" lon="120.238903"> +<ele>169.810059</ele> +<time>2004-09-08T08:15:54Z</time> +</trkpt> +<trkpt lat="15.038996" lon="120.238903"> +<ele>170.771362</ele> +<time>2004-09-08T08:17:00Z</time> +</trkpt> +<trkpt lat="15.038996" lon="120.238860"> +<ele>170.290649</ele> +<time>2004-09-08T08:17:28Z</time> +</trkpt> +<trkpt lat="15.038910" lon="120.238709"> +<ele>169.329468</ele> +<time>2004-09-08T08:17:44Z</time> +</trkpt> +<trkpt lat="15.038910" lon="120.238731"> +<ele>168.848755</ele> +<time>2004-09-08T08:18:11Z</time> +</trkpt> +<trkpt lat="15.038803" lon="120.238473"> +<ele>168.368042</ele> +<time>2004-09-08T08:18:48Z</time> +</trkpt> +<trkpt lat="15.038781" lon="120.238452"> +<ele>167.406738</ele> +<time>2004-09-08T08:19:07Z</time> +</trkpt> +<trkpt lat="15.038717" lon="120.238216"> +<ele>167.406738</ele> +<time>2004-09-08T08:20:20Z</time> +</trkpt> +<trkpt lat="15.038610" lon="120.237958"> +<ele>165.964722</ele> +<time>2004-09-08T08:21:16Z</time> +</trkpt> +<trkpt lat="15.038588" lon="120.237873"> +<ele>165.003418</ele> +<time>2004-09-08T08:21:34Z</time> +</trkpt> +<trkpt lat="15.038524" lon="120.237808"> +<ele>164.042114</ele> +<time>2004-09-08T08:21:59Z</time> +</trkpt> +<trkpt lat="15.038524" lon="120.237765"> +<ele>164.522705</ele> +<time>2004-09-08T08:22:02Z</time> +</trkpt> +<trkpt lat="15.038395" lon="120.237443"> +<ele>159.716187</ele> +<time>2004-09-08T08:23:54Z</time> +</trkpt> +<trkpt lat="15.038395" lon="120.237422"> +<ele>161.158203</ele> +<time>2004-09-08T08:24:39Z</time> +</trkpt> +<trkpt lat="15.038245" lon="120.237143"> +<ele>157.793579</ele> +<time>2004-09-08T08:25:25Z</time> +</trkpt> +<trkpt lat="15.038266" lon="120.237100"> +<ele>157.793579</ele> +<time>2004-09-08T08:26:41Z</time> +</trkpt> +<trkpt lat="15.038116" lon="120.237014"> +<ele>155.870972</ele> +<time>2004-09-08T08:27:30Z</time> +</trkpt> +<trkpt lat="15.038073" lon="120.236971"> +<ele>155.870972</ele> +<time>2004-09-08T08:27:48Z</time> +</trkpt> +<trkpt lat="15.037880" lon="120.236821"> +<ele>152.025757</ele> +<time>2004-09-08T08:30:37Z</time> +</trkpt> +<trkpt lat="15.037816" lon="120.236778"> +<ele>152.506348</ele> +<time>2004-09-08T08:32:19Z</time> +</trkpt> +<trkpt lat="15.037816" lon="120.236735"> +<ele>152.025757</ele> +<time>2004-09-08T08:32:55Z</time> +</trkpt> +<trkpt lat="15.037730" lon="120.236671"> +<ele>151.064209</ele> +<time>2004-09-08T08:33:07Z</time> +</trkpt> +<trkpt lat="15.037601" lon="120.236564"> +<ele>147.699707</ele> +<time>2004-09-08T08:33:57Z</time> +</trkpt> +<trkpt lat="15.037301" lon="120.236349"> +<ele>146.257813</ele> +<time>2004-09-08T08:35:52Z</time> +</trkpt> +<trkpt lat="15.036914" lon="120.236156"> +<ele>138.086548</ele> +<time>2004-09-08T08:36:31Z</time> +</trkpt> +<trkpt lat="15.036635" lon="120.235705"> +<ele>135.202515</ele> +<time>2004-09-08T08:38:06Z</time> +</trkpt> +<trkpt lat="15.036550" lon="120.235684"> +<ele>134.721924</ele> +<time>2004-09-08T08:38:14Z</time> +</trkpt> +<trkpt lat="15.036356" lon="120.235813"> +<ele>133.760498</ele> +<time>2004-09-08T08:38:34Z</time> +</trkpt> +<trkpt lat="15.036142" lon="120.235791"> +<ele>133.279907</ele> +<time>2004-09-08T08:38:52Z</time> +</trkpt> +<trkpt lat="15.035906" lon="120.235727"> +<ele>131.357300</ele> +<time>2004-09-08T08:40:00Z</time> +</trkpt> +<trkpt lat="15.035605" lon="120.235856"> +<ele>130.395996</ele> +<time>2004-09-08T08:40:28Z</time> +</trkpt> +<trkpt lat="15.035155" lon="120.235834"> +<ele>131.357300</ele> +<time>2004-09-08T08:41:23Z</time> +</trkpt> +<trkpt lat="15.035005" lon="120.235856"> +<ele>130.876709</ele> +<time>2004-09-08T08:42:18Z</time> +</trkpt> +<trkpt lat="15.034962" lon="120.235898"> +<ele>131.357300</ele> +<time>2004-09-08T08:42:36Z</time> +</trkpt> +<trkpt lat="15.034962" lon="120.235963"> +<ele>131.837891</ele> +<time>2004-09-08T08:43:03Z</time> +</trkpt> +<trkpt lat="15.034962" lon="120.236156"> +<ele>131.837891</ele> +<time>2004-09-08T08:43:19Z</time> +</trkpt> +<trkpt lat="15.034833" lon="120.236285"> +<ele>131.357300</ele> +<time>2004-09-08T08:43:34Z</time> +</trkpt> +<trkpt lat="15.034919" lon="120.236650"> +<ele>133.760498</ele> +<time>2004-09-08T08:45:14Z</time> +</trkpt> +<trkpt lat="15.034833" lon="120.236778"> +<ele>134.241211</ele> +<time>2004-09-08T08:46:43Z</time> +</trkpt> +<trkpt lat="15.035090" lon="120.236928"> +<ele>135.683105</ele> +<time>2004-09-08T08:47:40Z</time> +</trkpt> +<trkpt lat="15.035133" lon="120.237014"> +<ele>136.644653</ele> +<time>2004-09-08T08:47:59Z</time> +</trkpt> +<trkpt lat="15.035133" lon="120.237014"> +<ele>135.202515</ele> +<time>2004-09-08T08:48:15Z</time> +</trkpt> +<trkpt lat="15.035176" lon="120.237207"> +<ele>137.125244</ele> +<time>2004-09-08T08:48:35Z</time> +</trkpt> +<trkpt lat="15.035155" lon="120.237207"> +<ele>136.644653</ele> +<time>2004-09-08T08:49:29Z</time> +</trkpt> +<trkpt lat="15.035155" lon="120.237186"> +<ele>135.683105</ele> +<time>2004-09-08T08:49:31Z</time> +</trkpt> +<trkpt lat="15.035112" lon="120.237143"> +<ele>134.241211</ele> +<time>2004-09-08T08:49:36Z</time> +</trkpt> +<trkpt lat="15.034854" lon="120.236864"> +<ele>127.031372</ele> +<time>2004-09-08T09:46:50Z</time> +</trkpt> +<trkpt lat="15.034811" lon="120.236864"> +<ele>124.147339</ele> +<time>2004-09-08T09:47:29Z</time> +</trkpt> +<trkpt lat="15.034811" lon="120.236864"> +<ele>116.937500</ele> +<time>2004-09-08T09:47:39Z</time> +</trkpt> +<trkpt lat="15.034790" lon="120.236864"> +<ele>114.053589</ele> +<time>2004-09-08T09:47:54Z</time> +</trkpt> +</trkseg> +</trk> +<trk> + <name>08-SEP-04 02</name> +<number>3</number> +<trkseg> +<trkpt lat="15.043309" lon="120.254095"> +<ele>206.340088</ele> +<time>2004-09-08T07:39:34Z</time> +</trkpt> +<trkpt lat="15.043309" lon="120.254095"> +<ele>209.704834</ele> +<time>2004-09-08T07:39:38Z</time> +</trkpt> +<trkpt lat="15.043330" lon="120.254717"> +<ele>210.666016</ele> +<time>2004-09-08T07:41:08Z</time> +</trkpt> +<trkpt lat="15.043309" lon="120.254695"> +<ele>210.185425</ele> +<time>2004-09-08T07:41:21Z</time> +</trkpt> +<trkpt lat="15.043201" lon="120.253429"> +<ele>207.301392</ele> +<time>2004-09-08T07:43:06Z</time> +</trkpt> +<trkpt lat="15.043116" lon="120.253193"> +<ele>207.301392</ele> +<time>2004-09-08T07:43:27Z</time> +</trkpt> +<trkpt lat="15.043073" lon="120.252485"> +<ele>205.378784</ele> +<time>2004-09-08T07:45:17Z</time> +</trkpt> +<trkpt lat="15.043008" lon="120.251842"> +<ele>202.014282</ele> +<time>2004-09-08T07:46:09Z</time> +</trkpt> +<trkpt lat="15.042858" lon="120.249889"> +<ele>195.765625</ele> +<time>2004-09-08T07:48:50Z</time> +</trkpt> +<trkpt lat="15.042708" lon="120.249052"> +<ele>191.439575</ele> +<time>2004-09-08T07:49:59Z</time> +</trkpt> +<trkpt lat="15.042601" lon="120.248537"> +<ele>190.478394</ele> +<time>2004-09-08T07:50:41Z</time> +</trkpt> +<trkpt lat="15.042558" lon="120.247958"> +<ele>188.075073</ele> +<time>2004-09-08T07:51:27Z</time> +</trkpt> +<trkpt lat="15.042579" lon="120.247872"> +<ele>188.555786</ele> +<time>2004-09-08T07:51:46Z</time> +</trkpt> +<trkpt lat="15.042558" lon="120.247378"> +<ele>187.113770</ele> +<time>2004-09-08T07:52:44Z</time> +</trkpt> +<trkpt lat="15.042408" lon="120.246606"> +<ele>185.191162</ele> +<time>2004-09-08T07:54:58Z</time> +</trkpt> +<trkpt lat="15.042365" lon="120.246305"> +<ele>185.671753</ele> +<time>2004-09-08T07:55:23Z</time> +</trkpt> +<trkpt lat="15.042236" lon="120.245962"> +<ele>184.710571</ele> +<time>2004-09-08T07:56:05Z</time> +</trkpt> +<trkpt lat="15.042171" lon="120.245984"> +<ele>184.710571</ele> +<time>2004-09-08T07:56:23Z</time> +</trkpt> +<trkpt lat="15.042236" lon="120.245941"> +<ele>184.710571</ele> +<time>2004-09-08T07:57:01Z</time> +</trkpt> +<trkpt lat="15.042150" lon="120.245748"> +<ele>183.749023</ele> +<time>2004-09-08T07:57:20Z</time> +</trkpt> +<trkpt lat="15.041893" lon="120.245233"> +<ele>182.307129</ele> +<time>2004-09-08T07:58:05Z</time> +</trkpt> +<trkpt lat="15.041807" lon="120.245147"> +<ele>182.307129</ele> +<time>2004-09-08T07:58:23Z</time> +</trkpt> +<trkpt lat="15.041785" lon="120.245018"> +<ele>180.865234</ele> +<time>2004-09-08T07:58:42Z</time> +</trkpt> +<trkpt lat="15.041528" lon="120.244396"> +<ele>179.903809</ele> +<time>2004-09-08T08:00:10Z</time> +</trkpt> +<trkpt lat="15.041463" lon="120.244160"> +<ele>179.423218</ele> +<time>2004-09-08T08:00:31Z</time> +</trkpt> +<trkpt lat="15.041399" lon="120.243988"> +<ele>178.461914</ele> +<time>2004-09-08T08:00:46Z</time> +</trkpt> +<trkpt lat="15.041378" lon="120.243838"> +<ele>178.942627</ele> +<time>2004-09-08T08:02:01Z</time> +</trkpt> +<trkpt lat="15.041356" lon="120.243838"> +<ele>178.942627</ele> +<time>2004-09-08T08:02:20Z</time> +</trkpt> +<trkpt lat="15.041313" lon="120.243623"> +<ele>177.981201</ele> +<time>2004-09-08T08:03:02Z</time> +</trkpt> +<trkpt lat="15.041227" lon="120.243387"> +<ele>177.981201</ele> +<time>2004-09-08T08:03:27Z</time> +</trkpt> +<trkpt lat="15.041227" lon="120.243387"> +<ele>176.539307</ele> +<time>2004-09-08T08:03:37Z</time> +</trkpt> +<trkpt lat="15.040991" lon="120.243044"> +<ele>177.981201</ele> +<time>2004-09-08T08:04:37Z</time> +</trkpt> +<trkpt lat="15.040519" lon="120.241756"> +<ele>177.020020</ele> +<time>2004-09-08T08:06:26Z</time> +</trkpt> +<trkpt lat="15.040219" lon="120.241263"> +<ele>176.058594</ele> +<time>2004-09-08T08:08:06Z</time> +</trkpt> +<trkpt lat="15.040004" lon="120.240855"> +<ele>174.135864</ele> +<time>2004-09-08T08:09:00Z</time> +</trkpt> +<trkpt lat="15.039854" lon="120.240426"> +<ele>174.616577</ele> +<time>2004-09-08T08:10:08Z</time> +</trkpt> +<trkpt lat="15.039704" lon="120.240104"> +<ele>174.135864</ele> +<time>2004-09-08T08:10:37Z</time> +</trkpt> +<trkpt lat="15.039532" lon="120.239868"> +<ele>173.655273</ele> +<time>2004-09-08T08:11:01Z</time> +</trkpt> +<trkpt lat="15.039361" lon="120.239718"> +<ele>173.174683</ele> +<time>2004-09-08T08:11:20Z</time> +</trkpt> +<trkpt lat="15.039318" lon="120.239675"> +<ele>173.174683</ele> +<time>2004-09-08T08:11:41Z</time> +</trkpt> +<trkpt lat="15.039318" lon="120.239697"> +<ele>173.174683</ele> +<time>2004-09-08T08:12:08Z</time> +</trkpt> +<trkpt lat="15.039210" lon="120.239546"> +<ele>171.732666</ele> +<time>2004-09-08T08:12:25Z</time> +</trkpt> +<trkpt lat="15.038974" lon="120.238903"> +<ele>169.810059</ele> +<time>2004-09-08T08:15:01Z</time> +</trkpt> +<trkpt lat="15.038953" lon="120.238860"> +<ele>169.810059</ele> +<time>2004-09-08T08:15:17Z</time> +</trkpt> +<trkpt lat="15.038974" lon="120.238903"> +<ele>169.810059</ele> +<time>2004-09-08T08:15:54Z</time> +</trkpt> +<trkpt lat="15.038996" lon="120.238903"> +<ele>170.771362</ele> +<time>2004-09-08T08:17:00Z</time> +</trkpt> +<trkpt lat="15.038996" lon="120.238860"> +<ele>170.290649</ele> +<time>2004-09-08T08:17:28Z</time> +</trkpt> +<trkpt lat="15.038910" lon="120.238709"> +<ele>169.329468</ele> +<time>2004-09-08T08:17:44Z</time> +</trkpt> +<trkpt lat="15.038910" lon="120.238731"> +<ele>168.848755</ele> +<time>2004-09-08T08:18:11Z</time> +</trkpt> +<trkpt lat="15.038803" lon="120.238473"> +<ele>168.368042</ele> +<time>2004-09-08T08:18:48Z</time> +</trkpt> +<trkpt lat="15.038781" lon="120.238452"> +<ele>167.406738</ele> +<time>2004-09-08T08:19:07Z</time> +</trkpt> +<trkpt lat="15.038717" lon="120.238216"> +<ele>167.406738</ele> +<time>2004-09-08T08:20:20Z</time> +</trkpt> +<trkpt lat="15.038610" lon="120.237958"> +<ele>165.964722</ele> +<time>2004-09-08T08:21:16Z</time> +</trkpt> +<trkpt lat="15.038588" lon="120.237873"> +<ele>165.003418</ele> +<time>2004-09-08T08:21:34Z</time> +</trkpt> +<trkpt lat="15.038524" lon="120.237808"> +<ele>164.042114</ele> +<time>2004-09-08T08:21:59Z</time> +</trkpt> +<trkpt lat="15.038524" lon="120.237765"> +<ele>164.522705</ele> +<time>2004-09-08T08:22:02Z</time> +</trkpt> +<trkpt lat="15.038395" lon="120.237443"> +<ele>159.716187</ele> +<time>2004-09-08T08:23:54Z</time> +</trkpt> +<trkpt lat="15.038395" lon="120.237422"> +<ele>161.158203</ele> +<time>2004-09-08T08:24:39Z</time> +</trkpt> +<trkpt lat="15.038245" lon="120.237143"> +<ele>157.793579</ele> +<time>2004-09-08T08:25:25Z</time> +</trkpt> +<trkpt lat="15.038266" lon="120.237100"> +<ele>157.793579</ele> +<time>2004-09-08T08:26:41Z</time> +</trkpt> +<trkpt lat="15.038116" lon="120.237014"> +<ele>155.870972</ele> +<time>2004-09-08T08:27:30Z</time> +</trkpt> +<trkpt lat="15.038073" lon="120.236971"> +<ele>155.870972</ele> +<time>2004-09-08T08:27:48Z</time> +</trkpt> +<trkpt lat="15.037880" lon="120.236821"> +<ele>152.025757</ele> +<time>2004-09-08T08:30:37Z</time> +</trkpt> +<trkpt lat="15.037816" lon="120.236778"> +<ele>152.506348</ele> +<time>2004-09-08T08:32:19Z</time> +</trkpt> +<trkpt lat="15.037816" lon="120.236735"> +<ele>152.025757</ele> +<time>2004-09-08T08:32:55Z</time> +</trkpt> +<trkpt lat="15.037730" lon="120.236671"> +<ele>151.064209</ele> +<time>2004-09-08T08:33:07Z</time> +</trkpt> +<trkpt lat="15.037601" lon="120.236564"> +<ele>147.699707</ele> +<time>2004-09-08T08:33:57Z</time> +</trkpt> +<trkpt lat="15.037301" lon="120.236349"> +<ele>146.257813</ele> +<time>2004-09-08T08:35:52Z</time> +</trkpt> +<trkpt lat="15.036914" lon="120.236156"> +<ele>138.086548</ele> +<time>2004-09-08T08:36:31Z</time> +</trkpt> +<trkpt lat="15.036635" lon="120.235705"> +<ele>135.202515</ele> +<time>2004-09-08T08:38:06Z</time> +</trkpt> +<trkpt lat="15.036550" lon="120.235684"> +<ele>134.721924</ele> +<time>2004-09-08T08:38:14Z</time> +</trkpt> +<trkpt lat="15.036356" lon="120.235813"> +<ele>133.760498</ele> +<time>2004-09-08T08:38:34Z</time> +</trkpt> +<trkpt lat="15.036142" lon="120.235791"> +<ele>133.279907</ele> +<time>2004-09-08T08:38:52Z</time> +</trkpt> +<trkpt lat="15.035906" lon="120.235727"> +<ele>131.357300</ele> +<time>2004-09-08T08:40:00Z</time> +</trkpt> +<trkpt lat="15.035605" lon="120.235856"> +<ele>130.395996</ele> +<time>2004-09-08T08:40:28Z</time> +</trkpt> +<trkpt lat="15.035155" lon="120.235834"> +<ele>131.357300</ele> +<time>2004-09-08T08:41:23Z</time> +</trkpt> +<trkpt lat="15.035005" lon="120.235856"> +<ele>130.876709</ele> +<time>2004-09-08T08:42:18Z</time> +</trkpt> +<trkpt lat="15.034962" lon="120.235898"> +<ele>131.357300</ele> +<time>2004-09-08T08:42:36Z</time> +</trkpt> +<trkpt lat="15.034962" lon="120.235963"> +<ele>131.837891</ele> +<time>2004-09-08T08:43:03Z</time> +</trkpt> +<trkpt lat="15.034962" lon="120.236156"> +<ele>131.837891</ele> +<time>2004-09-08T08:43:19Z</time> +</trkpt> +<trkpt lat="15.034833" lon="120.236285"> +<ele>131.357300</ele> +<time>2004-09-08T08:43:34Z</time> +</trkpt> +<trkpt lat="15.034919" lon="120.236650"> +<ele>133.760498</ele> +<time>2004-09-08T08:45:14Z</time> +</trkpt> +<trkpt lat="15.034833" lon="120.236778"> +<ele>134.241211</ele> +<time>2004-09-08T08:46:43Z</time> +</trkpt> +<trkpt lat="15.035090" lon="120.236928"> +<ele>135.683105</ele> +<time>2004-09-08T08:47:40Z</time> +</trkpt> +<trkpt lat="15.035133" lon="120.237014"> +<ele>136.644653</ele> +<time>2004-09-08T08:47:59Z</time> +</trkpt> +<trkpt lat="15.035133" lon="120.237014"> +<ele>135.202515</ele> +<time>2004-09-08T08:48:15Z</time> +</trkpt> +<trkpt lat="15.035176" lon="120.237207"> +<ele>137.125244</ele> +<time>2004-09-08T08:48:35Z</time> +</trkpt> +<trkpt lat="15.035155" lon="120.237207"> +<ele>136.644653</ele> +<time>2004-09-08T08:49:29Z</time> +</trkpt> +<trkpt lat="15.035155" lon="120.237186"> +<ele>135.683105</ele> +<time>2004-09-08T08:49:31Z</time> +</trkpt> +<trkpt lat="15.035112" lon="120.237143"> +<ele>134.241211</ele> +<time>2004-09-08T08:49:36Z</time> +</trkpt> +<trkpt lat="15.034854" lon="120.236864"> +<ele>127.031372</ele> +<time>2004-09-08T09:46:50Z</time> +</trkpt> +<trkpt lat="15.034811" lon="120.236864"> +<ele>124.147339</ele> +<time>2004-09-08T09:47:29Z</time> +</trkpt> +<trkpt lat="15.034811" lon="120.236864"> +<ele>120.302124</ele> +<time>2004-09-08T09:47:33Z</time> +</trkpt> +<trkpt lat="15.034811" lon="120.236864"> +<ele>116.937500</ele> +<time>2004-09-08T09:47:39Z</time> +</trkpt> +<trkpt lat="15.034790" lon="120.236864"> +<ele>114.053589</ele> +<time>2004-09-08T09:47:54Z</time> +</trkpt> +<trkpt lat="15.034726" lon="120.236886"> +<ele>116.937500</ele> +<time>2004-09-08T09:50:48Z</time> +</trkpt> +<trkpt lat="15.034769" lon="120.237293"> +<ele>108.766235</ele> +<time>2004-09-08T11:47:25Z</time> +</trkpt> +<trkpt lat="15.034769" lon="120.237143"> +<ele>106.843628</ele> +<time>2004-09-08T11:48:25Z</time> +</trkpt> +<trkpt lat="15.037408" lon="120.236907"> +<ele>119.821411</ele> +<time>2004-09-09T01:02:30Z</time> +</trkpt> +<trkpt lat="15.037322" lon="120.236564"> +<ele>116.937500</ele> +<time>2004-09-09T01:03:19Z</time> +</trkpt> +<trkpt lat="15.037301" lon="120.236542"> +<ele>119.821411</ele> +<time>2004-09-09T01:05:55Z</time> +</trkpt> +<trkpt lat="15.037386" lon="120.236542"> +<ele>121.263550</ele> +<time>2004-09-09T01:07:13Z</time> +</trkpt> +<trkpt lat="15.037987" lon="120.236993"> +<ele>128.473389</ele> +<time>2004-09-09T01:08:39Z</time> +</trkpt> +<trkpt lat="15.038223" lon="120.237036"> +<ele>132.318604</ele> +<time>2004-09-09T01:09:29Z</time> +</trkpt> +<trkpt lat="15.038331" lon="120.237207"> +<ele>133.279907</ele> +<time>2004-09-09T01:09:49Z</time> +</trkpt> +<trkpt lat="15.038416" lon="120.237422"> +<ele>135.683105</ele> +<time>2004-09-09T01:10:20Z</time> +</trkpt> +<trkpt lat="15.038331" lon="120.237443"> +<ele>137.125244</ele> +<time>2004-09-09T01:11:08Z</time> +</trkpt> +<trkpt lat="15.038438" lon="120.237551"> +<ele>138.567261</ele> +<time>2004-09-09T01:11:26Z</time> +</trkpt> +<trkpt lat="15.038481" lon="120.237658"> +<ele>140.970459</ele> +<time>2004-09-09T01:11:46Z</time> +</trkpt> +<trkpt lat="15.038674" lon="120.238087"> +<ele>143.854370</ele> +<time>2004-09-09T01:12:53Z</time> +</trkpt> +<trkpt lat="15.038910" lon="120.238709"> +<ele>147.699707</ele> +<time>2004-09-09T01:14:41Z</time> +</trkpt> +<trkpt lat="15.039103" lon="120.239267"> +<ele>149.622314</ele> +<time>2004-09-09T01:17:19Z</time> +</trkpt> +<trkpt lat="15.039232" lon="120.239482"> +<ele>151.064209</ele> +<time>2004-09-09T01:17:59Z</time> +</trkpt> +<trkpt lat="15.039275" lon="120.239503"> +<ele>151.544922</ele> +<time>2004-09-09T01:18:04Z</time> +</trkpt> +<trkpt lat="15.039382" lon="120.239654"> +<ele>152.986938</ele> +<time>2004-09-09T01:18:27Z</time> +</trkpt> +<trkpt lat="15.039768" lon="120.240061"> +<ele>152.986938</ele> +<time>2004-09-09T01:19:29Z</time> +</trkpt> +<trkpt lat="15.039897" lon="120.240319"> +<ele>153.467651</ele> +<time>2004-09-09T01:19:55Z</time> +</trkpt> +<trkpt lat="15.039918" lon="120.240490"> +<ele>153.948364</ele> +<time>2004-09-09T01:20:16Z</time> +</trkpt> +<trkpt lat="15.039961" lon="120.240662"> +<ele>155.390259</ele> +<time>2004-09-09T01:20:37Z</time> +</trkpt> +<trkpt lat="15.040133" lon="120.241091"> +<ele>155.390259</ele> +<time>2004-09-09T01:21:21Z</time> +</trkpt> +<trkpt lat="15.040326" lon="120.241477"> +<ele>158.274170</ele> +<time>2004-09-09T01:22:26Z</time> +</trkpt> +<trkpt lat="15.040412" lon="120.241606"> +<ele>159.235474</ele> +<time>2004-09-09T01:22:44Z</time> +</trkpt> +<trkpt lat="15.040519" lon="120.241714"> +<ele>159.716187</ele> +<time>2004-09-09T01:23:03Z</time> +</trkpt> +<trkpt lat="15.040519" lon="120.241756"> +<ele>159.716187</ele> +<time>2004-09-09T01:23:08Z</time> +</trkpt> +<trkpt lat="15.040584" lon="120.241842"> +<ele>160.196899</ele> +<time>2004-09-09T01:23:18Z</time> +</trkpt> +<trkpt lat="15.040755" lon="120.242379"> +<ele>161.638916</ele> +<time>2004-09-09T01:24:16Z</time> +</trkpt> +<trkpt lat="15.041056" lon="120.243108"> +<ele>162.600098</ele> +<time>2004-09-09T01:25:28Z</time> +</trkpt> +<trkpt lat="15.041249" lon="120.243409"> +<ele>161.638916</ele> +<time>2004-09-09T01:26:03Z</time> +</trkpt> +<trkpt lat="15.041292" lon="120.243537"> +<ele>161.638916</ele> +<time>2004-09-09T01:26:42Z</time> +</trkpt> +<trkpt lat="15.041420" lon="120.244009"> +<ele>162.600098</ele> +<time>2004-09-09T01:27:35Z</time> +</trkpt> +<trkpt lat="15.041807" lon="120.245061"> +<ele>167.887329</ele> +<time>2004-09-09T01:29:46Z</time> +</trkpt> +<trkpt lat="15.042279" lon="120.245941"> +<ele>171.252075</ele> +<time>2004-09-09T01:31:31Z</time> +</trkpt> +<trkpt lat="15.042279" lon="120.245962"> +<ele>170.290649</ele> +<time>2004-09-09T01:31:46Z</time> +</trkpt> +<trkpt lat="15.042408" lon="120.246327"> +<ele>173.174683</ele> +<time>2004-09-09T01:33:59Z</time> +</trkpt> +<trkpt lat="15.042472" lon="120.246863"> +<ele>174.616577</ele> +<time>2004-09-09T01:34:56Z</time> +</trkpt> +<trkpt lat="15.042515" lon="120.246992"> +<ele>174.616577</ele> +<time>2004-09-09T01:35:12Z</time> +</trkpt> +<trkpt lat="15.042579" lon="120.247314"> +<ele>176.539307</ele> +<time>2004-09-09T01:36:56Z</time> +</trkpt> +<trkpt lat="15.042622" lon="120.248365"> +<ele>180.384521</ele> +<time>2004-09-09T01:38:29Z</time> +</trkpt> +<trkpt lat="15.042622" lon="120.248516"> +<ele>179.903809</ele> +<time>2004-09-09T01:38:47Z</time> +</trkpt> +<trkpt lat="15.042751" lon="120.249267"> +<ele>182.307129</ele> +<time>2004-09-09T01:40:00Z</time> +</trkpt> +<trkpt lat="15.042794" lon="120.249438"> +<ele>184.229858</ele> +<time>2004-09-09T01:40:17Z</time> +</trkpt> +<trkpt lat="15.042837" lon="120.249653"> +<ele>183.749023</ele> +<time>2004-09-09T01:40:37Z</time> +</trkpt> +<trkpt lat="15.043008" lon="120.251262"> +<ele>189.997681</ele> +<time>2004-09-09T01:43:08Z</time> +</trkpt> +<trkpt lat="15.043094" lon="120.252550"> +<ele>197.207520</ele> +<time>2004-09-09T01:45:04Z</time> +</trkpt> +<trkpt lat="15.043287" lon="120.254116"> +<ele>202.975464</ele> +<time>2004-09-09T01:48:23Z</time> +</trkpt> +<trkpt lat="15.044446" lon="120.254309"> +<ele>203.936890</ele> +<time>2004-09-09T01:52:20Z</time> +</trkpt> +<trkpt lat="15.043266" lon="120.254395"> +<ele>203.936890</ele> +<time>2004-09-09T01:52:27Z</time> +</trkpt> +<trkpt lat="15.043287" lon="120.254674"> +<ele>203.936890</ele> +<time>2004-09-09T01:52:49Z</time> +</trkpt> +<trkpt lat="15.043309" lon="120.254931"> +<ele>204.898071</ele> +<time>2004-09-09T01:53:10Z</time> +</trkpt> +<trkpt lat="15.043352" lon="120.255082"> +<ele>206.340088</ele> +<time>2004-09-09T01:53:27Z</time> +</trkpt> +<trkpt lat="15.043416" lon="120.255103"> +<ele>206.340088</ele> +<time>2004-09-09T01:53:39Z</time> +</trkpt> +<trkpt lat="15.043416" lon="120.255103"> +<ele>202.014282</ele> +<time>2004-09-09T01:53:52Z</time> +</trkpt> +<trkpt lat="15.043437" lon="120.255103"> +<ele>205.859497</ele> +<time>2004-09-09T01:53:54Z</time> +</trkpt> +<trkpt lat="15.043437" lon="120.255082"> +<ele>206.340088</ele> +<time>2004-09-09T01:53:55Z</time> +</trkpt> +<trkpt lat="15.043652" lon="120.255039"> +<ele>205.859497</ele> +<time>2004-09-09T01:54:15Z</time> +</trkpt> +<trkpt lat="15.044425" lon="120.254910"> +<ele>206.820679</ele> +<time>2004-09-09T01:55:24Z</time> +</trkpt> +<trkpt lat="15.044682" lon="120.254889"> +<ele>210.185425</ele> +<time>2004-09-09T01:55:52Z</time> +</trkpt> +<trkpt lat="15.044682" lon="120.254910"> +<ele>210.185425</ele> +<time>2004-09-09T01:56:23Z</time> +</trkpt> +<trkpt lat="15.044639" lon="120.254910"> +<ele>209.704834</ele> +<time>2004-09-09T01:56:51Z</time> +</trkpt> +</trkseg> +</trk> +<rte> + <name>10-SEP-04</name> +<number>4</number> +<rtept lat="15.044639" lon="120.254910"> +<ele>209.704834</ele> +<time>2004-09-09T01:57:08Z</time> +</rtept> +<rtept lat="15.044446" lon="120.254910"> +<ele>206.340088</ele> +<time>2004-09-09T01:57:48Z</time> +</rtept> +<rtept lat="15.044231" lon="120.254931"> +<ele>206.340088</ele> +<time>2004-09-09T01:58:07Z</time> +</rtept> +<rtept lat="15.043373" lon="120.255103"> +<ele>207.782104</ele> +<time>2004-09-09T01:59:24Z</time> +</rtept> +<rtept lat="15.043330" lon="120.255060"> +<ele>206.820679</ele> +<time>2004-09-09T01:59:31Z</time> +</rtept> +<rtept lat="15.043309" lon="120.254738"> +<ele>205.859497</ele> +<time>2004-09-09T01:59:57Z</time> +</rtept> +<rtept lat="15.043244" lon="120.254374"> +<ele>206.340088</ele> +<time>2004-09-09T02:00:51Z</time> +</rtept> +<rtept lat="15.043180" lon="120.253386"> +<ele>203.456177</ele> +<time>2004-09-09T02:02:25Z</time> +</rtept> +<rtept lat="15.043094" lon="120.253150"> +<ele>202.975464</ele> +<time>2004-09-09T02:02:45Z</time> +</rtept> +<rtept lat="15.043094" lon="120.252850"> +<ele>201.533569</ele> +<time>2004-09-09T02:03:07Z</time> +</rtept> +<rtept lat="15.043051" lon="120.252550"> +<ele>201.533569</ele> +<time>2004-09-09T02:03:29Z</time> +</rtept> +<rtept lat="15.043051" lon="120.252228"> +<ele>199.610840</ele> +<time>2004-09-09T02:03:53Z</time> +</rtept> +<rtept lat="15.042944" lon="120.251219"> +<ele>195.765625</ele> +<time>2004-09-09T02:05:15Z</time> +</rtept> +<rtept lat="15.042880" lon="120.250597"> +<ele>194.323730</ele> +<time>2004-09-09T02:06:13Z</time> +</rtept> +<rtept lat="15.042880" lon="120.250340"> +<ele>193.843018</ele> +<time>2004-09-09T02:06:34Z</time> +</rtept> +<rtept lat="15.042815" lon="120.249782"> +<ele>190.478394</ele> +<time>2004-09-09T02:07:16Z</time> +</rtept> +<rtept lat="15.042622" lon="120.248687"> +<ele>186.152466</ele> +<time>2004-09-09T02:08:40Z</time> +</rtept> +<rtept lat="15.042579" lon="120.248451"> +<ele>185.671753</ele> +<time>2004-09-09T02:08:59Z</time> +</rtept> +<rtept lat="15.042558" lon="120.247850"> +<ele>183.749023</ele> +<time>2004-09-09T02:09:44Z</time> +</rtept> +<rtept lat="15.042515" lon="120.247207"> +<ele>182.787842</ele> +<time>2004-09-09T02:10:33Z</time> +</rtept> +<rtept lat="15.042365" lon="120.246348"> +<ele>181.345825</ele> +<time>2004-09-09T02:11:44Z</time> +</rtept> +<rtept lat="15.042107" lon="120.245705"> +<ele>179.423218</ele> +<time>2004-09-09T02:12:40Z</time> +</rtept> +<rtept lat="15.042000" lon="120.245490"> +<ele>178.461914</ele> +<time>2004-09-09T02:12:59Z</time> +</rtept> +<rtept lat="15.041893" lon="120.245275"> +<ele>177.981201</ele> +<time>2004-09-09T02:13:18Z</time> +</rtept> +<rtept lat="15.041764" lon="120.245061"> +<ele>176.539307</ele> +<time>2004-09-09T02:13:38Z</time> +</rtept> +<rtept lat="15.041635" lon="120.244761"> +<ele>175.577881</ele> +<time>2004-09-09T02:14:01Z</time> +</rtept> +<rtept lat="15.041399" lon="120.244117"> +<ele>175.577881</ele> +<time>2004-09-09T02:15:03Z</time> +</rtept> +<rtept lat="15.041206" lon="120.243430"> +<ele>175.577881</ele> +<time>2004-09-09T02:16:02Z</time> +</rtept> +<rtept lat="15.041034" lon="120.243173"> +<ele>175.577881</ele> +<time>2004-09-09T02:16:24Z</time> +</rtept> +<rtept lat="15.040863" lon="120.242808"> +<ele>174.616577</ele> +<time>2004-09-09T02:17:06Z</time> +</rtept> +<rtept lat="15.040798" lon="120.242572"> +<ele>174.135864</ele> +<time>2004-09-09T02:17:26Z</time> +</rtept> +<rtept lat="15.040691" lon="120.242336"> +<ele>174.135864</ele> +<time>2004-09-09T02:17:50Z</time> +</rtept> +<rtept lat="15.040627" lon="120.242164"> +<ele>173.655273</ele> +<time>2004-09-09T02:18:23Z</time> +</rtept> +<rtept lat="15.040562" lon="120.241885"> +<ele>173.174683</ele> +<time>2004-09-09T02:18:45Z</time> +</rtept> +<rtept lat="15.040412" lon="120.241649"> +<ele>173.655273</ele> +<time>2004-09-09T02:19:07Z</time> +</rtept> +<rtept lat="15.040219" lon="120.241306"> +<ele>172.213257</ele> +<time>2004-09-09T02:19:40Z</time> +</rtept> +<rtept lat="15.040240" lon="120.241263"> +<ele>171.732666</ele> +<time>2004-09-09T02:25:56Z</time> +</rtept> +<rtept lat="15.040219" lon="120.241263"> +<ele>171.252075</ele> +<time>2004-09-09T02:26:48Z</time> +</rtept> +<rtept lat="15.040219" lon="120.241241"> +<ele>172.693970</ele> +<time>2004-09-09T02:27:16Z</time> +</rtept> +<rtept lat="15.040305" lon="120.241241"> +<ele>172.213257</ele> +<time>2004-09-09T02:27:32Z</time> +</rtept> +<rtept lat="15.040176" lon="120.241263"> +<ele>171.252075</ele> +<time>2004-09-09T02:30:30Z</time> +</rtept> +<rtept lat="15.040176" lon="120.241220"> +<ele>170.771362</ele> +<time>2004-09-09T02:31:16Z</time> +</rtept> +<rtept lat="15.040047" lon="120.240963"> +<ele>169.810059</ele> +<time>2004-09-09T02:31:39Z</time> +</rtept> +<rtept lat="15.039940" lon="120.240748"> +<ele>170.290649</ele> +<time>2004-09-09T02:31:59Z</time> +</rtept> +<rtept lat="15.039768" lon="120.240233"> +<ele>169.810059</ele> +<time>2004-09-09T02:32:44Z</time> +</rtept> +<rtept lat="15.039575" lon="120.239954"> +<ele>169.329468</ele> +<time>2004-09-09T02:33:10Z</time> +</rtept> +<rtept lat="15.039339" lon="120.239739"> +<ele>168.368042</ele> +<time>2004-09-09T02:33:34Z</time> +</rtept> +<rtept lat="15.039189" lon="120.239654"> +<ele>168.368042</ele> +<time>2004-09-09T02:34:06Z</time> +</rtept> +<rtept lat="15.038867" lon="120.239525"> +<ele>164.522705</ele> +<time>2004-09-09T02:34:40Z</time> +</rtept> +<rtept lat="15.038416" lon="120.239267"> +<ele>162.119507</ele> +<time>2004-09-09T02:35:26Z</time> +</rtept> +<rtept lat="15.038202" lon="120.239096"> +<ele>160.677490</ele> +<time>2004-09-09T02:35:49Z</time> +</rtept> +<rtept lat="15.038009" lon="120.238881"> +<ele>160.677490</ele> +<time>2004-09-09T02:36:11Z</time> +</rtept> +<rtept lat="15.037751" lon="120.238602"> +<ele>158.274170</ele> +<time>2004-09-09T02:36:38Z</time> +</rtept> +<rtept lat="15.037537" lon="120.238409"> +<ele>157.793579</ele> +<time>2004-09-09T02:36:59Z</time> +</rtept> +<rtept lat="15.036936" lon="120.238109"> +<ele>152.506348</ele> +<time>2004-09-09T02:37:52Z</time> +</rtept> +<rtept lat="15.036571" lon="120.237894"> +<ele>152.025757</ele> +<time>2004-09-09T02:38:44Z</time> +</rtept> +<rtept lat="15.036399" lon="120.237722"> +<ele>148.661011</ele> +<time>2004-09-09T02:39:08Z</time> +</rtept> +<rtept lat="15.036056" lon="120.237486"> +<ele>147.218994</ele> +<time>2004-09-09T02:39:40Z</time> +</rtept> +<rtept lat="15.035348" lon="120.237379"> +<ele>138.567261</ele> +<time>2004-09-09T02:40:39Z</time> +</rtept> +<rtept lat="15.035241" lon="120.237207"> +<ele>136.644653</ele> +<time>2004-09-09T02:41:17Z</time> +</rtept> +<rtept lat="15.035241" lon="120.237207"> +<ele>133.279907</ele> +<time>2004-09-09T02:41:20Z</time> +</rtept> +<rtept lat="15.035241" lon="120.237207"> +<ele>137.605835</ele> +<time>2004-09-09T02:41:21Z</time> +</rtept> +<rtept lat="15.035241" lon="120.237207"> +<ele>134.241211</ele> +<time>2004-09-09T02:41:22Z</time> +</rtept> +<rtept lat="15.035241" lon="120.237186"> +<ele>136.644653</ele> +<time>2004-09-09T02:41:36Z</time> +</rtept> +<rtept lat="15.035563" lon="120.236864"> +<ele>135.683105</ele> +<time>2004-09-09T02:42:31Z</time> +</rtept> +<rtept lat="15.035756" lon="120.236499"> +<ele>132.799316</ele> +<time>2004-09-09T02:43:04Z</time> +</rtept> +<rtept lat="15.036013" lon="120.235684"> +<ele>129.915283</ele> +<time>2004-09-09T02:44:37Z</time> +</rtept> +<rtept lat="15.036056" lon="120.235620"> +<ele>130.395996</ele> +<time>2004-09-09T02:44:52Z</time> +</rtept> +<rtept lat="15.036035" lon="120.235662"> +<ele>131.357300</ele> +<time>2004-09-09T02:44:58Z</time> +</rtept> +<rtept lat="15.035992" lon="120.235791"> +<ele>129.434692</ele> +<time>2004-09-09T02:45:12Z</time> +</rtept> +<rtept lat="15.036013" lon="120.235813"> +<ele>129.434692</ele> +<time>2004-09-09T02:45:17Z</time> +</rtept> +<rtept lat="15.038309" lon="120.235984"> +<ele>147.699707</ele> +<time>2004-09-09T03:40:20Z</time> +</rtept> +<rtept lat="15.037258" lon="120.236478"> +<ele>144.335205</ele> +<time>2004-09-09T03:41:06Z</time> +</rtept> +<rtept lat="15.037000" lon="120.236435"> +<ele>139.047852</ele> +<time>2004-09-09T03:41:50Z</time> +</rtept> +<rtept lat="15.037000" lon="120.236413"> +<ele>139.528442</ele> +<time>2004-09-09T03:42:03Z</time> +</rtept> +<rtept lat="15.036936" lon="120.236413"> +<ele>140.009155</ele> +<time>2004-09-09T03:42:24Z</time> +</rtept> +<rtept lat="15.036786" lon="120.236371"> +<ele>139.528442</ele> +<time>2004-09-09T03:42:39Z</time> +</rtept> +<rtept lat="15.036635" lon="120.236349"> +<ele>140.970459</ele> +<time>2004-09-09T03:42:55Z</time> +</rtept> +<rtept lat="15.036592" lon="120.236349"> +<ele>139.528442</ele> +<time>2004-09-09T03:43:14Z</time> +</rtept> +<rtept lat="15.036592" lon="120.236371"> +<ele>141.451050</ele> +<time>2004-09-09T03:43:28Z</time> +</rtept> +<rtept lat="15.036378" lon="120.236242"> +<ele>135.202515</ele> +<time>2004-09-09T03:44:01Z</time> +</rtept> +<rtept lat="15.036378" lon="120.236242"> +<ele>133.279907</ele> +<time>2004-09-09T03:44:06Z</time> +</rtept> +<rtept lat="15.036356" lon="120.236177"> +<ele>132.318604</ele> +<time>2004-09-09T03:44:16Z</time> +</rtept> +<rtept lat="15.036249" lon="120.236135"> +<ele>135.202515</ele> +<time>2004-09-09T03:44:41Z</time> +</rtept> +<rtept lat="15.036249" lon="120.236199"> +<ele>136.644653</ele> +<time>2004-09-09T03:45:01Z</time> +</rtept> +<rtept lat="15.036206" lon="120.236263"> +<ele>139.528442</ele> +<time>2004-09-09T03:45:40Z</time> +</rtept> +<rtept lat="15.036206" lon="120.236328"> +<ele>142.893066</ele> +<time>2004-09-09T03:46:08Z</time> +</rtept> +<rtept lat="15.036228" lon="120.236392"> +<ele>141.931763</ele> +<time>2004-09-09T03:46:26Z</time> +</rtept> +<rtept lat="15.036271" lon="120.236392"> +<ele>140.970459</ele> +<time>2004-09-09T03:46:38Z</time> +</rtept> +<rtept lat="15.036271" lon="120.236413"> +<ele>140.489868</ele> +<time>2004-09-09T03:46:43Z</time> +</rtept> +<rtept lat="15.036249" lon="120.236456"> +<ele>141.451050</ele> +<time>2004-09-09T03:47:02Z</time> +</rtept> +<rtept lat="15.036206" lon="120.236456"> +<ele>141.451050</ele> +<time>2004-09-09T03:47:21Z</time> +</rtept> +<rtept lat="15.036206" lon="120.236478"> +<ele>141.931763</ele> +<time>2004-09-09T03:47:22Z</time> +</rtept> +<rtept lat="15.036077" lon="120.236499"> +<ele>141.931763</ele> +<time>2004-09-09T03:47:43Z</time> +</rtept> +<rtept lat="15.035927" lon="120.236542"> +<ele>136.163940</ele> +<time>2004-09-09T03:48:13Z</time> +</rtept> +<rtept lat="15.035691" lon="120.236542"> +<ele>133.279907</ele> +<time>2004-09-09T03:48:35Z</time> +</rtept> +<rtept lat="15.035434" lon="120.236456"> +<ele>130.876709</ele> +<time>2004-09-09T03:49:25Z</time> +</rtept> +<rtept lat="15.035348" lon="120.236499"> +<ele>131.357300</ele> +<time>2004-09-09T03:49:42Z</time> +</rtept> +<rtept lat="15.035219" lon="120.236499"> +<ele>130.876709</ele> +<time>2004-09-09T03:50:05Z</time> +</rtept> +<rtept lat="15.035219" lon="120.236478"> +<ele>130.395996</ele> +<time>2004-09-09T03:50:59Z</time> +</rtept> +<rtept lat="15.034747" lon="120.235770"> +<ele>130.876709</ele> +<time>2004-09-09T03:51:15Z</time> +</rtept> +<rtept lat="15.034897" lon="120.236521"> +<ele>130.876709</ele> +<time>2004-09-09T03:51:18Z</time> +</rtept> +<rtept lat="15.034919" lon="120.237143"> +<ele>134.241211</ele> +<time>2004-09-09T03:52:59Z</time> +</rtept> +<rtept lat="15.034897" lon="120.237036"> +<ele>134.241211</ele> +<time>2004-09-09T03:53:21Z</time> +</rtept> +<rtept lat="15.034811" lon="120.235405"> +<ele>123.666748</ele> +<time>2004-09-09T23:03:55Z</time> +</rtept> +<rtept lat="15.034854" lon="120.235384"> +<ele>120.782837</ele> +<time>2004-09-09T23:04:11Z</time> +</rtept> +<rtept lat="15.034811" lon="120.235426"> +<ele>117.418213</ele> +<time>2004-09-09T23:04:18Z</time> +</rtept> +<rtept lat="15.034726" lon="120.235405"> +<ele>115.014893</ele> +<time>2004-09-09T23:04:24Z</time> +</rtept> +<rtept lat="15.034575" lon="120.235362"> +<ele>112.611572</ele> +<time>2004-09-09T23:04:40Z</time> +</rtept> +<rtept lat="15.034533" lon="120.235298"> +<ele>113.092285</ele> +<time>2004-09-09T23:04:48Z</time> +</rtept> +<rtept lat="15.034468" lon="120.235019"> +<ele>112.611572</ele> +<time>2004-09-09T23:05:12Z</time> +</rtept> +<rtept lat="15.034339" lon="120.234783"> +<ele>113.572998</ele> +<time>2004-09-09T23:05:30Z</time> +</rtept> +<rtept lat="15.034168" lon="120.234590"> +<ele>115.014893</ele> +<time>2004-09-09T23:05:51Z</time> +</rtept> +<rtept lat="15.034039" lon="120.234461"> +<ele>115.014893</ele> +<time>2004-09-09T23:06:05Z</time> +</rtept> +<rtept lat="15.033846" lon="120.233989"> +<ele>113.572998</ele> +<time>2004-09-09T23:06:45Z</time> +</rtept> +<rtept lat="15.033395" lon="120.233603"> +<ele>112.611572</ele> +<time>2004-09-09T23:07:30Z</time> +</rtept> +<rtept lat="15.033288" lon="120.233409"> +<ele>111.650269</ele> +<time>2004-09-09T23:07:47Z</time> +</rtept> +<rtept lat="15.033159" lon="120.233173"> +<ele>111.650269</ele> +<time>2004-09-09T23:08:07Z</time> +</rtept> +<rtept lat="15.033138" lon="120.232766"> +<ele>112.130981</ele> +<time>2004-09-09T23:08:40Z</time> +</rtept> +<rtept lat="15.032988" lon="120.232229"> +<ele>110.688843</ele> +<time>2004-09-09T23:09:20Z</time> +</rtept> +<rtept lat="15.032730" lon="120.231693"> +<ele>109.246948</ele> +<time>2004-09-09T23:10:03Z</time> +</rtept> +<rtept lat="15.032258" lon="120.231113"> +<ele>107.324341</ele> +<time>2004-09-09T23:11:04Z</time> +</rtept> +<rtept lat="15.032001" lon="120.230727"> +<ele>104.921021</ele> +<time>2004-09-09T23:11:43Z</time> +</rtept> +<rtept lat="15.031657" lon="120.230405"> +<ele>102.517700</ele> +<time>2004-09-09T23:12:21Z</time> +</rtept> +<rtept lat="15.031507" lon="120.230212"> +<ele>102.037109</ele> +<time>2004-09-09T23:12:40Z</time> +</rtept> +<rtept lat="15.031357" lon="120.230105"> +<ele>102.517700</ele> +<time>2004-09-09T23:12:56Z</time> +</rtept> +<rtept lat="15.030606" lon="120.229740"> +<ele>100.595093</ele> +<time>2004-09-09T23:14:06Z</time> +</rtept> +<rtept lat="15.029833" lon="120.229611"> +<ele>101.556396</ele> +<time>2004-09-09T23:15:16Z</time> +</rtept> +<rtept lat="15.029318" lon="120.229418"> +<ele>100.114502</ele> +<time>2004-09-09T23:15:56Z</time> +</rtept> +<rtept lat="15.029104" lon="120.229397"> +<ele>99.153076</ele> +<time>2004-09-09T23:16:15Z</time> +</rtept> +<rtept lat="15.028782" lon="120.229247"> +<ele>99.633789</ele> +<time>2004-09-09T23:16:44Z</time> +</rtept> +<rtept lat="15.028546" lon="120.229204"> +<ele>98.672485</ele> +<time>2004-09-09T23:17:01Z</time> +</rtept> +<rtept lat="15.028288" lon="120.229268"> +<ele>98.191895</ele> +<time>2004-09-09T23:17:21Z</time> +</rtept> +<rtept lat="15.028245" lon="120.229268"> +<ele>97.711182</ele> +<time>2004-09-09T23:17:26Z</time> +</rtept> +<rtept lat="15.028181" lon="120.229225"> +<ele>97.230469</ele> +<time>2004-09-09T23:17:41Z</time> +</rtept> +<rtept lat="15.028074" lon="120.229096"> +<ele>97.711182</ele> +<time>2004-09-09T23:18:08Z</time> +</rtept> +<rtept lat="15.027966" lon="120.229053"> +<ele>97.230469</ele> +<time>2004-09-09T23:18:22Z</time> +</rtept> +<rtept lat="15.027838" lon="120.229011"> +<ele>96.749878</ele> +<time>2004-09-09T23:18:33Z</time> +</rtept> +<rtept lat="15.027494" lon="120.228989"> +<ele>96.749878</ele> +<time>2004-09-09T23:19:09Z</time> +</rtept> +<rtept lat="15.027344" lon="120.228946"> +<ele>96.269287</ele> +<time>2004-09-09T23:19:20Z</time> +</rtept> +<rtept lat="15.027194" lon="120.228732"> +<ele>96.269287</ele> +<time>2004-09-09T23:19:40Z</time> +</rtept> +<rtept lat="15.026979" lon="120.228624"> +<ele>96.749878</ele> +<time>2004-09-09T23:20:00Z</time> +</rtept> +<rtept lat="15.026743" lon="120.228646"> +<ele>95.307739</ele> +<time>2004-09-09T23:20:29Z</time> +</rtept> +<rtept lat="15.026507" lon="120.228624"> +<ele>93.865845</ele> +<time>2004-09-09T23:21:03Z</time> +</rtept> +<rtept lat="15.026164" lon="120.228517"> +<ele>94.827148</ele> +<time>2004-09-09T23:21:49Z</time> +</rtept> +<rtept lat="15.025692" lon="120.228496"> +<ele>94.346558</ele> +<time>2004-09-09T23:22:23Z</time> +</rtept> +<rtept lat="15.025198" lon="120.228345"> +<ele>93.865845</ele> +<time>2004-09-09T23:23:01Z</time> +</rtept> +<rtept lat="15.024984" lon="120.228324"> +<ele>94.346558</ele> +<time>2004-09-09T23:23:17Z</time> +</rtept> +<rtept lat="15.024705" lon="120.228260"> +<ele>93.385132</ele> +<time>2004-09-09T23:23:38Z</time> +</rtept> +<rtept lat="15.024126" lon="120.228002"> +<ele>93.865845</ele> +<time>2004-09-09T23:24:22Z</time> +</rtept> +<rtept lat="15.024061" lon="120.227959"> +<ele>94.346558</ele> +<time>2004-09-09T23:24:28Z</time> +</rtept> +<rtept lat="15.023997" lon="120.227852"> +<ele>93.865845</ele> +<time>2004-09-09T23:24:37Z</time> +</rtept> +<rtept lat="15.023718" lon="120.227787"> +<ele>93.385132</ele> +<time>2004-09-09T23:24:59Z</time> +</rtept> +<rtept lat="15.023460" lon="120.227787"> +<ele>92.904541</ele> +<time>2004-09-09T23:25:18Z</time> +</rtept> +<rtept lat="15.023332" lon="120.227787"> +<ele>92.904541</ele> +<time>2004-09-09T23:25:28Z</time> +</rtept> +<rtept lat="15.023053" lon="120.227723"> +<ele>92.904541</ele> +<time>2004-09-09T23:25:49Z</time> +</rtept> +<rtept lat="15.022838" lon="120.227616"> +<ele>91.943237</ele> +<time>2004-09-09T23:26:07Z</time> +</rtept> +<rtept lat="15.022345" lon="120.227230"> +<ele>90.501343</ele> +<time>2004-09-09T23:26:51Z</time> +</rtept> +<rtept lat="15.021808" lon="120.226994"> +<ele>90.020630</ele> +<time>2004-09-09T23:27:34Z</time> +</rtept> +<rtept lat="15.021508" lon="120.226843"> +<ele>89.059326</ele> +<time>2004-09-09T23:27:57Z</time> +</rtept> +<rtept lat="15.021207" lon="120.226758"> +<ele>90.020630</ele> +<time>2004-09-09T23:28:19Z</time> +</rtept> +<rtept lat="15.020885" lon="120.226307"> +<ele>88.578735</ele> +<time>2004-09-09T23:29:02Z</time> +</rtept> +<rtept lat="15.020757" lon="120.226200"> +<ele>90.020630</ele> +<time>2004-09-09T23:29:16Z</time> +</rtept> +<rtept lat="15.020392" lon="120.225964"> +<ele>88.578735</ele> +<time>2004-09-09T23:29:51Z</time> +</rtept> +<rtept lat="15.020263" lon="120.225770"> +<ele>88.578735</ele> +<time>2004-09-09T23:30:21Z</time> +</rtept> +<rtept lat="15.019898" lon="120.225384"> +<ele>86.656006</ele> +<time>2004-09-09T23:31:00Z</time> +</rtept> +<rtept lat="15.019598" lon="120.225148"> +<ele>87.136597</ele> +<time>2004-09-09T23:31:38Z</time> +</rtept> +<rtept lat="15.019362" lon="120.224891"> +<ele>87.617188</ele> +<time>2004-09-09T23:32:28Z</time> +</rtept> +<rtept lat="15.019104" lon="120.224805"> +<ele>88.098022</ele> +<time>2004-09-09T23:33:04Z</time> +</rtept> +<rtept lat="15.018568" lon="120.224719"> +<ele>87.136597</ele> +<time>2004-09-09T23:33:44Z</time> +</rtept> +<rtept lat="15.018375" lon="120.224633"> +<ele>87.136597</ele> +<time>2004-09-09T23:34:00Z</time> +</rtept> +<rtept lat="15.018311" lon="120.224633"> +<ele>86.175293</ele> +<time>2004-09-09T23:34:05Z</time> +</rtept> +<rtept lat="15.017774" lon="120.224655"> +<ele>89.059326</ele> +<time>2004-09-09T23:34:46Z</time> +</rtept> +<rtept lat="15.017409" lon="120.224504"> +<ele>86.175293</ele> +<time>2004-09-09T23:35:19Z</time> +</rtept> +<rtept lat="15.016787" lon="120.224462"> +<ele>86.175293</ele> +<time>2004-09-09T23:36:10Z</time> +</rtept> +<rtept lat="15.016615" lon="120.224419"> +<ele>85.213989</ele> +<time>2004-09-09T23:36:59Z</time> +</rtept> +<rtept lat="15.016315" lon="120.224097"> +<ele>84.733398</ele> +<time>2004-09-09T23:37:39Z</time> +</rtept> +<rtept lat="15.015972" lon="120.223818"> +<ele>83.771973</ele> +<time>2004-09-09T23:38:14Z</time> +</rtept> +<rtept lat="15.015736" lon="120.223689"> +<ele>83.771973</ele> +<time>2004-09-09T23:38:46Z</time> +</rtept> +<rtept lat="15.015564" lon="120.223625"> +<ele>84.733398</ele> +<time>2004-09-09T23:39:31Z</time> +</rtept> +<rtept lat="15.015500" lon="120.223625"> +<ele>84.252686</ele> +<time>2004-09-09T23:39:46Z</time> +</rtept> +<rtept lat="15.015435" lon="120.223582"> +<ele>84.733398</ele> +<time>2004-09-09T23:39:58Z</time> +</rtept> +<rtept lat="15.015113" lon="120.223346"> +<ele>84.733398</ele> +<time>2004-09-09T23:40:35Z</time> +</rtept> +<rtept lat="15.015006" lon="120.223174"> +<ele>85.694580</ele> +<time>2004-09-09T23:40:51Z</time> +</rtept> +<rtept lat="15.014813" lon="120.222766"> +<ele>83.771973</ele> +<time>2004-09-09T23:41:31Z</time> +</rtept> +<rtept lat="15.014770" lon="120.222487"> +<ele>84.252686</ele> +<time>2004-09-09T23:41:53Z</time> +</rtept> +<rtept lat="15.014749" lon="120.222337"> +<ele>82.810791</ele> +<time>2004-09-09T23:42:14Z</time> +</rtept> +<rtept lat="15.014641" lon="120.221930"> +<ele>84.733398</ele> +<time>2004-09-09T23:42:49Z</time> +</rtept> +<rtept lat="15.014448" lon="120.222015"> +<ele>85.694580</ele> +<time>2004-09-09T23:43:06Z</time> +</rtept> +<rtept lat="15.014427" lon="120.222230"> +<ele>86.175293</ele> +<time>2004-09-09T23:43:22Z</time> +</rtept> +<rtept lat="15.014319" lon="120.222273"> +<ele>86.175293</ele> +<time>2004-09-09T23:43:35Z</time> +</rtept> +<rtept lat="15.014277" lon="120.222251"> +<ele>86.656006</ele> +<time>2004-09-09T23:43:39Z</time> +</rtept> +<rtept lat="15.014148" lon="120.222101"> +<ele>86.175293</ele> +<time>2004-09-09T23:43:58Z</time> +</rtept> +<rtept lat="15.013912" lon="120.221908"> +<ele>87.617188</ele> +<time>2004-09-09T23:44:39Z</time> +</rtept> +<rtept lat="15.013826" lon="120.221736"> +<ele>89.539917</ele> +<time>2004-09-09T23:44:57Z</time> +</rtept> +<rtept lat="15.013268" lon="120.221350"> +<ele>90.020630</ele> +<time>2004-09-09T23:45:51Z</time> +</rtept> +<rtept lat="15.013075" lon="120.220857"> +<ele>90.501343</ele> +<time>2004-09-09T23:46:40Z</time> +</rtept> +<rtept lat="15.013011" lon="120.220599"> +<ele>90.981934</ele> +<time>2004-09-09T23:47:01Z</time> +</rtept> +<rtept lat="15.012753" lon="120.220063"> +<ele>90.501343</ele> +<time>2004-09-09T23:47:45Z</time> +</rtept> +<rtept lat="15.012732" lon="120.219998"> +<ele>90.981934</ele> +<time>2004-09-09T23:47:59Z</time> +</rtept> +<rtept lat="15.012753" lon="120.219870"> +<ele>91.462524</ele> +<time>2004-09-09T23:48:36Z</time> +</rtept> +<rtept lat="15.012560" lon="120.219569"> +<ele>90.501343</ele> +<time>2004-09-09T23:49:00Z</time> +</rtept> +<rtept lat="15.012496" lon="120.219419"> +<ele>90.501343</ele> +<time>2004-09-09T23:49:20Z</time> +</rtept> +<rtept lat="15.012045" lon="120.219097"> +<ele>90.501343</ele> +<time>2004-09-09T23:50:19Z</time> +</rtept> +<rtept lat="15.011959" lon="120.218990"> +<ele>90.501343</ele> +<time>2004-09-09T23:50:32Z</time> +</rtept> +<rtept lat="15.011873" lon="120.218925"> +<ele>90.501343</ele> +<time>2004-09-09T23:50:45Z</time> +</rtept> +<rtept lat="15.011809" lon="120.218818"> +<ele>90.020630</ele> +<time>2004-09-09T23:51:07Z</time> +</rtept> +<rtept lat="15.011337" lon="120.218518"> +<ele>90.501343</ele> +<time>2004-09-09T23:51:50Z</time> +</rtept> +<rtept lat="15.010564" lon="120.218046"> +<ele>89.059326</ele> +<time>2004-09-09T23:52:56Z</time> +</rtept> +<rtept lat="15.010328" lon="120.217874"> +<ele>90.020630</ele> +<time>2004-09-09T23:53:17Z</time> +</rtept> +<rtept lat="15.010200" lon="120.217595"> +<ele>89.059326</ele> +<time>2004-09-09T23:53:39Z</time> +</rtept> +<rtept lat="15.009985" lon="120.217359"> +<ele>89.059326</ele> +<time>2004-09-09T23:54:03Z</time> +</rtept> +<rtept lat="15.009727" lon="120.217230"> +<ele>90.501343</ele> +<time>2004-09-09T23:54:26Z</time> +</rtept> +<rtept lat="15.009470" lon="120.217187"> +<ele>90.501343</ele> +<time>2004-09-09T23:54:44Z</time> +</rtept> +<rtept lat="15.008826" lon="120.217102"> +<ele>89.539917</ele> +<time>2004-09-09T23:55:30Z</time> +</rtept> +<rtept lat="15.008633" lon="120.216951"> +<ele>89.059326</ele> +<time>2004-09-09T23:55:49Z</time> +</rtept> +<rtept lat="15.008333" lon="120.216887"> +<ele>89.059326</ele> +<time>2004-09-09T23:56:11Z</time> +</rtept> +<rtept lat="15.007989" lon="120.216844"> +<ele>88.578735</ele> +<time>2004-09-09T23:56:37Z</time> +</rtept> +<rtept lat="15.007753" lon="120.216908"> +<ele>88.578735</ele> +<time>2004-09-09T23:56:55Z</time> +</rtept> +<rtept lat="15.007582" lon="120.217016"> +<ele>87.136597</ele> +<time>2004-09-09T23:57:16Z</time> +</rtept> +<rtept lat="15.007303" lon="120.216908"> +<ele>86.175293</ele> +<time>2004-09-09T23:57:43Z</time> +</rtept> +<rtept lat="15.007174" lon="120.216930"> +<ele>86.175293</ele> +<time>2004-09-09T23:57:53Z</time> +</rtept> +<rtept lat="15.007110" lon="120.216908"> +<ele>82.330078</ele> +<time>2004-09-09T23:58:03Z</time> +</rtept> +<rtept lat="15.007110" lon="120.216908"> +<ele>86.656006</ele> +<time>2004-09-09T23:58:04Z</time> +</rtept> +<rtept lat="15.006959" lon="120.216823"> +<ele>87.136597</ele> +<time>2004-09-09T23:58:20Z</time> +</rtept> +<rtept lat="15.006723" lon="120.216715"> +<ele>86.656006</ele> +<time>2004-09-09T23:58:38Z</time> +</rtept> +<rtept lat="15.005844" lon="120.216072"> +<ele>86.656006</ele> +<time>2004-09-09T23:59:58Z</time> +</rtept> +<rtept lat="15.005565" lon="120.215921"> +<ele>86.175293</ele> +<time>2004-09-10T00:00:20Z</time> +</rtept> +<rtept lat="15.005350" lon="120.215750"> +<ele>86.175293</ele> +<time>2004-09-10T00:00:40Z</time> +</rtept> +<rtept lat="15.004535" lon="120.214999"> +<ele>84.733398</ele> +<time>2004-09-10T00:02:00Z</time> +</rtept> +<rtept lat="15.004320" lon="120.214849"> +<ele>84.733398</ele> +<time>2004-09-10T00:02:19Z</time> +</rtept> +<rtept lat="15.004084" lon="120.214591"> +<ele>84.252686</ele> +<time>2004-09-10T00:02:43Z</time> +</rtept> +<rtept lat="15.003977" lon="120.214527"> +<ele>84.733398</ele> +<time>2004-09-10T00:02:58Z</time> +</rtept> +<rtept lat="15.003741" lon="120.214269"> +<ele>84.252686</ele> +<time>2004-09-10T00:03:38Z</time> +</rtept> +<rtept lat="15.003526" lon="120.214097"> +<ele>84.252686</ele> +<time>2004-09-10T00:04:15Z</time> +</rtept> +<rtept lat="15.003312" lon="120.213926"> +<ele>83.291382</ele> +<time>2004-09-10T00:04:34Z</time> +</rtept> +<rtept lat="15.003161" lon="120.213754"> +<ele>83.291382</ele> +<time>2004-09-10T00:04:57Z</time> +</rtept> +<rtept lat="15.003119" lon="120.213711"> +<ele>81.849365</ele> +<time>2004-09-10T00:05:13Z</time> +</rtept> +<rtept lat="15.003011" lon="120.213647"> +<ele>82.330078</ele> +<time>2004-09-10T00:05:41Z</time> +</rtept> +<rtept lat="15.002711" lon="120.213583"> +<ele>81.849365</ele> +<time>2004-09-10T00:06:15Z</time> +</rtept> +<rtept lat="15.002153" lon="120.213432"> +<ele>84.252686</ele> +<time>2004-09-10T00:07:12Z</time> +</rtept> +<rtept lat="15.001574" lon="120.213132"> +<ele>83.291382</ele> +<time>2004-09-10T00:08:06Z</time> +</rtept> +<rtept lat="15.001295" lon="120.213025"> +<ele>82.810791</ele> +<time>2004-09-10T00:08:28Z</time> +</rtept> +<rtept lat="15.001037" lon="120.212917"> +<ele>83.291382</ele> +<time>2004-09-10T00:08:49Z</time> +</rtept> +<rtept lat="15.000801" lon="120.212767"> +<ele>84.733398</ele> +<time>2004-09-10T00:09:08Z</time> +</rtept> +<rtept lat="15.000222" lon="120.212553"> +<ele>84.252686</ele> +<time>2004-09-10T00:09:55Z</time> +</rtept> +<rtept lat="14.999964" lon="120.212510"> +<ele>83.771973</ele> +<time>2004-09-10T00:10:14Z</time> +</rtept> +<rtept lat="14.999514" lon="120.212274"> +<ele>83.291382</ele> +<time>2004-09-10T00:10:50Z</time> +</rtept> +<rtept lat="14.999342" lon="120.212102"> +<ele>83.291382</ele> +<time>2004-09-10T00:11:08Z</time> +</rtept> +<rtept lat="14.999213" lon="120.211952"> +<ele>84.252686</ele> +<time>2004-09-10T00:11:23Z</time> +</rtept> +<rtept lat="14.998977" lon="120.211802"> +<ele>83.771973</ele> +<time>2004-09-10T00:11:42Z</time> +</rtept> +<rtept lat="14.998548" lon="120.211329"> +<ele>81.368774</ele> +<time>2004-09-10T00:12:27Z</time> +</rtept> +<rtept lat="14.998097" lon="120.210857"> +<ele>80.888184</ele> +<time>2004-09-10T00:13:16Z</time> +</rtept> +<rtept lat="14.998033" lon="120.210342"> +<ele>80.407471</ele> +<time>2004-09-10T00:13:59Z</time> +</rtept> +<rtept lat="14.998012" lon="120.210364"> +<ele>80.888184</ele> +<time>2004-09-10T00:14:06Z</time> +</rtept> +<rtept lat="14.998033" lon="120.210321"> +<ele>81.849365</ele> +<time>2004-09-10T00:14:09Z</time> +</rtept> +<rtept lat="14.997904" lon="120.210106"> +<ele>79.926636</ele> +<time>2004-09-10T00:14:28Z</time> +</rtept> +<rtept lat="14.997904" lon="120.209849"> +<ele>80.407471</ele> +<time>2004-09-10T00:14:47Z</time> +</rtept> +<rtept lat="14.997411" lon="120.209699"> +<ele>78.484741</ele> +<time>2004-09-10T00:16:12Z</time> +</rtept> +<rtept lat="14.997218" lon="120.209720"> +<ele>78.484741</ele> +<time>2004-09-10T00:16:45Z</time> +</rtept> +<rtept lat="14.997110" lon="120.209699"> +<ele>78.004028</ele> +<time>2004-09-10T00:17:02Z</time> +</rtept> +<rtept lat="14.996939" lon="120.209613"> +<ele>78.484741</ele> +<time>2004-09-10T00:17:23Z</time> +</rtept> +<rtept lat="14.996789" lon="120.209484"> +<ele>78.484741</ele> +<time>2004-09-10T00:17:41Z</time> +</rtept> +<rtept lat="14.996338" lon="120.209270"> +<ele>78.004028</ele> +<time>2004-09-10T00:18:37Z</time> +</rtept> +<rtept lat="14.996037" lon="120.209205"> +<ele>78.004028</ele> +<time>2004-09-10T00:19:23Z</time> +</rtept> +<rtept lat="14.995866" lon="120.209119"> +<ele>78.484741</ele> +<time>2004-09-10T00:19:39Z</time> +</rtept> +<rtept lat="14.995244" lon="120.208712"> +<ele>77.523438</ele> +<time>2004-09-10T00:20:55Z</time> +</rtept> +<rtept lat="14.995179" lon="120.208626"> +<ele>77.523438</ele> +<time>2004-09-10T00:21:05Z</time> +</rtept> +<rtept lat="14.994943" lon="120.208454"> +<ele>78.004028</ele> +<time>2004-09-10T00:21:25Z</time> +</rtept> +<rtept lat="14.994450" lon="120.208089"> +<ele>77.523438</ele> +<time>2004-09-10T00:22:14Z</time> +</rtept> +<rtept lat="14.994278" lon="120.207918"> +<ele>77.523438</ele> +<time>2004-09-10T00:22:34Z</time> +</rtept> +<rtept lat="14.994106" lon="120.207832"> +<ele>77.042847</ele> +<time>2004-09-10T00:23:11Z</time> +</rtept> +<rtept lat="14.993935" lon="120.207703"> +<ele>76.562134</ele> +<time>2004-09-10T00:23:29Z</time> +</rtept> +<rtept lat="14.993763" lon="120.207574"> +<ele>77.042847</ele> +<time>2004-09-10T00:23:48Z</time> +</rtept> +<rtept lat="14.993613" lon="120.207381"> +<ele>77.042847</ele> +<time>2004-09-10T00:24:08Z</time> +</rtept> +<rtept lat="14.992926" lon="120.206866"> +<ele>77.042847</ele> +<time>2004-09-10T00:25:19Z</time> +</rtept> +<rtept lat="14.991510" lon="120.205643"> +<ele>76.562134</ele> +<time>2004-09-10T00:27:46Z</time> +</rtept> +<rtept lat="14.991081" lon="120.205407"> +<ele>77.042847</ele> +<time>2004-09-10T00:28:27Z</time> +</rtept> +<rtept lat="14.990845" lon="120.205214"> +<ele>77.523438</ele> +<time>2004-09-10T00:28:50Z</time> +</rtept> +<rtept lat="14.990609" lon="120.204999"> +<ele>78.484741</ele> +<time>2004-09-10T00:29:14Z</time> +</rtept> +<rtept lat="14.990137" lon="120.204592"> +<ele>78.004028</ele> +<time>2004-09-10T00:30:01Z</time> +</rtept> +<rtept lat="14.989836" lon="120.204377"> +<ele>77.042847</ele> +<time>2004-09-10T00:30:28Z</time> +</rtept> +<rtept lat="14.989343" lon="120.203991"> +<ele>76.562134</ele> +<time>2004-09-10T00:31:16Z</time> +</rtept> +<rtept lat="14.989171" lon="120.203819"> +<ele>76.562134</ele> +<time>2004-09-10T00:31:37Z</time> +</rtept> +<rtept lat="14.988956" lon="120.203669"> +<ele>76.562134</ele> +<time>2004-09-10T00:32:11Z</time> +</rtept> +<rtept lat="14.988849" lon="120.203540"> +<ele>76.562134</ele> +<time>2004-09-10T00:32:34Z</time> +</rtept> +<rtept lat="14.988613" lon="120.203326"> +<ele>76.562134</ele> +<time>2004-09-10T00:33:07Z</time> +</rtept> +<rtept lat="14.988506" lon="120.203218"> +<ele>77.042847</ele> +<time>2004-09-10T00:33:25Z</time> +</rtept> +<rtept lat="14.987991" lon="120.202768"> +<ele>76.081421</ele> +<time>2004-09-10T00:34:25Z</time> +</rtept> +<rtept lat="14.987819" lon="120.202553"> +<ele>76.081421</ele> +<time>2004-09-10T00:34:48Z</time> +</rtept> +<rtept lat="14.987476" lon="120.202274"> +<ele>76.562134</ele> +<time>2004-09-10T00:35:33Z</time> +</rtept> +<rtept lat="14.987390" lon="120.202167"> +<ele>75.600830</ele> +<time>2004-09-10T00:36:03Z</time> +</rtept> +<rtept lat="14.987111" lon="120.201952"> +<ele>76.562134</ele> +<time>2004-09-10T00:36:41Z</time> +</rtept> +<rtept lat="14.986811" lon="120.201631"> +<ele>76.562134</ele> +<time>2004-09-10T00:37:31Z</time> +</rtept> +<rtept lat="14.986575" lon="120.201459"> +<ele>75.600830</ele> +<time>2004-09-10T00:37:54Z</time> +</rtept> +<rtept lat="14.986339" lon="120.201244"> +<ele>76.081421</ele> +<time>2004-09-10T00:38:19Z</time> +</rtept> +<rtept lat="14.986081" lon="120.201073"> +<ele>76.562134</ele> +<time>2004-09-10T00:38:42Z</time> +</rtept> +<rtept lat="14.985824" lon="120.200880"> +<ele>76.081421</ele> +<time>2004-09-10T00:39:08Z</time> +</rtept> +<rtept lat="14.985631" lon="120.200665"> +<ele>75.600830</ele> +<time>2004-09-10T00:39:30Z</time> +</rtept> +<rtept lat="14.985437" lon="120.200472"> +<ele>75.600830</ele> +<time>2004-09-10T00:39:51Z</time> +</rtept> +<rtept lat="14.985223" lon="120.200322"> +<ele>74.639526</ele> +<time>2004-09-10T00:40:14Z</time> +</rtept> +<rtept lat="14.984837" lon="120.200064"> +<ele>75.120239</ele> +<time>2004-09-10T00:40:50Z</time> +</rtept> +<rtept lat="14.984622" lon="120.199828"> +<ele>74.639526</ele> +<time>2004-09-10T00:41:16Z</time> +</rtept> +<rtept lat="14.984386" lon="120.199656"> +<ele>74.639526</ele> +<time>2004-09-10T00:41:39Z</time> +</rtept> +<rtept lat="14.984043" lon="120.199227"> +<ele>74.639526</ele> +<time>2004-09-10T00:42:37Z</time> +</rtept> +<rtept lat="14.983699" lon="120.198841"> +<ele>75.120239</ele> +<time>2004-09-10T00:43:15Z</time> +</rtept> +<rtept lat="14.983227" lon="120.198219"> +<ele>75.120239</ele> +<time>2004-09-10T00:44:20Z</time> +</rtept> +<rtept lat="14.982927" lon="120.197918"> +<ele>75.120239</ele> +<time>2004-09-10T00:44:51Z</time> +</rtept> +<rtept lat="14.982777" lon="120.197725"> +<ele>75.120239</ele> +<time>2004-09-10T00:45:12Z</time> +</rtept> +<rtept lat="14.982412" lon="120.197339"> +<ele>75.120239</ele> +<time>2004-09-10T00:45:53Z</time> +</rtept> +<rtept lat="14.982133" lon="120.196931"> +<ele>75.120239</ele> +<time>2004-09-10T00:46:32Z</time> +</rtept> +<rtept lat="14.981983" lon="120.196760"> +<ele>74.639526</ele> +<time>2004-09-10T00:46:48Z</time> +</rtept> +<rtept lat="14.981897" lon="120.196695"> +<ele>75.120239</ele> +<time>2004-09-10T00:46:58Z</time> +</rtept> +<rtept lat="14.981790" lon="120.196545"> +<ele>75.120239</ele> +<time>2004-09-10T00:47:12Z</time> +</rtept> +<rtept lat="14.981382" lon="120.196288"> +<ele>80.888184</ele> +<time>2004-09-10T00:48:04Z</time> +</rtept> +<rtept lat="14.981360" lon="120.196052"> +<ele>78.965454</ele> +<time>2004-09-10T00:48:22Z</time> +</rtept> +<rtept lat="14.981382" lon="120.195816"> +<ele>77.042847</ele> +<time>2004-09-10T00:48:41Z</time> +</rtept> +<rtept lat="14.981403" lon="120.195601"> +<ele>74.158813</ele> +<time>2004-09-10T00:48:57Z</time> +</rtept> +<rtept lat="14.981253" lon="120.195408"> +<ele>71.755493</ele> +<time>2004-09-10T00:49:16Z</time> +</rtept> +<rtept lat="14.980974" lon="120.195022"> +<ele>71.274902</ele> +<time>2004-09-10T00:49:53Z</time> +</rtept> +<rtept lat="14.980781" lon="120.194528"> +<ele>69.832886</ele> +<time>2004-09-10T00:50:34Z</time> +</rtept> +<rtept lat="14.980609" lon="120.193799"> +<ele>69.832886</ele> +<time>2004-09-10T00:51:33Z</time> +</rtept> +<rtept lat="14.980567" lon="120.193627"> +<ele>68.871582</ele> +<time>2004-09-10T00:51:48Z</time> +</rtept> +</rte> +<trk> + <name>Only 5 points</name> +<number>7</number> +<trkseg> +<trkpt lat="14.907889" lon="120.558472"> +<ele>28.976929</ele> +<time>2004-09-10T08:35:38Z</time> +</trkpt> +<trkpt lat="14.907975" lon="120.558579"> +<ele>28.976929</ele> +<time>2004-09-10T08:35:55Z</time> +</trkpt> +<trkpt lat="14.908168" lon="120.558879"> +<ele>28.496216</ele> +<time>2004-09-10T08:36:11Z</time> +</trkpt> +<trkpt lat="14.908383" lon="120.559223"> +<ele>28.496216</ele> +<time>2004-09-10T08:36:32Z</time> +</trkpt> +<trkpt lat="14.908597" lon="120.559545"> +<ele>28.015503</ele> +<time>2004-09-10T08:36:43Z</time> +</trkpt> +</trkseg> +</trk> +<wpt lat="14.636015547" lon="121.043382715"> + <ele>45.307495</ele> + <name>001</name> + <cmt>001</cmt> + <desc>001</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.637198653" lon="121.042653322"> + <ele>50.594727</ele> + <name>002</name> + <cmt>002</cmt> + <desc>002</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.640581002" lon="121.043165457"> + <ele>46.989868</ele> + <name>003</name> + <cmt>003</cmt> + <desc>003</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.975596117" lon="120.155537082"> + <ele>38.097656</ele> + <name>004</name> + <cmt>004</cmt> + <desc>004</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037303017" lon="120.236538453"> + <ele>147.687134</ele> + <name>005</name> + <cmt>005</cmt> + <desc>005</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037305867" lon="120.236548427"> + <ele>145.043579</ele> + <name>006</name> + <cmt>006</cmt> + <desc>006</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038105585" lon="120.237012533"> + <ele>160.905151</ele> + <name>007</name> + <cmt>007</cmt> + <desc>007</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038478328" lon="120.237643858"> + <ele>165.231079</ele> + <name>008</name> + <cmt>008</cmt> + <desc>008</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038991300" lon="120.238984879"> + <ele>173.882935</ele> + <name>009</name> + <cmt>009</cmt> + <desc>009</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.039099846" lon="120.239190236"> + <ele>166.192383</ele> + <name>010</name> + <cmt>010</cmt> + <desc>010</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.040223943" lon="120.241263332"> + <ele>175.324829</ele> + <name>011</name> + <cmt>011</cmt> + <desc>011</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.042621084" lon="120.247956365"> + <ele>186.860474</ele> + <name>012</name> + <cmt>012</cmt> + <desc>012</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.043179905" lon="120.253084749"> + <ele>208.730347</ele> + <name>013</name> + <cmt>013</cmt> + <desc>013</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.043297336" lon="120.254095523"> + <ele>211.374023</ele> + <name>014</name> + <cmt>014</cmt> + <desc>014</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.043296246" lon="120.254105665"> + <ele>213.296631</ele> + <name>015</name> + <cmt>015</cmt> + <desc>015</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.042568864" lon="120.247880174"> + <ele>189.984863</ele> + <name>016</name> + <cmt>016</cmt> + <desc>016</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.042486135" lon="120.246971911"> + <ele>187.100830</ele> + <name>017</name> + <cmt>017</cmt> + <desc>017</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.042233923" lon="120.245966502"> + <ele>185.418579</ele> + <name>018</name> + <cmt>018</cmt> + <desc>018</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.041693626" lon="120.244808039"> + <ele>181.092651</ele> + <name>019</name> + <cmt>019</cmt> + <desc>019</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.041558258" lon="120.244476954"> + <ele>179.410400</ele> + <name>020</name> + <cmt>020</cmt> + <desc>020</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.041360026" lon="120.243841019"> + <ele>178.689453</ele> + <name>021</name> + <cmt>021</cmt> + <desc>021</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.040351683" lon="120.241488637"> + <ele>176.526489</ele> + <name>022</name> + <cmt>022</cmt> + <desc>022</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.040215813" lon="120.241269115"> + <ele>177.247437</ele> + <name>023</name> + <cmt>023</cmt> + <desc>023</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.039894953" lon="120.240607113"> + <ele>173.161987</ele> + <name>024</name> + <cmt>024</cmt> + <desc>024</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.039318446" lon="120.239687199"> + <ele>170.277832</ele> + <name>025</name> + <cmt>025</cmt> + <desc>025</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.039147874" lon="120.239404980"> + <ele>170.037598</ele> + <name>026</name> + <cmt>026</cmt> + <desc>026</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.039016195" lon="120.239027124"> + <ele>169.797241</ele> + <name>027</name> + <cmt>027</cmt> + <desc>027</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038951570" lon="120.238857307"> + <ele>169.316650</ele> + <name>028</name> + <cmt>028</cmt> + <desc>028</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038922066" lon="120.238720765"> + <ele>169.076294</ele> + <name>029</name> + <cmt>029</cmt> + <desc>029</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038786530" lon="120.238445755"> + <ele>164.510010</ele> + <name>030</name> + <cmt>030</cmt> + <desc>030</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038752332" lon="120.238321787"> + <ele>164.750366</ele> + <name>031</name> + <cmt>031</cmt> + <desc>031</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038600871" lon="120.237971172"> + <ele>166.432617</ele> + <name>032</name> + <cmt>032</cmt> + <desc>032</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038484363" lon="120.237681828"> + <ele>165.711670</ele> + <name>033</name> + <cmt>033</cmt> + <desc>033</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038389480" lon="120.237437915"> + <ele>162.106812</ele> + <name>034</name> + <cmt>034</cmt> + <desc>034</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038236845" lon="120.237119906"> + <ele>157.300293</ele> + <name>035</name> + <cmt>035</cmt> + <desc>035</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038081110" lon="120.236975150"> + <ele>154.175903</ele> + <name>036</name> + <cmt>036</cmt> + <desc>036</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037884219" lon="120.236842548"> + <ele>152.253296</ele> + <name>037</name> + <cmt>037</cmt> + <desc>037</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037822025" lon="120.236781947"> + <ele>152.734009</ele> + <name>038</name> + <cmt>038</cmt> + <desc>038</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037694452" lon="120.236648759"> + <ele>148.167847</ele> + <name>039</name> + <cmt>039</cmt> + <desc>039</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037404103" lon="120.236415155"> + <ele>142.880615</ele> + <name>040</name> + <cmt>040</cmt> + <desc>040</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.036643613" lon="120.235724067"> + <ele>131.344849</ele> + <name>041</name> + <cmt>041</cmt> + <desc>041</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035957471" lon="120.235749800"> + <ele>131.585205</ele> + <name>042</name> + <cmt>042</cmt> + <desc>042</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035150293" lon="120.235839151"> + <ele>126.057617</ele> + <name>043</name> + <cmt>043</cmt> + <desc>043</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034987517" lon="120.235854574"> + <ele>126.297974</ele> + <name>044</name> + <cmt>044</cmt> + <desc>044</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034929262" lon="120.235940237"> + <ele>127.499634</ele> + <name>045</name> + <cmt>045</cmt> + <desc>045</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034842342" lon="120.236292612"> + <ele>128.701294</ele> + <name>046</name> + <cmt>046</cmt> + <desc>046</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034868326" lon="120.236495705"> + <ele>131.585205</ele> + <name>047</name> + <cmt>047</cmt> + <desc>047</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034914091" lon="120.236638952"> + <ele>130.623901</ele> + <name>048</name> + <cmt>048</cmt> + <desc>048</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034842929" lon="120.236782283"> + <ele>130.623901</ele> + <name>049</name> + <cmt>049</cmt> + <desc>049</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035138307" lon="120.237012701"> + <ele>130.143188</ele> + <name>050</name> + <cmt>050</cmt> + <desc>050</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035181055" lon="120.237215459"> + <ele>133.507812</ele> + <name>051</name> + <cmt>051</cmt> + <desc>051</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037302515" lon="120.236531328"> + <ele>142.640259</ele> + <name>052</name> + <cmt>052</cmt> + <desc>052</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038081612" lon="120.237016557"> + <ele>153.214600</ele> + <name>053</name> + <cmt>053</cmt> + <desc>053</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.038484028" lon="120.237650061"> + <ele>160.184204</ele> + <name>054</name> + <cmt>054</cmt> + <desc>054</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.039010160" lon="120.239003822"> + <ele>167.874634</ele> + <name>055</name> + <cmt>055</cmt> + <desc>055</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.040213466" lon="120.241269115"> + <ele>174.363525</ele> + <name>056</name> + <cmt>056</cmt> + <desc>056</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.043153167" lon="120.253080474"> + <ele>210.893311</ele> + <name>057</name> + <cmt>057</cmt> + <desc>057</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.043287948" lon="120.254115807"> + <ele>214.017578</ele> + <name>058</name> + <cmt>058</cmt> + <desc>058</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.043408228" lon="120.255108811"> + <ele>210.652954</ele> + <name>059</name> + <cmt>059</cmt> + <desc>059</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.044677416" lon="120.254899012"> + <ele>216.180542</ele> + <name>060</name> + <cmt>060</cmt> + <desc>060</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.043236231" lon="120.254365504"> + <ele>210.893311</ele> + <name>061</name> + <cmt>061</cmt> + <desc>061</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.039282907" lon="120.239687199"> + <ele>169.797241</ele> + <name>062</name> + <cmt>062</cmt> + <desc>062</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.036760792" lon="120.238004448"> + <ele>154.175903</ele> + <name>063</name> + <cmt>063</cmt> + <desc>063</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035345173" lon="120.237376308"> + <ele>137.593262</ele> + <name>064</name> + <cmt>064</cmt> + <desc>064</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035234699" lon="120.237213951"> + <ele>134.709473</ele> + <name>065</name> + <cmt>065</cmt> + <desc>065</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035907766" lon="120.235997736"> + <ele>126.297974</ele> + <name>066</name> + <cmt>066</cmt> + <desc>066</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035970211" lon="120.235796738"> + <ele>126.538330</ele> + <name>067</name> + <cmt>067</cmt> + <desc>067</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037343334" lon="120.236459579"> + <ele>144.803223</ele> + <name>068</name> + <cmt>068</cmt> + <desc>068</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.037007639" lon="120.236442396"> + <ele>141.919312</ele> + <name>069</name> + <cmt>069</cmt> + <desc>069</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.036581503" lon="120.236358577"> + <ele>139.515869</ele> + <name>070</name> + <cmt>070</cmt> + <desc>070</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.036247736" lon="120.236462262"> + <ele>143.361206</ele> + <name>071</name> + <cmt>071</cmt> + <desc>071</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035688411" lon="120.236551194"> + <ele>134.469116</ele> + <name>072</name> + <cmt>072</cmt> + <desc>072</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.035237549" lon="120.236503417"> + <ele>134.228760</ele> + <name>073</name> + <cmt>073</cmt> + <desc>073</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034895400" lon="120.236642389"> + <ele>135.430420</ele> + <name>074</name> + <cmt>074</cmt> + <desc>074</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034930268" lon="120.237154271"> + <ele>135.430420</ele> + <name>075</name> + <cmt>075</cmt> + <desc>075</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034847539" lon="120.235381918"> + <ele>96.978027</ele> + <name>076</name> + <cmt>076</cmt> + <desc>076</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.034693647" lon="120.235394575"> + <ele>112.359009</ele> + <name>077</name> + <cmt>077</cmt> + <desc>077</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.032701520" lon="120.231625903"> + <ele>114.281616</ele> + <name>078</name> + <cmt>078</cmt> + <desc>078</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.031369971" lon="120.230112802"> + <ele>111.157349</ele> + <name>079</name> + <cmt>079</cmt> + <desc>079</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.031269640" lon="120.230063936"> + <ele>110.436401</ele> + <name>080</name> + <cmt>080</cmt> + <desc>080</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.029314896" lon="120.229415931"> + <ele>105.629761</ele> + <name>081</name> + <cmt>081</cmt> + <desc>081</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.028247628" lon="120.229260782"> + <ele>103.226440</ele> + <name>082</name> + <cmt>082</cmt> + <desc>082</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.027997931" lon="120.229063304"> + <ele>101.784546</ele> + <name>083</name> + <cmt>083</cmt> + <desc>083</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.026977602" lon="120.228622919"> + <ele>102.986084</ele> + <name>084</name> + <cmt>084</cmt> + <desc>084</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.026555741" lon="120.228640521"> + <ele>101.784546</ele> + <name>085</name> + <cmt>085</cmt> + <desc>085</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.021198532" lon="120.226751072"> + <ele>93.853760</ele> + <name>086</name> + <cmt>086</cmt> + <desc>086</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.020887312" lon="120.226317560"> + <ele>95.295654</ele> + <name>087</name> + <cmt>087</cmt> + <desc>087</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.020824028" lon="120.226252014"> + <ele>95.055420</ele> + <name>088</name> + <cmt>088</cmt> + <desc>088</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.020084241" lon="120.225583892"> + <ele>87.845459</ele> + <name>089</name> + <cmt>089</cmt> + <desc>089</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.019395584" lon="120.224903030"> + <ele>92.892456</ele> + <name>090</name> + <cmt>090</cmt> + <desc>090</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.017774021" lon="120.224660626"> + <ele>92.892456</ele> + <name>091</name> + <cmt>091</cmt> + <desc>091</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.017061057" lon="120.224452335"> + <ele>90.489136</ele> + <name>092</name> + <cmt>092</cmt> + <desc>092</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.016638860" lon="120.224422915"> + <ele>85.682495</ele> + <name>093</name> + <cmt>093</cmt> + <desc>093</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.016528722" lon="120.224321326"> + <ele>86.884155</ele> + <name>094</name> + <cmt>094</cmt> + <desc>094</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.016059754" lon="120.223885886"> + <ele>88.566528</ele> + <name>095</name> + <cmt>095</cmt> + <desc>095</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.015040850" lon="120.223270738"> + <ele>87.605103</ele> + <name>096</name> + <cmt>096</cmt> + <desc>096</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.014152871" lon="120.222094171"> + <ele>89.287476</ele> + <name>097</name> + <cmt>097</cmt> + <desc>097</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.013247039" lon="120.221332423"> + <ele>92.652100</ele> + <name>098</name> + <cmt>098</cmt> + <desc>098</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.012727026" lon="120.220021661"> + <ele>91.450317</ele> + <name>099</name> + <cmt>099</cmt> + <desc>099</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.012746723" lon="120.219879504"> + <ele>91.450317</ele> + <name>100</name> + <cmt>100</cmt> + <desc>100</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.012489315" lon="120.219430067"> + <ele>91.690674</ele> + <name>101</name> + <cmt>101</cmt> + <desc>101</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.012095952" lon="120.219129324"> + <ele>91.450317</ele> + <name>102</name> + <cmt>102</cmt> + <desc>102</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.011870563" lon="120.218922459"> + <ele>91.690674</ele> + <name>103</name> + <cmt>103</cmt> + <desc>103</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.007610880" lon="120.216987077"> + <ele>88.566528</ele> + <name>104</name> + <cmt>104</cmt> + <desc>104</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.007109391" lon="120.216904096"> + <ele>87.364868</ele> + <name>105</name> + <cmt>105</cmt> + <desc>105</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.003595361" lon="120.214147121"> + <ele>85.682495</ele> + <name>106</name> + <cmt>106</cmt> + <desc>106</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="15.002421224" lon="120.213506240"> + <ele>83.279297</ele> + <name>107</name> + <cmt>107</cmt> + <desc>107</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.998089289" lon="120.210867617"> + <ele>79.674438</ele> + <name>108</name> + <cmt>108</cmt> + <desc>108</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.997864654" lon="120.209834045"> + <ele>84.480957</ele> + <name>109</name> + <cmt>109</cmt> + <desc>109</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.981388599" lon="120.196274891"> + <ele>84.721313</ele> + <name>110</name> + <cmt>110</cmt> + <desc>110</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.474465596" lon="120.917379661"> + <ele>5.172729</ele> + <name>111</name> + <cmt>111</cmt> + <desc>111</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.942621375" lon="120.938029736"> + <ele>28.965332</ele> + <name>112</name> + <cmt>112</cmt> + <desc>112</desc> + <sym>Residence</sym> +</wpt> +<wpt lat="12.255321192" lon="124.379444299"> + <ele>21.995728</ele> + <name>113</name> + <cmt>113</cmt> + <desc>113</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="38.855549991" lon="-94.799016668"> + <ele>325.049072</ele> + <name>GARMIN</name> + <cmt>GARMIN</cmt> + <desc>GARMIN</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="50.982883293" lon="-1.463899976"> + <ele>35.934692</ele> + <name>GRMEUR</name> + <cmt>GRMEUR</cmt> + <desc>GRMEUR</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="33.330189949" lon="-111.946110008"> + <ele>361.098145</ele> + <name>GRMPHX</name> + <cmt>GRMPHX</cmt> + <desc>GRMPHX</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="25.061783362" lon="121.640266674"> + <ele>38.097656</ele> + <name>GRMTWN</name> + <cmt>GRMTWN</cmt> + <desc>GRMTWN</desc> + <sym>Flag</sym> +</wpt> +<wpt lat="14.636060139" lon="121.043607602"> + <ele>8.296997</ele> + <name>NEDA4</name> + <cmt>NEDA4</cmt> + <desc>NEDA4</desc> + <sym>Residence</sym> +</wpt> +</gpx> diff --git a/navit/tools/gpx2navit_txt/src/Makefile.am b/navit/tools/gpx2navit_txt/src/Makefile.am new file mode 100644 index 000000000..5cce6fa3c --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/Makefile.am @@ -0,0 +1,26 @@ +bin_PROGRAMS = gpx2navit_txt + +gpx2navit_txt_SOURCES = \ + emess.h \ + geod_for.c \ + geod_inv.c \ + geod_set.c \ + geodesic.h \ + gpx2navit_txt.h \ + main.c \ + misc.c \ + utils.c \ + parser.c \ + elementControl.c\ + setwpt.c \ + setpath.c \ + setmeta.c \ + errorcode.h + +INCLUDES= -I$(srcdir) + +AM_CFLAGS = -g + +debian-dist: + dpkg-buildpackage -rfakeroot -d -tc -us -uc + diff --git a/navit/tools/gpx2navit_txt/src/config.h.in b/navit/tools/gpx2navit_txt/src/config.h.in new file mode 100644 index 000000000..724d6f656 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/config.h.in @@ -0,0 +1,99 @@ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `alarm' function. */ +#undef HAVE_ALARM + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `expat' library (-lexpat). */ +#undef HAVE_LIBEXPAT + +/* Define to 1 if you have the `m' library (-lm). */ +#undef HAVE_LIBM + +/* Define to 1 if you have the `proj' library (-lproj). */ +#undef HAVE_LIBPROJ + +/* Define to 1 if you have the <limits.h> header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#undef HAVE_MALLOC + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if your system has a GNU libc compatible `realloc' function, + and to 0 otherwise. */ +#undef HAVE_REALLOC + +/* Define to 1 if you have the `sqrt' function. */ +#undef HAVE_SQRT + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/time.h> header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your <sys/time.h> declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc + +/* Define to rpl_realloc if the replacement function should be used. */ +#undef realloc diff --git a/navit/tools/gpx2navit_txt/src/elementControl.c b/navit/tools/gpx2navit_txt/src/elementControl.c new file mode 100644 index 000000000..40bbe44c2 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/elementControl.c @@ -0,0 +1,226 @@ +#include "gpx2navit_txt.h" + +void startElementControl(parsedata * pdata, const char *element, + const char **attr); +void endElementControl(parsedata * pdata, const char *element); + +/* + * This method controls tag start event. + * It corrects attributes. + */ +void +startElementControl(parsedata * pdata, const char *element, + const char **attr) +{ + int i; + static int isFirstTrk = 1; + static int isFirstRte = 1; + static int isFirstPathpt = 1; + for (i = 0; attr[i]; i += 2) { + if (!strcmp(attr[i], "lon")) { + pdata->attr->lon = atof(attr[i + 1]); + } + if (!strcmp(attr[i], "lat")) { + pdata->attr->lat = atof(attr[i + 1]); + } + if (!strcmp(attr[i], "minlon")) { + pdata->attr->minlon = atof(attr[i + 1]); + } + if (!strcmp(attr[i], "minlat")) { + pdata->attr->minlat = atof(attr[i + 1]); + } + if (!strcmp(attr[i], "maxlon")) { + pdata->attr->maxlon = atof(attr[i + 1]); + } + if (!strcmp(attr[i], "maxlat")) { + pdata->attr->maxlat = atof(attr[i + 1]); + } + if (!strcmp(attr[i], "author")) { + strcpy(pdata->attr->author, attr[i + 1]); + } + } + if (pdata->prop->parseTrk) { + if (!strcmp(element, "trk")) { + if (isFirstTrk) { + isFirstTrk = 0; + } + } + if (!strcmp(element, "trkseg")) { + isFirstPathpt = 1; + } + if (!strcmp(element, "trkpt")) { + if (isFirstPathpt) { + initPathAttr(pdata->pattr, pdata->attr); + isFirstPathpt = 0; + } + } + } + if (pdata->prop->parseRte) { + if (!strcmp(element, "rte")) { + if (isFirstRte) { + isFirstRte = 0; + isFirstPathpt = 1; + } + } + if (!strcmp(element, "rtept")) { + if (isFirstPathpt) { + initPathAttr(pdata->pattr, pdata->attr); + isFirstPathpt = 0; + } + } + } +} + +/** + * This method is kicked by tag end event. + * It corrects char elements when the element tag has some data, + * then start to convert when tag is top level tag like <wpt>. + */ +void endElementControl(parsedata * pdata, const char *element) +{ + static int isFirstWpt = 1; + static int isFirstTrkAsPoint = 1; + static int isFirstRteAsPoint = 1; + /* common elements */ + if (!strcmp(element, "name")) { + strcpy(pdata->attr->name, pdata->databuf); + } + if (!strcmp(element, "cmt")) { + strcpy(pdata->attr->cmt, pdata->databuf); + } + if (!strcmp(element, "desc")) { + strcpy(pdata->attr->desc, pdata->databuf); + } + if (!strcmp(element, "src")) { + strcpy(pdata->attr->src, pdata->databuf); + } + if (!strcmp(element, "link")) { + strcpy(pdata->attr->link, pdata->databuf); + } + if (!strcmp(element, "type")) { + strcpy(pdata->attr->type, pdata->databuf); + } + /* waypoint and metadata elements */ + if (!strcmp(element, "time")) { + strcpy(pdata->attr->time, pdata->databuf); + } + /* route and track point elements */ + if (!strcmp(element, "number")) { + pdata->attr->number = atoi(pdata->databuf); + } + /* waypoint elements */ + if (!strcmp(element, "ele")) { + pdata->attr->ele = atof(pdata->databuf); + } + if (!strcmp(element, "magvar")) { + pdata->attr->magvar = atof(pdata->databuf); + } + if (!strcmp(element, "geoidheight")) { + pdata->attr->geoidheight = atof(pdata->databuf); + } + if (!strcmp(element, "sym")) { + strcpy(pdata->attr->sym, pdata->databuf); + } + if (!strcmp(element, "fix")) { + strcpy(pdata->attr->fix, pdata->databuf); + } + if (!strcmp(element, "sat")) { + pdata->attr->sat = atoi(pdata->databuf); + } + if (!strcmp(element, "hdop")) { + pdata->attr->hdop = atof(pdata->databuf); + } + if (!strcmp(element, "vdop")) { + pdata->attr->vdop = atof(pdata->databuf); + } + if (!strcmp(element, "pdop")) { + pdata->attr->pdop = atof(pdata->databuf); + } + if (!strcmp(element, "ageofdgpsdata")) { + pdata->attr->ageofdgpsdata = atof(pdata->databuf); + } + /* metadata elements */ + if (!strcmp(element, "author")) { + strcpy(pdata->attr->author, pdata->databuf); + } + if (!strcmp(element, "keywords")) { + strcpy(pdata->attr->keywords, pdata->databuf); + } + if (!strcmp(element, "copyright")) { + strcpy(pdata->attr->copyright, pdata->databuf); + } + if (!strcmp(element, "year")) { + pdata->attr->year = atoi(pdata->databuf); + } + if (!strcmp(element, "license")) { + strcpy(pdata->attr->license, pdata->databuf); + } + if (!strcmp(element, "bounds")) { + /* none */ + } + /* top elements */ + /* set waypoint data */ + if (!strcmp(element, "wpt")) { + if (pdata->prop->parseWpt) { + if (isFirstWpt) { + isFirstWpt = 0; + } + //todo + if (DEBUG) { + fprintf(stderr,"\neectrl wpt %s %s", + pdata->attr->desc,pdata->attr->name); + } + setWpt(pdata); + wipeAttr(pdata->attr); + } + } + /* set trackpoint data */ + if (!strcmp(element, "trkpt")) { + if (pdata->prop->parseTrk) { + setPathData(pdata->pattr, pdata->attr); + if (!pdata->prop->isFast) + setPathInterval(pdata); + } + /* set trackpoint data as point */ + if (pdata->prop->isPoint) { + if (isFirstTrkAsPoint) { + isFirstTrkAsPoint = 0; + } + setWpt(pdata); + } + wipeAttr(pdata->attr); + } + /* write trackpoint */ + if (!strcmp(element, "trkseg")) { + if (pdata->prop->parseTrk) { + setPath( pdata); + } + } + /* set route data */ + if (!strcmp(element, "rtept")) { + if (pdata->prop->parseRte) { + setPathData(pdata->pattr, pdata->attr); + if (!pdata->prop->isFast) + setPathInterval(pdata); + } + /* set route data as point */ + if (pdata->prop->isPoint) { + if (isFirstRteAsPoint) { + isFirstRteAsPoint = 0; + } + setWpt( pdata); + } + wipeAttr(pdata->attr); + } + /* write route */ + if (!strcmp(element, "rte")) { + if (pdata->prop->parseRte) { + setPath( pdata); + } + } + if (!strcmp(element, "metadata")) { + setMetadata(pdata); + wipeAttr(pdata->attr); + } + pdata->bufptr = NULL; //reset bufptr now +} diff --git a/navit/tools/gpx2navit_txt/src/emess.h b/navit/tools/gpx2navit_txt/src/emess.h new file mode 100644 index 000000000..b35bc2502 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/emess.h @@ -0,0 +1,32 @@ +/* Error message processing header file */ +#ifndef EMESS_H +#define EMESS_H + +#ifndef lint +/*static char EMESS_H_ID[] = "@(#)emess.h 4.1 93/03/08 GIE REL";*/ +#endif + +struct EMESS { + char *File_name, /* input file name */ + *Prog_name; /* name of program */ + int File_line; /* approximate line read + where error occured */ +}; + +#ifdef EMESS_ROUTINE /* use type */ +/* for emess procedure */ +struct EMESS emess_dat = { (char *)0, (char *)0, 0 }; + +#ifdef sun /* Archaic SunOs 4.1.1, etc. */ +extern char *sys_errlist[]; +#define strerror(n) (sys_errlist[n]) +#endif + +#else /* for for calling procedures */ + +extern struct EMESS emess_dat; +void emess(int, char *, ...); + +#endif /* use type */ + +#endif /* end EMESS_H */ diff --git a/navit/tools/gpx2navit_txt/src/errorcode.h b/navit/tools/gpx2navit_txt/src/errorcode.h new file mode 100644 index 000000000..efaf88d89 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/errorcode.h @@ -0,0 +1,22 @@ +#ifndef ERRORCODE_H +#define ERRORCODE_H + +/* os level */ +#define ERR_OUTOFMEMORY 11 +#define ERR_CANNOTOPEN 12 +#define ERR_CREATEFILE 13 +#define ERR_READERROR 14 +#define ERR_FREEFAILED 15 +/* option */ +#define ERR_NOARGS 21 +#define ERR_WRONGOPTION 22 +#define ERR_OPTIONCONFRICT 23 +/* parser */ +#define ERR_ISNOTGPX 31 +#define ERR_PARSEERROR 32 +/* unit */ +#define ERR_ELLPSUNIT 41 +#define ERR_LENGTHUNIT 42 +#define ERR_TIMEUNIT 43 + +#endif /* ERRORCODE_H */ diff --git a/navit/tools/gpx2navit_txt/src/geod_for.c b/navit/tools/gpx2navit_txt/src/geod_for.c new file mode 100644 index 000000000..4466a1d24 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/geod_for.c @@ -0,0 +1,108 @@ +#ifndef lint +static const char SCCSID[] = + "@(#)geod_for.c 4.6 95/09/23 GIE REL"; +#endif +# include "projects.h" +# include "geodesic.h" +# define MERI_TOL 1e-9 +static double th1, costh1, sinth1, sina12, cosa12, M, N, c1, c2, D, P, s1; +static int merid, signS; +void geod_pre(void) +{ + al12 = adjlon(al12); /* reduce to +- 0-PI */ + signS = fabs(al12) > HALFPI ? 1 : 0; + th1 = ellipse ? atan(onef * tan(phi1)) : phi1; + costh1 = cos(th1); + sinth1 = sin(th1); + if ((merid = fabs(sina12 = sin(al12)) < MERI_TOL)) { + sina12 = 0.; + cosa12 = fabs(al12) < HALFPI ? 1. : -1.; + M = 0.; + } else { + cosa12 = cos(al12); + M = costh1 * sina12; + } + N = costh1 * cosa12; + if (ellipse) { + if (merid) { + c1 = 0.; + c2 = f4; + D = 1. - c2; + D *= D; + P = c2 / D; + } else { + c1 = geod_f * M; + c2 = f4 * (1. - M * M); + D = (1. - c2) * (1. - c2 - c1 * M); + P = (1. + .5 * c1 * M) * c2 / D; + } + } + if (merid) + s1 = HALFPI - th1; + else { + s1 = (fabs(M) >= 1.) ? 0. : acos(M); + s1 = sinth1 / sin(s1); + s1 = (fabs(s1) >= 1.) ? 0. : acos(s1); + } +} +void geod_for(void) +{ + double d, sind, u, V, X, ds, cosds, sinds, ss = 0, de; + + if (ellipse) { + d = geod_S / (D * geod_a); + if (signS) + d = -d; + u = 2. * (s1 - d); + V = cos(u + d); + X = c2 * c2 * (sind = sin(d)) * cos(d) * (2. * V * V - 1.); + ds = d + X - 2. * P * V * (1. - 2. * P * cos(u)) * sind; + ss = s1 + s1 - ds; + } else { + ds = geod_S / geod_a; + if (signS) + ds = -ds; + } + cosds = cos(ds); + sinds = sin(ds); + if (signS) + sinds = -sinds; + al21 = N * cosds - sinth1 * sinds; + if (merid) { + phi2 = atan(tan(HALFPI + s1 - ds) / onef); + if (al21 > 0.) { + al21 = PI; + if (signS) + de = PI; + else { + phi2 = -phi2; + de = 0.; + } + } else { + al21 = 0.; + if (signS) { + phi2 = -phi2; + de = 0; + } else + de = PI; + } + } else { + al21 = atan(M / al21); + if (al21 > 0) + al21 += PI; + if (al12 < 0.) + al21 -= PI; + al21 = adjlon(al21); + phi2 = atan(-(sinth1 * cosds + N * sinds) * sin(al21) / + (ellipse ? onef * M : M)); + de = atan2(sinds * sina12, + (costh1 * cosds - sinth1 * sinds * cosa12)); + if (ellipse) { + if (signS) + de += c1 * ((1. - c2) * ds + c2 * sinds * cos(ss)); + else + de -= c1 * ((1. - c2) * ds - c2 * sinds * cos(ss)); + } + } + lam2 = adjlon(lam1 + de); +} diff --git a/navit/tools/gpx2navit_txt/src/geod_inv.c b/navit/tools/gpx2navit_txt/src/geod_inv.c new file mode 100644 index 000000000..d938da8a3 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/geod_inv.c @@ -0,0 +1,73 @@ +#ifndef lint +static const char SCCSID[] = + "@(#)geod_inv.c 4.5 95/09/23 GIE REL"; +#endif +# include "projects.h" +# include "geodesic.h" +# define DTOL 1e-12 +void geod_inv(void) +{ + double th1, + th2, + thm, + dthm, + dlamm, + dlam, + sindlamm, + costhm, + sinthm, + cosdthm, + sindthm, L, E, cosd, d, X, Y, T, sind, tandlammp, u, v, D, A, B; + + if (ellipse) { + th1 = atan(onef * tan(phi1)); + th2 = atan(onef * tan(phi2)); + } else { + th1 = phi1; + th2 = phi2; + } + thm = .5 * (th1 + th2); + dthm = .5 * (th2 - th1); + dlamm = .5 * (dlam = adjlon(lam2 - lam1)); + if (fabs(dlam) < DTOL && fabs(dthm) < DTOL) { + al12 = al21 = geod_S = 0.; + return; + } + sindlamm = sin(dlamm); + costhm = cos(thm); + sinthm = sin(thm); + cosdthm = cos(dthm); + sindthm = sin(dthm); + L = sindthm * sindthm + (cosdthm * cosdthm - sinthm * sinthm) + * sindlamm * sindlamm; + d = acos(cosd = 1 - L - L); + if (ellipse) { + E = cosd + cosd; + sind = sin(d); + Y = sinthm * cosdthm; + Y *= (Y + Y) / (1. - L); + T = sindthm * costhm; + T *= (T + T) / L; + X = Y + T; + Y -= T; + T = d / sind; + D = 4. * T * T; + A = D * E; + B = D + D; + geod_S = geod_a * sind * (T - f4 * (T * X - Y) + + f64 * (X * (A + (T - .5 * (A - E)) * X) - + Y * (B + E * Y) + D * X * Y)); + tandlammp = tan(.5 * (dlam - .25 * (Y + Y - E * (4. - X)) * + (f2 * T + f64 * (32. * T - (20. * T - A) + * X - (B + + 4.) * Y)) * + tan(dlam))); + } else { + geod_S = geod_a * d; + tandlammp = tan(dlamm); + } + u = atan2(sindthm, (tandlammp * costhm)); + v = atan2(cosdthm, (tandlammp * sinthm)); + al12 = adjlon(TWOPI + v - u); + al21 = adjlon(TWOPI - v - u); +} diff --git a/navit/tools/gpx2navit_txt/src/geod_set.c b/navit/tools/gpx2navit_txt/src/geod_set.c new file mode 100644 index 000000000..1ba2ef42f --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/geod_set.c @@ -0,0 +1,95 @@ +#ifndef lint +/* + * static const char SCCSID[]="@(#)geod_set.c 4.8 95/09/23 GIE REL"; + */ +#endif + +#define _IN_GEOD_SET + +#include <string.h> +#include "projects.h" +#include "geodesic.h" +#include "emess.h" +void geod_set(int argc, char **argv) +{ + paralist *start = 0, *curr = NULL; /* added NULL */ + double es; + char *name; + int i; + +/* + * put arguments into internal linked list + */ + if (argc <= 0) + emess(1, "no arguments in initialization list"); + for (i = 0; i < argc; ++i) + if (i) + curr = curr->next = pj_mkparam(argv[i]); + else + start = curr = pj_mkparam(argv[i]); +/* + * set elliptical parameters + */ + if (pj_ell_set(start, &geod_a, &es)) + emess(1, "ellipse setup failure"); +/* + * set units + */ + if ((name = pj_param(start, "sunits").s)) { /* added parentheses */ + char *s; + + for (i = 0; (s = pj_units[i].id) && strcmp(name, s); ++i); + if (!s) + emess(1, "%s unknown unit conversion id", name); + fr_meter = 1. / (to_meter = atof(pj_units[i].to_meter)); + } else + to_meter = fr_meter = 1.; + if ((ellipse = es != 0.)) { /* added parentheses */ + onef = sqrt(1. - es); + geod_f = 1 - onef; + f2 = geod_f / 2; + f4 = geod_f / 4; + f64 = geod_f * geod_f / 64; + } else { + onef = 1.; + geod_f = f2 = f4 = f64 = 0.; + } +/* + * check if line or arc mode + */ + if (pj_param(start, "tlat_1").i) { + double del_S; +#undef f + phi1 = pj_param(start, "rlat_1").f; + lam1 = pj_param(start, "rlon_1").f; + if (pj_param(start, "tlat_2").i) { + phi2 = pj_param(start, "rlat_2").f; + lam2 = pj_param(start, "rlon_2").f; + geod_inv(); + geod_pre(); + } else if ((geod_S = pj_param(start, "dS").f)) { /* added + * parentheses + */ + al12 = pj_param(start, "rA").f; + geod_pre(); + geod_for(); + } else + emess(1, "incomplete geodesic/arc info"); + if ((n_alpha = pj_param(start, "in_A").i) > 0) { + if (!(del_alpha = pj_param(start, "rdel_A").f)) + emess(1, "del azimuth == 0"); + } else if ((del_S = fabs(pj_param(start, "ddel_S").f))) { /* added + * parentheses + */ + n_S = geod_S / del_S + .5; + } else if ((n_S = pj_param(start, "in_S").i) <= 0) + emess(1, "no interval divisor selected"); + } +/* + * free up linked list + */ + for (; start; start = curr) { + curr = start->next; + pj_dalloc(start); + } +} diff --git a/navit/tools/gpx2navit_txt/src/geodesic.h b/navit/tools/gpx2navit_txt/src/geodesic.h new file mode 100644 index 000000000..b9aa853d4 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/geodesic.h @@ -0,0 +1,51 @@ +#ifndef lint +/*static char GEODESIC_H_ID[] = "@(#)geodesic.h 4.3 95/08/19 GIE REL"; */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef _IN_GEOD_SET +# define GEOD_EXTERN extern +#else +# define GEOD_EXTERN +#endif + +GEOD_EXTERN struct geodesic { + double A; + double LAM1, PHI1, ALPHA12; + double LAM2, PHI2, ALPHA21; + double DIST; + double ONEF, FLAT, FLAT2, FLAT4, FLAT64; + int ELLIPSE; +} GEODESIC; + +# define geod_a GEODESIC.A +# define lam1 GEODESIC.LAM1 +# define phi1 GEODESIC.PHI1 +# define al12 GEODESIC.ALPHA12 +# define lam2 GEODESIC.LAM2 +# define phi2 GEODESIC.PHI2 +# define al21 GEODESIC.ALPHA21 +# define geod_S GEODESIC.DIST +# define geod_f GEODESIC.FLAT +# define onef GEODESIC.ONEF +# define f2 GEODESIC.FLAT2 +# define f4 GEODESIC.FLAT4 +# define ff2 GEODESIC.FLAT4 +# define f64 GEODESIC.FLAT64 +# define ellipse GEODESIC.ELLIPSE + + +GEOD_EXTERN int n_alpha, n_S; +GEOD_EXTERN double to_meter, fr_meter, del_alpha; + +void geod_set(int, char **); +void geod_for(void); +void geod_pre(void); +void geod_inv(void); + +#ifdef __cplusplus +} +#endif diff --git a/navit/tools/gpx2navit_txt/src/gpx2navit_txt.h b/navit/tools/gpx2navit_txt/src/gpx2navit_txt.h new file mode 100644 index 000000000..cd4b5e495 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/gpx2navit_txt.h @@ -0,0 +1,273 @@ +#ifndef GPX2SHP_H_INCLUDED +#define GPX2SHP_H_INCLUDED + +#define PROG gpx2navit_txt +#define FILENAMELENGTH 255 /* 255 is max length for dbf string column */ +#define COMMENTLENGTH 255 /* 255 is max length for dbf string column */ +#define NAMELENGTH 32 +#define TIMELENGTH 32 +#define TYPELENGTH 16 +#define BUFFSIZE 8192 +#define DATABUFSIZE 16 +#define failToWriteAttr(S, T) failToWriteAttrRep((S), (T),__FILE__, __LINE__ ) + +#include <stdio.h> +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <unistd.h> +#include <libgen.h> +#include <getopt.h> +#include <time.h> +#include <assert.h> +#include <expat.h> +#include "errorcode.h" +//#include "shapefil.h" + + +#define DEBUG 0 +/** + * make xml parent and child list + */ +typedef struct parent { + char *name; /** element name */ + struct parent *parentptr; + /** parent pointer */ +} parent; + +/** + * set attribute columns on/off + */ +typedef struct g2scolumns { +/** + * each member corresponds to attribute column of attribute table + */ + int name; + int cmt; + int desc; + int src; + int link; + int type; + int time; + int number; + int ele; + int magvar; + int geoidheight; + int sym; + int fix; + int sat; + int hdop; + int vdop; + int pdop; + int ageofdgpsdata; + int dgpsid; + int length; + int interval; + int speed; + int points; + int gpxline; +} g2scolumns; + +/** + * store each path attribute values for trackpoint and route. + */ +typedef struct pathattr { + char name[NAMELENGTH]; + char cmt[COMMENTLENGTH]; + char desc[COMMENTLENGTH]; + char src[COMMENTLENGTH]; + char link[FILENAMELENGTH]; + int number; + char type[TYPELENGTH]; + double length; + double interval; + double speed; + /* + double *x; + double *y; + double *z; + */ + double *point; + int count; +} pathattr; + +/** + * store each point attribute values. + */ +typedef struct g2sattr { +/** + * the structure cames from GPX1.1 format + */ + double lon; + double lat; + double minlon; + double minlat; + double maxlon; + double maxlat; + char name[NAMELENGTH]; + char cmt[COMMENTLENGTH]; + char desc[COMMENTLENGTH]; + char src[COMMENTLENGTH]; + char link[FILENAMELENGTH]; + char type[TYPELENGTH]; + char time[TIMELENGTH]; + int number; + double ele; + double magvar; + double geoidheight; + char sym[NAMELENGTH]; + char fix[NAMELENGTH]; + int sat; + double hdop; + double vdop; + double pdop; + double ageofdgpsdata; + int dgpsid; + char author[NAMELENGTH]; + char keywords[NAMELENGTH]; + char copyright[NAMELENGTH]; + int year; + char license[NAMELENGTH]; +} g2sattr; + +/** + * statistics structure + */ +typedef struct g2sstats { + int trkpoints; /** track point total count */ + int trkcount; /** track path total count */ + double trklength; /** track total length */ + int rtepoints; /** route point total count */ + int rtecount; /** route path totol count */ + double rtelength; /** route total length */ + int wptpoints; /** way point total count */ + int trkunconverted; /** unconverted track path count */ + int rteunconverted; /** unconverted route path count */ +} g2sstats; + +/** + * cluster of all dbfhandles + */ +//typedef struct dbfhandles { +// DBFHandle trk; /** for track */ +// DBFHandle wpt; /** for waypoint */ +// DBFHandle rte; /** for route */ +// DBFHandle trk_edg; /** for track each edge */ +// DBFHandle trk_pnt; /** for track each point */ +// DBFHandle rte_edg; /** for route each edge */ +// DBFHandle rte_pnt; /** for route each point */ +//} dbfhandles; + +/** + * cluster of all shphandles + */ +//typedef struct shphandles { +// SHPHandle trk; /** for track */ +// SHPHandle wpt; /** for waypoint */ +// SHPHandle rte; /** for route */ +// SHPHandle trk_edg; /** for track each edge */ +// SHPHandle trk_pnt; /** for track each point */ +// SHPHandle rte_edg; /** for route each edge */ +// SHPHandle rte_pnt; /** for route each point */ +//} shphandles; + +/** + * propaties structure for gpx2navit_txt + */ +typedef struct g2sprop { + int parseWpt; /** convert waypoint data or not */ + int parseTrk; /** convert track data or not */ + int parseRte; /** convert route data or not */ + int is3d; /** using 3D mode */ + int isEdge; /** convert path data as each separated path */ + int isPoint; /** convert path data as point */ + int isFast; /** fast mode that skips path check */ + int needsStats; /** shows statistics at last */ + int minpoints; /** minimum points to convert as a path */ + int minlength; /** minimum length to convert as a path */ + int mintime; /** minimum time to convert as a path */ + int verbose; /** verbose mode on/off */ + char *sourcefile; /** source .gpx file */ + char *output; /** output file base name */ + char *ellipsoid; /** ellipsoid type to calculate length */ + char *lengthUnit; /** length unit for attributes*/ + double length2meter;/** meter value of lenght unit */ + char *timeUnit; /** time unit for attributes */ + double time2sec; /** value to convert time unit to second */ + char *speedLengthUnit; + /** lenght unit to calculate speed*/ + double speed2meter; /** meter value of speedLengthUnit */ + char *speedTimeUnit;/** time unit to calculate speed */ + int speed2sec; /** value to convert speedTimeUnit to seconde */ + g2sstats *stats; /** convert statistics */ + g2scolumns *cols; /** attribute table column switch */ +} g2sprop; + +/** + * userdata structure between expat methods + */ +typedef struct parsedata { + int depth; /** xml path depth */ + char *databuf; /** character buffer in tags */ + char *bufptr; /** pointer to databuf to add '\0' to databuf */ + int failed; /** xml parse failed flag */ + int failedid; /** xml parse failed id */ + XML_Parser parser; /** xml parser itself*/ + parent *parent; /** pointer to parent node */ + parent *current; /** pointer to current node */ + FILE *fp; /** File handle to write out data points*/ +// shphandles *shps; /** .shp file cluster that is used in this program */ +// dbfhandles *dbfs; /** .dbf file cluster that is used in this program */ + g2sattr *attr; /** each point attributes */ + pathattr *pattr; /** each path attributes */ + g2sprop *prop; /** propaties for this program */ +} parsedata; + +/* utils.c */ +void checkEllpsUnit(char *unit); +double checkLengthUnit(char *unit); +int checkTimeUnit(char *unit); +double getTimeInterval(char *_t, char *t); +double getSpeed(double length, double ti, double to_meter, int to_sec); +double getDistance(double _x, double _y, double x, double y); +//void closeShpFiles(shphandles * shps); +//void closeDbfFiles(dbfhandles * dbfs); +void *myMallocRep(size_t size, const char *fileName, int line); + +/* misc.c */ +void failToWriteAttrRep(int iShape, int col, char *file, int line); +void showStats(g2sprop * prop); +void wipePathAttr(pathattr * pattr); +pathattr *createPathAttr(void); +void wipeAttr(g2sattr * attr); +void setColsDefault(g2scolumns * cols); +g2scolumns *createCols(void); +g2sattr *createAttr(void); +g2sprop *createProp(void); +void closeProp(g2sprop * prop); +//shphandles *createShps(void); +//dbfhandles *createDbfs(void); +parsedata *createParsedata(XML_Parser parser, g2sprop * prop); +void closeParsedata(parsedata * pdata); + +/* parser.c */ +void parseMain(g2sprop * pr); + +/* elementControl.c */ +void startElementControl(parsedata * pdata, const char *element, + const char **attr); +void endElementControl(parsedata * pdata, const char *element); + +/* setwpt.c */ +void setWpt( parsedata * pdata); + +/* setpath.c */ +void initPathAttr(pathattr * pattr, g2sattr * attr); +void setPathInterval(parsedata *pdata); +void setPathData(pathattr * parrt, g2sattr * attr); +void setPath( parsedata * pdata); + +/* setmetadata.c */ +void setMetadata(parsedata * pdata); + +#endif diff --git a/navit/tools/gpx2navit_txt/src/main.c b/navit/tools/gpx2navit_txt/src/main.c new file mode 100644 index 000000000..af8df875c --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/main.c @@ -0,0 +1,389 @@ +#include "gpx2navit_txt.h" +#include "geodesic.h" + +void version(void); +void usage(char **argv); +void setDefault(g2sprop * prop); +void setOptions(int argc, char **argv, g2sprop * prop); + +/** + * Shows a version + */ +void version(void) +{ + fprintf(stdout, "gpx2navit_txt 0.1\n"); + fprintf(stdout, "\n"); + fprintf(stdout, "by Toshihiro Hiraoka\n"); + fprintf(stdout, " Petter Reinholdtsen\n"); +} + +/** + * Shows a usage message + */ +void usage(char **argv) +{ + fprintf(stdout, "Usage: %s gpxfile [options] [-o output basename]\n", + argv[0]); + fprintf(stdout, + "-o, --output Sets output basename. The default is (source file\n"); + fprintf(stdout, " name) - (extention name)\n"); + fprintf + (stdout, + "-w, --waypoints Converts only waypoints data from a gpx file.\n"); + fprintf(stdout, + "-t, --trackpoints Converts only trackpoints data from a gpx file.\n"); + fprintf(stdout, + "-r, --routes Converts only routes data from a gpx file.\n"); + fprintf(stdout, + "-a, --all Converts all types of data from a gpx file.(default)\n"); + fprintf(stdout, + "-e, --as-edge Makes a separated output by each edges.\n"); + fprintf(stdout, + "-p, --as-point Makes a separated output by each points.\n"); + fprintf(stdout, + "-s, --stats Shows simple statistics of the outputs.\n"); + fprintf(stdout, + "-b, --basic-columns Stores only basic data as attribures to \n"); + fprintf(stdout, + " reduce memory and storage usage.\n"); + fprintf(stdout, + " (ele, name, cmt, type, time, fix, sym and number).\n"); + fprintf(stdout, + "-L, --no-length Removes length column from a waypoint or trackpoint\n"); + fprintf(stdout, " attribute table.\n"); + fprintf + (stdout, + "-S, --no-speed Removes speed column from a waypoint or trackpoint\n"); + fprintf(stdout, " attribute table.\n"); + fprintf + (stdout, + "-T, --no-time Removes time column from an attribute table.\n"); + fprintf(stdout, + "-g, --gpxline Adds line number of GPX file as attribures.\n"); + fprintf + (stdout, + "-f, --fast Make it faster without any checks.\n"); + fprintf(stdout, + "-3, --3d Converts data using 3d format. (It's not compatible\n"); + fprintf(stdout, " for Arcview 3.x.)\n"); + fprintf(stdout, + " --min-points Sets path minimum points to convert for noise reduction.\n"); + fprintf(stdout, " Default is 2.\n"); + fprintf(stdout, + " --min-length Sets path minimum length to convert for noise reduction.\n"); + fprintf(stdout, " Default is 0.\n"); + fprintf(stdout, + " --min-time Sets path minimum time period to convert for noise\n"); + fprintf(stdout, " reduction.\n"); + fprintf(stdout, " Default is 0.\n"); + fprintf(stdout, + " --length-unit Sets length unit from m,km,feet,mi and etc.\n"); + fprintf(stdout, " The default is m.\n"); + fprintf(stdout, + " You can see the unit list from \"geod -lu\" command.\n"); + fprintf + (stdout, + " --time-unit Sets time unit. The default is sec.\n"); + fprintf(stdout, + " You can set from day, hour, min and sec.\n"); + fprintf(stdout, + " --speed-length-unit Sets length unit for speed.\n"); + fprintf(stdout, " The default is km.\n"); + fprintf(stdout, + " You can see the unit list from \"geod -lu\" command.\n"); + fprintf(stdout, + " --speed-time-unit Sets time unit for speed calulation. Default is hour.\n"); + fprintf(stdout, + " You can set from day, hour, min and sec.\n"); + fprintf(stdout, + " --length-ellipsoid Sets length ellipsoid like UGS84, clrk66. The default is\n"); + fprintf(stdout, " UGS84.\n"); + fprintf + (stdout, + " You can see the unit list from \"geod -le\" command.\n"); + fprintf(stdout, "-v, --verbose Gives many messages.\n"); + fprintf(stdout, " --version Shows version.\n"); + fprintf(stdout, "-h, --help Shows this list.\n"); +} + +/** + * Sets default values to the properties when there is no user setting. + */ +void setDefault(g2sprop * prop) +{ + char *pargv[2]; + int pargc = 2; + char *ellps; + /* if there are no options like -p,-w,-e, sets as -a */ + if (!(prop->parseWpt | prop->parseTrk | prop->parseRte)) { + prop->parseWpt = 1; + prop->parseTrk = 1; + prop->parseRte = 1; + } + /* if there is no output setting, sets it as [sourcefile name] - ".gpx" */ + if (prop->output == NULL) { + char *dot = strrchr(prop->sourcefile, '.'); + prop->output = + (char *) malloc(sizeof(char) * strlen(prop->sourcefile) + 1); + if (0 == strcmp(dot, ".gpx")) { + int len = dot - prop->sourcefile; + strncpy(prop->output, prop->sourcefile, len); + prop->output[len] = 0; + } else { + fprintf(stderr, + "The source file doesn't have .gpx extension.\n"); + exit(ERR_ISNOTGPX); + } + } + /* sets ellipsoid "WGS84" */ + if (prop->ellipsoid == NULL) { + prop->ellipsoid = (char *) malloc(sizeof(char) * 7); + strcpy(prop->ellipsoid, "WGS84"); + } + /* sets lengthUnit "m" */ + if (prop->lengthUnit == NULL) { + prop->lengthUnit = (char *) malloc(sizeof(char) * 2); + strcpy(prop->lengthUnit, "m"); + } + /* sets timeUnit "sec" */ + if (prop->timeUnit == NULL) { + prop->timeUnit = (char *) malloc(sizeof(char) * 4); + strcpy(prop->timeUnit, "sec"); + } + /* sets speedLengthUnit "km" */ + if (prop->speedLengthUnit == NULL) { + prop->speedLengthUnit = (char *) malloc(sizeof(char) * 3); + strcpy(prop->speedLengthUnit, "km"); + } + /* sets speedTimeUnit "hour" */ + if (prop->speedTimeUnit == NULL) { + prop->speedTimeUnit = (char *) malloc(sizeof(char) * 5); + strcpy(prop->speedTimeUnit, "hour"); + } + /* sets ellipsoid setting to geod* programs */ + ellps = malloc(sizeof(char) * (strlen(prop->ellipsoid) + 8)); + strcpy(ellps, "+ellps="); + strcat(ellps, prop->ellipsoid); + pargv[0] = ellps; + pargv[1] = prop->lengthUnit; + checkEllpsUnit(prop->ellipsoid); + prop->length2meter = checkLengthUnit(prop->lengthUnit); + prop->time2sec = checkTimeUnit(prop->timeUnit); + prop->speed2meter = checkLengthUnit(prop->speedLengthUnit); + prop->speed2sec = checkTimeUnit(prop->speedTimeUnit); + geod_set(pargc, pargv); + if (prop->verbose) { + printf("source filename:\t%s\n", prop->sourcefile); + printf("output file base name:\t%s\n", prop->output); + } + free(ellps); +} + +/** + * Set options from command arguments + */ +void setOptions(int argc, char **argv, g2sprop * prop) +{ + int result; + /* option struct for getopt_long */ + struct option const long_options[] = { + {"waypoints", no_argument, 0, 'w'}, + {"trackpoints", no_argument, 0, 't'}, + {"routes", no_argument, 0, 'r'}, + {"output", required_argument, 0, 'o'}, + {"as-edge", no_argument, 0, 'e'}, + {"as-point", no_argument, 0, 'p'}, + {"min-points", required_argument, 0, 'P'}, + {"min-length", required_argument, 0, 'l'}, + {"min-time", required_argument, 0, 'm'}, + {"stats", no_argument, 0, 's'}, + {"basic-columns", no_argument, 0, 'b'}, + {"fast", no_argument, 0, 'f'}, + {"length-unit", required_argument, 0, '4'}, + {"time-unit", required_argument, 0, '8'}, + {"length-ellipsoid", required_argument, 0, '7'}, + {"speed-length-unit", required_argument, 0, '5'}, + {"speed-time-unit", required_argument, 0, '6'}, + {"no-speed", no_argument, 0, 'S'}, + {"no-length", no_argument, 0, 'L'}, + {"no-time", no_argument, 0, 'T'}, + {"verbose", no_argument, 0, 'v'}, + {"gpxline", no_argument, 0, 'g'}, + {"all", no_argument, 0, 'a'}, + {"version", no_argument, 0, 'V'}, + {"help", no_argument, 0, '?'}, + {0, no_argument, 0, '0'}, + }; + if (argc <= 1) { + fprintf(stderr, "There is no argument.\n"); + usage(argv); + exit(ERR_NOARGS); + } + /* set option attributes */ + while ((result = + getopt_long(argc, argv, "3wtrao:epfP:l:m:bS4:5:6:7:8:LTSsvg0", + long_options, NULL)) != -1) { + switch (result) { + case '3': /* 3d output */ + prop->is3d = 1; + break; + case 'w': /* converts only waypoint */ + prop->parseWpt = 1; + break; + case 't': /* converts only trackpoint */ + prop->parseTrk = 1; + break; + case 'r': /* converts only route */ + prop->parseRte = 1; + break; + case 'a': /* converts all */ + prop->parseWpt = 1; + prop->parseTrk = 1; + prop->parseRte = 1; + break; + case 'o': /* sets basename of output file */ + prop->output = + (char *) malloc(sizeof(char) * strlen(optarg) + 1); + strcpy(prop->output, optarg); + break; + case 'e': /* make output by each edges */ + if (prop->isEdge) { + fprintf(stderr, "option -e cannot use with -f\n"); + exit(ERR_OPTIONCONFRICT); + } + prop->isEdge = 1; + break; + case 'p': /* make output by each edges */ + prop->isPoint = 1; + break; + case 'f': /* make it faster */ + if (prop->isEdge) { + fprintf(stderr, "option -f cannot use with -e\n"); + exit(ERR_OPTIONCONFRICT); + } + prop->isFast = 1; + prop->cols->desc = 0; + prop->cols->src = 0; + prop->cols->link = 0; + prop->cols->magvar = 0; + prop->cols->geoidheight = 0; + prop->cols->sat = 0; + prop->cols->hdop = 0; + prop->cols->vdop = 0; + prop->cols->pdop = 0; + prop->cols->ageofdgpsdata = 0; + prop->cols->dgpsid = 0; + prop->cols->length = 0; + prop->cols->interval = 0; + prop->cols->speed = 0; + break; + case 'P': /* sets minimun points as a path */ + prop->minpoints = atoi(optarg); + break; + case 'l': /* sets minimun length as a path */ + prop->minlength = atoi(optarg); + break; + case 'm': /* sets minimun time as a path */ + prop->mintime = atoi(optarg); + break; + case 'b': /* use only some columns */ + prop->cols->desc = 0; + prop->cols->src = 0; + prop->cols->link = 0; + prop->cols->magvar = 0; + prop->cols->geoidheight = 0; + prop->cols->sat = 0; + prop->cols->hdop = 0; + prop->cols->vdop = 0; + prop->cols->pdop = 0; + prop->cols->ageofdgpsdata = 0; + prop->cols->dgpsid = 0; + prop->cols->length = 0; + prop->cols->interval = 0; + prop->cols->speed = 0; + break; + case 'S': /* doesn't make speed column */ + prop->cols->speed = 0; + break; + case '4': /* sets length unit */ + prop->lengthUnit = malloc(sizeof(char) * (strlen(optarg) + 1)); + strcpy(prop->lengthUnit, optarg); + break; + case '5': /* sets length unit for calculating speed */ + prop->speedLengthUnit = + malloc(sizeof(char) * (strlen(optarg) + 1)); + strcpy(prop->speedLengthUnit, optarg); + break; + case '6': /* sets time unit for calculating speed */ + prop->speedTimeUnit = + malloc(sizeof(char) * (strlen(optarg) + 1)); + strcpy(prop->speedTimeUnit, optarg); + break; + case '7': /* sets ellipsoid for calculating length */ + prop->ellipsoid = malloc(sizeof(char) * (strlen(optarg) + 1)); + strcpy(prop->ellipsoid, optarg); + break; + case '8': /* sets time unit */ + prop->timeUnit = malloc(sizeof(char) * (strlen(optarg) + 1)); + strcpy(prop->timeUnit, optarg); + break; + case 'L': /* doesn't make length column */ + prop->cols->length = 0; + break; + case 'T': /* doesn't make time column */ + prop->cols->interval = 0; + break; + case 's': /* shows source file stats */ + prop->needsStats = 1; + break; + case 'v': /* verbose mode */ + prop->verbose = 1; + break; + case 'V': /* shows version */ + version(); + exit(EXIT_SUCCESS); + break; + case 'g': /* adds gpx line number column */ + prop->cols->gpxline = 1; + break; + case ':': + usage(argv); + exit(ERR_WRONGOPTION); + break; + case '0': + usage(argv); + exit(ERR_WRONGOPTION); + break; + default: + usage(argv); + exit(ERR_WRONGOPTION); + break; + } + } + /* gets a source file name */ + if(argv[optind] == NULL) { + fprintf(stderr, "There is no gpxfile description.\n"); + usage(argv); + exit(ERR_WRONGOPTION); + } + prop->sourcefile = malloc(sizeof(char) * (strlen(argv[optind]) + 1)); + /** @note needs to change here to support + * a several files convertion */ + strcpy(prop->sourcefile, argv[optind]); + setDefault(prop); +} + +/** + * Main + */ +int main(int argc, char **argv) +{ + g2sprop *prop; + prop = createProp(); + setOptions(argc, argv, prop); + parseMain(prop); + if (prop->needsStats) + showStats(prop); + closeProp(prop); + return (0); +} diff --git a/navit/tools/gpx2navit_txt/src/misc.c b/navit/tools/gpx2navit_txt/src/misc.c new file mode 100644 index 000000000..b5fddd347 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/misc.c @@ -0,0 +1,344 @@ +#include "gpx2navit_txt.h" + +void failToWriteAttrRep(int iShape, int col, char *file, int line); +void showStats(g2sprop * prop); +void wipePathAttr(pathattr * pattr); +pathattr *createPathAttr(void); +void wipeAttr(g2sattr * attr); +void setColsDefault(g2scolumns * cols); +g2scolumns *createCols(void); +g2sattr *createAttr(void); +g2sprop *createProp(void); +void closeProp(g2sprop * prop); +//shphandles *createShps(void); +//dbfhandles *createDbfs(void); +parsedata *createParsedata(XML_Parser parser, g2sprop * prop); +void closeParsedata(parsedata * pdata); + +/** + * message when fail to write attribute + */ +void failToWriteAttrRep(int iShape, int col, char *file, int line) +{ + printf("Fail to write a attribute at %s:%i. shapeid:%i col:%i\n", file, + line, iShape, col); +} + +/** + * shows short statistics + */ +void showStats(g2sprop * prop) +{ + g2sstats *stats = prop->stats; + double ratio; + if (prop->needsStats) { + if (prop->parseTrk) { + if (stats->trkunconverted != 0) { + ratio = + (double) stats->trkunconverted / (stats->trkcount + + stats-> + trkunconverted) * + 100; + } else { + ratio = 0; + } + printf("Track Points:\n"); + printf("\ttrack count:\t%i\n", stats->trkcount); + printf("\tpoint count:\t%i\n", stats->trkpoints); + if (!prop->isFast) { + printf("\ttotal length:\t%f\n", stats->trklength); + printf("\tunconverted:\t%i(%5.2f%%)\n", + stats->trkunconverted, ratio); + } + } + if (prop->parseRte) { + if (stats->rteunconverted != 0) { + ratio = + (double) stats->rteunconverted / (stats->rtecount + + stats-> + rteunconverted) * + 100; + } else { + ratio = 0; + } + printf("Routes:\n"); + printf("\troute count:\t%i\n", stats->rtecount); + printf("\tpoint count:\t%i\n", stats->rtepoints); + if (!prop->isFast) { + printf("\ttotal length:\t%f\n", stats->rtelength); + printf("\tunconverted:\t%i(%5.2f%%)\n", + stats->rteunconverted, ratio); + } + } + if (prop->parseWpt) { + printf("Waypoints:\n"); + printf("\tpoint count:\t%i\n", stats->wptpoints); + } + } +} + +/** + * clears a path attribute structure + */ +void wipePathAttr(pathattr * pattr) +{ + pattr->name[0] = '\0'; + pattr->cmt[0] = '\0'; + pattr->desc[0] = '\0'; + pattr->src[0] = '\0'; + pattr->link[0] = '\0'; + pattr->number = 0; + pattr->type[0] = '\0'; + pattr->length = 0; + pattr->interval = 0; + pattr->speed = 0; + //pattr->point = NULL; + pattr->count = 0; +} + +/** + * creates a new path attribute + */ +pathattr *createPathAttr(void) +{ + pathattr *pattr; + pattr = (pathattr *) malloc(sizeof(pathattr)); + wipePathAttr(pattr); + return pattr; +} + +/** + * clears a element attribute structure + */ +void wipeAttr(g2sattr * attr) +{ + attr->lon = 0; + attr->lat = 0; + attr->minlon = 0; + attr->minlat = 0; + attr->maxlon = 0; + attr->maxlat = 0; + attr->name[0] = '\0'; + attr->cmt[0] = '\0'; + attr->desc[0] = '\0'; + attr->src[0] = '\0'; + attr->link[0] = '\0'; + attr->type[0] = '\0'; + attr->time[0] = '\0'; + attr->number = 0; + attr->ele = 0; + attr->magvar = 0; + attr->geoidheight = 0; + attr->sym[0] = '\0'; + attr->fix[0] = '\0'; + attr->sat = 0; + attr->hdop = 0; + attr->vdop = 0; + attr->pdop = 0; + attr->ageofdgpsdata = 0; + attr->dgpsid = 0; + attr->author[0] = '\0'; + attr->keywords[0] = '\0'; + attr->copyright[0] = '\0'; + attr->year = 0; + attr->license[0] = '\0'; + attr->minlat = 0; + attr->minlon = 0; + attr->maxlat = 0; + attr->maxlon = 0; +} + +/** + * sets default values to a column properties. + */ +void setColsDefault(g2scolumns * cols) +{ + cols->name = 1; + cols->cmt = 1; + cols->desc = 1; + cols->src = 1; + cols->link = 1; + cols->type = 1; + cols->time = 1; + cols->number = 1; + cols->ele = 1; + cols->magvar = 1; + cols->geoidheight = 1; + cols->sym = 1; + cols->fix = 1; + cols->sat = 1; + cols->hdop = 1; + cols->vdop = 1; + cols->pdop = 1; + cols->ageofdgpsdata = 1; + cols->dgpsid = 1; + cols->length = 1; + cols->interval = 1; + cols->speed = 1; + cols->points = 1; + cols->gpxline = 0; +} + +/** + * creates a column structure + */ +g2scolumns *createCols(void) +{ + g2scolumns *cols; + cols = (g2scolumns *) malloc(sizeof(g2scolumns)); + setColsDefault(cols); + return cols; +} + +/** + * creates a element attribute structure. + */ +g2sattr *createAttr(void) +{ + g2sattr *attr; + attr = (g2sattr *) malloc(sizeof(g2sattr)); + wipeAttr(attr); + return attr; +} + +/** + * creates a properties structure for gpx2shp + */ +g2sprop *createProp(void) +{ + g2sprop *prop; + g2sstats *stats; + g2scolumns *cols; + prop = malloc(sizeof(g2sprop)); + stats = malloc(sizeof(g2sstats)); + cols = createCols(); + prop->stats = stats; + prop->parseWpt = 0; + prop->parseTrk = 0; + prop->parseRte = 0; + prop->minpoints = 2; + prop->minlength = 0; + prop->mintime = 0; + prop->is3d = 0; + prop->isEdge = 0; + prop->isPoint = 0; + prop->isFast = 0; + prop->needsStats = 0; + prop->verbose = 0; + prop->output = NULL; + prop->ellipsoid = NULL; + prop->lengthUnit = NULL; + prop->speedLengthUnit = NULL; + prop->speedTimeUnit = NULL; + prop->timeUnit = NULL; + prop->stats->trkcount = 0; + prop->stats->trkpoints = 0; + prop->stats->trklength = 0; + prop->stats->trkunconverted = 0; + prop->stats->rtecount = 0; + prop->stats->rtepoints = 0; + prop->stats->rtelength = 0; + prop->stats->rteunconverted = 0; + prop->stats->wptpoints = 0; + prop->cols = cols; + return prop; +} + +/** + * close and free a propertires structure + */ +void closeProp(g2sprop * prop) +{ + free(prop->stats); + free(prop->sourcefile); + free(prop->ellipsoid); + free(prop->timeUnit); + free(prop->speedLengthUnit); + free(prop->speedTimeUnit); + free(prop->lengthUnit); + free(prop->output); + free(prop->cols); + free(prop); +} + +/** + * creates a shapehandles structure + */ +//shphandles *createShps(void) +//{ +// shphandles *shps; +// shps = malloc(sizeof(shphandles)); +// shps->trk = NULL; +// shps->wpt = NULL; +// shps->rte = NULL; +// shps->trk_edg = NULL; +// shps->rte_edg = NULL; +// shps->trk_pnt = NULL; +// shps->rte_pnt = NULL; +// return shps; +//} + +/** + * creates a dbfhandles structure + */ +/* dbfhandles *createDbfs(void) +{ + dbfhandles *dbfs; + dbfs = malloc(sizeof(dbfhandles)); + dbfs->trk = NULL; + dbfs->wpt = NULL; + dbfs->rte = NULL; + dbfs->trk_edg = NULL; + dbfs->rte_edg = NULL; + dbfs->trk_pnt = NULL; + dbfs->rte_pnt = NULL; + return dbfs; +} */ + +/** + * creates a parse structure + */ +parsedata *createParsedata(XML_Parser parser, g2sprop * prop) +{ + parsedata *pdata = (parsedata *) malloc(sizeof(parsedata)); + pdata->fp = NULL; + //shphandles *shps = createShps(); + //dbfhandles *dbfs = createDbfs(); + pathattr *pattr = createPathAttr(); + g2sattr *attr = createAttr(); + parent *p = (parent *) malloc(sizeof(parent)); + parent *c = (parent *) malloc(sizeof(parent)); + p->name = NULL; + p->parentptr = NULL; + c->name = "root"; + c->parentptr = p; + pdata->depth = 0; + pdata->databuf = malloc(sizeof(char) * DATABUFSIZE); + pdata->bufptr = NULL; + pdata->failed = 0; + pdata->failedid = 0; + pdata->parser = parser; + pdata->parent = p; + pdata->current = c; + //pdata->shps = shps; + //pdata->dbfs = dbfs; + pdata->prop = prop; + pdata->pattr = pattr; + pdata->attr = attr; + return pdata; +} + +/* + * close and free resoures + */ +void closeParsedata(parsedata * pdata) +{ + //free(pdata->shps); + //free(pdata->dbfs); + free(pdata->parent); + free(pdata->current); + free(pdata->databuf); + free(pdata->attr); + free(pdata->pattr); + free(pdata); +} diff --git a/navit/tools/gpx2navit_txt/src/parser.c b/navit/tools/gpx2navit_txt/src/parser.c new file mode 100644 index 000000000..70104dafe --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/parser.c @@ -0,0 +1,148 @@ +#include "gpx2navit_txt.h" + +void charHandle(void *userdata, const XML_Char * data, int length); +void startElement(void *userdata, const char *element, const char **attr); +void endElement(void *userdata, const char *element); +void parseMain(g2sprop * prop); + +/** + * a handler to parse charctor data on expat + */ +void charHandle(void *userdata, const XML_Char * data, int length) +{ + static int bufsize = DATABUFSIZE; + static int string_length = 0; + int new_length; + static int begin_copy = 0; + int i; + parsedata *pdata = (parsedata *) userdata; + if (pdata->bufptr == NULL) { + //start of buffer -->pdata->bufptr set to 0 at endelement + string_length = 0; + begin_copy = 0; //begin to copy after first space + pdata->bufptr= pdata->databuf; + } + new_length = string_length + length + 1; //additonal 0 + if (bufsize < new_length) { + pdata->databuf = + realloc(pdata->databuf, new_length); + bufsize = new_length; + //because of realloc the pointer may have changed + pdata->bufptr = pdata->databuf + string_length; + } + // because expat calls this routine several times on special chars + // we need to do following + // --concat strings until reset (bufptr set to NULL) + // --filter out blank chars at begin of string + for (i=0; i<length;i++) { + if (begin_copy || !isspace(data[i])) { + *pdata->bufptr = data[i]; + pdata->bufptr++; + string_length ++; + begin_copy = 1; + if (DEBUG) fprintf(stderr,"%c",data[i]); + } + } + *pdata->bufptr = '\0'; +} + +/** + * a handler when a element starts + */ +void startElement(void *userdata, const char *element, const char **attr) +{ + parsedata *pdata = (parsedata *) userdata; + pdata->parent = pdata->current; + pdata->current = malloc(sizeof(parent)); + pdata->current->name = malloc(sizeof(char) * (strlen(element) + 1)); + strcpy(pdata->current->name, element); + pdata->current->parentptr = pdata->parent; + startElementControl(pdata, element, attr); + if (pdata->prop->verbose) { + int i; + for (i = 0; i < pdata->depth; i++) + printf(" "); + printf("<%s>: ", element); + for (i = 0; attr[i]; i += 2) { + printf(" %s='%s'", attr[i], attr[i + 1]); + } + printf("\n"); + } + pdata->depth++; +} + +/** + * a handler when a element ends + */ +void endElement(void *userdata, const char *element) +{ + parsedata *pdata = (parsedata *) userdata; + endElementControl(pdata, element); + pdata->depth--; + if (pdata->prop->verbose) { + int i; + for (i = 0; i < pdata->depth; i++) + printf(" "); + printf("</%s>:%s\n ", element,pdata->parent->name); + } + free(pdata->current->name); + free(pdata->current); + pdata->current = pdata->parent; + pdata->parent = pdata->parent->parentptr; +} + +void parseMain(g2sprop * prop) +{ + FILE *fp; + char buff[BUFFSIZE]; + XML_Parser parser; + parsedata *pdata; + fp = fopen(prop->sourcefile, "r"); + if (fp == NULL) { + fprintf(stderr, "Cannot open gpx file: %s\n", prop->sourcefile); + exit(ERR_CANNOTOPEN); + } + parser = XML_ParserCreate(NULL); + if (!parser) { + fprintf(stderr, "Couldn't allocate memory for parser\n"); + exit(ERR_OUTOFMEMORY); + } + pdata = createParsedata(parser, prop); + + char *output_wpt = + (char *) malloc(sizeof(char) * (strlen(pdata->prop->output) + 9)); + strcpy(output_wpt, pdata->prop->output); + strcat(output_wpt, "_nav.txt"); + pdata->fp = fopen(output_wpt,"w"); + if (pdata->fp == NULL) + { + //todo + fprintf(stderr,"Failure opening File %s for writing",output_wpt); + exit(1); + } + free(output_wpt); + XML_SetUserData(parser, pdata); + XML_SetElementHandler(parser, startElement, endElement); + XML_SetCharacterDataHandler(parser, charHandle); + for (;;) { + int done; + int len; + fgets(buff, BUFFSIZE, fp); + len = (int) strlen(buff); + if (ferror(fp)) { + fprintf(stderr, "Read error file: %s\n", prop->sourcefile); + exit(ERR_READERROR); + } + done = feof(fp); + if (done) + break; + if (!XML_Parse(parser, buff, len, done)) { + fprintf(stderr, "Parse error at line %d:\n%s\n", + XML_GetCurrentLineNumber(parser), + XML_ErrorString(XML_GetErrorCode(parser))); + exit(ERR_PARSEERROR); + } + } + fclose(pdata->fp); //close out file + closeParsedata(pdata); +} diff --git a/navit/tools/gpx2navit_txt/src/setmeta.c b/navit/tools/gpx2navit_txt/src/setmeta.c new file mode 100644 index 000000000..9d23ffd1c --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/setmeta.c @@ -0,0 +1,54 @@ +#include "gpx2navit_txt.h" + +/** + * store gpx metadata into text file + */ +void setMetadata(parsedata * pdata) +{ + g2sprop *prop = pdata->prop; + g2sattr *attr = pdata->attr; + FILE *metafile; + char *output = malloc(sizeof(char) * (strlen(prop->output) + 10)); + strcpy(output, prop->output); + strcat(output, "_meta.txt"); + metafile = fopen(output, "w"); + if (metafile == NULL) { + fprintf(stderr, "Cannot create file: %s\n", output); + exit(ERR_CREATEFILE); + } + if (attr->name) { + fprintf(metafile, "name\t%s\n", attr->name); + } + if (attr->desc) { + fprintf(metafile, "description\t%s\n", attr->desc); + } + if (attr->author) { + fprintf(metafile, "author\t%s\n", attr->author); + } + if (attr->copyright) { + fprintf(metafile, "copyright\t%s\n", attr->copyright); + } + if (attr->link) { + fprintf(metafile, "link\t%s\n", attr->link); + } + if (attr->time) { + fprintf(metafile, "time\t%s\n", attr->time); + } + if (attr->keywords) { + fprintf(metafile, "keywords\t%s\n", attr->keywords); + } + if (attr->minlat) { + fprintf(metafile, "min latitude\t%f\n", attr->minlat); + } + if (attr->minlon) { + fprintf(metafile, "min longitude\t%f\n", attr->minlon); + } + if (attr->maxlat) { + fprintf(metafile, "max latitude\t%f\n", attr->maxlat); + } + if (attr->maxlon) { + fprintf(metafile, "max longitude\t%f\n", attr->maxlon); + } + fclose(metafile); + free(output); +} diff --git a/navit/tools/gpx2navit_txt/src/setpath.c b/navit/tools/gpx2navit_txt/src/setpath.c new file mode 100644 index 000000000..5402e4ea6 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/setpath.c @@ -0,0 +1,241 @@ +#include "gpx2navit_txt.h" + +void initPathAttr(pathattr * pattr, g2sattr * attr); +void setEdge(parsedata * pdata, double _x, double _y, double _z, + double length, double interval, double speed); +void setPathInterval(parsedata * pdata); +void setPathData(pathattr * pattr, g2sattr * attr); +void countUnconverted(parsedata * pdata); +void countPath(parsedata * pdata); +int checkPath(parsedata * pdata); +void setPath( parsedata * pdata); + + + +/** + * initialize a path attribute + */ +void initPathAttr(pathattr * pattr, g2sattr * attr) +{ + strcpy(pattr->name, attr->name); + strcpy(pattr->cmt, attr->cmt); + strcpy(pattr->desc, attr->desc); + strcpy(pattr->src, attr->src); + strcpy(pattr->link, attr->link); + pattr->number = attr->number; + strcpy(pattr->type, attr->type); + pattr->length = 0; + pattr->interval = 0; + pattr->speed = 0; + pattr->count = 0; + pattr->point = NULL; +} + + +/** + * set edge data and store it + */ +void setEdge(parsedata * pdata, double _x, double _y, double _z, + double length, double interval, double speed) +{ + pathattr *pattr = pdata->pattr; + static int isFirstTrkAsEdge = 1; + static int isFirstRteAsEdge = 1; + double x[2], y[2], z[2]; + double _length, _interval, _speed; + if (!strcmp(pdata->current->name, "trkpt")) { + if (isFirstTrkAsEdge) { + isFirstTrkAsEdge = 0; + } + } else { + if (isFirstRteAsEdge) { + isFirstRteAsEdge = 0; + } + } + _length = pattr->length; + _interval = pattr->interval; + _speed = pattr->speed; + pattr->length = length; + pattr->interval = interval; + pattr->speed = speed; + x[0] = _x; + y[0] = _y; + z[0] = _z; + x[1] = pdata->attr->lon; + y[1] = pdata->attr->lat; + z[1] = pdata->attr->ele; + if (pdata->prop->is3d) { + } else { + } + pattr->length = _length; + pattr->interval = _interval; + pattr->speed = _speed; +} + +/** + * sets interval data between two track points + */ +void setPathInterval(parsedata * pdata) +{ + pathattr *pattr = pdata->pattr; + g2sattr *attr = pdata->attr; + g2sprop *prop = pdata->prop; + static char _t[TIMELENGTH]; + double intvl = 0; + static double _x, _y, _z; + double leng = 0; + double spd; + if (pattr->count == 1) { + strcpy(_t, attr->time); + } else { + /* time interval */ + intvl = getTimeInterval(_t, attr->time); + pattr->interval = pattr->interval + intvl; + strcpy(_t, attr->time); + /* length interval */ + leng = getDistance(_x, _y, attr->lon, attr->lat); + pattr->length = pattr->length + leng; + /* interval speed */ + spd = getSpeed(leng, intvl, prop->speed2meter, prop->speed2sec); + /* sets edge data */ + if (prop->isEdge) { + setEdge(pdata, _x, _y, _z, leng, intvl, spd); + } + } + _x = attr->lon; + _y = attr->lat; + _z = attr->ele; +} + +/** + * sets each track point data in array. + */ +void setPathData(pathattr * pattr, g2sattr * attr) +{ + const int reallocsize = 100; + if (pattr->count == 0) { + pattr->point = malloc(sizeof(double) * 3 * reallocsize); + } + if ((pattr->count % reallocsize) == 0) { + pattr->point = realloc(pattr->point, + sizeof(double) * 3 * (pattr->count + + reallocsize)); + } + pattr->point[pattr->count * 3] = attr->lon; + pattr->point[pattr->count * 3 + 1] = attr->lat; + pattr->point[pattr->count * 3 + 2] = attr->ele; + pattr->count++; +} + +/** + * counts paths that wasn't converted + */ +void countUnconverted(parsedata * pdata) +{ + g2sstats *stats = pdata->prop->stats; + if (!strcmp(pdata->current->name, "trkseg")) + stats->trkunconverted++; + else + stats->rteunconverted++; +} + +/** + * counts paths + */ +void countPath(parsedata * pdata) +{ + g2sstats *stats = pdata->prop->stats; + pathattr *pattr = pdata->pattr; + if (!strcmp(pdata->current->name, "trkseg")) { + stats->trkcount++; + stats->trklength += pattr->length; + stats->trkpoints += pattr->count; + } else { + stats->rtecount++; + stats->rtelength += pattr->length; + stats->rtepoints += pattr->count; + } +} + +int checkPath(parsedata * pdata) +{ + pathattr *pattr = pdata->pattr; + g2sprop *prop = pdata->prop; + /* check point count. */ + if (pattr->count < prop->minpoints) { + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because of less then %d points. \n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), + prop->minpoints); + countUnconverted(pdata); + return 0; + /* check path length */ + } else if (pattr->length < prop->minlength * prop->length2meter) { + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because it is shorter than %dm.\n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), + prop->minlength); + countUnconverted(pdata); + return 0; + /* check path time */ + } else if (pattr->interval < prop->mintime * prop->time2sec) { + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because it is shorter than %d sed.\n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser), + prop->mintime); + countUnconverted(pdata); + return 0; + /* check path speed */ + } else if (pattr->speed == .0) { + fprintf + (stderr, + "gpx2navit_txt:%s:%i track was not converted because no move recorded.\n", + prop->sourcefile, XML_GetCurrentLineNumber(pdata->parser)); + countUnconverted(pdata); + return 0; + } + return 1; +} + +/** + * saves path data into files. + */ +void setPath( parsedata * pdata) +{ + pathattr *pattr = pdata->pattr; + g2sprop *prop = pdata->prop; + int isOk = 0; + pattr->speed = + getSpeed(pattr->length, pattr->interval, prop->speed2meter, + prop->speed2sec); + if (prop->isFast) { + isOk = 1; + } else { + isOk = checkPath(pdata); + } + if (isOk) { + double x[pattr->count]; + double y[pattr->count]; + double z[pattr->count]; + int i; + fprintf(pdata->fp,"type=track label=\"%s\" desc=\"%s\" type=\"%s\"\ length=\"%5.3f\" count=\"%5d\"\n" + ,pdata->pattr->name,pdata->pattr->desc, + pdata->pattr->type,pdata->pattr->length, + pdata->pattr->count); + + for (i = 0; i < pattr->count; i++) { + x[i] = pattr->point[i * 3]; + y[i] = pattr->point[i * 3 + 1]; + z[i] = pattr->point[i * 3 + 2]; + fprintf(pdata->fp,"%3.6f %4.6f\n",x[i],y[i]); + } + if (pdata->prop->is3d) { + } else { + } + countPath(pdata); + } + free(pattr->point); +} diff --git a/navit/tools/gpx2navit_txt/src/setwpt.c b/navit/tools/gpx2navit_txt/src/setwpt.c new file mode 100644 index 000000000..9af217f0a --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/setwpt.c @@ -0,0 +1,52 @@ +#include "gpx2navit_txt.h" + +void setWpt(parsedata * pdata); + +/** + * save point objects in *_wpt or *_pnt file + */ +void setWpt( parsedata * pdata) +{ + double x[1], y[1], z[1]; + x[0] = pdata->attr->lon; + y[0] = pdata->attr->lat; + z[0] = pdata->attr->ele; + if (pdata->prop->is3d) { + //nothing at the moment + } else { + //do not know if i will change something here + } + // Write attributes to file first line waypoint-info, second line coords + char poi_type[20]="poi_attraction"; + if (!strcmp(pdata->attr->type,"Geocache|Traditional Cache")) + strcpy(poi_type,"poi_gc_tradi"); + if (!strcmp(pdata->attr->type,"Geocache|Multi-cache")) + strcpy(poi_type,"poi_gc_multi"); + if (!strcmp(pdata->attr->type,"Geocache|Unknown Cache")) + strcpy(poi_type,"poi_gc_mystery"); + if (!strcmp(pdata->attr->type,"Geocache|Event Cache")) + strcpy(poi_type,"poi_gc_event"); + if (!strcmp(pdata->attr->type,"Geocache")) //for OC + strcpy(poi_type,"poi_gc_tradi"); + if (!strcmp(pdata->attr->type,"Waypoint|Parking Area")) + strcpy(poi_type,"poi_car_parking"); + if (!strcmp(pdata->attr->type,"Waypoint|Question to Answer")) + strcpy(poi_type,"poi_gc_question"); + if (!strcmp(pdata->attr->type,"Waypoint|Reference Point")) + strcpy(poi_type,"poi_gc_reference"); + if (!strcmp(pdata->attr->type,"Waypoint|Stages of a Multicache")) + strcpy(poi_type,"poi_gc_stages"); + + //generate the file + fprintf(pdata->fp,"type=%s label=\"%s\" description=\"%s\" gc_type=\"%s\"\n", + poi_type,pdata->attr->name,pdata->attr->desc,pdata->attr->type); + fprintf(pdata->fp,"%3.6f %4.6f\n",x[0],y[0]); + + //writeWptAttribute(hDBF, pdata, iShape); + if (!strcmp(pdata->current->name, "wpt")) { + pdata->prop->stats->wptpoints++; + } + return; +} + + diff --git a/navit/tools/gpx2navit_txt/src/utils.c b/navit/tools/gpx2navit_txt/src/utils.c new file mode 100644 index 000000000..b9b724791 --- /dev/null +++ b/navit/tools/gpx2navit_txt/src/utils.c @@ -0,0 +1,199 @@ +#include "gpx2navit_txt.h" +#include "projects.h" +#include "geodesic.h" + +double getDistanceCore(char *p1, char *l1, char *p2, char *l2); +void checkEllpsUnit(char *unit); +double checkLengthUnit(char *unit); +int checkTimeUnit(char *unit); +double getTimeInterval(char *_t, char *t); +double getSpeed(double length, double ti, double to_meter, int to_sec); +double getDistance(double _x, double _y, double x, double y); +// todo void closeShpFiles(shphandles * shps); +// todo void closeDbfFiles(dbfhandles * dbfs); +void *myMallocRep(size_t size, const char *fileName, int line); + +void checkEllpsUnit(char *unit) +{ +/* + * checks ellipse unit can be used by proj4 + */ + int isOK = 0; + struct PJ_ELLPS *el; /* project.h of proj4 */ + for (el = pj_ellps; el->id; ++el) { + if (!strcmp(el->id, unit)) { + isOK = 1; + } + } + if (!isOK) { + fputs + ("The ellipse argument is not correct or supported by libproj\n", + stderr); + fputs("You can choose the argument from a list below.\n\n", + stderr); + for (el = pj_ellps; el->id; el++) { + printf("%10s\t%s\n", el->id, el->name); + } + exit(ERR_ELLPSUNIT); + } +} + +double checkLengthUnit(char *unit) +{ +/* + * checks length unit can be used by proj4 + * then returns unit value to meter + */ + int isOK = 0; + double to_meter = 0; + struct PJ_UNITS *ut; /* project.h of proj4 */ + for (ut = pj_units; ut->id; ut++) { + if (!strcmp(ut->id, unit)) { + isOK = 1; + to_meter = atof(ut->to_meter); + } + } + if (!isOK) { + fputs + ("The length unit argument is not correct or supported by libproj.\n", + stderr); + fputs("You can choose the argument from a list below.\n\n", + stderr); + for (ut = pj_units; ut->id; ut++) { + printf("%s\t%s\n", ut->id, ut->name); + } + exit(ERR_LENGTHUNIT); + } + return to_meter; +} + +int checkTimeUnit(char *unit) +{ + char *u[8] = { "sec", "s", "min", "m", "hour", "h", "day", "d" }; + int p[8] = { 1, 1, 60, 60, 3600, 3600, 86400, 86400 }; + int i, to_sec = 0; + for (i = 0; i < 8; i++) { + if (!strcmp(u[i], unit)) { + to_sec = p[i]; + } + } + if (!to_sec) { + fputs("The time unit argument is not correct.\n", stderr); + fputs("You can choose the argument from sec, min, hour or day.\n", + stderr); + exit(ERR_TIMEUNIT); + } + return to_sec; +} + +double getTimeInterval(char *_t, char *t) +{ +/* + * Returns a time interval between _t and t. + * The arguments should be "YYYY-MM-DDThh:mm:ssZ" (xml schema + * datetime format without time zone) format. + */ + double ti; + struct tm _tt; + struct tm tt; + time_t _tmt, tmt; + memset(&_tt, 0, sizeof(_tt)); + memset(&tt, 0, sizeof(tt)); + sscanf(_t, "%d-%d-%dT%d:%d:%dZ", &_tt.tm_year, &_tt.tm_mon, + &_tt.tm_mday, &_tt.tm_hour, &_tt.tm_min, &_tt.tm_sec); + _tt.tm_year -= 1900; + _tt.tm_mon -= 1; + sscanf(t, "%d-%d-%dT%d:%d:%d", &tt.tm_year, &tt.tm_mon, &tt.tm_mday, + &tt.tm_hour, &tt.tm_min, &tt.tm_sec); + tt.tm_year -= 1900; + tt.tm_mon -= 1; + _tmt = mktime(&_tt); + tmt = mktime(&tt); + ti = difftime(tmt, _tmt); + return ti; +} + +double getSpeed(double length, double ti, double to_meter, int to_sec) +{ +/* + * Culculates speed from length and time. + */ + double speed; + if (!length || !ti) + speed = 0; + else + speed = (length / to_meter) / (ti / to_sec); + return speed; +} + +double getDistanceCore(char *p1, char *l1, char *p2, char *l2) +{ + /* + * Culculates a geodesic length between two points + * using geod_*.c + */ + phi1 = dmstor(p1, &p1); + lam1 = dmstor(l1, &l1); + phi2 = dmstor(p2, &p2); + lam2 = dmstor(l2, &l2); + geod_inv(); + return geod_S; +} + +double getDistance(double _x, double _y, double x, double y) +{ + /* + * Culculates a geodesic length between two points + */ + double length; + char p1[17], l1[17], p2[17], l2[17]; + sprintf(p1, "%f", _x); + sprintf(l1, "%f", _y); + sprintf(p2, "%f", x); + sprintf(l2, "%f", y); + length = getDistanceCore(p1, l1, p2, l2); + return length; +} + +//todo void closeShpFiles(shphandles * shps) +//{ + /* + * Closes all SHP files if they opened + */ +// if (shps->wpt) +// SHPClose(shps->wpt); +// if (shps->trk) +// SHPClose(shps->trk); +// if (shps->trk_edg) +// SHPClose(shps->trk_edg); +// if (shps->trk_pnt) +// SHPClose(shps->trk_pnt); +// if (shps->rte) +// SHPClose(shps->rte); +// if (shps->rte_edg) +// SHPClose(shps->rte_edg); +// if (shps->rte_pnt) +// SHPClose(shps->rte_pnt); +//} + +//todo void closeDbfFiles(dbfhandles * dbfs) +//{ + /* + * Closes all DBF files if they opened + */ +// if (dbfs->wpt) +// DBFClose(dbfs->wpt); +// if (dbfs->trk) +// DBFClose(dbfs->trk); +// if (dbfs->trk_edg) +// DBFClose(dbfs->trk_edg); +// if (dbfs->trk_pnt) +// DBFClose(dbfs->trk_pnt); +// if (dbfs->rte) +// DBFClose(dbfs->rte); +// if (dbfs->rte_edg) +// DBFClose(dbfs->rte_edg); +// if (dbfs->rte_pnt) +// DBFClose(dbfs->rte_pnt); +//} + |