source: subversion/applications/utils/import/wdb2osm/find_tiles.pl @ 5763

Last change on this file since 5763 was 5763, checked in by hakan, 13 years ago

Determine touched tile numbers

  • Property svn:executable set to *
File size: 1.9 KB
Line 
1#!/usr/bin/perl
2
3use Math::Trig;
4
5use strict;
6use warnings;
7
8
9#
10#  From lastmodtile.pl
11#
12sub z12tile
13{
14        my ($lat, $lon) = @_;
15
16        my $px = ($lon + 180) / 360;
17        $lat = ($lat / 180 * pi);
18        my $projectf = log (Math::Trig::tan($lat) + (1 / cos($lat)));
19        my $py = (pi - $projectf) / 2 / pi;
20       
21        my $x = int($px * 4096);
22        my $y = int($py * 4096);
23
24        return ($x, $y);
25
26        # return sprintf("%d %d", $px * 4096, $py * 4096);
27}
28
29
30my @all_files;
31
32opendir (DIR, "WDB/keepme");
33my @files = grep { /\.osm$/ } readdir(DIR);
34closedir (DIR);
35
36for (@files)
37{
38        push @all_files, "WDB/" . "keepme" . "/" . $_;
39}
40
41for my $file (@all_files)
42{
43        print "$file \n";
44       
45        my (%tiles_z12);
46        my (%tiles_z8);
47
48        open (FILE, "< $file") || die ("Can't open $file: $!\n");
49        while (<FILE>)
50        {
51                if (/node/)
52                {
53                        chomp;
54                        my @foo = split(/[\"]/, $_);
55
56                        # print "'" . join("', '", @foo) . "'\n";
57                        # <node id=', '-251', ' lat=', '45.133333', ' lon=', '27.946944', '/>
58                        #    0          1         2       3             4        5         
59
60                        my $lat = $foo[3];
61                        my $lon = $foo[5];
62
63                        # my $coord_y = ProjectF($lat);
64                        # my $coord_x = -1;
65
66                        my @gaga = z12tile($lat, $lon);
67
68                        my $coord_x_z12 = $gaga[0];
69                        my $coord_y_z12 = $gaga[1];
70                        my $key_z12 = "$coord_x_z12 $coord_y_z12";
71                        %tiles_z12->{$key_z12} = $key_z12; 
72
73                        my $coord_x_z8  = int($coord_x_z12 / 16);
74                        my $coord_y_z8  = int($coord_y_z12 / 16);
75                        my $key_z8 = "$coord_x_z8 $coord_y_z8"; 
76                        %tiles_z8->{$key_z8} = $key_z8; 
77                }
78        }
79
80        mkdir ("WDB/keepme.z12", 0755);
81        my $z12_file = $file;
82        $z12_file =~ s/keepme/keepme\.z12/;
83        $z12_file .= ".z12.tilenums";
84        open (TILES, "> $z12_file") || die ("Can't open $z12_file: $!\n");
85        foreach (sort keys %tiles_z12)
86        {
87                print TILES "$_\n";
88        }
89        close (TILES);
90
91        mkdir ("WDB/keepme.z8", 0755);
92        my $z8_file = $file;
93        $z8_file =~ s/keepme/keepme\.z8/;
94        $z8_file .= ".z8.tilenums";
95        open (TILES, "> $z8_file") || die ("Can't open $z8_file: $!\n");
96        foreach (sort keys %tiles_z8)
97        {
98                print TILES "$_\n";
99        }
100        close (TILES);
101}
Note: See TracBrowser for help on using the repository browser.