summaryrefslogtreecommitdiff
path: root/scripts/osm/perl_lib/Geo/Gpsdrive/DB_tracks.pm
blob: 04e540f1c57cd9e1c399c1b8eed790ea7707dd84 (plain)
ofshex dumpascii
0000 23 20 44 61 74 61 62 61 73 65 20 46 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 74 72 61 63 6b 73 0a #.Database.Functions.for.tracks.
0020 23 0a 23 20 24 4c 6f 67 24 0a 23 20 52 65 76 69 73 69 6f 6e 20 31 2e 31 20 20 32 30 30 35 2f 31 #.#.$Log$.#.Revision.1.1..2005/1
0040 30 2f 31 31 20 30 38 3a 32 38 3a 33 35 20 20 74 77 65 65 74 79 0a 23 20 67 70 73 64 72 69 76 65 0/11.08:28:35..tweety.#.gpsdrive
0060 3a 0a 23 20 2d 20 61 64 64 20 54 72 61 63 6b 73 28 4d 79 53 71 6c 29 20 64 69 73 70 6c 61 79 69 :.#.-.add.Tracks(MySql).displayi
0080 6e 67 0a 23 20 2d 20 72 65 69 6e 64 65 6e 74 20 66 69 6c 65 73 20 6d 6f 64 69 66 69 65 64 0a 23 ng.#.-.reindent.files.modified.#
00a0 20 2d 20 46 69 78 20 73 65 74 74 69 6e 67 20 6f 66 20 43 6f 6c 6f 72 20 66 6f 72 20 47 72 69 64 .-.Fix.setting.of.Color.for.Grid
00c0 0a 23 20 2d 20 70 6f 69 20 54 65 78 74 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 69 6e 20 73 69 .#.-.poi.Text.is.different.in.si
00e0 7a 65 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 4e 75 6d 62 65 72 20 6f 66 20 50 4f 49 73 20 73 ze.depending.on.Number.of.POIs.s
0100 68 6f 77 6e 20 6f 6e 0a 23 20 20 20 73 63 72 65 65 6e 0a 23 0a 23 20 67 65 6f 69 6e 66 6f 3a 0a hown.on.#...screen.#.#.geoinfo:.
0120 23 20 20 2d 20 67 65 74 20 50 72 6f 78 79 20 73 65 74 74 69 6e 67 73 20 66 72 6f 6d 20 45 6e 76 #..-.get.Proxy.settings.from.Env
0140 69 72 6f 6e 6d 65 6e 74 0a 23 20 20 2d 20 63 72 65 61 74 65 20 74 72 61 63 6b 73 20 54 61 62 6c ironment.#..-.create.tracks.Tabl
0160 65 20 69 6e 20 44 61 74 61 62 61 73 65 20 61 6e 64 20 66 69 6c 6c 20 69 74 0a 23 20 20 20 20 74 e.in.Database.and.fill.it.#....t
0180 68 69 73 20 73 65 70 61 72 61 74 65 73 20 53 74 72 65 65 74 20 44 61 74 61 20 66 72 6f 6d 20 54 his.separates.Street.Data.from.T
01a0 72 61 63 6b 20 44 61 74 61 0a 23 20 20 2d 20 6d 61 6b 65 20 67 65 6f 69 6e 66 6f 2e 70 6c 20 64 rack.Data.#..-.make.geoinfo.pl.d
01c0 6f 77 6e 6c 6f 61 64 20 61 6c 73 6f 20 4f 70 65 6e 67 65 6f 64 62 20 56 65 72 73 69 6f 6e 20 32 ownload.also.Opengeodb.Version.2
01e0 0a 23 20 20 2d 20 61 64 64 20 73 6f 6d 65 20 70 6f 69 2d 74 79 70 65 73 0a 23 20 20 2d 20 53 70 .#..-.add.some.poi-types.#..-.Sp
0200 6c 69 74 20 6f 66 66 20 46 69 6c 6c 69 6e 67 20 44 42 20 77 69 74 68 20 65 78 61 6d 70 6c 65 20 lit.off.Filling.DB.with.example.
0220 44 61 74 61 0a 23 20 20 2d 20 65 78 74 72 61 63 74 20 73 6f 6d 65 20 6d 6f 72 65 20 46 75 6e 74 Data.#..-.extract.some.more.Funt
0240 69 6f 6e 61 6c 69 74 79 20 74 6f 20 50 72 6f 63 65 64 75 72 65 73 0a 23 20 20 2d 20 41 64 64 20 ionality.to.Procedures.#..-.Add.
0260 73 6f 6d 65 20 45 78 61 6d 70 6c 65 20 50 4f 49 20 66 6f 72 20 4b 69 72 63 68 68 65 69 6d 28 4d some.Example.POI.for.Kirchheim(M
0280 75 6e 69 63 68 29 20 41 72 65 61 0a 23 20 20 2d 20 41 64 6a 75 73 74 20 73 6f 6d 65 20 4f 75 74 unich).Area.#..-.Adjust.some.Out
02a0 70 75 74 20 66 6f 72 20 77 68 61 74 20 69 73 20 64 6f 6e 65 20 61 74 20 74 68 65 20 6d 6f 6d 65 put.for.what.is.done.at.the.mome
02c0 6e 74 0a 23 20 20 2d 20 41 64 64 20 6d 6f 72 65 20 64 65 6c 61 79 65 64 20 69 6e 64 65 78 20 67 nt.#..-.Add.more.delayed.index.g
02e0 65 6e 65 72 61 74 69 6f 6e 73 20 27 64 69 73 61 62 6c 65 2f 65 6e 61 62 6c 65 20 6b 65 79 27 0a enerations.'disable/enable.key'.
0300 23 20 20 2d 20 49 66 20 4c 41 4e 47 3d 2a 64 65 5f 44 45 2a 20 74 68 65 6e 20 6f 6e 6c 79 20 69 #..-.If.LANG=*de_DE*.then.only.i
0320 6d 70 65 72 74 20 65 75 72 6f 70 65 20 77 69 74 68 20 2d 2d 61 6c 6c 20 6f 70 74 69 6f 6e 0a 23 mpert.europe.with.--all.option.#
0340 20 20 2d 20 57 44 42 20 77 69 6c 6c 20 69 6d 70 6f 72 74 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e ..-.WDB.will.import.more.than.on
0360 65 20 63 6f 75 6e 74 72 79 20 69 66 20 79 6f 75 20 77 69 73 68 0a 23 20 20 2d 20 61 64 64 20 6d e.country.if.you.wish.#..-.add.m
0380 6f 72 65 20 74 68 69 6e 67 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 77 69 74 68 20 74 68 65 20 2d ore.things.to.be.done.with.the.-
03a0 2d 61 6c 6c 20 6f 70 74 69 6f 6e 0a 23 0a 0a 0a 0a 70 61 63 6b 61 67 65 20 47 65 6f 3a 3a 47 70 -all.option.#....package.Geo::Gp
03c0 73 64 72 69 76 65 3a 3a 44 42 5f 74 72 61 63 6b 73 3b 0a 0a 75 73 65 20 73 74 72 69 63 74 3b 0a sdrive::DB_tracks;..use.strict;.
03e0 75 73 65 20 77 61 72 6e 69 6e 67 73 3b 0a 0a 75 73 65 20 50 4f 53 49 58 20 71 77 28 73 74 72 66 use.warnings;..use.POSIX.qw(strf
0400 74 69 6d 65 29 3b 0a 75 73 65 20 54 69 6d 65 3a 3a 4c 6f 63 61 6c 3b 0a 75 73 65 20 44 42 49 3b time);.use.Time::Local;.use.DBI;
0420 0a 75 73 65 20 44 61 74 61 3a 3a 44 75 6d 70 65 72 3b 0a 75 73 65 20 49 4f 3a 3a 46 69 6c 65 3b .use.Data::Dumper;.use.IO::File;
0440 0a 0a 75 73 65 20 47 65 6f 3a 3a 47 70 73 64 72 69 76 65 3a 3a 55 74 69 6c 73 3b 0a 75 73 65 20 ..use.Geo::Gpsdrive::Utils;.use.
0460 47 65 6f 3a 3a 47 70 73 64 72 69 76 65 3a 3a 44 42 46 75 6e 63 73 3b 0a 0a 24 7c 3d 20 31 3b 20 Geo::Gpsdrive::DBFuncs;..$|=.1;.
0480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 41 75 74 6f 66 .........................#.Autof
04a0 6c 75 73 68 0a 0a 42 45 47 49 4e 20 7b 0a 20 20 20 20 75 73 65 20 45 78 70 6f 72 74 65 72 20 20 lush..BEGIN.{.....use.Exporter..
04c0 20 28 29 3b 0a 20 20 20 20 6f 75 72 20 28 24 56 45 52 53 49 4f 4e 2c 20 40 49 53 41 2c 20 40 45 .();.....our.($VERSION,.@ISA,.@E
04e0 58 50 4f 52 54 29 3b 0a 0a 20 20 20 20 23 20 73 65 74 20 74 68 65 20 76 65 72 73 69 6f 6e 20 66 XPORT);......#.set.the.version.f
0500 6f 72 20 76 65 72 73 69 6f 6e 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 6f 6c 64 20 43 56 53 20 or.version.checking.for.old.CVS.
0520 56 65 72 73 69 6f 6e 0a 20 20 20 20 23 20 24 56 45 52 53 49 4f 4e 20 3d 20 73 70 72 69 6e 74 66 Version.....#.$VERSION.=.sprintf
0540 20 22 25 64 2e 25 30 33 64 22 2c 20 71 24 52 65 76 69 73 69 6f 6e 3a 20 31 31 39 30 20 24 20 3d ."%d.%03d",.q$Revision:.1190.$.=
0560 7e 20 2f 28 5c 64 2b 29 2f 67 3b 0a 0a 20 20 20 20 40 49 53 41 20 20 20 20 20 20 20 20 20 3d 20 ~./(\d+)/g;......@ISA.........=.
0580 71 77 28 45 78 70 6f 72 74 65 72 29 3b 0a 20 20 20 20 40 45 58 50 4f 52 54 20 3d 20 71 77 28 20 qw(Exporter);.....@EXPORT.=.qw(.
05a0 26 74 72 61 63 6b 5f 61 64 64 0a 09 09 20 20 26 74 72 61 63 6b 73 5f 61 64 64 0a 09 09 20 20 29 &track_add.....&tracks_add.....)
05c0 3b 0a 7d 0a 0a 0a 45 4e 44 20 7b 20 7d 20 0a 0a 73 75 62 20 74 72 61 63 6b 5f 61 64 64 28 24 29 ;.}...END.{.}...sub.track_add($)
05e0 3b 0a 73 75 62 20 74 72 61 63 6b 73 5f 61 64 64 28 24 29 3b 0a 0a 0a 23 23 23 23 23 23 23 23 23 ;.sub.tracks_add($);...#########
0600 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0620 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0640 23 23 23 23 0a 23 20 41 64 64 20 61 20 73 69 6e 67 6c 65 20 74 72 61 63 6b 20 69 6e 74 6f 20 44 ####.#.Add.a.single.track.into.D
0660 42 0a 73 75 62 20 74 72 61 63 6b 5f 61 64 64 28 24 29 7b 0a 20 20 20 20 6d 79 20 24 74 72 61 63 B.sub.track_add($){.....my.$trac
0680 6b 5f 73 65 67 6d 65 6e 74 20 3d 20 73 68 69 66 74 3b 0a 20 20 20 20 6d 79 20 24 74 72 61 63 6b k_segment.=.shift;.....my.$track
06a0 5f 73 65 67 6d 65 6e 74 34 64 62 20 3d 20 7b 7d 3b 0a 20 20 20 20 6d 79 20 40 63 6f 6c 75 6d 6e _segment4db.=.{};.....my.@column
06c0 73 20 3d 20 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 28 22 74 72 61 63 6b 73 22 29 3b 0a 20 20 20 20 s.=.column_names("tracks");.....
06e0 6d 61 70 20 7b 20 0a 09 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 22 74 72 61 map.{...$track_segment4db->{"tra
0700 63 6b 73 2e 24 5f 22 7d 20 3d 20 0a 09 20 20 20 20 28 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e cks.$_"}.=.......(.$track_segmen
0720 74 2d 3e 7b 22 74 72 61 63 6b 73 2e 24 5f 22 7d 20 7c 7c 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 t->{"tracks.$_"}.||.$track_segme
0740 6e 74 2d 3e 7b 24 5f 7d 20 7c 7c 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 2d 3e 7b 6c 63 28 nt->{$_}.||.$track_segment->{lc(
0760 24 5f 29 7d 29 20 0a 09 7d 20 40 63 6f 6c 75 6d 6e 73 3b 0a 0a 20 20 20 20 23 20 2d 2d 2d 2d 2d $_)})...}.@columns;......#.-----
0780 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 53 4f 55 52 43 45 0a 20 20 20 20 23 70 72 -----------------.SOURCE.....#pr
07a0 69 6e 74 20 44 75 6d 70 65 72 28 5c 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 29 3b 0a int.Dumper(\$track_segment4db);.
07c0 20 20 20 20 23 20 54 4f 44 4f 3a 20 70 75 74 20 74 68 69 73 20 6f 75 74 20 68 65 72 65 20 66 6f ....#.TODO:.put.this.out.here.fo
07e0 72 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 72 65 61 73 6f 6e 0a 20 20 20 20 69 66 20 28 20 24 74 r.performance.reason.....if.(.$t
0800 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 22 73 6f 75 72 63 65 2e 6e 61 6d 65 22 7d rack_segment4db->{"source.name"}
0820 20 26 26 20 21 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 74 72 61 63 6b .&&.!.$track_segment4db->{'track
0840 73 2e 73 6f 75 72 63 65 5f 69 64 27 7d 29 20 7b 0a 09 6d 79 20 24 73 6f 75 72 63 65 5f 69 64 20 s.source_id'}).{..my.$source_id.
0860 3d 20 73 6f 75 72 63 65 5f 6e 61 6d 65 32 69 64 28 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 =.source_name2id($track_segment4
0880 64 62 2d 3e 7b 22 73 6f 75 72 63 65 2e 6e 61 6d 65 22 7d 29 3b 0a 09 23 20 70 72 69 6e 74 20 22 db->{"source.name"});..#.print."
08a0 53 6f 75 72 63 65 3a 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 73 6f 75 Source:.$track_segment4db->{'sou
08c0 72 63 65 2e 6e 61 6d 65 27 7d 20 2d 3e 20 24 73 6f 75 72 63 65 5f 69 64 5c 6e 22 3b 0a 09 0a 09 rce.name'}.->.$source_id\n";....
08e0 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 73 6f 75 72 63 65 2e 73 6f 75 72 $track_segment4db->{'source.sour
0900 63 65 5f 69 64 27 7d 20 3d 20 24 73 6f 75 72 63 65 5f 69 64 3b 0a 09 24 74 72 61 63 6b 5f 73 65 ce_id'}.=.$source_id;..$track_se
0920 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 74 72 61 63 6b 73 2e 73 6f 75 72 63 65 5f 69 64 27 7d 20 20 gment4db->{'tracks.source_id'}..
0940 3d 20 24 73 6f 75 72 63 65 5f 69 64 3b 0a 20 20 20 20 7d 0a 0a 0a 20 20 20 20 23 20 2d 2d 2d 2d =.$source_id;.....}.......#.----
0960 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 41 44 44 52 45 53 53 0a 20 20 20 20 24 ------------------.ADDRESS.....$
0980 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 74 72 61 63 6b 73 2e 61 64 64 72 65 track_segment4db->{'tracks.addre
09a0 73 73 5f 69 64 27 7d 20 20 20 20 20 20 7c 7c 3d 20 30 3b 0a 0a 20 20 20 20 23 20 2d 2d 2d 2d 2d ss_id'}......||=.0;......#.-----
09c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 54 59 50 45 0a 20 20 20 20 24 74 72 61 63 -----------------.TYPE.....$trac
09e0 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 74 72 61 63 6b 73 2e 74 72 61 63 6b 5f 74 79 70 k_segment4db->{'tracks.track_typ
0a00 65 5f 69 64 27 7d 20 7c 7c 3d 20 32 3b 20 23 20 4f 6c 64 20 54 72 61 63 6b 0a 0a 20 20 20 20 23 e_id'}.||=.2;.#.Old.Track......#
0a20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 44 41 54 45 0a 20 20 20 20 ----------------------.DATE.....
0a40 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 74 72 61 63 6b 73 2e 64 61 74 65 $track_segment4db->{'tracks.date
0a60 27 7d 20 7c 7c 3d 20 30 3b 0a 0a 20 20 20 20 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d '}.||=.0;......#.---------------
0a80 2d 2d 2d 2d 2d 2d 2d 20 54 52 41 43 4b 53 0a 20 20 20 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e -------.TRACKS.....$track_segmen
0aa0 74 34 64 62 2d 3e 7b 27 74 72 61 63 6b 73 2e 6c 61 73 74 5f 6d 6f 64 69 66 69 65 64 27 7d 20 20 t4db->{'tracks.last_modified'}..
0ac0 20 7c 7c 3d 20 74 69 6d 65 28 29 3b 0a 20 20 20 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 .||=.time();.....$track_segment4
0ae0 64 62 2d 3e 7b 27 74 72 61 63 6b 73 2e 73 63 61 6c 65 5f 6d 69 6e 27 7d 20 20 20 20 20 20 20 7c db->{'tracks.scale_min'}.......|
0b00 7c 3d 20 30 3b 0a 20 20 20 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 2d 3e 7b 27 74 |=.0;.....$track_segment4db->{'t
0b20 72 61 63 6b 73 2e 73 63 61 6c 65 5f 6d 61 78 27 7d 20 20 20 20 20 20 20 7c 7c 3d 20 39 39 39 39 racks.scale_max'}.......||=.9999
0b40 39 39 39 39 39 39 39 39 39 39 3b 0a 20 20 20 20 69 6e 73 65 72 74 5f 68 61 73 68 28 22 74 72 61 9999999999;.....insert_hash("tra
0b60 63 6b 73 22 2c 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 29 3b 0a 7d 0a 0a 0a 23 23 23 cks",$track_segment4db);.}...###
0b80 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0ba0 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0bc0 23 23 23 23 23 23 23 23 23 23 0a 23 20 41 64 64 20 61 20 74 72 61 63 6b 73 20 74 6f 20 67 65 6f ##########.#.Add.a.tracks.to.geo
0be0 69 6e 66 6f 2e 74 72 61 63 6b 73 20 0a 23 20 74 68 69 73 20 69 6e 63 6c 75 64 65 73 20 73 70 6c info.tracks..#.this.includes.spl
0c00 69 74 74 69 6e 67 20 61 6e 64 20 63 61 74 65 67 6f 72 69 7a 69 6e 67 0a 23 20 0a 73 75 62 20 74 itting.and.categorizing.#..sub.t
0c20 72 61 63 6b 73 5f 61 64 64 28 24 29 7b 0a 20 20 20 20 6d 79 20 24 64 61 74 61 20 3d 20 73 68 69 racks_add($){.....my.$data.=.shi
0c40 66 74 3b 0a 0a 20 20 20 20 75 6e 6c 65 73 73 20 28 20 35 20 3c 20 40 7b 24 64 61 74 61 2d 3e 7b ft;......unless.(.5.<.@{$data->{
0c60 73 65 67 6d 65 6e 74 73 7d 7d 20 29 7b 0a 09 70 72 69 6e 74 20 22 45 52 52 4f 52 3a 20 74 72 61 segments}}.){..print."ERROR:.tra
0c80 63 6b 73 5f 61 64 64 28 22 2e 73 63 61 6c 61 72 28 40 7b 24 64 61 74 61 2d 3e 7b 73 65 67 6d 65 cks_add(".scalar(@{$data->{segme
0ca0 6e 74 73 7d 7d 29 2e 22 20 53 65 67 6d 65 6e 74 73 29 3a 20 4e 6f 74 20 65 6e 6f 75 67 68 20 53 nts}}).".Segments):.Not.enough.S
0cc0 65 67 6d 65 6e 74 73 5c 6e 22 3b 20 23 2e 20 44 75 6d 70 65 72 28 24 64 61 74 61 29 3b 0a 09 72 egments\n";.#..Dumper($data);..r
0ce0 65 74 75 72 6e 3b 0a 20 20 20 20 7d 09 20 20 20 20 0a 20 20 20 20 6d 79 20 24 77 72 6f 74 65 5f eturn;.....}..........my.$wrote_
0d00 74 72 61 63 6b 73 3d 30 3b 0a 20 20 20 20 6d 79 20 24 73 74 72 65 65 74 5f 6e 72 3d 30 3b 0a 20 tracks=0;.....my.$street_nr=0;..
0d20 20 20 20 6d 79 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 73 5f 69 6e 5f 73 74 72 65 65 74 3d ...my.$track_segments_in_street=
0d40 30 3b 0a 0a 20 20 20 20 6d 79 20 24 74 72 61 63 6b 73 20 3d 20 7b 7d 3b 0a 0a 20 20 20 20 6d 79 0;......my.$tracks.=.{};......my
0d60 20 40 63 6f 6c 75 6d 6e 73 20 3d 20 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 28 22 74 72 61 63 6b 73 .@columns.=.column_names("tracks
0d80 22 29 3b 0a 20 20 20 20 6d 61 70 20 7b 20 0a 09 24 74 72 61 63 6b 73 2d 3e 7b 22 74 72 61 63 6b ");.....map.{...$tracks->{"track
0da0 73 2e 24 5f 22 7d 20 3d 20 0a 09 20 20 20 20 28 20 24 64 61 74 61 2d 3e 7b 22 74 72 61 63 6b 73 s.$_"}.=.......(.$data->{"tracks
0dc0 2e 24 5f 22 7d 20 7c 7c 20 24 64 61 74 61 2d 3e 7b 24 5f 7d 20 7c 7c 20 24 64 61 74 61 2d 3e 7b .$_"}.||.$data->{$_}.||.$data->{
0de0 6c 63 28 24 5f 29 7d 29 20 0a 09 7d 20 40 63 6f 6c 75 6d 6e 73 3b 0a 0a 20 20 20 20 24 74 72 61 lc($_)})...}.@columns;......$tra
0e00 63 6b 73 2d 3e 7b 27 74 72 61 63 6b 73 2e 74 72 61 63 6b 5f 74 79 70 65 5f 69 64 27 7d 20 7c 7c cks->{'tracks.track_type_id'}.||
0e20 3d 20 31 30 3b 0a 20 20 20 20 23 70 72 69 6e 74 20 22 74 72 61 63 6b 73 5f 61 64 64 20 64 61 74 =.10;.....#print."tracks_add.dat
0e40 61 3a 22 2e 44 75 6d 70 65 72 28 5c 24 64 61 74 61 29 3b 0a 20 20 20 20 23 70 72 69 6e 74 20 22 a:".Dumper(\$data);.....#print."
0e60 74 72 61 63 6b 73 5f 61 64 64 20 69 6e 69 74 3a 22 2e 44 75 6d 70 65 72 28 5c 24 74 72 61 63 6b tracks_add.init:".Dumper(\$track
0e80 73 29 3b 0a 20 20 20 20 6d 79 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 5f 63 6f 75 6e 74 20 s);.....my.$track_segment_count.
0ea0 3d 20 73 63 61 6c 61 72 28 40 7b 24 64 61 74 61 2d 3e 7b 73 65 67 6d 65 6e 74 73 7d 7d 29 3b 0a =.scalar(@{$data->{segments}});.
0ec0 20 20 20 20 64 65 62 75 67 28 22 74 72 61 63 6b 73 5f 61 64 64 28 20 24 74 72 61 63 6b 5f 73 65 ....debug("tracks_add(.$track_se
0ee0 67 6d 65 6e 74 5f 63 6f 75 6e 74 20 53 65 67 6d 65 6e 74 73 20 29 22 29 3b 0a 0a 20 20 20 20 6d gment_count.Segments.)");......m
0f00 79 20 24 6d 61 78 5f 73 70 65 65 64 3d 30 3b 0a 0a 20 20 20 20 6d 79 20 28 24 6c 61 74 32 2c 24 y.$max_speed=0;......my.($lat2,$
0f20 6c 6f 6e 32 2c 24 61 6c 74 32 2c 24 74 69 6d 65 32 2c 24 68 65 61 64 69 6e 67 32 29 20 3d 20 28 lon2,$alt2,$time2,$heading2).=.(
0f40 31 30 30 31 2e 30 2c 31 30 30 31 2e 30 2c 30 2c 30 2c 2d 39 39 39 29 3b 0a 20 20 20 20 6d 79 20 1001.0,1001.0,0,0,-999);.....my.
0f60 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 5f 6e 75 6d 62 65 72 3d 30 3b 0a 0a 20 20 20 20 6d 79 $track_segment_number=0;......my
0f80 20 24 73 74 61 74 69 73 74 69 63 3d 7b 7d 3b 0a 20 20 20 20 6d 79 20 40 73 75 62 5f 73 65 67 6d .$statistic={};.....my.@sub_segm
0fa0 65 6e 74 3b 0a 0a 20 20 20 20 66 6f 72 20 6d 79 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 20 ent;......for.my.$track_segment.
0fc0 28 20 40 7b 24 64 61 74 61 2d 3e 7b 73 65 67 6d 65 6e 74 73 7d 7d 0a 09 09 09 20 20 20 20 2c 7b (.@{$data->{segments}}........,{
0fe0 6c 61 74 3d 3e 31 30 30 31 2c 6c 6f 6e 3d 3e 31 30 30 31 2c 61 6c 74 3d 3e 31 30 30 31 7d 20 0a lat=>1001,lon=>1001,alt=>1001}..
1000 09 09 09 20 20 20 20 29 7b 0a 09 6d 79 20 28 24 6c 61 74 31 2c 24 6c 6f 6e 31 2c 24 61 6c 74 31 .......){..my.($lat1,$lon1,$alt1
1020 2c 24 74 69 6d 65 31 2c 24 68 65 61 64 69 6e 67 31 29 20 3d 20 20 28 24 6c 61 74 32 2c 24 6c 6f ,$time1,$heading1).=..($lat2,$lo
1040 6e 32 2c 24 61 6c 74 32 2c 24 74 69 6d 65 32 2c 24 68 65 61 64 69 6e 67 32 29 3b 0a 0a 09 69 66 n2,$alt2,$time2,$heading2);...if
1060 20 28 20 72 65 66 28 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 29 20 65 71 20 22 41 52 52 41 59 .(.ref($track_segment).eq."ARRAY
1080 22 20 29 20 7b 0a 09 20 20 20 20 24 6c 61 74 32 20 20 3d 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 ".).{......$lat2..=.$track_segme
10a0 6e 74 2d 3e 5b 30 5d 3b 0a 09 20 20 20 20 24 6c 6f 6e 32 20 20 3d 20 24 74 72 61 63 6b 5f 73 65 nt->[0];......$lon2..=.$track_se
10c0 67 6d 65 6e 74 2d 3e 5b 31 5d 3b 0a 09 20 20 20 20 24 61 6c 74 32 20 20 3d 20 24 74 72 61 63 6b gment->[1];......$alt2..=.$track
10e0 5f 73 65 67 6d 65 6e 74 2d 3e 5b 32 5d 3b 0a 09 20 20 20 20 24 74 69 6d 65 32 20 3d 20 24 74 72 _segment->[2];......$time2.=.$tr
1100 61 63 6b 5f 73 65 67 6d 65 6e 74 2d 3e 5b 33 5d 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 ack_segment->[3];..}.else.{.....
1120 20 24 6c 61 74 32 20 20 3d 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 2d 3e 7b 27 6c 61 74 27 .$lat2..=.$track_segment->{'lat'
1140 7d 3b 0a 09 20 20 20 20 24 6c 6f 6e 32 20 20 3d 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 2d };......$lon2..=.$track_segment-
1160 3e 7b 27 6c 6f 6e 27 7d 3b 0a 09 20 20 20 20 24 61 6c 74 32 20 20 3d 20 24 74 72 61 63 6b 5f 73 >{'lon'};......$alt2..=.$track_s
1180 65 67 6d 65 6e 74 2d 3e 7b 27 61 6c 74 27 7d 3b 0a 09 20 20 20 20 24 74 69 6d 65 32 20 3d 20 24 egment->{'alt'};......$time2.=.$
11a0 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 2d 3e 7b 27 74 69 6d 65 27 7d 3b 0a 09 20 20 20 20 24 68 track_segment->{'time'};......$h
11c0 65 61 64 69 6e 67 32 20 3d 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 2d 3e 7b 27 68 65 61 64 eading2.=.$track_segment->{'head
11e0 69 6e 67 27 7d 3b 0a 09 7d 3b 0a 0a 09 23 64 65 62 75 67 28 22 24 6c 61 74 32 2c 24 6c 6f 6e 32 ing'};..};...#debug("$lat2,$lon2
1200 2c 24 61 6c 74 32 22 29 3b 0a 09 6e 65 78 74 20 75 6e 6c 65 73 73 20 24 74 72 61 63 6b 5f 73 65 ,$alt2");..next.unless.$track_se
1220 67 6d 65 6e 74 5f 6e 75 6d 62 65 72 2b 2b 3b 0a 0a 09 6d 79 20 24 76 61 6c 69 64 3d 30 3b 0a 0a gment_number++;...my.$valid=0;..
1240 09 69 66 20 28 20 64 65 66 69 6e 65 64 20 24 6c 61 74 31 20 26 26 0a 09 20 20 20 20 20 64 65 66 .if.(.defined.$lat1.&&.......def
1260 69 6e 65 64 20 24 6c 6f 6e 31 20 26 26 0a 09 20 20 20 20 20 64 65 66 69 6e 65 64 20 24 6c 61 74 ined.$lon1.&&.......defined.$lat
1280 32 20 26 26 0a 09 20 20 20 20 20 64 65 66 69 6e 65 64 20 24 6c 6f 6e 32 29 20 7b 0a 09 20 20 20 2.&&.......defined.$lon2).{.....
12a0 20 24 76 61 6c 69 64 3d 31 3b 0a 09 7d 0a 0a 09 69 66 20 28 20 61 62 73 28 24 6c 61 74 31 29 20 .$valid=1;..}...if.(.abs($lat1).
12c0 3e 20 35 30 30 20 7c 7c 0a 09 20 20 20 20 20 61 62 73 28 24 6c 6f 6e 31 29 20 3e 20 35 30 30 20 >.500.||.......abs($lon1).>.500.
12e0 7c 7c 0a 09 20 20 20 20 20 61 62 73 28 24 6c 61 74 32 29 20 3e 20 35 30 30 20 7c 7c 0a 09 20 20 ||.......abs($lat2).>.500.||....
1300 20 20 20 61 62 73 28 24 6c 6f 6e 32 29 20 3e 20 35 30 30 20 0a 09 20 20 20 20 20 29 20 7b 0a 09 ...abs($lon2).>.500........).{..
1320 20 20 20 20 24 76 61 6c 69 64 20 3d 20 30 3b 0a 09 7d 0a 0a 09 6d 79 20 24 73 70 65 65 64 3d 30 ....$valid.=.0;..}...my.$speed=0
1340 3b 0a 09 6d 79 20 24 64 69 73 74 3d 30 3b 0a 09 6d 79 20 24 74 69 6d 65 5f 64 65 6c 74 61 3d 30 ;..my.$dist=0;..my.$time_delta=0
1360 3b 0a 09 6d 79 20 24 73 70 6c 69 74 3d 22 22 3b 0a 09 69 66 20 28 20 24 76 61 6c 69 64 20 29 20 ;..my.$split="";..if.(.$valid.).
1380 7b 0a 09 20 20 20 20 24 64 69 73 74 20 3d 20 47 65 6f 3a 3a 47 70 73 64 72 69 76 65 3a 3a 47 70 {......$dist.=.Geo::Gpsdrive::Gp
13a0 73 3a 3a 65 61 72 74 68 5f 64 69 73 74 61 6e 63 65 28 24 6c 61 74 31 2c 24 6c 6f 6e 31 2c 24 6c s::earth_distance($lat1,$lon1,$l
13c0 61 74 32 2c 24 6c 6f 6e 32 29 3b 0a 09 20 20 20 20 69 66 20 28 64 65 66 69 6e 65 64 28 24 74 69 at2,$lon2);......if.(defined($ti
13e0 6d 65 31 29 20 26 26 20 64 65 66 69 6e 65 64 28 24 74 69 6d 65 32 29 20 29 20 7b 0a 09 09 6d 79 me1).&&.defined($time2).).{...my
1400 20 24 74 69 6d 65 5f 64 65 6c 74 61 20 3d 20 24 74 69 6d 65 32 20 2d 20 24 74 69 6d 65 31 3b 0a .$time_delta.=.$time2.-.$time1;.
1420 09 20 20 20 20 7d 0a 09 20 20 20 20 69 66 20 28 20 72 65 66 28 24 74 72 61 63 6b 5f 73 65 67 6d .....}......if.(.ref($track_segm
1440 65 6e 74 29 20 65 71 20 22 48 41 53 48 22 20 29 20 7b 0a 09 09 24 73 70 65 65 64 20 3d 20 24 74 ent).eq."HASH".).{...$speed.=.$t
1460 72 61 63 6b 5f 73 65 67 6d 65 6e 74 2d 3e 7b 73 70 65 65 64 7d 3b 0a 09 20 20 20 20 7d 0a 09 20 rack_segment->{speed};......}...
1480 20 20 20 6d 79 20 24 63 61 6c 63 5f 73 70 65 65 64 20 3d 20 28 20 24 74 69 6d 65 5f 64 65 6c 74 ...my.$calc_speed.=.(.$time_delt
14a0 61 20 3f 20 28 24 64 69 73 74 20 2f 20 24 74 69 6d 65 5f 64 65 6c 74 61 20 2a 20 33 2e 36 30 30 a.?.($dist./.$time_delta.*.3.600
14c0 29 20 3a 20 2d 31 29 3b 0a 09 20 20 20 20 24 73 70 65 65 64 20 7c 7c 3d 20 24 63 61 6c 63 5f 73 ).:.-1);......$speed.||=.$calc_s
14e0 70 65 65 64 3b 0a 23 09 20 20 20 20 64 65 62 75 67 28 73 70 72 69 6e 74 66 20 22 44 69 73 74 3a peed;.#.....debug(sprintf."Dist:
1500 20 25 2e 34 66 2f 25 2e 32 66 20 3d 3e 20 20 25 2e 32 66 20 4b 6d 2f 68 22 2c 24 64 69 73 74 2c .%.4f/%.2f.=>..%.2f.Km/h",$dist,
1520 24 74 69 6d 65 5f 64 65 6c 74 61 2c 24 73 70 65 65 64 29 3b 0a 0a 09 20 20 20 20 69 66 20 28 20 $time_delta,$speed);.......if.(.
1540 24 74 69 6d 65 5f 64 65 6c 74 61 20 3e 20 31 35 20 29 20 7b 0a 09 09 24 73 70 6c 69 74 20 2e 3d $time_delta.>.15.).{...$split..=
1560 20 22 74 69 6d 65 22 3b 0a 09 09 24 76 61 6c 69 64 20 3d 20 30 3b 0a 09 20 20 20 20 7d 0a 0a 09 ."time";...$valid.=.0;......}...
1580 20 20 20 20 69 66 20 28 20 24 73 70 65 65 64 20 3e 20 32 30 30 20 29 20 7b 0a 09 09 24 73 70 6c ....if.(.$speed.>.200.).{...$spl
15a0 69 74 20 2e 3d 20 22 73 70 65 65 64 22 3b 0a 09 09 24 76 61 6c 69 64 20 3d 20 30 3b 0a 09 20 20 it..=."speed";...$valid.=.0;....
15c0 20 20 7d 0a 0a 09 20 20 20 20 69 66 20 28 20 24 76 61 6c 69 64 20 26 26 20 24 73 70 65 65 64 20 ..}.......if.(.$valid.&&.$speed.
15e0 3c 20 30 2e 30 30 31 20 29 20 7b 0a 09 09 23 70 72 69 6e 74 66 20 22 74 72 61 63 6b 73 5f 61 64 <.0.001.).{...#printf."tracks_ad
1600 64 28 53 65 67 3a 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 5f 6e 75 6d 62 65 72 29 3a 20 4c 6f d(Seg:$track_segment_number):.Lo
1620 77 20 53 70 65 65 64 20 3d 20 25 2e 36 66 3b 09 44 69 73 74 3d 25 2e 36 66 5c 6e 22 2c 24 73 70 w.Speed.=.%.6f;.Dist=%.6f\n",$sp
1640 65 65 64 2c 24 64 69 73 74 3b 0a 09 09 23 24 76 61 6c 69 64 20 3d 20 30 3b 0a 09 20 20 20 20 7d eed,$dist;...#$valid.=.0;......}
1660 0a 0a 09 20 20 20 20 69 66 20 28 20 24 76 61 6c 69 64 20 26 26 20 24 64 69 73 74 20 3e 20 38 30 .......if.(.$valid.&&.$dist.>.80
1680 30 20 20 29 20 7b 0a 09 09 24 73 70 6c 69 74 20 2e 3d 20 22 64 69 73 74 22 3b 0a 09 09 24 76 61 0..).{...$split..=."dist";...$va
16a0 6c 69 64 20 3d 20 30 3b 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 69 66 20 28 20 24 73 70 6c 69 lid.=.0;......}.......if.(.$spli
16c0 74 20 29 20 7b 0a 09 09 70 72 69 6e 74 66 20 22 74 72 61 63 6b 73 5f 61 64 64 28 53 65 67 3a 24 t.).{...printf."tracks_add(Seg:$
16e0 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 5f 6e 75 6d 62 65 72 29 3a 20 22 3b 0a 09 09 69 66 20 28 track_segment_number):.";...if.(
1700 24 64 69 73 74 20 3e 20 31 30 30 30 29 20 7b 0a 09 09 20 20 20 20 70 72 69 6e 74 66 20 22 5c 74 $dist.>.1000).{.......printf."\t
1720 64 69 73 74 3a 20 25 36 2e 32 66 20 4b 6d 2c 20 22 2c 24 64 69 73 74 2f 31 30 30 30 3b 0a 09 09 dist:.%6.2f.Km,.",$dist/1000;...
1740 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 70 72 69 6e 74 66 20 22 5c 74 64 69 73 74 3a 20 25 }.else.{.......printf."\tdist:.%
1760 36 2e 32 66 20 6d 2c 20 22 2c 24 64 69 73 74 3b 0a 09 09 7d 0a 09 09 70 72 69 6e 74 66 20 22 5c 6.2f.m,.",$dist;...}...printf."\
1780 74 73 70 65 65 64 20 25 36 2e 32 66 28 25 36 2e 32 66 29 20 4b 6d 2f 68 20 22 2c 24 73 70 65 65 tspeed.%6.2f(%6.2f).Km/h.",$spee
17a0 64 2c 24 63 61 6c 63 5f 73 70 65 65 64 3b 0a 09 09 70 72 69 6e 74 66 20 22 5c 74 54 69 6d 65 20 d,$calc_speed;...printf."\tTime.
17c0 64 69 66 66 20 3d 20 22 3b 0a 09 09 69 66 20 28 24 74 69 6d 65 5f 64 65 6c 74 61 20 3e 20 33 36 diff.=.";...if.($time_delta.>.36
17e0 30 30 29 20 7b 0a 09 09 20 20 20 20 70 72 69 6e 74 66 20 22 20 25 35 2e 32 66 20 68 6f 75 72 73 00).{.......printf.".%5.2f.hours
1800 22 2c 24 74 69 6d 65 5f 64 65 6c 74 61 2f 33 36 30 30 3b 0a 09 09 7d 20 65 6c 73 69 66 20 28 20 ",$time_delta/3600;...}.elsif.(.
1820 24 74 69 6d 65 5f 64 65 6c 74 61 20 3e 20 36 30 20 29 20 7b 0a 09 09 20 20 20 20 70 72 69 6e 74 $time_delta.>.60.).{.......print
1840 66 20 22 20 25 35 2e 32 66 20 6d 69 6e 22 2c 24 74 69 6d 65 5f 64 65 6c 74 61 2f 36 30 3b 0a 09 f.".%5.2f.min",$time_delta/60;..
1860 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 70 72 69 6e 74 66 20 22 20 25 35 2e 32 66 20 73 .}.else.{.......printf.".%5.2f.s
1880 65 63 22 2c 24 74 69 6d 65 5f 64 65 6c 74 61 3b 0a 09 09 7d 0a 09 09 70 72 69 6e 74 66 20 22 5c ec",$time_delta;...}...printf."\
18a0 74 73 70 6c 69 74 3a 20 24 73 70 6c 69 74 5c 6e 22 3b 0a 09 20 20 20 20 7d 0a 09 7d 20 23 20 6f tsplit:.$split\n";......}..}.#.o
18c0 66 20 69 66 20 24 76 61 6c 69 64 0a 0a 0a 09 69 66 20 28 20 24 76 61 6c 69 64 20 29 20 7b 0a 09 f.if.$valid....if.(.$valid.).{..
18e0 20 20 20 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 73 5f 69 6e 5f 73 74 72 65 65 74 2b 2b 3b ....$track_segments_in_street++;
1900 0a 09 20 20 20 20 70 75 73 68 28 20 40 73 75 62 5f 73 65 67 6d 65 6e 74 2c 0a 09 20 20 20 20 20 ......push(.@sub_segment,.......
1920 20 7b 20 27 74 72 61 63 6b 73 2e 6c 61 74 31 27 20 3d 3e 20 24 6c 61 74 31 2c 0a 09 09 27 74 72 .{.'tracks.lat1'.=>.$lat1,...'tr
1940 61 63 6b 73 2e 6c 6f 6e 31 27 20 3d 3e 20 24 6c 6f 6e 31 2c 0a 09 09 27 74 72 61 63 6b 73 2e 61 acks.lon1'.=>.$lon1,...'tracks.a
1960 6c 74 31 27 20 3d 3e 20 24 61 6c 74 31 2c 0a 09 09 27 74 72 61 63 6b 73 2e 6c 61 74 32 27 20 3d lt1'.=>.$alt1,...'tracks.lat2'.=
1980 3e 20 24 6c 61 74 32 2c 0a 09 09 27 74 72 61 63 6b 73 2e 6c 6f 6e 32 27 20 3d 3e 20 24 6c 6f 6e >.$lat2,...'tracks.lon2'.=>.$lon
19a0 32 2c 0a 09 09 27 74 72 61 63 6b 73 2e 61 6c 74 32 00 27 20 3d 3e 20 24 61 6c 74 32 0a 09 09 7d 2,...'tracks.alt2.'.=>.$alt2...}
19c0 29 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 6d 79 20 24 74 72 61 63 6b 5f 73 65 67 6d );..}.else.{......my.$track_segm
19e0 65 6e 74 5f 63 6f 75 6e 74 20 3d 20 73 63 61 6c 61 72 20 28 40 73 75 62 5f 73 65 67 6d 65 6e 74 ent_count.=.scalar.(@sub_segment
1a00 29 3b 0a 09 20 20 20 20 69 66 20 28 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 5f 63 6f 75 6e );......if.(.$track_segment_coun
1a20 74 20 29 20 7b 0a 09 09 24 74 72 61 63 6b 73 2d 3e 7b 27 74 72 61 63 6b 73 2e 63 6f 6d 6d 65 6e t.).{...$tracks->{'tracks.commen
1a40 74 27 7d 20 3d 20 22 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 5f 63 6f 75 6e 74 20 73 65 67 t'}.=.".$track_segment_count.seg
1a60 5c 74 22 3b 0a 0a 23 09 09 24 74 72 61 63 6b 73 2d 3e 7b 27 74 72 61 63 6b 73 2e 63 6f 6d 6d 65 \t";..#..$tracks->{'tracks.comme
1a80 6e 74 27 7d 20 2e 3d 20 73 70 72 69 6e 74 66 28 20 22 73 74 61 72 74 3a 20 25 73 5c 74 22 2c 73 nt'}..=.sprintf(."start:.%s\t",s
1aa0 63 61 6c 61 72 20 6c 6f 63 61 6c 74 69 6d 65 28 24 73 74 61 74 69 73 74 69 63 2d 3e 7b 74 69 6d calar.localtime($statistic->{tim
1ac0 65 7d 2d 3e 7b 6d 69 6e 7d 29 29 3b 0a 23 09 09 24 74 72 61 63 6b 73 2d 3e 7b 27 74 72 61 63 6b e}->{min}));.#..$tracks->{'track
1ae0 73 2e 63 6f 6d 6d 65 6e 74 27 7d 20 2e 3d 20 73 70 72 69 6e 74 66 28 20 22 65 6e 64 3a 20 25 73 s.comment'}..=.sprintf(."end:.%s
1b00 5c 74 22 2c 73 63 61 6c 61 72 20 6c 6f 63 61 6c 74 69 6d 65 28 24 73 74 61 74 69 73 74 69 63 2d \t",scalar.localtime($statistic-
1b20 3e 7b 74 69 6d 65 7d 2d 3e 7b 6d 61 78 7d 29 29 3b 0a 09 09 0a 09 09 66 6f 72 20 6d 79 20 24 73 >{time}->{max}));......for.my.$s
1b40 65 67 6d 65 6e 74 20 28 20 40 73 75 62 5f 73 65 67 6d 65 6e 74 20 29 7b 0a 09 09 20 20 20 20 6d egment.(.@sub_segment.){.......m
1b60 79 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 3b 0a 09 09 20 20 20 20 28 25 7b 24 74 y.$track_segment4db;.......(%{$t
1b80 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 7d 29 20 3d 20 28 25 7b 24 74 72 61 63 6b 73 7d 2c rack_segment4db}).=.(%{$tracks},
1ba0 25 7b 24 73 65 67 6d 65 6e 74 7d 29 3b 0a 09 09 20 20 20 20 23 70 72 69 6e 74 20 22 74 72 61 63 %{$segment});.......#print."trac
1bc0 6b 73 3a 20 22 2e 44 75 6d 70 65 72 28 5c 25 7b 24 74 72 61 63 6b 73 7d 29 3b 0a 09 09 20 20 20 ks:.".Dumper(\%{$tracks});......
1be0 20 23 70 72 69 6e 74 20 22 73 65 67 6d 65 6e 74 3a 20 22 2e 44 75 6d 70 65 72 28 5c 25 7b 24 73 .#print."segment:.".Dumper(\%{$s
1c00 65 67 6d 65 6e 74 7d 29 3b 0a 09 09 20 20 20 20 23 70 72 69 6e 74 20 22 74 72 61 63 6b 5f 73 65 egment});.......#print."track_se
1c20 67 6d 65 6e 74 34 64 62 3a 20 22 2e 44 75 6d 70 65 72 28 5c 25 7b 24 74 72 61 63 6b 5f 73 65 67 gment4db:.".Dumper(\%{$track_seg
1c40 6d 65 6e 74 34 64 62 7d 29 3b 0a 09 09 20 20 20 20 69 6e 73 65 72 74 5f 68 61 73 68 28 22 74 72 ment4db});.......insert_hash("tr
1c60 61 63 6b 73 22 2c 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 34 64 62 29 3b 0a 09 09 7d 0a 09 09 acks",$track_segment4db);...}...
1c80 23 73 65 67 6d 65 6e 74 73 5f 61 64 64 28 24 74 72 61 63 6b 73 29 3b 0a 09 09 24 77 72 6f 74 65 #segments_add($tracks);...$wrote
1ca0 5f 74 72 61 63 6b 73 2b 2b 3b 0a 09 09 24 6d 61 78 5f 73 70 65 65 64 3d 30 3b 0a 09 20 20 20 20 _tracks++;...$max_speed=0;......
1cc0 7d 0a 09 20 20 20 20 24 74 72 61 63 6b 73 2d 3e 7b 73 65 67 6d 65 6e 74 73 7d 3d 5b 5d 3b 0a 09 }......$tracks->{segments}=[];..
1ce0 7d 0a 20 20 20 20 7d 0a 20 20 20 20 70 72 69 6e 74 20 22 74 72 61 63 6b 73 5f 61 64 64 20 77 72 }.....}.....print."tracks_add.wr
1d00 6f 74 65 20 24 77 72 6f 74 65 5f 74 72 61 63 6b 73 20 53 75 62 2d 54 72 61 63 6b 73 20 66 6f 72 ote.$wrote_tracks.Sub-Tracks.for
1d20 20 24 74 72 61 63 6b 5f 73 65 67 6d 65 6e 74 5f 63 6f 75 6e 74 20 53 65 67 6d 65 6e 74 73 5c 6e .$track_segment_count.Segments\n
1d40 22 0a 09 69 66 20 24 64 65 62 75 67 3b 0a 20 20 20 20 0a 7d 0a 0a 31 3b 0a "..if.$debug;......}..1;.